У меня есть код на C ++, который я должен зациклить с другим внешним скриптом Python. Каждый раз, когда я запускаю этот скрипт на Python, весь процесс падает после первого цикла. Так что я думаю, что моя проблема носит более общий характер, может быть, мне нужно сначала понять базовый синтаксис, который, как правило, привел бы к этой аварии. Я надеюсь, что вы, ребята, можете дать мне несколько советов о том, почему это приводит к аварии.
код c ++:
bool IsaSlowPion(const Particle*, const std::vector<double>& vars)
{
const unsigned iparticle = int(std::lround(vars[0]));
std::cout << "looking at particle nr: " << iparticle << std::endl;
StoreArray<MCParticle> particles;
for (auto p : particles) {
std::cout << p.getMother() << std::endl;
}
unsigned nparticles = particles.getEntries();
std::cout << "Particles per event: "<< nparticles << std::endl;
if (nparticles < 1) {
B2WARNING("No MCParticles found in the event, check the input");
return false;
}
if (iparticle > (nparticles-1)) {
return false;
}
std::cout << particles[iparticle]->getPDG() << std::endl;
if (abs(particles[iparticle]->getPDG() == 413)) {
std::cout << "test print" << std::endl;
std::cout << particles[iparticle]->getMother() << std::endl;
if (abs(particles[iparticle]->getMother()->getPDG() == 413)) {
std::cout << particles[iparticle]->getEnergy() << std::endl;
return true;
} else {
return false;
}
}
}
VARIABLE_GROUP("PXD clusters");
REGISTER_VARIABLE("IsaSlowPion(i)", IsaSlowPion, "[EventBased] Returns" );
, а скрипт python для доступа к коду C ++ и выполнения цикла выглядит следующим образом:
IsaPionList = []
maxparticles = 20
for iy in range(1, maxparticles):
variables.addAlias('IsaSlowPion_%i' %(iy), 'IsaSlowPion(%i)' %(iy))
IsaPionList.append('IsaSlowPion_%i' %(iy))
EDIT: извините,Я совершенно забыл вставить в вывод и сообщения об ошибках:
[INFO] Steering file: slowPi2.py
looking at particle nr: 1
0 300553 10.5821
0x132f91a0 511 5.27953
0x132f91a0 -511 5.27953
0x132f9240 -413 2.01023
0x132f9240 -11 0.000510999
Particles per event: 23
PDG: -211
*** Error in `basf2': munmap_chunk(): invalid pointer: 0x00007ffc9e610ab8 ***