Problem 144

Summary: Can no residual nucleus happen?
Product: Geant4 Reporter: ykwon
Component: processes/hadronic/modelsAssignee: Vicente.Lara
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: 2.0   
Hardware: PC   
OS: Linux   

Description ykwon 2000-08-02 02:34:13 CEST
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...
Comment 1 Vicente.Lara 2000-08-16 10:29:59 CEST
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.
Comment 2 Vicente.Lara 2000-08-17 06:39:59 CEST
The problem was to use G4GeneratorPrecompoundInterface for protons. It should be
used only for heavier ions (A>4).
Comment 3 Vicente.Lara 2000-09-11 08:26:59 CEST
The class G4GeneratorPrecompoundInterface shouldn't send light ions (A<=4) to
G4PreCompound.
Comment 4 Hans-Peter.Wellisch 2000-09-15 07:40:59 CEST
I'll take care of this, but with CMS week next week, this will take some time.
Comment 5 Hans-Peter.Wellisch 2001-04-17 05:24:59 CEST
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.