Skip to content
Snippets Groups Projects
Geant4.10.PhysicsConstructors.h 5.13 KiB
Newer Older
Marko Petric's avatar
Marko Petric committed
#ifndef DDG4_PLUGINS_GEANT4_10_PHYSICSCONSTRUCTORS_H
#define DDG4_PLUGINS_GEANT4_10_PHYSICSCONSTRUCTORS_H

//==========================================================================
//  AIDA Detector description implementation
//--------------------------------------------------------------------------
Markus Frank's avatar
Markus Frank committed
// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
// All rights reserved.
//
// For the licensing terms see $DD4hepINSTALL/LICENSE.
// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
//
// Author     : M.Frank
//
//==========================================================================
Markus Frank's avatar
Markus Frank committed

// EM physics
#include <G4EmStandardPhysics_option1.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics_option1)
#include <G4EmStandardPhysics_option2.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics_option2)
#include <G4EmStandardPhysics_option3.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics_option3)
#include <G4EmStandardPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmStandardPhysics)
#include <G4EmStandardPhysicsSS.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmStandardPhysicsSS)
#include <G4EmStandardPhysicsWVI.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmStandardPhysicsWVI)
#include <G4EmExtraPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmExtraPhysics)
#include <G4EmDNAPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmDNAPhysics)
#include <G4EmLowEPPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmLowEPPhysics)
#include <G4EmLivermorePhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4EmLivermorePhysics)
#include <G4ChargeExchangePhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4ChargeExchangePhysics)
#include <G4GenericBiasingPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4GenericBiasingPhysics)

#include <G4HadronDElasticPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronDElasticPhysics)
#include <G4HadronElasticPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysics)
#include <G4HadronElasticPhysicsHP.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsHP)
#include <G4HadronElasticPhysicsLEND.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsLEND)
#include <G4HadronElasticPhysicsPHP.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsPHP)
#include <G4HadronElasticPhysicsXS.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronElasticPhysicsXS)
#include <G4HadronHElasticPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronHElasticPhysics)
#include <G4HadronPhysicsFTF_BIC.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTF_BIC)
#include <G4HadronPhysicsFTFP_BERT.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTFP_BERT)
#include <G4HadronPhysicsFTFP_BERT_HP.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTFP_BERT_HP)
#include <G4HadronPhysicsFTFP_BERT_TRV.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsFTFP_BERT_TRV)
#include <G4HadronPhysicsINCLXX.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsINCLXX)
#include <G4HadronPhysicsNuBeam.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsNuBeam)
#include <G4HadronPhysicsQGS_BIC.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGS_BIC)
#include <G4HadronPhysicsQGSP_BERT.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_BERT)
#include <G4HadronPhysicsQGSP_BERT_HP.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_BERT_HP)
#include <G4HadronPhysicsQGSP_BIC_AllHP.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_BIC_AllHP)
#include <G4HadronPhysicsQGSP_FTFP_BERT.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsQGSP_FTFP_BERT)
#include <G4HadronPhysicsShielding.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4HadronPhysicsShielding)


// Ion and hadrons
#include <G4IonBinaryCascadePhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4IonBinaryCascadePhysics)
#include <G4IonElasticPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4IonElasticPhysics)

#include <G4IonINCLXXPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4IonINCLXXPhysics)
#include <G4IonPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4IonPhysics)
#include <G4IonQMDPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4IonQMDPhysics)

#include <G4RadioactiveDecayPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4RadioactiveDecayPhysics)
#include <G4StepLimiterPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4StepLimiterPhysics)
#include <G4StoppingPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4StoppingPhysics)

#include <G4NeutronTrackingCut.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4NeutronTrackingCut)

// Optical physics
#include <G4OpticalPhysics.hh>
Markus Frank's avatar
Markus Frank committed
DECLARE_GEANT4_PHYSICS(G4OpticalPhysics)
// Fast simulation
#include <G4FastSimulationPhysics.hh>
DECLARE_GEANT4_PHYSICS(G4FastSimulationPhysics)

// 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)

Marko Petric's avatar
Marko Petric committed
#endif