11 #ifndef SimG4Core_CustomPhysics_FullModelReactionDynamics_h 12 #define SimG4Core_CustomPhysics_FullModelReactionDynamics_h 1 14 #include "G4ParticleTypes.hh" 15 #include "G4DynamicParticle.hh" 16 #include "G4ReactionProduct.hh" 17 #include "G4Nucleus.hh" 18 #include "G4FastVector.hh" 19 #include "G4HadProjectile.hh" 34 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
36 G4ReactionProduct &modifiedOriginal,
37 const G4HadProjectile *originalIncident,
38 G4ReactionProduct ¤tParticle,
39 G4ReactionProduct &targetParticle,
40 const G4Nucleus &targetNucleus,
41 G4bool &incidentHasChanged,
42 G4bool &targetHasChanged,
44 G4ReactionProduct &leadingStrangeParticle);
48 const G4ReactionProduct &modifiedOriginal,
49 G4ReactionProduct ¤tParticle,
50 G4ReactionProduct &targetParticle,
51 const G4Nucleus &targetNucleus,
52 G4bool &incidentHasChanged,
53 G4bool &targetHasChanged);
56 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
58 G4ReactionProduct &modifiedOriginal,
59 const G4HadProjectile *originalIncident,
60 G4ReactionProduct ¤tParticle,
61 G4ReactionProduct &targetParticle,
62 const G4Nucleus &targetNucleus,
63 G4bool &incidentHasChanged,
64 G4bool &targetHasChanged,
66 G4ReactionProduct &leadingStrangeParticle);
69 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
71 G4ReactionProduct &modifiedOriginal,
72 const G4DynamicParticle *originalTarget,
73 G4ReactionProduct ¤tParticle,
74 G4ReactionProduct &targetParticle,
75 const G4Nucleus &targetNucleus,
76 G4bool &targetHasChanged);
81 const G4double totalEnergy,
82 const G4bool constantCrossSection,
83 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
88 const G4ReactionProduct &modifiedOriginal,
89 const G4DynamicParticle *originalTarget,
90 G4ReactionProduct ¤tParticle,
91 G4ReactionProduct &targetParticle,
92 G4bool &incidentHasChanged,
93 G4bool &targetHasChanged);
96 G4FastVector<G4ReactionProduct, 4> &vec,
98 const G4HadProjectile *originalIncident,
99 const G4Nucleus &aNucleus,
100 const G4double theAtomicMass,
101 const G4double *massVec);
104 void Rotate(
const G4double numberofFinalStateNucleons,
105 const G4ThreeVector &
temp,
106 const G4ReactionProduct &modifiedOriginal,
107 const G4HadProjectile *originalIncident,
108 const G4Nucleus &targetNucleus,
109 G4ReactionProduct ¤tParticle,
110 G4ReactionProduct &targetParticle,
111 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
114 void Defs1(
const G4ReactionProduct &modifiedOriginal,
115 G4ReactionProduct ¤tParticle,
116 G4ReactionProduct &targetParticle,
117 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
124 const G4double sprob,
125 const G4double kineticMinimum,
126 const G4double kineticFactor,
127 const G4ReactionProduct &modifiedOriginal,
129 const G4Nucleus &aNucleus,
130 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
133 void MomentumCheck(
const G4ReactionProduct &modifiedOriginal,
134 G4ReactionProduct ¤tParticle,
135 G4ReactionProduct &targetParticle,
136 G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
virtual G4double FindInelasticity()
void Defs1(const G4ReactionProduct &modifiedOriginal, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen)
void MomentumCheck(const G4ReactionProduct &modifiedOriginal, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen)
FullModelReactionDynamics()
void TwoBody(G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen, G4ReactionProduct &modifiedOriginal, const G4DynamicParticle *originalTarget, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, const G4Nucleus &targetNucleus, G4bool &targetHasChanged)
void ProduceStrangeParticlePairs(G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen, const G4ReactionProduct &modifiedOriginal, const G4DynamicParticle *originalTarget, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged, G4bool &targetHasChanged)
G4int Poisson(G4double x)
G4bool TwoCluster(G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen, G4ReactionProduct &modifiedOriginal, const G4HadProjectile *originalIncident, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, const G4Nucleus &targetNucleus, G4bool &incidentHasChanged, G4bool &targetHasChanged, G4bool leadFlag, G4ReactionProduct &leadingStrangeParticle)
virtual G4double FindTimeDelay()
void NuclearReaction(G4FastVector< G4ReactionProduct, 4 > &vec, G4int &vecLen, const G4HadProjectile *originalIncident, const G4Nucleus &aNucleus, const G4double theAtomicMass, const G4double *massVec)
G4double GenerateNBodyEvent(const G4double totalEnergy, const G4bool constantCrossSection, G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen)
G4bool GenerateXandPt(G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen, G4ReactionProduct &modifiedOriginal, const G4HadProjectile *originalIncident, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, const G4Nucleus &targetNucleus, G4bool &incidentHasChanged, G4bool &targetHasChanged, G4bool leadFlag, G4ReactionProduct &leadingStrangeParticle)
void AddBlackTrackParticles(const G4double epnb, const G4int npnb, const G4double edta, const G4int ndta, const G4double sprob, const G4double kineticMinimum, const G4double kineticFactor, const G4ReactionProduct &modifiedOriginal, G4double spall, const G4Nucleus &aNucleus, G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen)
void Rotate(const G4double numberofFinalStateNucleons, const G4ThreeVector &temp, const G4ReactionProduct &modifiedOriginal, const G4HadProjectile *originalIncident, const G4Nucleus &targetNucleus, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen)
virtual ~FullModelReactionDynamics()
void SuppressChargedPions(G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen, const G4ReactionProduct &modifiedOriginal, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, const G4Nucleus &targetNucleus, G4bool &incidentHasChanged, G4bool &targetHasChanged)