4 // Author: I. Hrivnacova
6 // Class TG4PhysicsConstructorHadron
7 // ---------------------------------
8 // See the class description in the header file.
9 // According to ExN04HadronPhysics.cc,v 1.1.2.1 2001/06/28 19:07:37 gunter Exp
10 // GEANT4 tag Name: geant4-03-02
12 #include "TG4PhysicsConstructorHadron.h"
13 #include "TG4ProcessControlMap.h"
14 #include "TG4ProcessMCMap.h"
15 #include "TG4Globals.h"
17 #include <G4ParticleDefinition.hh>
18 #include <G4ProcessManager.hh>
19 #include <G4MesonConstructor.hh>
20 #include <G4BaryonConstructor.hh>
21 #include <G4ShortLivedConstructor.hh>
23 //_____________________________________________________________________________
24 TG4PhysicsConstructorHadron::TG4PhysicsConstructorHadron(const G4String& name)
25 : TG4VPhysicsConstructor(name),
31 //_____________________________________________________________________________
32 TG4PhysicsConstructorHadron::TG4PhysicsConstructorHadron(G4int verboseLevel,
36 : TG4VPhysicsConstructor(name, verboseLevel),
38 fSetHadron(setHadron) {
42 //_____________________________________________________________________________
43 TG4PhysicsConstructorHadron::TG4PhysicsConstructorHadron(
44 const TG4PhysicsConstructorHadron& right)
45 : TG4VPhysicsConstructor(right)
48 TG4Globals::Exception("TG4PhysicsConstructorHadron is protected from copying.");
51 //_____________________________________________________________________________
52 TG4PhysicsConstructorHadron::~TG4PhysicsConstructorHadron() {
54 for (G4int i=0; i<fOtherProcesses.size(); i++) delete fOtherProcesses[i];
59 //_____________________________________________________________________________
60 TG4PhysicsConstructorHadron&
61 TG4PhysicsConstructorHadron::operator=(const TG4PhysicsConstructorHadron &right)
63 // check assignement to self
64 if (this == &right) return *this;
66 TG4Globals::Exception(
67 "TG4PhysicsConstructorHadron is protected from assigning.");
75 //_____________________________________________________________________________
76 void TG4PhysicsConstructorHadron::ConstructEMProcessForPionPlus()
78 // Construct processes for pi+.
82 G4ProcessManager* pManager = G4PionPlus::PionPlus()->GetProcessManager();
84 pManager->AddProcess(&fPionPlusIonisation, ordInActive, 2, 2);
85 pManager->AddProcess(&fPionPlusMult);
88 pManager->SetProcessOrdering(&fPionPlusMult, idxAlongStep, 1);
89 pManager->SetProcessOrdering(&fPionPlusMult, idxPostStep, 1);
92 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
93 controlMap->Add(&fPionPlusIonisation, kLOSS);
94 controlMap->Add(&fPionPlusMult, kMULS);
96 // map to G3 ALIMCProcess codes
97 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
98 mcMap->Add(&fPionPlusIonisation, kPEnergyLoss);
99 mcMap->Add(&fPionPlusMult, kPMultipleScattering);
102 //_____________________________________________________________________________
103 void TG4PhysicsConstructorHadron::ConstructEMProcessForPionMinus()
105 // Construct processes for pi-.
108 // add process & set ordering
109 G4ProcessManager* pManager = G4PionMinus::PionMinus()->GetProcessManager();
111 pManager->AddProcess(&fPionMinusIonisation, ordInActive, 2, 2);
113 pManager->AddProcess(&fPionMinusMult);
114 pManager->SetProcessOrdering(&fPionMinusMult, idxAlongStep, 1);
115 pManager->SetProcessOrdering(&fPionMinusMult, idxPostStep, 1);
117 // map to G3 controls
118 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
119 controlMap->Add(&fPionMinusIonisation, kLOSS);
120 controlMap->Add(&fPionMinusMult, kMULS);
122 // map to G3 ALIMCProcess codes
123 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
124 mcMap->Add(&fPionMinusIonisation, kPEnergyLoss);
125 mcMap->Add(&fPionMinusMult, kPMultipleScattering);
128 //_____________________________________________________________________________
129 void TG4PhysicsConstructorHadron::ConstructEMProcessForKaonPlus()
131 // Construct processes for K+.
135 G4ProcessManager* pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
137 pManager->AddProcess(&fKaonPlusIonisation, ordInActive, 2, 2);
138 pManager->AddProcess(&fKaonPlusMult);
141 pManager->SetProcessOrdering(&fKaonPlusMult, idxAlongStep, 1);
142 pManager->SetProcessOrdering(&fKaonPlusMult, idxPostStep, 1);
144 // map to G3 controls
145 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
146 controlMap->Add(&fKaonPlusIonisation, kLOSS);
147 controlMap->Add(&fKaonPlusMult, kMULS);
149 // map to G3 ALIMCProcess codes
150 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
151 mcMap->Add(&fKaonPlusIonisation, kPEnergyLoss);
152 mcMap->Add(&fKaonPlusMult, kPMultipleScattering);
155 //_____________________________________________________________________________
156 void TG4PhysicsConstructorHadron::ConstructEMProcessForKaonMinus()
158 // Construct processes for K-.
161 // add process & set ordering
162 G4ProcessManager* pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
164 pManager->AddProcess(&fKaonMinusIonisation, ordInActive, 2, 2);
166 pManager->AddProcess(&fKaonMinusMult);
167 pManager->SetProcessOrdering(&fKaonMinusMult, idxAlongStep, 1);
168 pManager->SetProcessOrdering(&fKaonMinusMult, idxPostStep, 1);
170 // map to G3 controls
171 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
172 controlMap->Add(&fKaonMinusIonisation, kLOSS);
173 controlMap->Add(&fKaonMinusMult, kMULS);
175 // map to G3 ALIMCProcess codes
176 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
177 mcMap->Add(&fKaonMinusIonisation, kPEnergyLoss);
178 mcMap->Add(&fKaonMinusMult, kPMultipleScattering);
181 //_____________________________________________________________________________
182 void TG4PhysicsConstructorHadron::ConstructEMProcessForProton()
184 // Construct processes for proton.
188 G4ProcessManager* pManager = G4Proton::Proton()->GetProcessManager();
190 pManager->AddProcess(&fProtonIonisation, ordInActive, 2, 2);
191 pManager->AddProcess(&fProtonMult);
194 pManager->SetProcessOrdering(&fProtonMult, idxAlongStep, 1);
195 pManager->SetProcessOrdering(&fProtonMult, idxPostStep, 1);
197 // map to G3 controls
198 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
199 controlMap->Add(&fProtonIonisation, kLOSS);
200 controlMap->Add(&fProtonMult, kMULS);
202 // map to G3 ALIMCProcess codes
203 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
204 mcMap->Add(&fProtonIonisation, kPEnergyLoss);
205 mcMap->Add(&fProtonMult, kPMultipleScattering);
208 //_____________________________________________________________________________
209 void TG4PhysicsConstructorHadron::ConstructEMProcessForAntiProton()
211 // Construct processes for anti-proton.
214 // add process & set ordering
215 G4ProcessManager* pManager = G4AntiProton::AntiProton()->GetProcessManager();
217 pManager->AddProcess(&fAntiProtonIonisation, ordInActive, 2, 2);
219 pManager->AddProcess(&fAntiProtonMult);
220 pManager->SetProcessOrdering(&fAntiProtonMult, idxAlongStep, 1);
221 pManager->SetProcessOrdering(&fAntiProtonMult, idxPostStep, 1);
223 pManager->AddRestProcess(&fAntiProtonAnnihilation);
225 // map to G3 controls
226 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
227 controlMap->Add(&fAntiProtonIonisation, kLOSS);
228 controlMap->Add(&fAntiProtonMult, kMULS);
230 // map to G3 ALIMCProcess codes
231 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
232 mcMap->Add(&fAntiProtonIonisation, kPEnergyLoss);
233 mcMap->Add(&fAntiProtonMult, kPMultipleScattering);
236 //_____________________________________________________________________________
237 void TG4PhysicsConstructorHadron::ConstructEMProcessForSigmaMinus()
239 // Construct processes for Sigma-.
242 // add process & set ordering
243 G4ProcessManager* pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
245 pManager->AddProcess(&fSigmaMinusIonisation, ordInActive, 2, 2);
247 pManager->AddProcess(&fSigmaMinusMult);
248 pManager->SetProcessOrdering(&fSigmaMinusMult, idxAlongStep, 1);
249 pManager->SetProcessOrdering(&fSigmaMinusMult, idxPostStep, 1);
251 // map to G3 controls
252 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
253 controlMap->Add(&fSigmaMinusIonisation, kLOSS);
254 controlMap->Add(&fSigmaMinusMult, kMULS);
256 // map to G3 ALIMCProcess codes
257 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
258 mcMap->Add(&fSigmaMinusIonisation, kPEnergyLoss);
259 mcMap->Add(&fSigmaMinusMult, kPMultipleScattering);
262 //_____________________________________________________________________________
263 void TG4PhysicsConstructorHadron::ConstructEMProcessForAntiSigmaMinus()
265 // Construct processes for anti-Sigma-.
268 // add process & set ordering
269 G4ProcessManager* pManager
270 = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
272 pManager->AddProcess(&fAntiSigmaMinusIonisation, ordInActive, 2, 2);
274 pManager->AddProcess(&fAntiSigmaMinusMult);
275 pManager->SetProcessOrdering(&fAntiSigmaMinusMult, idxAlongStep, 1);
276 pManager->SetProcessOrdering(&fAntiSigmaMinusMult, idxPostStep, 1);
278 // map to G3 controls
279 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
280 controlMap->Add(&fAntiSigmaMinusIonisation, kLOSS);
281 controlMap->Add(&fAntiSigmaMinusMult, kMULS);
283 // map to G3 ALIMCProcess codes
284 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
285 mcMap->Add(&fAntiSigmaMinusIonisation, kPEnergyLoss);
286 mcMap->Add(&fAntiSigmaMinusMult, kPMultipleScattering);
289 //_____________________________________________________________________________
290 void TG4PhysicsConstructorHadron::ConstructEMProcessForSigmaPlus()
292 // Construct processes for Sigma+.
295 // add process & set ordering
296 G4ProcessManager* pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
298 pManager->AddProcess(&fSigmaPlusIonisation, ordInActive, 2, 2);
300 pManager->AddProcess(&fSigmaPlusMult);
301 pManager->SetProcessOrdering(&fSigmaPlusMult, idxAlongStep, 1);
302 pManager->SetProcessOrdering(&fSigmaPlusMult, idxPostStep, 1);
304 // map to G3 controls
305 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
306 controlMap->Add(&fSigmaPlusIonisation, kLOSS);
307 controlMap->Add(&fSigmaPlusMult, kMULS);
309 // map to G3 ALIMCProcess codes
310 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
311 mcMap->Add(&fSigmaPlusIonisation, kPEnergyLoss);
312 mcMap->Add(&fSigmaPlusMult, kPMultipleScattering);
315 //_____________________________________________________________________________
316 void TG4PhysicsConstructorHadron::ConstructEMProcessForAntiSigmaPlus()
318 // Construct processes for anti-Sigma+.
321 // add process & set ordering
322 G4ProcessManager* pManager
323 = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
325 pManager->AddProcess(&fAntiSigmaPlusIonisation, ordInActive, 2, 2);
327 pManager->AddProcess(&fAntiSigmaPlusMult);
328 pManager->SetProcessOrdering(&fAntiSigmaPlusMult, idxAlongStep, 1);
329 pManager->SetProcessOrdering(&fAntiSigmaPlusMult, idxPostStep, 1);
331 // map to G3 controls
332 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
333 controlMap->Add(&fAntiSigmaPlusIonisation, kLOSS);
334 controlMap->Add(&fAntiSigmaPlusMult, kMULS);
336 // map to G3 ALIMCProcess codes
337 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
338 mcMap->Add(&fAntiSigmaPlusIonisation, kPEnergyLoss);
339 mcMap->Add(&fAntiSigmaPlusMult, kPMultipleScattering);
342 //_____________________________________________________________________________
343 void TG4PhysicsConstructorHadron::ConstructEMProcessForXiMinus()
345 // Construct processes for Xi-.
348 // add process & set ordering
349 G4ProcessManager* pManager = G4XiMinus::XiMinus()->GetProcessManager();
351 pManager->AddProcess(&fXiMinusIonisation, ordInActive, 2, 2);
353 pManager->AddProcess(&fXiMinusMult);
354 pManager->SetProcessOrdering(&fXiMinusMult, idxAlongStep, 1);
355 pManager->SetProcessOrdering(&fXiMinusMult, idxPostStep, 1);
357 // map to G3 controls
358 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
359 controlMap->Add(&fXiMinusIonisation, kLOSS);
360 controlMap->Add(&fXiMinusMult, kMULS);
362 // map to G3 ALIMCProcess codes
363 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
364 mcMap->Add(&fXiMinusIonisation, kPEnergyLoss);
365 mcMap->Add(&fXiMinusMult, kPMultipleScattering);
368 //_____________________________________________________________________________
369 void TG4PhysicsConstructorHadron::ConstructEMProcessForAntiXiMinus()
371 // Construct processes for anti-Xi-.
374 // add process & set ordering
375 G4ProcessManager* pManager
376 = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
378 pManager->AddProcess(&fAntiXiMinusIonisation, ordInActive, 2, 2);
380 pManager->AddProcess(&fAntiXiMinusMult);
381 pManager->SetProcessOrdering(&fAntiXiMinusMult, idxAlongStep, 1);
382 pManager->SetProcessOrdering(&fAntiXiMinusMult, idxPostStep, 1);
384 // map to G3 controls
385 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
386 controlMap->Add(&fAntiXiMinusIonisation, kLOSS);
387 controlMap->Add(&fAntiXiMinusMult, kMULS);
389 // map to G3 ALIMCProcess codes
390 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
391 mcMap->Add(&fAntiXiMinusIonisation, kPEnergyLoss);
392 mcMap->Add(&fAntiXiMinusMult, kPMultipleScattering);
395 //_____________________________________________________________________________
396 void TG4PhysicsConstructorHadron::ConstructEMProcessForOmegaMinus()
398 // Construct processes for Omega-.
401 // add process & set ordering
402 G4ProcessManager* pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
404 pManager->AddProcess(&fOmegaMinusIonisation, ordInActive, 2, 2);
406 pManager->AddProcess(&fOmegaMinusMult);
407 pManager->SetProcessOrdering(&fOmegaMinusMult, idxAlongStep, 1);
408 pManager->SetProcessOrdering(&fOmegaMinusMult, idxPostStep, 1);
410 // map to G3 controls
411 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
412 controlMap->Add(&fOmegaMinusIonisation, kLOSS);
413 controlMap->Add(&fOmegaMinusMult, kMULS);
415 // map to G3 ALIMCProcess codes
416 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
417 mcMap->Add(&fOmegaMinusIonisation, kPEnergyLoss);
418 mcMap->Add(&fOmegaMinusMult, kPMultipleScattering);
421 //_____________________________________________________________________________
422 void TG4PhysicsConstructorHadron::ConstructEMProcessForAntiOmegaMinus()
424 // Construct processes for pi+.
427 // add process & set ordering
428 G4ProcessManager* pManager
429 = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
431 pManager->AddProcess(&fAntiOmegaMinusIonisation, ordInActive, 2, 2);
433 pManager->AddProcess(&fAntiOmegaMinusMult);
434 pManager->SetProcessOrdering(&fAntiOmegaMinusMult, idxAlongStep, 1);
435 pManager->SetProcessOrdering(&fAntiOmegaMinusMult, idxPostStep, 1);
437 // map to G3 controls
438 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
439 controlMap->Add(&fAntiOmegaMinusIonisation, kLOSS);
440 controlMap->Add(&fAntiOmegaMinusMult, kMULS);
442 // map to G3 ALIMCProcess codes
443 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
444 mcMap->Add(&fAntiOmegaMinusIonisation, kPEnergyLoss);
445 mcMap->Add(&fAntiOmegaMinusMult, kPMultipleScattering);
448 //_____________________________________________________________________________
449 void TG4PhysicsConstructorHadron::ConstructEMProcessForOther()
451 // Construct processes for other hadrons.
454 theParticleIterator->reset();
455 while( (*theParticleIterator)() ){
456 G4ParticleDefinition* particle = theParticleIterator->value();
457 G4ProcessManager* pManager = particle->GetProcessManager();
458 G4int nofAlongStepProcesses
459 = pManager->GetAlongStepProcessVector()->length();
461 if ( !particle->IsShortLived() &&
462 particle->GetPDGCharge() != 0.0 &&
463 nofAlongStepProcesses == 1 &&
464 particle->GetParticleName() != "chargedgeantino") {
467 G4VProcess* aMultipleScattering = new G4MultipleScattering();
468 G4VProcess* anIonisation = new G4hIonisation();
471 pManager->AddProcess(anIonisation, ordInActive, 2, 2);
472 pManager->AddProcess(aMultipleScattering);
475 pManager->SetProcessOrdering(aMultipleScattering, idxAlongStep, 1);
476 pManager->SetProcessOrdering(aMultipleScattering, idxPostStep, 1);
478 // map to G3 controls
479 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
480 controlMap->Add(anIonisation, kLOSS);
481 controlMap->Add(aMultipleScattering, kMULS);
483 // map to AliMCProcess codes
484 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
485 mcMap->Add(anIonisation, kPEnergyLoss);
486 mcMap->Add(aMultipleScattering, kPMultipleScattering);
489 fOtherProcesses.push_back(aMultipleScattering);
490 fOtherProcesses.push_back(anIonisation);
495 //_____________________________________________________________________________
496 void TG4PhysicsConstructorHadron::ConstructHadProcessForPionPlus()
498 // Construct processes for pi+.
502 G4ProcessManager* pManager = G4PionPlus::PionPlus()->GetProcessManager();
503 pManager->AddDiscreteProcess(&fElasticProcess);
505 fLEPionPlusModel = new G4LEPionPlusInelastic();
506 fHEPionPlusModel = new G4HEPionPlusInelastic();
507 fPionPlusInelastic.RegisterMe(fLEPionPlusModel);
508 fPionPlusInelastic.RegisterMe(fHEPionPlusModel);
509 pManager->AddDiscreteProcess(&fPionPlusInelastic);
511 // map to G3 controls
512 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
513 controlMap->Add(&fElasticProcess, kHADR);
514 controlMap->Add(&fPionPlusInelastic, kHADR);
516 // map to G3 ALIMCProcess codes
517 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
518 mcMap->Add(&fElasticProcess, kPHElastic);
519 mcMap->Add(&fPionPlusInelastic, kPHInhelastic);
522 //_____________________________________________________________________________
523 void TG4PhysicsConstructorHadron::ConstructHadProcessForPionMinus()
525 // Construct processes for pi-.
528 // add process & set ordering
529 G4ProcessManager* pManager = G4PionMinus::PionMinus()->GetProcessManager();
530 pManager->AddDiscreteProcess(&fElasticProcess);
532 fLEPionMinusModel = new G4LEPionMinusInelastic();
533 fHEPionMinusModel = new G4HEPionMinusInelastic();
534 fPionMinusInelastic.RegisterMe(fLEPionMinusModel);
535 fPionMinusInelastic.RegisterMe(fHEPionMinusModel);
536 pManager->AddDiscreteProcess(&fPionMinusInelastic);
538 pManager->AddRestProcess(&fPionMinusAbsorption, ordDefault);
540 // map to G3 controls
541 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
542 controlMap->Add(&fPionMinusInelastic, kHADR);
543 controlMap->Add(&fPionMinusAbsorption, kHADR);
545 // map to G3 ALIMCProcess codes
546 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
547 mcMap->Add(&fPionMinusInelastic, kPHInhelastic);
548 mcMap->Add(&fPionMinusAbsorption, kPNuclearAbsorption);
551 //_____________________________________________________________________________
552 void TG4PhysicsConstructorHadron::ConstructHadProcessForKaonPlus()
554 // Construct processes for K+.
558 G4ProcessManager* pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
559 pManager->AddDiscreteProcess(&fElasticProcess);
561 fLEKaonPlusModel = new G4LEKaonPlusInelastic();
562 fHEKaonPlusModel = new G4HEKaonPlusInelastic();
563 fKaonPlusInelastic.RegisterMe(fLEKaonPlusModel);
564 fKaonPlusInelastic.RegisterMe(fHEKaonPlusModel);
565 pManager->AddDiscreteProcess(&fKaonPlusInelastic);
567 // map to G3 controls
568 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
569 controlMap->Add(&fKaonPlusInelastic, kHADR);
571 // map to G3 ALIMCProcess codes
572 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
573 mcMap->Add(&fKaonPlusInelastic, kPHInhelastic);
576 //_____________________________________________________________________________
577 void TG4PhysicsConstructorHadron::ConstructHadProcessForKaonMinus()
579 // Construct processes for K-.
582 // add process & set ordering
583 G4ProcessManager* pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
584 pManager->AddDiscreteProcess(&fElasticProcess);
586 fLEKaonMinusModel = new G4LEKaonMinusInelastic();
587 fHEKaonMinusModel = new G4HEKaonMinusInelastic();
588 fKaonMinusInelastic.RegisterMe(fLEKaonMinusModel);
589 fKaonMinusInelastic.RegisterMe(fHEKaonMinusModel);
590 pManager->AddDiscreteProcess(&fKaonMinusInelastic);
592 pManager->AddRestProcess(&fKaonMinusAbsorption, ordDefault);
594 // map to G3 controls
595 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
596 controlMap->Add(&fKaonMinusInelastic, kHADR);
597 controlMap->Add(&fKaonMinusAbsorption, kHADR);
599 // map to G3 ALIMCProcess codes
600 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
601 mcMap->Add(&fKaonMinusInelastic, kPHInhelastic);
602 mcMap->Add(&fKaonMinusAbsorption, kPNuclearAbsorption);
605 //_____________________________________________________________________________
606 void TG4PhysicsConstructorHadron::ConstructHadProcessForKaonZeroLong()
608 // Construct processes for K0L.
612 G4ProcessManager* pManager
613 = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
614 pManager->AddDiscreteProcess(&fElasticProcess);
616 fLEKaonZeroLModel = new G4LEKaonZeroLInelastic();
617 fHEKaonZeroLModel = new G4HEKaonZeroInelastic();
618 fKaonZeroLInelastic.RegisterMe(fLEKaonZeroLModel);
619 fKaonZeroLInelastic.RegisterMe(fHEKaonZeroLModel);
620 pManager->AddDiscreteProcess(&fKaonZeroLInelastic);
622 // map to G3 controls
623 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
624 controlMap->Add(&fKaonZeroLInelastic, kHADR);
626 // map to G3 ALIMCProcess codes
627 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
628 mcMap->Add(&fKaonZeroLInelastic, kPHInhelastic);
631 //_____________________________________________________________________________
632 void TG4PhysicsConstructorHadron::ConstructHadProcessForKaonZeroShort()
634 // Construct processes for K0S.
638 G4ProcessManager* pManager
639 = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
640 pManager->AddDiscreteProcess(&fElasticProcess);
642 fLEKaonZeroSModel = new G4LEKaonZeroSInelastic();
643 fHEKaonZeroSModel = new G4HEKaonZeroInelastic();
644 fKaonZeroSInelastic.RegisterMe(fLEKaonZeroSModel);
645 fKaonZeroSInelastic.RegisterMe(fHEKaonZeroSModel);
646 pManager->AddDiscreteProcess(&fKaonZeroSInelastic);
648 // map to G3 controls
649 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
650 controlMap->Add(&fKaonZeroSInelastic, kHADR);
652 // map to G3 ALIMCProcess codes
653 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
654 mcMap->Add(&fKaonZeroSInelastic, kPHInhelastic);
657 //_____________________________________________________________________________
658 void TG4PhysicsConstructorHadron::ConstructHadProcessForProton()
660 // Construct processes for proton.
664 G4ProcessManager* pManager = G4Proton::Proton()->GetProcessManager();
665 pManager->AddDiscreteProcess(&fElasticProcess);
667 fLEProtonModel = new G4LEProtonInelastic();
668 fHEProtonModel = new G4HEProtonInelastic();
669 fProtonInelastic.RegisterMe(fLEProtonModel);
670 fProtonInelastic.RegisterMe(fHEProtonModel);
671 pManager->AddDiscreteProcess(&fProtonInelastic);
673 // map to G3 controls
674 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
675 controlMap->Add(&fProtonInelastic, kHADR);
677 // map to G3 ALIMCProcess codes
678 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
679 mcMap->Add(&fProtonInelastic, kPHInhelastic);
682 //_____________________________________________________________________________
683 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiProton()
685 // Construct processes for anti-proton.
688 // add process & set ordering
689 G4ProcessManager* pManager = G4AntiProton::AntiProton()->GetProcessManager();
690 pManager->AddDiscreteProcess(&fElasticProcess);
692 fLEAntiProtonModel = new G4LEAntiProtonInelastic();
693 fHEAntiProtonModel = new G4HEAntiProtonInelastic();
694 fAntiProtonInelastic.RegisterMe(fLEAntiProtonModel);
695 fAntiProtonInelastic.RegisterMe(fHEAntiProtonModel);
696 pManager->AddDiscreteProcess(&fAntiProtonInelastic);
698 pManager->AddRestProcess(&fAntiProtonAnnihilation);
700 // map to G3 controls
701 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
702 controlMap->Add(&fAntiProtonInelastic, kHADR);
703 controlMap->Add(&fAntiProtonAnnihilation, kHADR);
705 // map to G3 ALIMCProcess codes
706 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
707 mcMap->Add(&fAntiProtonInelastic, kPHInhelastic);
708 mcMap->Add(&fAntiProtonAnnihilation, kPPbarAnnihilation);
711 //_____________________________________________________________________________
712 void TG4PhysicsConstructorHadron::ConstructHadProcessForNeutron()
714 // Construct processes for neutron.
718 G4ProcessManager* pManager = G4Neutron::Neutron()->GetProcessManager();
719 pManager->AddDiscreteProcess(&fElasticProcess);
721 fLENeutronModel = new G4LENeutronInelastic();
722 fHENeutronModel = new G4HENeutronInelastic();
723 fNeutronInelastic.RegisterMe(fLENeutronModel);
724 fNeutronInelastic.RegisterMe(fHENeutronModel);
725 pManager->AddDiscreteProcess(&fNeutronInelastic);
727 //fNeutronFissionModel = new G4LFission();
728 //fNeutronFission.RegisterMe(fNeutronFissionModel);
729 //pManager->AddDiscreteProcess(&NeutronFission);
731 //fNeutronCaptureModel = new G4LCapture();
732 //fNeutronCapture.RegisterMe(fNeutronCaptureModel);
733 //pManager->AddDiscreteProcess(&fNeutronCapture);
735 // map to G3 controls
736 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
737 controlMap->Add(&fNeutronInelastic, kHADR);
739 // map to G3 ALIMCProcess codes
740 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
741 mcMap->Add(&fNeutronInelastic, kPHInhelastic);
744 //_____________________________________________________________________________
745 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiNeutron()
747 // Construct processes for anti-neutron.
751 G4ProcessManager* pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
752 pManager->AddDiscreteProcess(&fElasticProcess);
754 fLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
755 fHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
756 fAntiNeutronInelastic.RegisterMe(fLEAntiNeutronModel);
757 fAntiNeutronInelastic.RegisterMe(fHEAntiNeutronModel);
758 pManager->AddDiscreteProcess(&fAntiNeutronInelastic);
760 pManager->AddRestProcess(&fAntiNeutronAnnihilation);
762 // map to G3 controls
763 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
764 controlMap->Add(&fAntiNeutronInelastic, kHADR);
765 controlMap->Add(&fAntiNeutronAnnihilation, kHADR);
767 // map to G3 ALIMCProcess codes
768 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
769 mcMap->Add(&fAntiNeutronInelastic, kPHInhelastic);
770 mcMap->Add(&fAntiNeutronAnnihilation, kPNoProcess);
773 //_____________________________________________________________________________
774 void TG4PhysicsConstructorHadron::ConstructHadProcessForLambda()
776 // Construct processes for Lambda.
780 G4ProcessManager* pManager = G4Lambda::Lambda()->GetProcessManager();
781 pManager->AddDiscreteProcess(&fElasticProcess);
783 fLELambdaModel = new G4LELambdaInelastic();
784 fHELambdaModel = new G4HELambdaInelastic();
785 fLambdaInelastic.RegisterMe(fLELambdaModel);
786 fLambdaInelastic.RegisterMe(fHELambdaModel);
787 pManager->AddDiscreteProcess(&fLambdaInelastic);
789 // map to G3 controls
790 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
791 controlMap->Add(&fLambdaInelastic, kHADR);
793 // map to G3 ALIMCProcess codes
794 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
795 mcMap->Add(&fLambdaInelastic, kPHInhelastic);
798 //_____________________________________________________________________________
799 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiLambda()
801 // Construct processes for anti-Lambda.
805 G4ProcessManager* pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
806 pManager->AddDiscreteProcess(&fElasticProcess);
808 fLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
809 fHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
810 fAntiLambdaInelastic.RegisterMe(fLEAntiLambdaModel);
811 fAntiLambdaInelastic.RegisterMe(fHEAntiLambdaModel);
812 pManager->AddDiscreteProcess(&fAntiLambdaInelastic);
814 // map to G3 controls
815 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
816 controlMap->Add(&fAntiLambdaInelastic, kHADR);
818 // map to G3 ALIMCProcess codes
819 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
820 mcMap->Add(&fAntiLambdaInelastic, kPHInhelastic);
823 //_____________________________________________________________________________
824 void TG4PhysicsConstructorHadron::ConstructHadProcessForSigmaMinus()
826 // Construct processes for Sigma-.
829 // add process & set ordering
830 G4ProcessManager* pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
831 pManager->AddDiscreteProcess(&fElasticProcess);
833 fLESigmaMinusModel = new G4LESigmaMinusInelastic();
834 fHESigmaMinusModel = new G4HESigmaMinusInelastic();
835 fSigmaMinusInelastic.RegisterMe(fLESigmaMinusModel);
836 fSigmaMinusInelastic.RegisterMe(fHESigmaMinusModel);
837 pManager->AddDiscreteProcess(&fSigmaMinusInelastic);
839 // map to G3 controls
840 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
841 controlMap->Add(&fSigmaMinusInelastic, kHADR);
843 // map to G3 ALIMCProcess codes
844 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
845 mcMap->Add(&fSigmaMinusInelastic, kPHInhelastic);
848 //_____________________________________________________________________________
849 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiSigmaMinus()
851 // Construct processes for anti-Sigma-.
854 // add process & set ordering
855 G4ProcessManager* pManager
856 = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
857 pManager->AddDiscreteProcess(&fElasticProcess);
859 fLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
860 fHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
861 fAntiSigmaMinusInelastic.RegisterMe(fLEAntiSigmaMinusModel);
862 fAntiSigmaMinusInelastic.RegisterMe(fHEAntiSigmaMinusModel);
863 pManager->AddDiscreteProcess(&fAntiSigmaMinusInelastic);
865 // map to G3 controls
866 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
867 controlMap->Add(&fAntiSigmaMinusInelastic, kHADR);
869 // map to G3 ALIMCProcess codes
870 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
871 mcMap->Add(&fAntiSigmaMinusInelastic, kPHInhelastic);
874 //_____________________________________________________________________________
875 void TG4PhysicsConstructorHadron::ConstructHadProcessForSigmaPlus()
877 // Construct processes for Sigma+.
880 // add process & set ordering
881 G4ProcessManager* pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
882 pManager->AddDiscreteProcess(&fElasticProcess);
884 fLESigmaPlusModel = new G4LESigmaPlusInelastic();
885 fHESigmaPlusModel = new G4HESigmaPlusInelastic();
886 fSigmaPlusInelastic.RegisterMe(fLESigmaPlusModel);
887 fSigmaPlusInelastic.RegisterMe(fHESigmaPlusModel);
888 pManager->AddDiscreteProcess(&fSigmaPlusInelastic);
890 // map to G3 controls
891 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
892 controlMap->Add(&fSigmaPlusInelastic, kHADR);
894 // map to G3 ALIMCProcess codes
895 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
896 mcMap->Add(&fSigmaPlusInelastic, kPHInhelastic);
899 //_____________________________________________________________________________
900 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiSigmaPlus()
902 // Construct processes for anti-Sigma+.
905 // add process & set ordering
906 G4ProcessManager* pManager
907 = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
908 pManager->AddDiscreteProcess(&fElasticProcess);
910 fLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
911 fHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
912 fAntiSigmaPlusInelastic.RegisterMe(fLEAntiSigmaPlusModel);
913 fAntiSigmaPlusInelastic.RegisterMe(fHEAntiSigmaPlusModel);
914 pManager->AddDiscreteProcess(&fAntiSigmaPlusInelastic);
916 // map to G3 controls
917 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
918 controlMap->Add(&fAntiSigmaPlusInelastic, kHADR);
920 // map to G3 ALIMCProcess codes
921 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
922 mcMap->Add(&fAntiSigmaPlusInelastic, kPHInhelastic);
925 //_____________________________________________________________________________
926 void TG4PhysicsConstructorHadron::ConstructHadProcessForXiMinus()
928 // Construct processes for Xi-.
931 // add process & set ordering
932 G4ProcessManager* pManager = G4XiMinus::XiMinus()->GetProcessManager();
933 pManager->AddDiscreteProcess(&fElasticProcess);
935 fLEXiMinusModel = new G4LEXiMinusInelastic();
936 fHEXiMinusModel = new G4HEXiMinusInelastic();
937 fXiMinusInelastic.RegisterMe(fLEXiMinusModel);
938 fXiMinusInelastic.RegisterMe(fHEXiMinusModel);
939 pManager->AddDiscreteProcess(&fXiMinusInelastic);
941 // map to G3 controls
942 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
943 controlMap->Add(&fXiMinusInelastic, kHADR);
945 // map to G3 ALIMCProcess codes
946 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
947 mcMap->Add(&fXiMinusInelastic, kPHInhelastic);
950 //_____________________________________________________________________________
951 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiXiMinus()
953 // Construct processes for anti-Xi-.
956 // add process & set ordering
957 G4ProcessManager* pManager
958 = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
959 pManager->AddDiscreteProcess(&fElasticProcess);
961 fLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
962 fHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
963 fAntiXiMinusInelastic.RegisterMe(fLEAntiXiMinusModel);
964 fAntiXiMinusInelastic.RegisterMe(fHEAntiXiMinusModel);
965 pManager->AddDiscreteProcess(&fAntiXiMinusInelastic);
967 // map to G3 controls
968 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
969 controlMap->Add(&fAntiXiMinusInelastic, kHADR);
971 // map to G3 ALIMCProcess codes
972 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
973 mcMap->Add(&fAntiXiMinusInelastic, kPHInhelastic);
976 //_____________________________________________________________________________
977 void TG4PhysicsConstructorHadron::ConstructHadProcessForXiZero()
979 // Construct processes for Xi0.
983 G4ProcessManager* pManager = G4XiZero::XiZero()->GetProcessManager();
984 pManager->AddDiscreteProcess(&fElasticProcess);
986 fLEXiZeroModel = new G4LEXiZeroInelastic();
987 fHEXiZeroModel = new G4HEXiZeroInelastic();
988 fXiZeroInelastic.RegisterMe(fLEXiZeroModel);
989 fXiZeroInelastic.RegisterMe(fHEXiZeroModel);
990 pManager->AddDiscreteProcess(&fXiZeroInelastic);
992 // map to G3 controls
993 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
994 controlMap->Add(&fXiZeroInelastic, kHADR);
996 // map to G3 ALIMCProcess codes
997 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
998 mcMap->Add(&fXiZeroInelastic, kPHInhelastic);
1001 //_____________________________________________________________________________
1002 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiXiZero()
1004 // Construct processes for anti-Xi0.
1008 G4ProcessManager* pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
1009 pManager->AddDiscreteProcess(&fElasticProcess);
1011 fLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
1012 fHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
1013 fAntiXiZeroInelastic.RegisterMe(fLEAntiXiZeroModel);
1014 fAntiXiZeroInelastic.RegisterMe(fHEAntiXiZeroModel);
1015 pManager->AddDiscreteProcess(&fAntiXiZeroInelastic);
1017 // map to G3 controls
1018 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
1019 controlMap->Add(&fAntiXiZeroInelastic, kHADR);
1021 // map to G3 ALIMCProcess codes
1022 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
1023 mcMap->Add(&fAntiXiZeroInelastic, kPHInhelastic);
1026 //_____________________________________________________________________________
1027 void TG4PhysicsConstructorHadron::ConstructHadProcessForOmegaMinus()
1029 // Construct processes for Omega-.
1032 // add process & set ordering
1033 G4ProcessManager* pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
1034 pManager->AddDiscreteProcess(&fElasticProcess);
1036 fLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
1037 fHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
1038 fOmegaMinusInelastic.RegisterMe(fLEOmegaMinusModel);
1039 fOmegaMinusInelastic.RegisterMe(fHEOmegaMinusModel);
1040 pManager->AddDiscreteProcess(&fOmegaMinusInelastic);
1042 // map to G3 controls
1043 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
1044 controlMap->Add(&fOmegaMinusInelastic, kHADR);
1046 // map to G3 ALIMCProcess codes
1047 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
1048 mcMap->Add(&fOmegaMinusInelastic, kPHInhelastic);
1051 //_____________________________________________________________________________
1052 void TG4PhysicsConstructorHadron::ConstructHadProcessForAntiOmegaMinus()
1054 // Construct processes for pi+.
1057 // add process & set ordering
1058 G4ProcessManager* pManager
1059 = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
1060 pManager->AddDiscreteProcess(&fElasticProcess);
1062 fLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
1063 fHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
1064 fAntiOmegaMinusInelastic.RegisterMe(fLEAntiOmegaMinusModel);
1065 fAntiOmegaMinusInelastic.RegisterMe(fHEAntiOmegaMinusModel);
1066 pManager->AddDiscreteProcess(&fAntiOmegaMinusInelastic);
1068 // map to G3 controls
1069 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
1070 controlMap->Add(&fAntiOmegaMinusInelastic, kHADR);
1072 // map to G3 ALIMCProcess codes
1073 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
1074 mcMap->Add(&fAntiOmegaMinusInelastic, kPHInhelastic);
1077 //_____________________________________________________________________________
1078 void TG4PhysicsConstructorHadron::ConstructHadProcessForOther()
1080 // Construct processes for other hadrons.
1083 theParticleIterator->reset();
1084 while( (*theParticleIterator)() ){
1085 G4ParticleDefinition* particle = theParticleIterator->value();
1086 G4ProcessManager* pManager = particle->GetProcessManager();
1087 G4int nofAlongStepProcesses
1088 = pManager->GetAlongStepProcessVector()->length();
1090 if ( !particle->IsShortLived() &&
1091 particle->GetPDGCharge() != 0.0 &&
1092 nofAlongStepProcesses == 1 &&
1093 particle->GetParticleName() != "chargedgeantino") {
1096 G4VProcess* aMultipleScattering = new G4MultipleScattering();
1097 G4VProcess* anIonisation = new G4hIonisation();
1100 pManager->AddProcess(anIonisation, ordInActive, 2, 2);
1101 pManager->AddProcess(aMultipleScattering);
1104 pManager->SetProcessOrdering(aMultipleScattering, idxAlongStep, 1);
1105 pManager->SetProcessOrdering(aMultipleScattering, idxPostStep, 1);
1107 // map to G3 controls
1108 TG4ProcessControlMap* controlMap = TG4ProcessControlMap::Instance();
1109 controlMap->Add(anIonisation, kLOSS);
1110 controlMap->Add(aMultipleScattering, kMULS);
1112 // map to AliMCProcess codes
1113 TG4ProcessMCMap* mcMap = TG4ProcessMCMap::Instance();
1114 mcMap->Add(anIonisation, kPEnergyLoss);
1115 mcMap->Add(aMultipleScattering, kPMultipleScattering);
1117 // keep for deleting
1118 fOtherProcesses.push_back(aMultipleScattering);
1119 fOtherProcesses.push_back(anIonisation);
1125 // protected methods
1127 //_____________________________________________________________________________
1128 void TG4PhysicsConstructorHadron::ConstructParticle()
1130 // Construct all hadrons.
1133 // Construct all mesons
1134 G4MesonConstructor pMesonConstructor;
1135 pMesonConstructor.ConstructParticle();
1137 // Construct all barions
1138 G4BaryonConstructor pBaryonConstructor;
1139 pBaryonConstructor.ConstructParticle();
1141 // Construct resonances and quarks
1142 G4ShortLivedConstructor pShortLivedConstructor;
1143 pShortLivedConstructor.ConstructParticle();
1146 //_____________________________________________________________________________
1147 void TG4PhysicsConstructorHadron::ConstructProcess()
1149 // Construct all hadronic processes.
1153 fElasticModel = new G4LElastic();
1154 fElasticProcess.RegisterMe(fElasticModel);
1157 ConstructHadProcessForPionPlus();
1158 ConstructHadProcessForPionMinus();
1159 ConstructHadProcessForKaonPlus();
1160 ConstructHadProcessForKaonMinus();
1161 ConstructHadProcessForKaonZeroLong();
1162 ConstructHadProcessForKaonZeroShort();
1163 ConstructHadProcessForProton();
1164 ConstructHadProcessForAntiProton();
1165 ConstructHadProcessForNeutron();
1166 ConstructHadProcessForAntiNeutron();
1167 ConstructHadProcessForLambda();
1168 ConstructHadProcessForAntiLambda();
1169 ConstructHadProcessForSigmaMinus();
1170 ConstructHadProcessForAntiSigmaMinus();
1171 ConstructHadProcessForSigmaPlus();
1172 ConstructHadProcessForAntiSigmaPlus();
1173 ConstructHadProcessForXiMinus();
1174 ConstructHadProcessForAntiXiMinus();
1175 ConstructHadProcessForXiZero();
1176 ConstructHadProcessForAntiXiZero();
1177 ConstructHadProcessForOmegaMinus();
1178 ConstructHadProcessForAntiOmegaMinus();
1179 ConstructHadProcessForOther();
1184 ConstructEMProcessForPionPlus();
1185 ConstructEMProcessForPionMinus();
1186 ConstructEMProcessForKaonPlus();
1187 ConstructEMProcessForKaonMinus();
1188 ConstructEMProcessForProton();
1189 ConstructEMProcessForAntiProton();
1190 ConstructEMProcessForSigmaMinus();
1191 ConstructEMProcessForAntiSigmaMinus();
1192 ConstructEMProcessForSigmaPlus();
1193 ConstructEMProcessForAntiSigmaPlus();
1194 ConstructEMProcessForXiMinus();
1195 ConstructEMProcessForAntiXiMinus();
1196 ConstructEMProcessForOmegaMinus();
1197 ConstructEMProcessForAntiOmegaMinus();
1198 ConstructEMProcessForOther();
1201 if (VerboseLevel() > 0) {
1202 G4cout << "### Hadron physics constructed." << G4endl;