78 G4int numberOfIsos(0);
82 if(numberOfIsos!=0)
break;
86 for(i=0;i<numberOfIsos; i++)
88 if(i!=0) running[i] = running[i-1];
101 G4int isotope=nChannels-1;
103 for(i=0;i<numberOfIsos; i++)
107 if(running[numberOfIsos-1] != 0)
if(random<running[i]/running[numberOfIsos-1])
break;
118 if(i!=0) running[i] = running[i-1];
135 if ( running[nChannels-1] == 0 )
138 if ( targA == -1 && targZ == -1 ) {
139 throw G4HadronicException(__FILE__, __LINE__,
"ParticleHP model encounter lethal discrepancy with cross section data");
143 G4cout <<
"Warning from NeutronHP: could not find proper reaction channel. This may cause by inconsistency between cross section and model. Unchanged final states are returned." <<
G4endl;
165 if(running[nChannels-1] != 0)
if(random<running[i]/running[nChannels-1])
break;
169 if( getenv(
"G4ParticleHPDebug") )
G4cout <<
" G4ParticleHPChannelList SELECTED ISOTOPE " << isotope <<
" SELECTED CHANNEL " << lChan <<
G4endl;
static G4ParticleHPManager * GetInstance()
const G4Material * GetMaterial() const
CLHEP::Hep3Vector G4ThreeVector
const G4LorentzVector & Get4Momentum() const
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
G4HadFinalState unChanged
G4GLOB_DLL std::ostream G4cout
G4double GetTemperature() const
static G4IonTable * GetIonTable()
G4double GetThermalEnergy(const G4HadProjectile &aP, const G4Element *anE, G4double aT)
void SetEnergyChange(G4double anEnergy)
G4double GetKineticEnergy() const
G4double GetFSCrossSection(G4double energy, G4int isoNumber)
G4double GetWeightedXsec(G4double energy, G4int isoNumber)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
G4ParticleHPReactionWhiteBoard * GetReactionWhiteBoard()
G4ParticleHPChannel ** theChannels
void SetMomentumChange(const G4ThreeVector &aV)
G4HadFinalState * ApplyYourself(const G4HadProjectile &theTrack, G4int isoNumber=-1)