00001 #include "QGSPCMS.hh"
00002 #include "SimG4Core/PhysicsLists/interface/CMSEmStandardPhysics.h"
00003 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00004
00005 #include "G4DecayPhysics.hh"
00006 #include "G4EmExtraPhysics.hh"
00007 #include "G4IonPhysics.hh"
00008 #include "G4QStoppingPhysics.hh"
00009 #include "G4HadronElasticPhysics.hh"
00010 #include "G4NeutronTrackingCut.hh"
00011
00012 #include "G4DataQuestionaire.hh"
00013 #include "HadronPhysicsQGSP.hh"
00014
00015 QGSPCMS::QGSPCMS(G4LogicalVolumeToDDLogicalPartMap& map,
00016 const edm::ParameterSet & p) : PhysicsList(map, p) {
00017
00018 G4DataQuestionaire it(photon);
00019
00020 int ver = p.getUntrackedParameter<int>("Verbosity",0);
00021 bool emPhys = p.getUntrackedParameter<bool>("EMPhysics",true);
00022 bool hadPhys = p.getUntrackedParameter<bool>("HadPhysics",true);
00023 edm::LogInfo("PhysicsList") << "You are using the simulation engine: "
00024 << "QGSP 3.3 with Flags for EM Physics "
00025 << emPhys << " and for Hadronic Physics "
00026 << hadPhys << "\n";
00027
00028 if (emPhys) {
00029
00030 RegisterPhysics( new CMSEmStandardPhysics("standard EM",ver));
00031
00032
00033 RegisterPhysics(new G4EmExtraPhysics("extra EM"));
00034 }
00035
00036
00037 RegisterPhysics(new G4DecayPhysics("decay",ver));
00038
00039 if (hadPhys) {
00040
00041 RegisterPhysics(new G4HadronElasticPhysics("elastic",ver,false));
00042
00043
00044 G4bool quasiElastic=true;
00045 RegisterPhysics(new HadronPhysicsQGSP("hadron",quasiElastic));
00046
00047
00048
00049 RegisterPhysics(new G4QStoppingPhysics("stopping"));
00050
00051
00052 RegisterPhysics(new G4IonPhysics("ion"));
00053
00054
00055 RegisterPhysics( new G4NeutronTrackingCut("Neutron tracking cut", ver));
00056 }
00057 }
00058