]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4PhysicsConstructorMuon.cxx
Add Boost() method to boost all particles to LHC lab frame. Needed for asymmetric...
[u/mrichter/AliRoot.git] / TGeant4 / TG4PhysicsConstructorMuon.cxx
1 // $Id$
2 // Category: physics
3 //
4 // Author: I. Hrivnacova
5 //
6 // Class TG4PhysicsConstructorMuon
7 // -----------------------------
8 // See the class description in the header file.
9 // According to ExN04MuonPhysics.cc,v 1.2.2.1 2001/06/28 19:07:37 gunter Exp 
10 // GEANT4 tag Name: geant4-03-02
11
12 #include "TG4PhysicsConstructorMuon.h"
13 #include "TG4ProcessControlMap.h"
14 #include "TG4ProcessMCMap.h"
15 #include "TG4G3Control.h"
16
17 #include <G4ParticleDefinition.hh>
18 #include <G4ProcessManager.hh>
19 #include <G4MuonPlus.hh>
20 #include <G4MuonMinus.hh>
21 #include <G4TauMinus.hh>
22 #include <G4TauPlus.hh>
23 #include <G4NeutrinoTau.hh>
24 #include <G4AntiNeutrinoTau.hh>
25 #include <G4NeutrinoMu.hh>
26 #include <G4AntiNeutrinoMu.hh>
27
28 //TBR
29 #include <G4MuIonisation.hh>
30 #include <G4MuBremsstrahlung.hh>
31 #include <G4MuPairProduction.hh>
32 #include <G4hIonisation.hh>
33
34 //_____________________________________________________________________________
35 TG4PhysicsConstructorMuon::TG4PhysicsConstructorMuon(const G4String& name)
36   : G4VPhysicsConstructor(name)
37 {
38 //
39   SetVerboseLevel(1);
40 }
41
42 //_____________________________________________________________________________
43 TG4PhysicsConstructorMuon::~TG4PhysicsConstructorMuon() {
44 //
45 }
46
47 // private methods
48
49 //_____________________________________________________________________________
50 void TG4PhysicsConstructorMuon::ConstructProcessForMuonPlus()
51 {
52 // Constructs electromagnetic processes for mu+.
53 // ---
54   
55   // add processes
56   G4ProcessManager* pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
57   pManager->AddProcess(&fMuPlusIonisation, ordInActive,2, 2);
58   pManager->AddDiscreteProcess(&fMuPlusBremsstrahlung);
59   pManager->AddDiscreteProcess(&fMuPlusPairProduction);
60   pManager->AddProcess(&fMuPlusMultipleScattering);
61
62   // set ordering
63   pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxAlongStep,  1);
64   pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxPostStep,  1);
65
66   // map to G3 controls
67   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
68   controlMap->Add(&fMuPlusIonisation, kLOSS); 
69   controlMap->Add(&fMuPlusBremsstrahlung, kBREM); 
70   controlMap->Add(&fMuPlusPairProduction, kPAIR); 
71   controlMap->Add(&fMuPlusMultipleScattering, kMULS); 
72
73
74   // map to AliMCProcess codes
75   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
76   mcMap->Add(&fMuPlusIonisation, kPEnergyLoss); 
77   mcMap->Add(&fMuPlusBremsstrahlung, kPBrem); 
78   mcMap->Add(&fMuPlusPairProduction, kPPair); 
79   mcMap->Add(&fMuPlusMultipleScattering, kPMultipleScattering); 
80 }  
81
82 //_____________________________________________________________________________
83 void TG4PhysicsConstructorMuon::ConstructProcessForMuonMinus()
84 {
85 // Constructs electromagnetic processes for mu-.
86 // ---
87   
88   // add processes & set ordering
89   G4ProcessManager* pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
90   pManager->AddProcess(&fMuMinusIonisation, ordInActive,2, 2);
91   pManager->AddDiscreteProcess(&fMuMinusBremsstrahlung);
92   pManager->AddDiscreteProcess(&fMuMinusPairProduction);
93   pManager->AddProcess(&fMuMinusMultipleScattering);
94
95   pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxAlongStep,  1);
96   pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxPostStep,  1);
97
98   pManager->AddRestProcess(&fMuMinusCaptureAtRest);
99
100   // map to G3 controls
101   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
102   controlMap->Add(&fMuMinusIonisation, kLOSS); 
103   controlMap->Add(&fMuMinusBremsstrahlung, kBREM); 
104   controlMap->Add(&fMuMinusPairProduction, kPAIR); 
105   controlMap->Add(&fMuMinusMultipleScattering, kMULS); 
106   controlMap->Add(&fMuMinusCaptureAtRest, kMUNU); 
107
108   // map to AliMCProcess codes
109   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
110   mcMap->Add(&fMuMinusIonisation, kPEnergyLoss); 
111   mcMap->Add(&fMuMinusBremsstrahlung, kPBrem); 
112   mcMap->Add(&fMuMinusPairProduction, kPPair); 
113   mcMap->Add(&fMuMinusMultipleScattering, kPMultipleScattering); 
114   mcMap->Add(&fMuMinusCaptureAtRest, kPMuonNuclear); 
115 }  
116
117 //_____________________________________________________________________________
118 void TG4PhysicsConstructorMuon::ConstructProcessForTauPlus()
119 {
120 // Constructs electromagnetic processes for tau+.
121 // ---
122   
123   // add processes
124   G4ProcessManager* pManager = G4TauPlus::TauPlus()->GetProcessManager();
125   pManager->AddProcess(&fTauPlusIonisation, ordInActive,2, 2);
126   pManager->AddProcess(&fTauPlusMultipleScattering);
127
128   // set ordering
129   pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxAlongStep,  1);
130   pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxPostStep,  1);
131
132   // map to G3 controls
133   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
134   controlMap->Add(&fTauPlusIonisation, kLOSS); 
135   controlMap->Add(&fTauPlusMultipleScattering, kMULS); 
136
137
138   // map to AliMCProcess codes
139   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
140   mcMap->Add(&fTauPlusIonisation, kPEnergyLoss); 
141   mcMap->Add(&fTauPlusMultipleScattering, kPMultipleScattering); 
142 }  
143
144 //_____________________________________________________________________________
145 void TG4PhysicsConstructorMuon::ConstructProcessForTauMinus()
146 {
147 // Constructs electromagnetic processes for tau-.
148 // ---
149   
150   // add processes
151   G4ProcessManager* pManager = G4TauMinus::TauMinus()->GetProcessManager();
152   pManager->AddProcess(&fTauMinusIonisation, ordInActive,2, 2);
153   pManager->AddProcess(&fTauMinusMultipleScattering);
154
155   // set ordering
156   pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxAlongStep,  1);
157   pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxPostStep,  1);
158
159   // map to G3 controls
160   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
161   controlMap->Add(&fTauMinusIonisation, kLOSS); 
162   controlMap->Add(&fTauMinusMultipleScattering, kMULS); 
163
164
165   // map to AliMCProcess codes
166   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
167   mcMap->Add(&fTauMinusIonisation, kPEnergyLoss); 
168   mcMap->Add(&fTauMinusMultipleScattering, kPMultipleScattering); 
169 }  
170
171
172 // protected methods
173
174 //_____________________________________________________________________________
175 void TG4PhysicsConstructorMuon::ConstructParticle()
176 {
177 // Instantiates particles.
178 // ---
179
180   // Mu
181   G4MuonPlus::MuonPlusDefinition();
182   G4MuonMinus::MuonMinusDefinition();
183   G4NeutrinoMu::NeutrinoMuDefinition();
184   G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
185
186   // Tau
187   G4TauMinus::TauMinusDefinition();
188   G4TauPlus::TauPlusDefinition();
189   G4NeutrinoTau::NeutrinoTauDefinition();
190   G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
191 }
192
193 //_____________________________________________________________________________
194 void TG4PhysicsConstructorMuon::ConstructProcess()
195 {
196 // Constructs electromagnetic processes for muons.
197 // ---
198
199   ConstructProcessForMuonPlus();
200   ConstructProcessForMuonMinus();
201   ConstructProcessForTauPlus();
202   ConstructProcessForTauMinus();
203
204   if (verboseLevel>0)
205     G4cout << "### Muon physics constructed." << G4endl;
206 }