Newer
Older
#ifndef DDG4_PLUGINS_GEANT4_10_PHYSICSCONSTRUCTORS_H
#define DDG4_PLUGINS_GEANT4_10_PHYSICSCONSTRUCTORS_H
Markus Frank
committed
//==========================================================================
// AIDA Detector description implementation
Markus Frank
committed
//--------------------------------------------------------------------------
// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
Markus Frank
committed
// All rights reserved.
//
// For the licensing terms see $DD4hepINSTALL/LICENSE.
// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
//
// Author : M.Frank
//
//==========================================================================
#include <G4EmStandardPhysics_option1.hh>
#include <G4EmStandardPhysics_option2.hh>
#include <G4EmStandardPhysics_option3.hh>
#include <G4HadronElasticPhysicsLEND.hh>
#include <G4HadronElasticPhysicsPHP.hh>
#include <G4HadronPhysicsFTFP_BERT_HP.hh>
#include <G4HadronPhysicsFTFP_BERT_TRV.hh>
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTFP_BERT_TRV)
#include <G4HadronPhysicsQGSP_BERT_HP.hh>
#include <G4HadronPhysicsQGSP_BIC_AllHP.hh>
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_BIC_AllHP)
#include <G4HadronPhysicsQGSP_FTFP_BERT.hh>
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_FTFP_BERT)
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsShielding)
// Ion and hadrons
#include <G4IonBinaryCascadePhysics.hh>
#include <G4RadioactiveDecayPhysics.hh>
DECLARE_GEANT4_PHYSICS(G4NeutronTrackingCut)
// Optical physics
DECLARE_GEANT4_PHYSICS(G4FastSimulationPhysics)
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// Channeling physics
#include <G4Channeling.hh>
#include <G4ProcessManager.hh>
namespace {
/// Channeling physics
/** Channeling physicsconstructor
* (taken from <Geant4>examples/extended/exoticphysics/channeling)
* \author M.Frank
* \version 1.0
*/
class Geant4ChannelingPhysics : public G4VPhysicsConstructor {
public:
Geant4ChannelingPhysics() = default;
virtual ~Geant4ChannelingPhysics() = default;
virtual void ConstructParticle() {}
virtual void ConstructProcess() {
G4Channeling* channeling = new G4Channeling();
auto* iter = G4ParticleTable::GetParticleTable()->GetIterator();
iter->reset();
while( (*iter)() ){
G4ParticleDefinition* p = iter->value();
G4double charge = p->GetPDGCharge();
if (charge != 0) {
G4ProcessManager* m = p->GetProcessManager();
m->AddDiscreteProcess(channeling);
}
}
}
};
}
DECLARE_GEANT4_PHYSICS(Geant4ChannelingPhysics)