]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TGeant4/TG4PhysicsConstructorMuon.cxx
Updated VZERO source
[u/mrichter/AliRoot.git] / TGeant4 / TG4PhysicsConstructorMuon.cxx
CommitLineData
5d321328 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//_____________________________________________________________________________
35TG4PhysicsConstructorMuon::TG4PhysicsConstructorMuon(const G4String& name)
6d72374b 36 : TG4VPhysicsConstructor(name) {
37//
38}
39
40//_____________________________________________________________________________
41TG4PhysicsConstructorMuon::TG4PhysicsConstructorMuon(G4int verboseLevel,
42 const G4String& name)
43 : TG4VPhysicsConstructor(name, verboseLevel) {
5d321328 44//
5d321328 45}
46
47//_____________________________________________________________________________
48TG4PhysicsConstructorMuon::~TG4PhysicsConstructorMuon() {
49//
50}
51
52// private methods
53
54//_____________________________________________________________________________
55void 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//_____________________________________________________________________________
88void 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//_____________________________________________________________________________
123void 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//_____________________________________________________________________________
150void 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//_____________________________________________________________________________
180void 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//_____________________________________________________________________________
199void TG4PhysicsConstructorMuon::ConstructProcess()
200{
201// Constructs electromagnetic processes for muons.
202// ---
203
204 ConstructProcessForMuonPlus();
205 ConstructProcessForMuonMinus();
206 ConstructProcessForTauPlus();
207 ConstructProcessForTauMinus();
208
6d72374b 209 if (VerboseLevel() >0 ) {
5d321328 210 G4cout << "### Muon physics constructed." << G4endl;
6d72374b 211 }
5d321328 212}