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 : G4VPhysicsConstructor(name)
42 //_____________________________________________________________________________
43 TG4PhysicsConstructorMuon::~TG4PhysicsConstructorMuon() {
49 //_____________________________________________________________________________
50 void TG4PhysicsConstructorMuon::ConstructProcessForMuonPlus()
52 // Constructs electromagnetic processes for mu+.
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);
63 pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxAlongStep, 1);
64 pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxPostStep, 1);
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);
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);
82 //_____________________________________________________________________________
83 void TG4PhysicsConstructorMuon::ConstructProcessForMuonMinus()
85 // Constructs electromagnetic processes for mu-.
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);
95 pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxAlongStep, 1);
96 pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxPostStep, 1);
98 pManager->AddRestProcess(&fMuMinusCaptureAtRest);
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);
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);
117 //_____________________________________________________________________________
118 void TG4PhysicsConstructorMuon::ConstructProcessForTauPlus()
120 // Constructs electromagnetic processes for tau+.
124 G4ProcessManager* pManager = G4TauPlus::TauPlus()->GetProcessManager();
125 pManager->AddProcess(&fTauPlusIonisation, ordInActive,2, 2);
126 pManager->AddProcess(&fTauPlusMultipleScattering);
129 pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxAlongStep, 1);
130 pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxPostStep, 1);
132 // map to G3 controls
133 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
134 controlMap->Add(&fTauPlusIonisation, kLOSS);
135 controlMap->Add(&fTauPlusMultipleScattering, kMULS);
138 // map to AliMCProcess codes
139 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
140 mcMap->Add(&fTauPlusIonisation, kPEnergyLoss);
141 mcMap->Add(&fTauPlusMultipleScattering, kPMultipleScattering);
144 //_____________________________________________________________________________
145 void TG4PhysicsConstructorMuon::ConstructProcessForTauMinus()
147 // Constructs electromagnetic processes for tau-.
151 G4ProcessManager* pManager = G4TauMinus::TauMinus()->GetProcessManager();
152 pManager->AddProcess(&fTauMinusIonisation, ordInActive,2, 2);
153 pManager->AddProcess(&fTauMinusMultipleScattering);
156 pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxAlongStep, 1);
157 pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxPostStep, 1);
159 // map to G3 controls
160 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
161 controlMap->Add(&fTauMinusIonisation, kLOSS);
162 controlMap->Add(&fTauMinusMultipleScattering, kMULS);
165 // map to AliMCProcess codes
166 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
167 mcMap->Add(&fTauMinusIonisation, kPEnergyLoss);
168 mcMap->Add(&fTauMinusMultipleScattering, kPMultipleScattering);
174 //_____________________________________________________________________________
175 void TG4PhysicsConstructorMuon::ConstructParticle()
177 // Instantiates particles.
181 G4MuonPlus::MuonPlusDefinition();
182 G4MuonMinus::MuonMinusDefinition();
183 G4NeutrinoMu::NeutrinoMuDefinition();
184 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
187 G4TauMinus::TauMinusDefinition();
188 G4TauPlus::TauPlusDefinition();
189 G4NeutrinoTau::NeutrinoTauDefinition();
190 G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
193 //_____________________________________________________________________________
194 void TG4PhysicsConstructorMuon::ConstructProcess()
196 // Constructs electromagnetic processes for muons.
199 ConstructProcessForMuonPlus();
200 ConstructProcessForMuonMinus();
201 ConstructProcessForTauPlus();
202 ConstructProcessForTauMinus();
205 G4cout << "### Muon physics constructed." << G4endl;