CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 public:
43  NuclearInteractionFTFSimulator(unsigned int distAlgo, double distCut, double elimit, double eth);
44 
47 
48 private:
51 
52  void saveDaughter(ParticlePropagator& Particle, const G4LorentzVector& lv, int pdgid);
53 
54  double distanceToPrimary(const RawParticle& Particle, const RawParticle& aDaughter) const;
55 
56  static const G4ParticleDefinition* theG4Hadron[numHadrons];
57  static int theId[numHadrons];
58  G4PhysicsLogVector* vect;
59 
60  G4TheoFSGenerator* theHadronicModel;
61  G4FTFModel* theStringModel;
62  G4ExcitedStringDecay* theStringDecay;
63  G4LundStringFragmentation* theLund;
64  G4GeneratorPrecompoundInterface* theCascade;
65 
66  G4CascadeInterface* theBertiniCascade;
67  G4DiffuseElastic* theDiffuseElastic;
68 
69  G4Step* dummyStep;
70  G4Track* currTrack;
71  const G4ParticleDefinition* currParticle;
72 
73  G4Nucleus targetNucleus;
74  G4HadProjectile theProjectile;
75  G4LorentzVector curr4Mom;
76  G4ThreeVector vectProj;
77  G4ThreeVector theBoost;
78 
81 
82  double theDistCut;
83  double distMin;
84 
87 
88  int currIdx;
89  size_t index;
90  unsigned int theDistAlgo;
91 };
92 #endif
void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *) override
Generate a nuclear interaction according to the probability that it happens.
~NuclearInteractionFTFSimulator() override
Default Destructor.
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]