]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4PhysicsConstructorMuon.cxx
Added protection in Int_t AliTPCtracker::AliTPCRow::Find(Double_t y) const
[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   : TG4VPhysicsConstructor(name) {
37 //
38 }
39
40 //_____________________________________________________________________________
41 TG4PhysicsConstructorMuon::TG4PhysicsConstructorMuon(G4int verboseLevel,
42                                                      const G4String& name)
43   : TG4VPhysicsConstructor(name, verboseLevel) {
44 //
45 }
46
47 //_____________________________________________________________________________
48 TG4PhysicsConstructorMuon::~TG4PhysicsConstructorMuon() {
49 //
50 }
51
52 // private methods
53
54 //_____________________________________________________________________________
55 void TG4PhysicsConstructorMuon::ConstructProcessForMuonPlus()
56 {
57 // Constructs electromagnetic processes for mu+.
58 // ---
59   
60   // add processes
61   G4ProcessManager* pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
62   pManager->AddProcess(&fMuPlusIonisation, ordInActive,2, 2);
63   pManager->AddDiscreteProcess(&fMuPlusBremsstrahlung);
64   pManager->AddDiscreteProcess(&fMuPlusPairProduction);
65   pManager->AddProcess(&fMuPlusMultipleScattering);
66
67   // set ordering
68   pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxAlongStep,  1);
69   pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxPostStep,  1);
70
71   // map to G3 controls
72   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
73   controlMap->Add(&fMuPlusIonisation, kLOSS); 
74   controlMap->Add(&fMuPlusBremsstrahlung, kBREM); 
75   controlMap->Add(&fMuPlusPairProduction, kPAIR); 
76   controlMap->Add(&fMuPlusMultipleScattering, kMULS); 
77
78
79   // map to AliMCProcess codes
80   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
81   mcMap->Add(&fMuPlusIonisation, kPEnergyLoss); 
82   mcMap->Add(&fMuPlusBremsstrahlung, kPBrem); 
83   mcMap->Add(&fMuPlusPairProduction, kPPair); 
84   mcMap->Add(&fMuPlusMultipleScattering, kPMultipleScattering); 
85 }  
86
87 //_____________________________________________________________________________
88 void TG4PhysicsConstructorMuon::ConstructProcessForMuonMinus()
89 {
90 // Constructs electromagnetic processes for mu-.
91 // ---
92   
93   // add processes & set ordering
94   G4ProcessManager* pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
95   pManager->AddProcess(&fMuMinusIonisation, ordInActive,2, 2);
96   pManager->AddDiscreteProcess(&fMuMinusBremsstrahlung);
97   pManager->AddDiscreteProcess(&fMuMinusPairProduction);
98   pManager->AddProcess(&fMuMinusMultipleScattering);
99
100   pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxAlongStep,  1);
101   pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxPostStep,  1);
102
103   pManager->AddRestProcess(&fMuMinusCaptureAtRest);
104
105   // map to G3 controls
106   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
107   controlMap->Add(&fMuMinusIonisation, kLOSS); 
108   controlMap->Add(&fMuMinusBremsstrahlung, kBREM); 
109   controlMap->Add(&fMuMinusPairProduction, kPAIR); 
110   controlMap->Add(&fMuMinusMultipleScattering, kMULS); 
111   controlMap->Add(&fMuMinusCaptureAtRest, kMUNU); 
112
113   // map to AliMCProcess codes
114   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
115   mcMap->Add(&fMuMinusIonisation, kPEnergyLoss); 
116   mcMap->Add(&fMuMinusBremsstrahlung, kPBrem); 
117   mcMap->Add(&fMuMinusPairProduction, kPPair); 
118   mcMap->Add(&fMuMinusMultipleScattering, kPMultipleScattering); 
119   mcMap->Add(&fMuMinusCaptureAtRest, kPMuonNuclear); 
120 }  
121
122 //_____________________________________________________________________________
123 void TG4PhysicsConstructorMuon::ConstructProcessForTauPlus()
124 {
125 // Constructs electromagnetic processes for tau+.
126 // ---
127   
128   // add processes
129   G4ProcessManager* pManager = G4TauPlus::TauPlus()->GetProcessManager();
130   pManager->AddProcess(&fTauPlusIonisation, ordInActive,2, 2);
131   pManager->AddProcess(&fTauPlusMultipleScattering);
132
133   // set ordering
134   pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxAlongStep,  1);
135   pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxPostStep,  1);
136
137   // map to G3 controls
138   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
139   controlMap->Add(&fTauPlusIonisation, kLOSS); 
140   controlMap->Add(&fTauPlusMultipleScattering, kMULS); 
141
142
143   // map to AliMCProcess codes
144   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
145   mcMap->Add(&fTauPlusIonisation, kPEnergyLoss); 
146   mcMap->Add(&fTauPlusMultipleScattering, kPMultipleScattering); 
147 }  
148
149 //_____________________________________________________________________________
150 void TG4PhysicsConstructorMuon::ConstructProcessForTauMinus()
151 {
152 // Constructs electromagnetic processes for tau-.
153 // ---
154   
155   // add processes
156   G4ProcessManager* pManager = G4TauMinus::TauMinus()->GetProcessManager();
157   pManager->AddProcess(&fTauMinusIonisation, ordInActive,2, 2);
158   pManager->AddProcess(&fTauMinusMultipleScattering);
159
160   // set ordering
161   pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxAlongStep,  1);
162   pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxPostStep,  1);
163
164   // map to G3 controls
165   TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
166   controlMap->Add(&fTauMinusIonisation, kLOSS); 
167   controlMap->Add(&fTauMinusMultipleScattering, kMULS); 
168
169
170   // map to AliMCProcess codes
171   TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
172   mcMap->Add(&fTauMinusIonisation, kPEnergyLoss); 
173   mcMap->Add(&fTauMinusMultipleScattering, kPMultipleScattering); 
174 }  
175
176
177 // protected methods
178
179 //_____________________________________________________________________________
180 void TG4PhysicsConstructorMuon::ConstructParticle()
181 {
182 // Instantiates particles.
183 // ---
184
185   // Mu
186   G4MuonPlus::MuonPlusDefinition();
187   G4MuonMinus::MuonMinusDefinition();
188   G4NeutrinoMu::NeutrinoMuDefinition();
189   G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
190
191   // Tau
192   G4TauMinus::TauMinusDefinition();
193   G4TauPlus::TauPlusDefinition();
194   G4NeutrinoTau::NeutrinoTauDefinition();
195   G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
196 }
197
198 //_____________________________________________________________________________
199 void TG4PhysicsConstructorMuon::ConstructProcess()
200 {
201 // Constructs electromagnetic processes for muons.
202 // ---
203
204   ConstructProcessForMuonPlus();
205   ConstructProcessForMuonMinus();
206   ConstructProcessForTauPlus();
207   ConstructProcessForTauMinus();
208
209   if (VerboseLevel() >0 ) {
210     G4cout << "### Muon physics constructed." << G4endl;
211   }  
212 }