diff --git a/SimG4Core/PhysicsLists/plugins/FTFPCMS_BERT_HP_EMM.cc b/SimG4Core/PhysicsLists/plugins/FTFPCMS_BERT_HP_EMM.cc new file mode 100644 index 0000000000000..3533be4c8e2ec --- /dev/null +++ b/SimG4Core/PhysicsLists/plugins/FTFPCMS_BERT_HP_EMM.cc @@ -0,0 +1,74 @@ +#include "FTFPCMS_BERT_HP_EMM.h" +#include "SimG4Core/PhysicsLists/interface/CMSEmStandardPhysicsLPM.h" +#include "SimG4Core/PhysicsLists/interface/CMSThermalNeutrons.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include "G4DecayPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonPhysics.hh" +#include "G4StoppingPhysics.hh" +#include "G4HadronElasticPhysicsHP.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" +#include "G4HadronicProcessStore.hh" + +#include "G4DataQuestionaire.hh" +#include "G4HadronPhysicsFTFP_BERT_HP.hh" + +FTFPCMS_BERT_HP_EMM::FTFPCMS_BERT_HP_EMM(const edm::ParameterSet & p) + : PhysicsList(p) { + + G4DataQuestionaire it(photon); + + int ver = p.getUntrackedParameter("Verbosity",0); + bool emPhys = p.getUntrackedParameter("EMPhysics",true); + bool hadPhys = p.getUntrackedParameter("HadPhysics",true); + bool tracking= p.getParameter("TrackingCut"); + bool thermal = p.getUntrackedParameter("ThermalNeutrons"); + double timeLimit = p.getParameter("MaxTrackTime")*CLHEP::ns; + edm::LogInfo("PhysicsList") << "You are using the simulation engine: " + << "FTFP_BERT_HP_EMM \n Flags for EM Physics " + << emPhys << ", for Hadronic Physics " + << hadPhys << " and tracking cut " << tracking + << " t(ns)= " << timeLimit/CLHEP::ns + << " ThermalNeutrons: " << thermal; + + if (emPhys) { + // EM Physics + RegisterPhysics( new CMSEmStandardPhysicsLPM(ver)); + + // Synchroton Radiation & GN Physics + G4EmExtraPhysics* gn = new G4EmExtraPhysics(ver); + RegisterPhysics(gn); + } + + // Decays + this->RegisterPhysics( new G4DecayPhysics(ver) ); + + if (hadPhys) { + G4HadronicProcessStore::Instance()->SetVerbose(ver); + + // Hadron Elastic scattering + RegisterPhysics( new G4HadronElasticPhysicsHP(ver)); + + // Hadron Physics + RegisterPhysics( new G4HadronPhysicsFTFP_BERT_HP(ver)); + + // Stopping Physics + RegisterPhysics( new G4StoppingPhysics(ver)); + + // Ion Physics + RegisterPhysics( new G4IonPhysics(ver)); + + // Neutron tracking cut + if (tracking) { + G4NeutronTrackingCut* ncut= new G4NeutronTrackingCut(ver); + ncut->SetTimeLimit(timeLimit); + RegisterPhysics(ncut); + } + if(thermal) { + RegisterPhysics(new CMSThermalNeutrons(ver)); + } + } +} + diff --git a/SimG4Core/PhysicsLists/plugins/FTFPCMS_BERT_HP_EMM.h b/SimG4Core/PhysicsLists/plugins/FTFPCMS_BERT_HP_EMM.h new file mode 100644 index 0000000000000..1ea261cf4dad1 --- /dev/null +++ b/SimG4Core/PhysicsLists/plugins/FTFPCMS_BERT_HP_EMM.h @@ -0,0 +1,16 @@ +#ifndef SimG4Core_PhysicsLists_FTFPCMS_BERT_HP_EMM_H +#define SimG4Core_PhysicsLists_FTFPCMS_BERT_HP_EMM_H + +#include "SimG4Core/Physics/interface/PhysicsList.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +class FTFPCMS_BERT_HP_EMM: public PhysicsList { + +public: + FTFPCMS_BERT_HP_EMM(const edm::ParameterSet & p); +}; + +#endif + + + diff --git a/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_EMM.cc b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_EMM.cc new file mode 100644 index 0000000000000..cc50301a6466c --- /dev/null +++ b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_EMM.cc @@ -0,0 +1,67 @@ +#include "FTFPCMS_INCLXX_EMM.h" +#include "SimG4Core/PhysicsLists/interface/CMSEmStandardPhysicsLPM.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include "G4DecayPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonINCLXXPhysics.hh" +#include "G4StoppingPhysics.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" +#include "G4HadronicProcessStore.hh" + +#include "G4DataQuestionaire.hh" +#include "G4HadronPhysicsINCLXX.hh" + +FTFPCMS_INCLXX_EMM::FTFPCMS_INCLXX_EMM(const edm::ParameterSet & p) + : PhysicsList(p) { + + G4DataQuestionaire it(photon); + + int ver = p.getUntrackedParameter("Verbosity",0); + bool emPhys = p.getUntrackedParameter("EMPhysics",true); + bool hadPhys = p.getUntrackedParameter("HadPhysics",true); + bool tracking= p.getParameter("TrackingCut"); + double timeLimit = p.getParameter("MaxTrackTime")*CLHEP::ns; + edm::LogInfo("PhysicsList") << "You are using the simulation engine: " + << "FTFP_INCLXX_EMM \n Flags for EM Physics " + << emPhys << ", for Hadronic Physics " + << hadPhys << " and tracking cut " << tracking + << " t(ns)= " << timeLimit/CLHEP::ns; + + if (emPhys) { + // EM Physics + RegisterPhysics( new CMSEmStandardPhysicsLPM(ver)); + + // Synchroton Radiation & GN Physics + G4EmExtraPhysics* gn = new G4EmExtraPhysics(ver); + RegisterPhysics(gn); + } + + // Decays + this->RegisterPhysics( new G4DecayPhysics(ver) ); + + if (hadPhys) { + G4HadronicProcessStore::Instance()->SetVerbose(ver); + + // Hadron Elastic scattering + RegisterPhysics( new G4HadronElasticPhysics(ver)); + + // Hadron Physics + RegisterPhysics( new G4HadronPhysicsINCLXX(ver,true,false,true)); + + // Stopping Physics + RegisterPhysics( new G4StoppingPhysics(ver)); + + // Ion Physics + RegisterPhysics( new G4IonINCLXXPhysics(ver)); + + // Neutron tracking cut + if (tracking) { + G4NeutronTrackingCut* ncut= new G4NeutronTrackingCut(ver); + ncut->SetTimeLimit(timeLimit); + RegisterPhysics(ncut); + } + } +} + diff --git a/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_EMM.h b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_EMM.h new file mode 100644 index 0000000000000..ede625721130d --- /dev/null +++ b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_EMM.h @@ -0,0 +1,16 @@ +#ifndef SimG4Core_PhysicsLists_FTFPCMS_INCLXX_EMM_H +#define SimG4Core_PhysicsLists_FTFPCMS_INCLXX_EMM_H + +#include "SimG4Core/Physics/interface/PhysicsList.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +class FTFPCMS_INCLXX_EMM: public PhysicsList { + +public: + FTFPCMS_INCLXX_EMM(const edm::ParameterSet & p); +}; + +#endif + + + diff --git a/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_HP_EMM.cc b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_HP_EMM.cc new file mode 100644 index 0000000000000..85471b5b30a1f --- /dev/null +++ b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_HP_EMM.cc @@ -0,0 +1,74 @@ +#include "FTFPCMS_INCLXX_HP_EMM.h" +#include "SimG4Core/PhysicsLists/interface/CMSEmStandardPhysicsLPM.h" +#include "SimG4Core/PhysicsLists/interface/CMSThermalNeutrons.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include "G4DecayPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonINCLXXPhysics.hh" +#include "G4StoppingPhysics.hh" +#include "G4HadronElasticPhysicsHP.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" +#include "G4HadronicProcessStore.hh" + +#include "G4DataQuestionaire.hh" +#include "G4HadronPhysicsINCLXX.hh" + +FTFPCMS_INCLXX_HP_EMM::FTFPCMS_INCLXX_HP_EMM(const edm::ParameterSet & p) + : PhysicsList(p) { + + G4DataQuestionaire it(photon); + + int ver = p.getUntrackedParameter("Verbosity",0); + bool emPhys = p.getUntrackedParameter("EMPhysics",true); + bool hadPhys = p.getUntrackedParameter("HadPhysics",true); + bool tracking= p.getParameter("TrackingCut"); + bool thermal = p.getUntrackedParameter("ThermalNeutrons"); + double timeLimit = p.getParameter("MaxTrackTime")*CLHEP::ns; + edm::LogInfo("PhysicsList") << "You are using the simulation engine: " + << "FTFP_INCLXX_HP_EMM \n Flags for EM Physics " + << emPhys << ", for Hadronic Physics " + << hadPhys << " and tracking cut " << tracking + << " t(ns)= " << timeLimit/CLHEP::ns + << " ThermalNeutrons: " << thermal; + + if (emPhys) { + // EM Physics + RegisterPhysics( new CMSEmStandardPhysicsLPM(ver)); + + // Synchroton Radiation & GN Physics + G4EmExtraPhysics* gn = new G4EmExtraPhysics(ver); + RegisterPhysics(gn); + } + + // Decays + this->RegisterPhysics( new G4DecayPhysics(ver) ); + + if (hadPhys) { + G4HadronicProcessStore::Instance()->SetVerbose(ver); + + // Hadron Elastic scattering + RegisterPhysics( new G4HadronElasticPhysicsHP(ver)); + + // Hadron Physics + RegisterPhysics( new G4HadronPhysicsINCLXX(ver,true,true,true)); + + // Stopping Physics + RegisterPhysics( new G4StoppingPhysics(ver)); + + // Ion Physics + RegisterPhysics( new G4IonINCLXXPhysics(ver)); + + // Neutron tracking cut + if (tracking) { + G4NeutronTrackingCut* ncut= new G4NeutronTrackingCut(ver); + ncut->SetTimeLimit(timeLimit); + RegisterPhysics(ncut); + } + if(thermal) { + RegisterPhysics(new CMSThermalNeutrons(ver)); + } + } +} + diff --git a/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_HP_EMM.h b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_HP_EMM.h new file mode 100644 index 0000000000000..fa4367c268bbb --- /dev/null +++ b/SimG4Core/PhysicsLists/plugins/FTFPCMS_INCLXX_HP_EMM.h @@ -0,0 +1,16 @@ +#ifndef SimG4Core_PhysicsLists_FTFPCMS_INCLXX_HP_EMM_H +#define SimG4Core_PhysicsLists_FTFPCMS_INCLXX_HP_EMM_H + +#include "SimG4Core/Physics/interface/PhysicsList.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +class FTFPCMS_INCLXX_HP_EMM: public PhysicsList { + +public: + FTFPCMS_INCLXX_HP_EMM(const edm::ParameterSet & p); +}; + +#endif + + + diff --git a/SimG4Core/PhysicsLists/plugins/module.cc b/SimG4Core/PhysicsLists/plugins/module.cc index 1a138026dba05..73481ac50900c 100644 --- a/SimG4Core/PhysicsLists/plugins/module.cc +++ b/SimG4Core/PhysicsLists/plugins/module.cc @@ -7,11 +7,14 @@ #include "FTFPCMS_BERT_EML.h" #include "FTFPCMS_BERT_EMM.h" #include "FTFPCMS_BERT_EMM_TRK.h" +#include "FTFPCMS_BERT_HP_EMM.h" #include "FTFPCMS_BERT_HP_EML.h" #include "FTFPCMS_BERT_XS_EML.h" #include "FTFPCMS_BERT_EMV.h" #include "FTFPCMS_BERT_EMY.h" #include "FTFPCMS_BERT_EMZ.h" +#include "FTFPCMS_INCLXX_EMM.h" +#include "FTFPCMS_INCLXX_HP_EMM.h" #include "QBBCCMS.h" #include "QGSPCMS_BERT.h" #include "QGSPCMS_BERT_EML.h" @@ -36,6 +39,8 @@ typedef FTFPCMS_BERT_EMM FTFP_BERT_EMM; DEFINE_PHYSICSLIST(FTFP_BERT_EMM); typedef FTFPCMS_BERT_EMM_TRK FTFP_BERT_EMM_TRK; DEFINE_PHYSICSLIST(FTFP_BERT_EMM_TRK); +typedef FTFPCMS_BERT_HP_EMM FTFP_BERT_HP_EMM; +DEFINE_PHYSICSLIST(FTFP_BERT_HP_EMM); typedef FTFPCMS_BERT_HP_EML FTFP_BERT_HP_EML; DEFINE_PHYSICSLIST(FTFP_BERT_HP_EML); typedef FTFPCMS_BERT_XS_EML FTFP_BERT_XS_EML; @@ -46,6 +51,10 @@ typedef FTFPCMS_BERT_EMY FTFP_BERT_EMY; DEFINE_PHYSICSLIST(FTFP_BERT_EMY); typedef FTFPCMS_BERT_EMZ FTFP_BERT_EMZ; DEFINE_PHYSICSLIST(FTFP_BERT_EMZ); +typedef FTFPCMS_INCLXX_EMM FTFP_INCLXX_EMM; +DEFINE_PHYSICSLIST(FTFP_INCLXX_EMM); +typedef FTFPCMS_INCLXX_HP_EMM FTFP_INCLXX_HP_EMM; +DEFINE_PHYSICSLIST(FTFP_INCLXX_HP_EMM); typedef QBBCCMS QBBC; DEFINE_PHYSICSLIST(QBBC); typedef QGSPCMS_BERT QGSP_BERT;