![]() |
![]() |
00001 #include "SimG4Core/Physics/interface/PhysicsList.h" 00002 #include "SimG4Core/Physics/interface/DDG4ProductionCuts.h" 00003 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00004 00005 #include "G4LossTableManager.hh" 00006 00007 PhysicsList::PhysicsList(G4LogicalVolumeToDDLogicalPartMap & map, 00008 const edm::ParameterSet & p) 00009 : G4VModularPhysicsList(), m_pPhysics(p), prodCuts(0) { 00010 m_Verbosity = m_pPhysics.getUntrackedParameter<int>("Verbosity",0); 00011 prodCuts = new DDG4ProductionCuts(map, m_Verbosity); 00012 } 00013 00014 PhysicsList::~PhysicsList() { 00015 if (m_Verbosity > 1) 00016 LogDebug("Physics") << " G4BremsstrahlungThreshold was " 00017 << G4LossTableManager::Instance()->BremsstrahlungTh()/GeV 00018 << " GeV "; 00019 if (prodCuts!=0) delete prodCuts; 00020 } 00021 00022 void PhysicsList::SetCuts() { 00023 00024 SetDefaultCutValue(m_pPhysics.getParameter<double>("DefaultCutValue")*cm); 00025 SetCutsWithDefault(); 00026 00027 G4LossTableManager::Instance()->SetBremsstrahlungTh 00028 (m_pPhysics.getParameter<double>("G4BremsstrahlungThreshold")*GeV); 00029 00030 if ( m_pPhysics.getParameter<bool>("CutsPerRegion") ) { 00031 prodCuts->update(); 00032 } 00033 00034 if ( m_Verbosity > 1) { 00035 G4LossTableManager::Instance()->SetVerbose(m_Verbosity-1); 00036 G4VUserPhysicsList::DumpCutValuesTable(); 00037 } 00038 00039 return ; 00040 00041 } 00042