Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-10 02:21:24

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