143 #include "G4InuclSpecialFunctions.hh"   171     theCascadeHistory(0), tnuclei(0), bnuclei(0), bparticle(0),
   172     minimum_recoil_A(0.), coulombBarrier(0.),
   222   finalize(itry, bullet, target, globalOutput);
   233     G4cout << 
" >>> G4IntraNucleiCascader::rescatter " << 
G4endl;
   248   finalize(itry, bullet, target, globalOutput);
   255     G4cout << 
" >>> G4IntraNucleiCascader::initialize " << 
G4endl;
   272     G4cerr << 
" G4IntraNucleiCascader: projectile is not a valid particle."   281       G4cerr << 
" Target is not a nucleus.  Abandoning." << 
G4endl;
   294     G4cout << 
" intitial momentum  E " << momentum_in.
e() << 
" Px "   295        << momentum_in.
x() << 
" Py " << momentum_in.
y() << 
" Pz "   306     G4cout << 
" IntraNucleiCascader itry " << itry << 
" inter_case "   324     G4cout << 
" >>> G4IntraNucleiCascader::setupCascade" << 
G4endl;
   345       for (i = 0; i < 
ab; i++) {
   346     G4int knd = i < zb ? 1 : 2;
   350       G4int ihn = 
G4int(2 * (ab-zb) * inuclRndm() + 0.5);
   351       G4int ihz = 
G4int(2 * zb * inuclRndm() + 0.5);
   371       G4cout << 
" Iteration " << iloop << 
": Number of cparticles "   380     G4cout << 
" active cparticle got history ID "   388     G4cout << 
" particle is non-interacting; moving to output" << 
G4endl;
   405       G4cout << 
" After generate fate: New particles "   407          << 
" Discarding last cparticle from list " << 
G4endl;
   450                        std::sqrt(mass*(coulombBarrier-KE)) );
   479     G4cout << 
" adding new exciton holes " << holes.first << 
","   480            << holes.second << 
G4endl;
   484       if (holes.second > 0)
   495          << 
" nucleus (model) has "   498          << 
" residual fragment A " << aresid << 
G4endl;
   510     G4cout << 
" >>> G4IntraNucleiCascader::finishCascade ?" << 
G4endl;
   546       G4cerr << 
" Recoil nucleus is not physical: A=" << afin << 
" Z="   554     G4cout << 
"  afin " << afin << 
" zfin " << zfin <<  
G4endl;
   557   if (afin == 0) 
return true;       
   560     G4int last_type = (zfin==1) ? 1 : 2;    
   573     G4cerr << 
" extra energy with recoil nucleon" << 
G4endl;
   583       G4cout << 
" adding recoiling nucleon to output list\n"   584          << last_particle  << 
G4endl;
   599     G4cout << 
" quasi-elastic scatter with " << Eex << 
" MeV recoil"   616       G4cerr << 
"Got null pointer for recoil fragment!" << 
G4endl;
   621       G4cout << 
" adding recoil fragment to output list" << 
G4endl;
   662       G4cout << 
" IntraNucleiCascader-> no inelastic interaction after "   663          << itry << 
" attempts " << 
G4endl;
   668     G4cout << 
" IntraNucleiCascader output after trials " << itry << 
G4endl;
   683   if (theNucleusA > 1) {
   702     G4cout << 
" >>> G4IntraNucleiCascader::preloadCascade" << 
G4endl;
   710     G4cout << 
" >>> G4IntraNucleiCascader::copyWoundedNucleus" << 
G4endl;
   731        << 
" protons hit" << 
G4endl;
   741     G4cout << 
" >>> G4IntraNucleiCascader::copySecondaries" << 
G4endl;
   743   for (
size_t i=0; i<secondaries->size(); i++) {
   754     G4cout << 
" Original list of " << secondaries->size() << 
" secondaries"   778     G4cout << 
" >>> G4IntraNucleiCascader::processSecondary "   799     G4cout << 
" Created cascade particle \n" << cpart << 
G4endl;
   809     G4cout << 
" >>> G4IntraNucleiCascader::releaseSecondary "   814   if (dynamic_cast<const G4Ions*>(kpd)) {
   822       G4cout << 
" Created pre-cascade fragment\n" << inucl << 
G4endl;
   831       G4cout << 
" Created invalid pre-cascade particle\n" << ipart << 
G4endl;
   860     G4cout << 
" non-standard should be absorbed, now released\n"   873     G4cout << 
" unstable must be decayed in flight" << 
G4endl;
   880       G4cerr << 
" no decay table!  Releasing trapped particle" << 
G4endl;
   890       G4cerr << 
" no daughters!  Releasing trapped particle" << 
G4endl;
   902   daughters->
Boost(decayEnergy, decayDir);
 G4LorentzVector getMomentum() const
 
void reset(G4int nHitNeutrons=0, G4int nHitProtons=0, const std::vector< G4ThreeVector > *hitPoints=0)
 
const G4ParticleDefinition * GetDefinition() const
 
void fill(G4int a, G4int z, G4double exc=0., Model model=DefaultModel)
 
void trivialise(G4InuclParticle *bullet, G4InuclParticle *target)
 
void setVerboseLevel(G4int verbose)
 
G4InuclElementaryParticle * protonTarget
 
void processTrappedParticle(const G4CascadParticle &trapped)
 
std::pair< std::vector< G4CascadParticle >, std::vector< G4InuclElementaryParticle > > modelLists
 
std::vector< G4CascadParticle > cascad_particles
 
std::pair< G4int, G4int > getTypesOfNucleonsInvolved() const
 
G4bool worthToPropagate(const G4CascadParticle &cparticle) const
 
const G4ThreeVector & GetPosition() const
 
static const G4CascadeChannel * GetTable(G4int initialState)
 
static const G4int reflection_cut
 
G4CascadeHistory * theCascadeHistory
 
static G4bool showHistory()
 
void incrementQP(G4int ip)
 
virtual G4int GetCharge()=0
 
G4InuclParticle * getTarget() const
 
static const G4int itry_max
 
void setVerboseLevel(G4int verbose)
 
const G4ThreeVector & getPosition() const
 
void initializePath(G4double npath)
 
virtual G4bool StartLoop()=0
 
static G4bool doCoalescence()
 
virtual G4int GetMassNumber()=0
 
G4ExitonConfiguration theExitonConfiguration
 
static const G4double quasielast_cut
 
G4bool stillInside(const G4CascadParticle &cparticle)
 
G4InuclParticle * getBullet() const
 
G4int numberOfOutgoingNuclei() const
 
void addOutgoingParticle(const G4InuclElementaryParticle &particle)
 
void updatePosition(const G4ThreeVector &pos)
 
std::vector< G4ThreeVector > hitNucleons
 
G4int getNumberOfReflections() const
 
const std::vector< G4InuclElementaryParticle > & getOutgoingParticles() const
 
static G4double getParticleMass(G4int type)
 
void Boost(G4double totalEnergy, const G4ThreeVector &momentumDirection)
 
G4CascadParticle initializeCascad(G4InuclElementaryParticle *particle)
 
void setGeneration(G4int gen)
 
G4double getRadiusUnits() const
 
G4InuclParticle * createTarget(G4V3DNucleus *theNucleus)
 
virtual void setVerboseLevel(G4int verbose=0)
 
std::vector< G4InuclElementaryParticle >::iterator particleIterator
 
G4int getGeneration() const
 
void updateZone(G4int izone)
 
G4bool hadNucleus() const
 
void incrementHoles(G4int ip)
 
G4InuclNuclei * nucleusTarget
 
void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)
 
void add(const G4CollisionOutput &right)
 
G4CascadeCoalescence * theClusterMaker
 
const G4String & GetParticleName() const
 
G4bool initialize(G4InuclParticle *bullet, G4InuclParticle *target)
 
G4GLOB_DLL std::ostream G4cout
 
G4int getZone(G4double r) const
 
virtual const G4ThreeVector & GetPosition() const
 
void decayTrappedParticle(const G4CascadParticle &trapped)
 
G4CascadeRecoilMaker * theRecoilMaker
 
G4VDecayChannel * SelectADecayChannel(G4double parentMass=-1.)
 
void rescatter(G4InuclParticle *bullet, G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus, G4CollisionOutput &globalOutput)
 
G4DecayTable * GetDecayTable() const
 
void generateModel(G4InuclNuclei *nuclei)
 
void DropEntry(const G4CascadParticle &cpart)
 
void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &globalOutput)
 
G4int getCurrentZone() const
 
G4InteractionCase interCase
 
void processSecondary(const G4KineticTrack *aSecondary)
 
void generateParticleFate(G4CascadParticle &cparticle, G4ElementaryParticleCollider *theEPCollider, std::vector< G4CascadParticle > &cascade)
 
G4int AddEntry(G4CascadParticle &cpart)
 
void Print(std::ostream &os) const
 
void newCascade(G4int itry)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
void addOutgoingParticles(const std::vector< G4InuclElementaryParticle > &particles)
 
static const G4double small_ekin
 
G4int GetAtomicNumber() const
 
G4bool wholeEvent() const
 
void set(G4InuclParticle *part1, G4InuclParticle *part2)
 
G4double minimum_recoil_A
 
void copyWoundedNucleus(G4V3DNucleus *theNucleus)
 
G4double getKineticEnergy() const
 
G4int getNumberOfNeutrons() const
 
G4int numberOfOutgoingParticles() const
 
G4double getCharge() const
 
void setMovingInsideNuclei(G4bool isMovingIn=true)
 
void setTolerance(G4double tolerance)
 
void copySecondaries(G4KineticTrackVector *theSecondaries)
 
const G4InuclElementaryParticle & getParticle() const
 
G4double GetPDGMass() const
 
cout<< "-> Edep in the target
 
const G4LorentzVector & getRecoilMomentum() const
 
G4int getNumberOfProtons() const
 
void fill(G4int ityp, Model model=DefaultModel)
 
void setVerboseLevel(G4int verbose)
 
virtual void setVerboseLevel(G4int verbose=0)
 
G4bool goodFragment() const
 
void setVerboseLevel(G4int verbose=0)
 
void setVerboseLevel(G4int verbose=0)
 
virtual G4Nucleon * GetNextNucleon()=0
 
std::vector< G4CascadParticle > new_cascad_particles
 
virtual G4DecayProducts * DecayIt(G4double parentMass=-1.0)=0
 
void addRecoilFragment(const G4Fragment *aFragment)
 
void FindClusters(G4CollisionOutput &finalState)
 
G4bool particleCanInteract(const G4CascadParticle &cpart) const
 
void setRecoilExcitation(G4double Eexc)
 
G4bool acceptable() const
 
const G4ParticleDefinition * GetParticleType() const
 
void finalize(G4int itry, G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &globalOutput)
 
const std::vector< G4InuclNuclei > & getOutgoingNuclei() const
 
G4bool goodNucleus() const
 
G4ElementaryParticleCollider * theElementaryParticleCollider
 
virtual ~G4IntraNucleiCascader()
 
const G4ParticleDefinition * getDefinition() const
 
G4double getRecoilExcitation() const
 
G4int GetAtomicMass() const
 
G4int AddVertex(G4CascadParticle &cpart, std::vector< G4CascadParticle > &daug)
 
void printCollisionOutput(std::ostream &os=G4cout) const
 
void releaseSecondary(const G4KineticTrack *aSecondary)
 
void addExcitonConfiguration(const G4ExitonConfiguration exciton)
 
void preloadCascade(G4V3DNucleus *theNucleus, G4KineticTrackVector *theSecondaries)
 
G4Fragment * makeRecoilFragment()
 
void setOnShell(G4InuclParticle *bullet, G4InuclParticle *target)
 
G4double getEnergy() const
 
G4GLOB_DLL std::ostream G4cerr
 
G4InuclElementaryParticle * bparticle
 
const G4LorentzVector & Get4Momentum() const