]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TGeant4/TG4PhysicsConstructorMuon.cxx
Initial version
[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)
36 : G4VPhysicsConstructor(name)
37{
38//
39 SetVerboseLevel(1);
40}
41
42//_____________________________________________________________________________
43TG4PhysicsConstructorMuon::~TG4PhysicsConstructorMuon() {
44//
45}
46
47// private methods
48
49//_____________________________________________________________________________
50void 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//_____________________________________________________________________________
83void 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//_____________________________________________________________________________
118void 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//_____________________________________________________________________________
145void 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//_____________________________________________________________________________
175void 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//_____________________________________________________________________________
194void 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}