CMS 3D CMS Logo

G4ProcessHelper.h
Go to the documentation of this file.
1 #ifndef SimG4Core_CustomPhysics_G4ProcessHelper_H
2 #define SimG4Core_CustomPhysics_G4ProcessHelper_H
3 
4 #include"globals.hh"
5 #include"G4ParticleDefinition.hh"
6 #include"G4DynamicParticle.hh"
7 #include"G4Element.hh"
8 #include"G4Track.hh"
9 
11 
12 #include<vector>
13 #include<map>
14 
15 //Typedefs just made to make life easier :-)
16 typedef std::vector<G4int> ReactionProduct;
17 typedef std::vector<ReactionProduct > ReactionProductList;
18 typedef std::map<G4int , ReactionProductList> ReactionMap;
19 
20 class G4ParticleTable;
22 class HistoHelper;
23 class TProfile;
24 class TH1D;
25 
27 
28 public:
29 
31 
33 
34  G4bool ApplicabilityTester(const G4ParticleDefinition& aPart);
35 
36  G4double GetInclusiveCrossSection(const G4DynamicParticle *aParticle,
37  const G4Element *anElement);
38 
39  //Make sure the element is known (for n/p-decision)
40  ReactionProduct GetFinalState(const G4Track& aTrack,G4ParticleDefinition*& aTarget);
41 
42 private:
43 
44  G4ProcessHelper(const G4ProcessHelper&) = delete;
45  G4ProcessHelper& operator= (const G4ProcessHelper&) = delete;
46 
47  G4double Regge(const double boost);
48  G4double Pom(const double boost);
49 
50  G4double checkfraction;
51  G4int n_22;
52  G4int n_23;
53 
54  G4ParticleDefinition* theTarget;
55  G4ParticleDefinition* theProton;
56  G4ParticleDefinition* theNeutron;
57  G4ParticleDefinition* theRmesoncloud;
58  G4ParticleDefinition* theRbaryoncloud;
59 
61 
62  G4double PhaseSpace(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle);
63 
64  G4double ReactionProductMass(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle);
65 
66  G4bool ReactionGivesBaryon(const ReactionProduct& aReaction);
67 
68  G4bool ReactionIsPossible(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle);
69 
70  void ReadAndParse(const G4String& str,
71  std::vector<G4String>& tokens,
72  const G4String& delimiters = " ");
73 
74  //Map of applicable particles
75  std::map<const G4ParticleDefinition*,G4bool> known_particles;
76 
77  //Map for physics parameters, name to value
78  std::map<G4String,G4double> parameters;
79 
80  //The parameters themselves
81  bool resonant;
82  double ek_0;
83  double gamma;
84  double amplitude;
86  bool reggemodel;
88  double mixing;
89 
90 
91  //Proton-scattering processes
93 
94  //Neutron-scattering processes
96 
98  G4ParticleTable* particleTable;
99  HistoHelper* theHistoHelper;
100  TProfile* h_xsec_lab;
101  TProfile* h_xsec_cms;
102  TH1D* h_sqrts;
103  TProfile* h_q_p;
104  TProfile* h_q_gamma;
105 
106 };
107 #endif
G4double ReactionProductMass(const ReactionProduct &aReaction, const G4DynamicParticle *aDynamicParticle)
G4ParticleTable * particleTable
std::map< const G4ParticleDefinition *, G4bool > known_particles
std::vector< ReactionProduct > ReactionProductList
G4ParticleDefinition * theProton
Definition: CLHEP.h:16
G4ParticleDefinition * theRmesoncloud
G4bool ApplicabilityTester(const G4ParticleDefinition &aPart)
G4ParticleDefinition * theNeutron
TProfile * h_xsec_lab
TProfile * h_q_gamma
G4double PhaseSpace(const ReactionProduct &aReaction, const G4DynamicParticle *aDynamicParticle)
std::vector< G4int > ReactionProduct
TProfile * h_xsec_cms
G4ProcessHelper & operator=(const G4ProcessHelper &)=delete
G4ParticleDefinition * theRbaryoncloud
void ReadAndParse(const G4String &str, std::vector< G4String > &tokens, const G4String &delimiters=" ")
HistoHelper * theHistoHelper
ReactionProduct GetFinalState(const G4Track &aTrack, G4ParticleDefinition *&aTarget)
double suppressionfactor
G4double GetInclusiveCrossSection(const G4DynamicParticle *aParticle, const G4Element *anElement)
std::map< G4String, G4double > parameters
std::map< G4int, ReactionProductList > ReactionMap
ReactionMap pReactionMap
ReactionMap nReactionMap
ReactionMap * theReactionMap
G4double Regge(const double boost)
CustomParticleFactory * fParticleFactory
G4ProcessHelper(const edm::ParameterSet &p, CustomParticleFactory *ptr)
G4double checkfraction
G4ParticleDefinition * theTarget
G4bool ReactionIsPossible(const ReactionProduct &aReaction, const G4DynamicParticle *aDynamicParticle)
#define str(s)
G4bool ReactionGivesBaryon(const ReactionProduct &aReaction)
G4double Pom(const double boost)