Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:30:28

0001 #include "QBBCCMS.h"
0002 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0003 #include "SimG4Core/PhysicsLists/interface/CMSEmStandardPhysics.h"
0004 
0005 #include "G4EmStandardPhysics.hh"
0006 #include "G4DecayPhysics.hh"
0007 #include "G4EmExtraPhysics.hh"
0008 #include "G4StoppingPhysics.hh"
0009 #include "G4HadronicProcessStore.hh"
0010 
0011 #include "G4HadronInelasticQBBC.hh"
0012 #include "G4HadronElasticPhysicsXS.hh"
0013 #include "G4IonPhysics.hh"
0014 #include "G4NeutronTrackingCut.hh"
0015 
0016 QBBCCMS::QBBCCMS(const edm::ParameterSet& p) : PhysicsList(p) {
0017   int ver = p.getUntrackedParameter<int>("Verbosity", 0);
0018   bool emPhys = p.getUntrackedParameter<bool>("EMPhysics", true);
0019   bool hadPhys = p.getUntrackedParameter<bool>("HadPhysics", true);
0020   bool tracking = p.getParameter<bool>("TrackingCut");
0021   double timeLimit = p.getParameter<double>("MaxTrackTime") * CLHEP::ns;
0022   edm::LogVerbatim("PhysicsList") << "You are using the simulation engine: "
0023                                   << "FTFP_BERT_EMM: \n Flags for EM Physics: " << emPhys
0024                                   << "; Hadronic Physics: " << hadPhys << "; tracking cut: " << tracking
0025                                   << "; time limit(ns)= " << timeLimit / CLHEP::ns;
0026 
0027   if (emPhys) {
0028     // EM Physics
0029     RegisterPhysics(new CMSEmStandardPhysics(ver, p));
0030 
0031     // Synchroton Radiation & GN Physics
0032     G4EmExtraPhysics* gn = new G4EmExtraPhysics(ver);
0033     RegisterPhysics(gn);
0034   }
0035 
0036   // Decays
0037   RegisterPhysics(new G4DecayPhysics(ver));
0038 
0039   if (hadPhys) {
0040     G4HadronicProcessStore::Instance()->SetVerbose(ver);
0041 
0042     // Hadron Elastic scattering
0043     RegisterPhysics(new G4HadronElasticPhysicsXS(ver));
0044 
0045     // Hadron Physics
0046     RegisterPhysics(new G4HadronInelasticQBBC(ver));
0047 
0048     // Stopping Physics
0049     RegisterPhysics(new G4StoppingPhysics(ver));
0050 
0051     // Ion Physics
0052     RegisterPhysics(new G4IonPhysics(ver));
0053 
0054     // Neutron tracking cut
0055     if (tracking) {
0056       G4NeutronTrackingCut* ncut = new G4NeutronTrackingCut(ver);
0057       ncut->SetTimeLimit(timeLimit);
0058       RegisterPhysics(ncut);
0059     }
0060   }
0061 }