src/G4GeneratorPrecompoundInterface.cc G4ReactionProductVector* G4GeneratorPrecompoundInterface::Propagate(...){ ... G4double residualMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(aZ,anA) ... } ---> aborts when aZ=0 and anA=0. In my simulation, this happens in every 20 or so events. // the model class for high energies G4TheoFSGenerator* theTheoModel = new G4TheoFSGenerator; // all models for treatment of thermal nucleus G4Evaporation * theEvaporation = new G4Evaporation; G4FermiBreakUp * theFermiBreakUp = new G4FermiBreakUp; G4StatMF * theMF = new G4StatMF; // Evaporation logic G4ExcitationHandler * theHandler = new G4ExcitationHandler; theHandler->SetEvaporation(theEvaporation); theHandler->SetFermiModel(theFermiBreakUp); theHandler->SetMultiFragmentation(theMF); theHandler->SetMaxAandZForFermiBreakUp(12,6); theHandler->SetMinEForMultiFrag(10*MeV); // Pre equilibrium stage G4PreCompoundModel * thePreEquilib = new G4PreCompoundModel(theHandler); // a no-cascade generator-precompound interaface G4GeneratorPrecompoundInterface * theCascade = new G4GeneratorPrecompoundInterface; theCascade->SetDeExcitation(thePreEquilib); // Set Transport theTheoModel->SetTransport(theCascade); // the high energy parts // diffractive_string G4VPartonStringModel *theStringModel; theStringModel = new G4FTFModel; // set fragmentation G4VStringFragmentation *theFragmentation = new G4LundStringFragmentation; theStringModel->SetFragmentationModel(theFragmentation); // Set Generator theTheoModel->SetHighEnergyGenerator(theStringModel); theTheoModel->SetMinEnergy(19*GeV); theTheoModel->SetMaxEnergy(100*TeV); was used to register the physics process...
That G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(aZ,anA) aborts when aZ = 0 and anA = 0 is not a bug, but how you get that "Ion". However the user should provide some information in order to find out what the problem is.
The problem was to use G4GeneratorPrecompoundInterface for protons. It should be used only for heavier ions (A>4).
The class G4GeneratorPrecompoundInterface shouldn't send light ions (A<=4) to G4PreCompound.
I'll take care of this, but with CMS week next week, this will take some time.
Dear Vicente, going through the list of open bugs, I realize that this is not a speciality of GeneratorInterface, but that any cascade code will at sometimes send fragments with low A/Z to PreCompound. The condition capturing this should be there, returning an appropriate final state (i.e. containing only the fragment). Many greetings, Hans-Peter.