LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
MyG4DecayPhysics.cc
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //---------------------------------------------------------------------------
28 //
29 // ClassName: G4DecayPhysics
30 //
31 // Author: 2002 J.P. Wellisch
32 //
33 // Modified:
34 // 10.11.2005 V.Ivanchenko edit to provide a standard
35 // 05.12.2005 V.Ivanchenko add controlled verbosity
36 // 25.04.2006 V.Ivanchenko fix problem of destructor
37 // 07.03.2022 D.Rivera: imported into artg4tk based on :
38 // geant4.10.06.p01/source/physics_lists/constructors/decay/src/G4DecayPhysics.cc
39 // Don't register Decay process for mu+, dump some information
40 //
41 //----------------------------------------------------------------------------
42 //
43 
44 #include "MyG4DecayPhysics.hh"
45 
46 #include "Geant4/G4ParticleDefinition.hh"
47 #include "Geant4/G4ProcessManager.hh"
48 
49 #include "Geant4/G4BosonConstructor.hh"
50 #include "Geant4/G4LeptonConstructor.hh"
51 #include "Geant4/G4MesonConstructor.hh"
52 #include "Geant4/G4BosonConstructor.hh"
53 #include "Geant4/G4BaryonConstructor.hh"
54 #include "Geant4/G4IonConstructor.hh"
55 #include "Geant4/G4ShortLivedConstructor.hh"
56 
57 // factoryGeant4/
58 #include "Geant4/G4PhysicsConstructorFactory.hh"
59 //
61 
62 G4ThreadLocal G4Decay* MyG4DecayPhysics::fDecayProcess = 0;
63 G4ThreadLocal G4bool MyG4DecayPhysics::wasActivated = false;
64 
66  : G4VPhysicsConstructor("Decay"), verbose(ver)
67 {
68 }
69 
71  : G4VPhysicsConstructor(name), verbose(ver)
72 {
73 }
74 
76 {
77 }
78 
80 {
81 
82 // G4cout << "MyG4DecayPhysics::ConstructParticle" << G4endl;
83  G4BosonConstructor pBosonConstructor;
84  pBosonConstructor.ConstructParticle();
85 
86  G4LeptonConstructor pLeptonConstructor;
87  pLeptonConstructor.ConstructParticle();
88 
89  G4MesonConstructor pMesonConstructor;
90  pMesonConstructor.ConstructParticle();
91 
92  G4BaryonConstructor pBaryonConstructor;
93  pBaryonConstructor.ConstructParticle();
94 
95  G4IonConstructor pIonConstructor;
96  pIonConstructor.ConstructParticle();
97 
98  G4ShortLivedConstructor pShortLivedConstructor;
99  pShortLivedConstructor.ConstructParticle();
100 }
101 
103 {
104  if(wasActivated) { return; }
105  wasActivated = true;
106 
107  G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
108 
109  // Add Decay Process
110  fDecayProcess = new G4Decay();
111  auto myParticleIterator=GetParticleIterator();
112  myParticleIterator->reset();
113  G4ParticleDefinition* particle=0;
114 
115  while( (*myParticleIterator)() )
116  {
117  particle = myParticleIterator->value();
118 
119  // -- check for mu+
120  bool isMuPlus = particle->GetParticleName() == "mu+";
121  if( fDecayProcess->IsApplicable(*particle) && !isMuPlus )
122  {
123  if(verbose > 1) {
124  G4cout << "### Decays for " << particle->GetParticleName() << G4endl;
125  }
126  ph->RegisterProcess(fDecayProcess, particle);
127  }
128  if (isMuPlus) {
129  G4cout << "MyG4DecayPhysics::ConstructProcess() mu+ decays will be disabled\n" << G4endl;
130  particle->DumpTable();
131  particle->GetProcessManager()->DumpInfo();
132  }
133  }
134 }
G4_DECLARE_PHYSCONSTR_FACTORY(MyG4DecayPhysics)
static G4ThreadLocal G4Decay * fDecayProcess
static G4ThreadLocal G4bool wasActivated
virtual void ConstructProcess()
virtual ~MyG4DecayPhysics()
MyG4DecayPhysics(G4int ver=1)
virtual void ConstructParticle()