DD4hep  1.30.0
Detector Description Toolkit for High Energy Physics
Geant4.10.PhysicsConstructors.h
Go to the documentation of this file.
1 #ifndef DDG4_PLUGINS_GEANT4_10_PHYSICSCONSTRUCTORS_H
2 #define DDG4_PLUGINS_GEANT4_10_PHYSICSCONSTRUCTORS_H
3 
4 //==========================================================================
5 // AIDA Detector description implementation
6 //--------------------------------------------------------------------------
7 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
8 // All rights reserved.
9 //
10 // For the licensing terms see $DD4hepINSTALL/LICENSE.
11 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
12 //
13 // Author : M.Frank
14 //
15 //==========================================================================
16 
17 // EM physics
18 #include <G4EmStandardPhysics_option1.hh>
19 DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics_option1)
20 #include <G4EmStandardPhysics_option2.hh>
21 DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics_option2)
22 #include <G4EmStandardPhysics_option3.hh>
23 DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics_option3)
24 #include <G4EmStandardPhysics.hh>
25 DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics)
26 #include <G4EmStandardPhysicsSS.hh>
27 DECLARE_GEANT4_PHYSICS(G4EmStandardPhysicsSS)
28 #include <G4EmStandardPhysicsWVI.hh>
29 DECLARE_GEANT4_PHYSICS(G4EmStandardPhysicsWVI)
30 #include <G4EmExtraPhysics.hh>
31 DECLARE_GEANT4_PHYSICS(G4EmExtraPhysics)
32 #include <G4EmDNAPhysics.hh>
33 DECLARE_GEANT4_PHYSICS(G4EmDNAPhysics)
34 #include <G4EmLowEPPhysics.hh>
35 DECLARE_GEANT4_PHYSICS(G4EmLowEPPhysics)
36 #include <G4EmLivermorePhysics.hh>
37 DECLARE_GEANT4_PHYSICS(G4EmLivermorePhysics)
38 #include <G4ChargeExchangePhysics.hh>
39 DECLARE_GEANT4_PHYSICS(G4ChargeExchangePhysics)
40 #include <G4GenericBiasingPhysics.hh>
41 DECLARE_GEANT4_PHYSICS(G4GenericBiasingPhysics)
42 
43 #include <G4HadronDElasticPhysics.hh>
44 DECLARE_GEANT4_PHYSICS(G4HadronDElasticPhysics)
45 #include <G4HadronElasticPhysics.hh>
46 DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysics)
47 #include <G4HadronElasticPhysicsHP.hh>
48 DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsHP)
49 #include <G4HadronElasticPhysicsLEND.hh>
50 DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsLEND)
51 #include <G4HadronElasticPhysicsPHP.hh>
52 DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsPHP)
53 #include <G4HadronElasticPhysicsXS.hh>
54 DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsXS)
55 #include <G4HadronHElasticPhysics.hh>
56 DECLARE_GEANT4_PHYSICS(G4HadronHElasticPhysics)
57 #include <G4HadronPhysicsFTF_BIC.hh>
58 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTF_BIC)
59 #include <G4HadronPhysicsFTFP_BERT.hh>
60 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTFP_BERT)
61 #include <G4HadronPhysicsFTFP_BERT_HP.hh>
62 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTFP_BERT_HP)
63 #include <G4HadronPhysicsFTFP_BERT_TRV.hh>
64 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTFP_BERT_TRV)
65 #include <G4HadronPhysicsINCLXX.hh>
66 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsINCLXX)
67 #include <G4HadronPhysicsNuBeam.hh>
68 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsNuBeam)
69 #include <G4HadronPhysicsQGS_BIC.hh>
70 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGS_BIC)
71 #include <G4HadronPhysicsQGSP_BERT.hh>
72 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_BERT)
73 #include <G4HadronPhysicsQGSP_BERT_HP.hh>
74 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_BERT_HP)
75 #include <G4HadronPhysicsQGSP_BIC_AllHP.hh>
76 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_BIC_AllHP)
77 #include <G4HadronPhysicsQGSP_FTFP_BERT.hh>
78 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_FTFP_BERT)
79 #include <G4HadronPhysicsShielding.hh>
80 DECLARE_GEANT4_PHYSICS(G4HadronPhysicsShielding)
81 
82 
83 // Ion and hadrons
84 #include <G4IonBinaryCascadePhysics.hh>
85 DECLARE_GEANT4_PHYSICS(G4IonBinaryCascadePhysics)
86 #include <G4IonElasticPhysics.hh>
87 DECLARE_GEANT4_PHYSICS(G4IonElasticPhysics)
88 
89 #include <G4IonINCLXXPhysics.hh>
90 DECLARE_GEANT4_PHYSICS(G4IonINCLXXPhysics)
91 #include <G4IonPhysics.hh>
92 DECLARE_GEANT4_PHYSICS(G4IonPhysics)
93 #include <G4IonQMDPhysics.hh>
94 DECLARE_GEANT4_PHYSICS(G4IonQMDPhysics)
95 
96 #include <G4RadioactiveDecayPhysics.hh>
97 DECLARE_GEANT4_PHYSICS(G4RadioactiveDecayPhysics)
98 #include <G4StepLimiterPhysics.hh>
99 DECLARE_GEANT4_PHYSICS(G4StepLimiterPhysics)
100 #include <G4StoppingPhysics.hh>
101 DECLARE_GEANT4_PHYSICS(G4StoppingPhysics)
102 
103 #include <G4NeutronTrackingCut.hh>
104 DECLARE_GEANT4_PHYSICS(G4NeutronTrackingCut)
105 
106 // Optical physics
107 #include <G4OpticalPhysics.hh>
108 DECLARE_GEANT4_PHYSICS(G4OpticalPhysics)
109 
110 // Fast simulation
111 #include <G4FastSimulationPhysics.hh>
112 DECLARE_GEANT4_PHYSICS(G4FastSimulationPhysics)
113 
114 // Channeling physics
115 #include <G4Channeling.hh>
116 #include <G4ProcessManager.hh>
117 namespace {
118 
120 
125  class Geant4ChannelingPhysics : public G4VPhysicsConstructor {
126  public:
127  Geant4ChannelingPhysics() = default;
128  virtual ~Geant4ChannelingPhysics() = default;
129  virtual void ConstructParticle() {}
130  virtual void ConstructProcess() {
131  G4Channeling* channeling = new G4Channeling();
132  auto* iter = G4ParticleTable::GetParticleTable()->GetIterator();
133  iter->reset();
134 
135  while( (*iter)() ){
136  G4ParticleDefinition* p = iter->value();
137  G4double charge = p->GetPDGCharge();
138  if (charge != 0) {
139  G4ProcessManager* m = p->GetProcessManager();
140  m->AddDiscreteProcess(channeling);
141  }
142  }
143  }
144  };
145 }
146 DECLARE_GEANT4_PHYSICS(Geant4ChannelingPhysics)
147 
148 #endif
G4VPhysicsConstructor
Class of the Geant4 toolkit. See http://www-geant4.kek.jp/Reference.
Definition: Geant4Classes.h:51
DECLARE_GEANT4_PHYSICS
#define DECLARE_GEANT4_PHYSICS(name)
Plugin definition to create Geant4 physics constructors (G4VPhysicsConstructor)
Definition: Factories.h:220