4 // Author: I. Hrivnacova
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
12 #include "TG4PhysicsConstructorMuon.h"
13 #include "TG4ProcessControlMap.h"
14 #include "TG4ProcessMCMap.h"
15 #include "TG4G3Control.h"
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>
29 #include <G4MuIonisation.hh>
30 #include <G4MuBremsstrahlung.hh>
31 #include <G4MuPairProduction.hh>
32 #include <G4hIonisation.hh>
34 //_____________________________________________________________________________
35 TG4PhysicsConstructorMuon::TG4PhysicsConstructorMuon(const G4String& name)
36 : TG4VPhysicsConstructor(name) {
40 //_____________________________________________________________________________
41 TG4PhysicsConstructorMuon::TG4PhysicsConstructorMuon(G4int verboseLevel,
43 : TG4VPhysicsConstructor(name, verboseLevel) {
47 //_____________________________________________________________________________
48 TG4PhysicsConstructorMuon::~TG4PhysicsConstructorMuon() {
54 //_____________________________________________________________________________
55 void TG4PhysicsConstructorMuon::ConstructProcessForMuonPlus()
57 // Constructs electromagnetic processes for mu+.
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);
68 pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxAlongStep, 1);
69 pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxPostStep, 1);
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);
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);
87 //_____________________________________________________________________________
88 void TG4PhysicsConstructorMuon::ConstructProcessForMuonMinus()
90 // Constructs electromagnetic processes for mu-.
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);
100 pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxAlongStep, 1);
101 pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxPostStep, 1);
103 pManager->AddRestProcess(&fMuMinusCaptureAtRest);
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);
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);
122 //_____________________________________________________________________________
123 void TG4PhysicsConstructorMuon::ConstructProcessForTauPlus()
125 // Constructs electromagnetic processes for tau+.
129 G4ProcessManager* pManager = G4TauPlus::TauPlus()->GetProcessManager();
130 pManager->AddProcess(&fTauPlusIonisation, ordInActive,2, 2);
131 pManager->AddProcess(&fTauPlusMultipleScattering);
134 pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxAlongStep, 1);
135 pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxPostStep, 1);
137 // map to G3 controls
138 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
139 controlMap->Add(&fTauPlusIonisation, kLOSS);
140 controlMap->Add(&fTauPlusMultipleScattering, kMULS);
143 // map to AliMCProcess codes
144 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
145 mcMap->Add(&fTauPlusIonisation, kPEnergyLoss);
146 mcMap->Add(&fTauPlusMultipleScattering, kPMultipleScattering);
149 //_____________________________________________________________________________
150 void TG4PhysicsConstructorMuon::ConstructProcessForTauMinus()
152 // Constructs electromagnetic processes for tau-.
156 G4ProcessManager* pManager = G4TauMinus::TauMinus()->GetProcessManager();
157 pManager->AddProcess(&fTauMinusIonisation, ordInActive,2, 2);
158 pManager->AddProcess(&fTauMinusMultipleScattering);
161 pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxAlongStep, 1);
162 pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxPostStep, 1);
164 // map to G3 controls
165 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
166 controlMap->Add(&fTauMinusIonisation, kLOSS);
167 controlMap->Add(&fTauMinusMultipleScattering, kMULS);
170 // map to AliMCProcess codes
171 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
172 mcMap->Add(&fTauMinusIonisation, kPEnergyLoss);
173 mcMap->Add(&fTauMinusMultipleScattering, kPMultipleScattering);
179 //_____________________________________________________________________________
180 void TG4PhysicsConstructorMuon::ConstructParticle()
182 // Instantiates particles.
186 G4MuonPlus::MuonPlusDefinition();
187 G4MuonMinus::MuonMinusDefinition();
188 G4NeutrinoMu::NeutrinoMuDefinition();
189 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
192 G4TauMinus::TauMinusDefinition();
193 G4TauPlus::TauPlusDefinition();
194 G4NeutrinoTau::NeutrinoTauDefinition();
195 G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
198 //_____________________________________________________________________________
199 void TG4PhysicsConstructorMuon::ConstructProcess()
201 // Constructs electromagnetic processes for muons.
204 ConstructProcessForMuonPlus();
205 ConstructProcessForMuonMinus();
206 ConstructProcessForTauPlus();
207 ConstructProcessForTauMinus();
209 if (VerboseLevel() >0 ) {
210 G4cout << "### Muon physics constructed." << G4endl;