74 targetMass = targetParticle.
GetMass()/GeV;
80 G4double cmEnergy = std::sqrt( currentMass*currentMass +
81 targetMass*targetMass +
82 2.0*targetMass*etCurrent );
84 if (cmEnergy < 0.01) {
90 G4double pf = targetMass*pCurrent/cmEnergy;
102 pseudoParticle[0].
SetMass( targetMass*GeV );
104 pseudoParticle[0].
SetMomentum( 0.0, 0.0, pOriginal*GeV );
107 pseudoParticle[1].
SetMass( mOriginal*GeV );
111 pseudoParticle[0].
SetMass( currentMass*GeV );
113 pseudoParticle[0].
SetMomentum( 0.0, 0.0, pCurrent*GeV );
116 pseudoParticle[1].
SetMass( targetMass*GeV );
122 pseudoParticle[2] = pseudoParticle[0] + pseudoParticle[1];
123 pseudoParticle[0].
Lorentz( pseudoParticle[0], pseudoParticle[2] );
124 pseudoParticle[1].
Lorentz( pseudoParticle[1], pseudoParticle[2] );
128 currentParticle.
SetTotalEnergy( std::sqrt(pf*pf+currentMass*currentMass)*GeV );
129 targetParticle.
SetTotalEnergy( std::sqrt(pf*pf+targetMass*targetMass)*GeV );
145 costheta = std::max(-1., std::min(1., costheta) );
146 G4double sintheta = std::sqrt((1.0-costheta)*(1.0+costheta));
155 currentParticle.
SetMomentum( -pf*sintheta*std::cos(phi)*GeV,
156 -pf*sintheta*std::sin(phi)*GeV,
160 currentParticle.
SetMomentum( pf*sintheta*std::cos(phi)*GeV,
161 pf*sintheta*std::sin(phi)*GeV,
169 currentParticle.
Lorentz( currentParticle, pseudoParticle[1] );
170 targetParticle.
Lorentz( targetParticle, pseudoParticle[1] );
174 Defs1( modifiedOriginal, currentParticle, targetParticle, vec, vecLen );
179 if( atomicWeight >= 1.5 )
181 const G4double cfa = 0.025*((atomicWeight-1.)/120.)*
G4Exp(-(atomicWeight-1.)/120.);
186 ekin = std::max( 0.0001*GeV, ekin );
195 ekin = std::max( 0.0001*GeV, ekin );
206 std::pair<G4int, G4int> finalStateNucleons =
208 G4int protonsInFinalState = finalStateNucleons.first;
209 G4int neutronsInFinalState = finalStateNucleons.second;
211 G4int PinNucleus = std::max(0,
213 G4int NinNucleus = std::max(0,
216 if( atomicWeight >= 1.5 )
226 G4int npnb=0, ndta=0;
235 if( epnb >= pnCutOff )
238 if( npnb > atomicWeight )npnb =
G4int(atomicWeight);
239 if( (epnb > pnCutOff) && (npnb <= 0) )npnb = 1;
240 npnb = std::min( npnb, 127-vecLen );
242 if( edta >= dtaCutOff )
245 ndta = std::min( ndta, 127-vecLen );
248 if (npnb == 0 && ndta == 0) npnb = 1;
251 PinNucleus, NinNucleus, targetNucleus,
258 if( (atomicWeight >= 1.5) && (atomicWeight <= 230.0) && (ekOriginal <= 0.2) )
261 currentParticle.
SetTOF( 1.0 );
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4long G4Poisson(G4double mean)
G4double GetPNBlackTrackEnergy() const
G4double GetDTABlackTrackEnergy() const
G4double GetPDGMass() const
const G4String & GetParticleSubType() const
std::pair< G4int, G4int > GetFinalStateNucleons(const G4DynamicParticle *originalTarget, const G4FastVector< G4ReactionProduct, 256 > &vec, const G4int &vecLen)
void AddBlackTrackParticles(const G4double, const G4int, const G4double, const G4int, const G4ReactionProduct &, G4int, G4int, const G4Nucleus &, G4FastVector< G4ReactionProduct, 256 > &, G4int &)
void Defs1(const G4ReactionProduct &modifiedOriginal, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen)
G4bool ReactionStage(const G4HadProjectile *, G4ReactionProduct &, G4bool &, const G4DynamicParticle *, G4ReactionProduct &, G4bool &, const G4Nucleus &, G4ReactionProduct &, G4FastVector< G4ReactionProduct, 256 > &, G4int &, G4bool, G4ReactionProduct &)
void SetMomentum(const G4double x, const G4double y, const G4double z)
void SetTotalEnergy(const G4double en)
G4double GetTotalMomentum() const
G4double GetKineticEnergy() const
const G4ParticleDefinition * GetDefinition() const
G4double GetTotalEnergy() const
G4ThreeVector GetMomentum() const
void Lorentz(const G4ReactionProduct &p1, const G4ReactionProduct &p2)
void SetKineticEnergy(const G4double en)
void SetTOF(const G4double t)
void SetMass(const G4double mas)