CMS 3D CMS Logo

NuclearInteractionFTFSimulator.h
Go to the documentation of this file.
1 #ifndef FastSimulation_MaterialEffects_NuclearInteractionFTFSimulator_H
2 #define FastSimulation_MaterialEffects_NuclearInteractionFTFSimulator_H
3 
17 
18 #include "G4Nucleus.hh"
19 #include "G4HadProjectile.hh"
20 #include "G4LorentzVector.hh"
21 #include "G4ThreeVector.hh"
22 
23 class ParticlePropagator;
25 class G4ParticleDefinition;
26 class G4Track;
27 class G4Step;
28 class G4TheoFSGenerator;
29 class G4FTFModel;
30 class G4ExcitedStringDecay;
31 class G4LundStringFragmentation;
32 class G4GeneratorPrecompoundInterface;
33 class G4CascadeInterface;
34 class G4DiffuseElastic;
35 class G4PhysicsLogVector;
36 
37 static const int numHadrons = 30;
38 static const int npoints = 21;
39 
41 {
42 public:
43 
45  NuclearInteractionFTFSimulator(unsigned int distAlgo, double distCut,
46  double elimit, double eth);
47 
50 
51 private:
52 
55 
56  void saveDaughter(ParticlePropagator& Particle, const G4LorentzVector& lv, int pdgid);
57 
58  double distanceToPrimary(const RawParticle& Particle,
59  const RawParticle& aDaughter) const;
60 
61  static const G4ParticleDefinition* theG4Hadron[numHadrons];
62  static int theId[numHadrons];
63  G4PhysicsLogVector* vect;
64 
65  G4TheoFSGenerator* theHadronicModel;
66  G4FTFModel* theStringModel;
67  G4ExcitedStringDecay* theStringDecay;
68  G4LundStringFragmentation* theLund;
69  G4GeneratorPrecompoundInterface* theCascade;
70 
71  G4CascadeInterface* theBertiniCascade;
72  G4DiffuseElastic* theDiffuseElastic;
73 
74  G4Step* dummyStep;
75  G4Track* currTrack;
76  const G4ParticleDefinition* currParticle;
77 
78  G4Nucleus targetNucleus;
79  G4HadProjectile theProjectile;
80  G4LorentzVector curr4Mom;
81  G4ThreeVector vectProj;
82  G4ThreeVector theBoost;
83 
86 
87  double theDistCut;
88  double distMin;
89 
92 
93  int currIdx;
94  size_t index;
95  unsigned int theDistAlgo;
96 };
97 #endif
void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *)
Generate a nuclear interaction according to the probability that it happens.
void saveDaughter(ParticlePropagator &Particle, const G4LorentzVector &lv, int pdgid)
static const int npoints
double distanceToPrimary(const RawParticle &Particle, const RawParticle &aDaughter) const
static const int numHadrons
NuclearInteractionFTFSimulator(unsigned int distAlgo, double distCut, double elimit, double eth)
Constructor.
const G4ParticleDefinition * currParticle
G4GeneratorPrecompoundInterface * theCascade
static const G4ParticleDefinition * theG4Hadron[numHadrons]