]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4PhysicsManager.h
method PrintLogicalVolumeStore() added; added formatting in PrintStatistics()
[u/mrichter/AliRoot.git] / TGeant4 / TG4PhysicsManager.h
1 // $Id$
2 // Category: physics
3 //
4 // Author: I. Hrivnacova
5 //
6 // Class TG4PhysicsManager
7 // -----------------------
8 // Geant4 implementation of the MonteCarlo interface methods                    
9 // for building Geant4 physics and access to it.
10
11 #ifndef TG4_PHYSICS_MANAGER_H
12 #define TG4_PHYSICS_MANAGER_H
13
14 #include "TG4Verbose.h"
15 #include "TG4PhysicsMessenger.h"
16 #include "TG4ProcessControlMap.h"
17 #include "TG4ProcessMCMap.h"
18 #include "TG4NameMap.h"
19 #include "TG4G3Cut.h"
20 #include "TG4G3Control.h"
21 #include "TG4Globals.h"
22
23 #include <Rtypes.h>
24 #include "AliMCProcess.h"
25
26 #include <globals.hh>
27
28 class AliDecayer;
29 class TG4ParticlesManager;
30 class TG4G3PhysicsManager;
31 class TG4G3ProcessMap;
32
33 class G4ParticleDefinition;
34 class G4VProcess;
35 class TG4ModularPhysicsList;
36
37 class TG4PhysicsManager : public TG4Verbose
38 {
39   public:
40     TG4PhysicsManager(TG4ModularPhysicsList* physicsList);
41     // --> protected
42     // TG4PhysicsManager();
43     // TG4PhysicsManager(const TG4PhysicsManager& right);
44     virtual ~TG4PhysicsManager();
45
46     // static access method
47     static TG4PhysicsManager* Instance();
48         
49     // methods
50     void Gstpar(Int_t itmed, const char *param, Float_t parval); 
51
52     // set methods
53     void SetCut(const char* cutName, Float_t cutValue);
54     void SetProcess(const char* controlName, Int_t controlValue);
55     Float_t Xsec(char* reac, Float_t energy, Int_t part, Int_t mate);
56     void SetExternalDecayer(AliDecayer* decayer);
57      
58     // get methods
59     AliDecayer* Decayer() const;
60
61         // particle table usage         
62     Int_t IdFromPDG(Int_t pdgID) const;
63     Int_t PDGFromId(Int_t mcID) const;
64     void  DefineParticles();      
65     
66     //
67     // methods for Geant4 only 
68     //
69
70     void CreatePhysicsConstructors();
71     void SetProcessActivation();  
72     AliMCProcess GetMCProcess(const G4VProcess* process);
73     AliMCProcess GetOpBoundaryStatus(const G4VProcess* process);
74
75     // set methods
76     void SetPhysicsList(TG4ModularPhysicsList* physicsList);
77     void SetEMPhysics(G4bool value);
78     void SetMuonPhysics(G4bool value);
79     void SetHadronPhysics(G4bool value);
80     void SetOpticalPhysics(G4bool value);
81     void SetSpecialCutsPhysics(G4bool value);
82     void SetSpecialControlsPhysics(G4bool value);
83     
84     // get methods
85     TG4ModularPhysicsList* GetPhysicsList() const; 
86    
87   protected:
88     TG4PhysicsManager();
89     TG4PhysicsManager(const TG4PhysicsManager& right);
90
91     // operators
92     TG4PhysicsManager& operator=(const TG4PhysicsManager& right);
93
94   private:
95     // methods
96     void FillProcessMap();
97     void GstparCut(G4int itmed, TG4G3Cut par, G4double parval);
98     void GstparControl(G4int itmed, TG4G3Control control, 
99                        TG4G3ControlValue parval);
100
101     // static data members
102     static TG4PhysicsManager*  fgInstance; //this instance
103     
104     // data members
105     TG4PhysicsMessenger    fMessenger;        //messenger
106     TG4ParticlesManager*   fParticlesManager; //particles manager
107     TG4G3PhysicsManager*   fG3PhysicsManager; //G3 physics manager
108     TG4ModularPhysicsList* fPhysicsList; //physics list
109     AliDecayer*            fDecayer;     //external decayer
110     TG4ProcessMCMap        fProcessMCMap;//the mapping between G4 process names
111                                          //and AliMCProcess codes
112     TG4ProcessControlMap   fProcessControlMap; //the mapping between G4 processes
113                                          //and G3 process controls
114     G4bool  fSetEMPhysics;          //electromagnetic physics control
115     G4bool  fSetMuonPhysics;        //muon physics control
116     G4bool  fSetHadronPhysics;      //hadron physics control
117     G4bool  fSetOpticalPhysics;     //optical physics control
118     G4bool  fSetSpecialCutsPhysics; //special cuts process control 
119                                     //(under development)                  
120     G4bool  fSetSpecialControlsPhysics;//special controls process control
121                                     //(under development)
122 };
123
124 // inline methods
125
126 inline TG4PhysicsManager* TG4PhysicsManager::Instance() 
127 { return fgInstance; }
128
129 inline void TG4PhysicsManager::SetExternalDecayer(AliDecayer* decayer) 
130 { fDecayer = decayer; }
131
132 inline AliDecayer* TG4PhysicsManager::Decayer() const
133 { return fDecayer; }
134
135 inline void TG4PhysicsManager::SetPhysicsList(TG4ModularPhysicsList* physicsList)
136 { fPhysicsList = physicsList; }
137
138 inline void TG4PhysicsManager::SetEMPhysics(G4bool value)
139 { fSetEMPhysics = value; }
140
141 inline void TG4PhysicsManager::SetMuonPhysics(G4bool value)
142 { fSetMuonPhysics = value; }
143
144 inline void TG4PhysicsManager::SetHadronPhysics(G4bool value)
145 { fSetHadronPhysics = value; }
146
147 inline void TG4PhysicsManager::SetOpticalPhysics(G4bool value)
148 { fSetOpticalPhysics = value; }
149
150 inline void TG4PhysicsManager::SetSpecialCutsPhysics(G4bool value)
151 { fSetSpecialCutsPhysics = value; }
152
153 inline void TG4PhysicsManager::SetSpecialControlsPhysics(G4bool value)
154 { fSetSpecialControlsPhysics = value; }
155
156 inline TG4ModularPhysicsList* TG4PhysicsManager::GetPhysicsList() const
157 { return fPhysicsList; }
158
159 #endif //TG4_PHYSICS_MANAGER_H
160