CMS 3D CMS Logo

FullModelHadronicProcess.h
Go to the documentation of this file.
1 #ifndef SimG4Core_CustomPhysics_FullModelHadronicProcess_h
2 #define SimG4Core_CustomPhysics_FullModelHadronicProcess_h 1
3 
4 #include "globals.hh"
5 #include "G4VDiscreteProcess.hh"
6 #include "G4EnergyRangeManager.hh"
7 #include "G4Nucleus.hh"
8 #include "G4ReactionProduct.hh"
9 #include <vector>
10 #include "G4HadronicException.hh"
11 
13 
14 class G4ProcessHelper;
15 
16 class FullModelHadronicProcess : public G4VDiscreteProcess {
17 public:
18  FullModelHadronicProcess(G4ProcessHelper *aHelper, const G4String &processName = "FullModelHadronicProcess");
19 
20  ~FullModelHadronicProcess() override;
21 
22  G4bool IsApplicable(const G4ParticleDefinition &aP) override;
23 
24  G4VParticleChange *PostStepDoIt(const G4Track &aTrack, const G4Step &aStep) override;
25 
26 protected:
27  const G4ParticleDefinition *theParticle;
28  G4ParticleDefinition *newParticle;
29 
30  G4ParticleChange theParticleChange;
31 
32 private:
33  virtual G4double GetMicroscopicCrossSection(const G4DynamicParticle *aParticle,
34  const G4Element *anElement,
35  G4double aTemp);
36 
37  G4double GetMeanFreePath(const G4Track &aTrack, G4double, G4ForceCondition *) override;
38 
39  void CalculateMomenta(G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec,
40  G4int &vecLen,
41  const G4HadProjectile *originalIncident,
42  const G4DynamicParticle *originalTarget,
43  G4ReactionProduct &modifiedOriginal,
44  G4Nucleus &targetNucleus,
45  G4ReactionProduct &currentParticle,
46  G4ReactionProduct &targetParticle,
47  G4bool &incidentHasChanged,
48  G4bool &targetHasChanged,
49  G4bool quasiElastic);
50 
51  G4bool MarkLeadingStrangeParticle(const G4ReactionProduct &currentParticle,
52  const G4ReactionProduct &targetParticle,
53  G4ReactionProduct &leadParticle);
54 
55  void Rotate(G4FastVector<G4ReactionProduct, MYGHADLISTSIZE> &vec, G4int &vecLen);
56 
57  const G4DynamicParticle *FindRhadron(G4ParticleChange *);
58 
60  G4bool toyModel;
61  G4double cache;
62  G4ThreeVector what;
63 };
64 
65 #endif
G4ProcessHelper
Definition: G4ProcessHelper.h:26
FullModelHadronicProcess::FindRhadron
const G4DynamicParticle * FindRhadron(G4ParticleChange *)
Definition: FullModelHadronicProcess.cc:656
FullModelHadronicProcess::theHelper
G4ProcessHelper * theHelper
Definition: FullModelHadronicProcess.h:59
FullModelHadronicProcess::GetMeanFreePath
G4double GetMeanFreePath(const G4Track &aTrack, G4double, G4ForceCondition *) override
Definition: FullModelHadronicProcess.cc:31
FullModelHadronicProcess::~FullModelHadronicProcess
~FullModelHadronicProcess() override
Definition: FullModelHadronicProcess.cc:16
FullModelHadronicProcess::IsApplicable
G4bool IsApplicable(const G4ParticleDefinition &aP) override
Definition: FullModelHadronicProcess.cc:18
FullModelHadronicProcess::cache
G4double cache
Definition: FullModelHadronicProcess.h:61
FullModelHadronicProcess::FullModelHadronicProcess
FullModelHadronicProcess(G4ProcessHelper *aHelper, const G4String &processName="FullModelHadronicProcess")
Definition: FullModelHadronicProcess.cc:13
FullModelHadronicProcess::what
G4ThreeVector what
Definition: FullModelHadronicProcess.h:62
FullModelHadronicProcess::Rotate
void Rotate(G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen)
Definition: FullModelHadronicProcess.cc:645
FullModelHadronicProcess::CalculateMomenta
void CalculateMomenta(G4FastVector< G4ReactionProduct, MYGHADLISTSIZE > &vec, G4int &vecLen, const G4HadProjectile *originalIncident, const G4DynamicParticle *originalTarget, G4ReactionProduct &modifiedOriginal, G4Nucleus &targetNucleus, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged, G4bool &targetHasChanged, G4bool quasiElastic)
Definition: FullModelHadronicProcess.cc:491
FullModelHadronicProcess
Definition: FullModelHadronicProcess.h:16
FullModelHadronicProcess::theParticle
const G4ParticleDefinition * theParticle
Definition: FullModelHadronicProcess.h:27
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
FullModelHadronicProcess::theParticleChange
G4ParticleChange theParticleChange
Definition: FullModelHadronicProcess.h:30
FullModelHadronicProcess::GetMicroscopicCrossSection
virtual G4double GetMicroscopicCrossSection(const G4DynamicParticle *aParticle, const G4Element *anElement, G4double aTemp)
Definition: FullModelHadronicProcess.cc:22
FullModelHadronicProcess::MarkLeadingStrangeParticle
G4bool MarkLeadingStrangeParticle(const G4ReactionProduct &currentParticle, const G4ReactionProduct &targetParticle, G4ReactionProduct &leadParticle)
Definition: FullModelHadronicProcess.cc:622
FullModelHadronicProcess::toyModel
G4bool toyModel
Definition: FullModelHadronicProcess.h:60
FullModelHadronicProcess::newParticle
G4ParticleDefinition * newParticle
Definition: FullModelHadronicProcess.h:28
FullModelHadronicProcess::PostStepDoIt
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep) override
Definition: FullModelHadronicProcess.cc:52
FullModelReactionDynamics.h