Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:24:51

0001 #include "SimG4Core/CustomPhysics/interface/CustomPhysics.h"
0002 #include "SimG4Core/CustomPhysics/interface/CustomPhysicsList.h"
0003 #include "SimG4Core/CustomPhysics/interface/CustomPhysicsListSS.h"
0004 #include "SimG4Core/PhysicsLists/interface/CMSEmStandardPhysics.h"
0005 #include "SimG4Core/PhysicsLists/interface/CMSHadronPhysicsFTFP_BERT.h"
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007 #include "SimG4Core/CustomPhysics/interface/APrimePhysics.h"
0008 
0009 #include "G4DecayPhysics.hh"
0010 #include "G4EmExtraPhysics.hh"
0011 #include "G4IonPhysics.hh"
0012 #include "G4StoppingPhysics.hh"
0013 #include "G4HadronElasticPhysics.hh"
0014 #include "G4NeutronTrackingCut.hh"
0015 
0016 #include "G4SystemOfUnits.hh"
0017 
0018 CustomPhysics::CustomPhysics(const edm::ParameterSet& p) : PhysicsList(p) {
0019   int ver = p.getUntrackedParameter<int>("Verbosity", 0);
0020   bool tracking = p.getParameter<bool>("TrackingCut");
0021   bool ssPhys = p.getUntrackedParameter<bool>("ExoticaPhysicsSS", false);
0022   bool dbrem = p.getUntrackedParameter<bool>("DBrem", false);
0023   double timeLimit = p.getParameter<double>("MaxTrackTime") * ns;
0024   edm::LogInfo("PhysicsList") << "You are using the simulation engine: "
0025                               << "FTFP_BERT_EMM for regular particles \n"
0026                               << "CustomPhysicsList " << ssPhys << " for exotics; "
0027                               << " tracking cut " << tracking << "  t(ns)= " << timeLimit / ns;
0028   // EM Physics
0029   RegisterPhysics(new CMSEmStandardPhysics(ver, p));
0030 
0031   // Synchroton Radiation & GN Physics
0032   RegisterPhysics(new G4EmExtraPhysics(ver));
0033 
0034   // Decays
0035   RegisterPhysics(new G4DecayPhysics(ver));
0036 
0037   // Hadron Elastic scattering
0038   RegisterPhysics(new G4HadronElasticPhysics(ver));
0039 
0040   // Hadron Physics
0041   RegisterPhysics(new CMSHadronPhysicsFTFP_BERT(ver));
0042 
0043   // Stopping Physics
0044   RegisterPhysics(new G4StoppingPhysics(ver));
0045 
0046   // Ion Physics
0047   RegisterPhysics(new G4IonPhysics(ver));
0048 
0049   // Neutron tracking cut
0050   if (tracking) {
0051     G4NeutronTrackingCut* ncut = new G4NeutronTrackingCut(ver);
0052     ncut->SetTimeLimit(timeLimit);
0053     RegisterPhysics(ncut);
0054   }
0055 
0056   // Custom Physics
0057   if (dbrem) {
0058     RegisterPhysics(new APrimePhysics(p.getUntrackedParameter<double>("DBremMass"),
0059                                       p.getUntrackedParameter<std::string>("DBremScaleFile"),
0060                                       p.getUntrackedParameter<double>("DBremBiasFactor")));
0061   } else if (ssPhys) {
0062     RegisterPhysics(new CustomPhysicsListSS("custom", p));
0063   } else {
0064     RegisterPhysics(new CustomPhysicsList("custom", p));
0065   }
0066 }