36 #include "HepPDT/ParticleDataTable.hh" 38 #include "G4GeometryManager.hh" 39 #include "G4StateManager.hh" 40 #include "G4ApplicationState.hh" 41 #include "G4MTRunManagerKernel.hh" 42 #include "G4UImanager.hh" 44 #include "G4EventManager.hh" 47 #include "G4TransportationManager.hh" 48 #include "G4ParticleTable.hh" 50 #include "G4FieldManager.hh" 51 #include "G4CascadeInterface.hh" 53 #include "G4GDMLParser.hh" 54 #include "G4SystemOfUnits.hh" 64 m_managerInitialized(
false),
65 m_runTerminated(
false),
66 m_pUseMagneticField(p.getParameter<bool>(
"UseMagneticField")),
67 m_PhysicsTablesDir(p.getParameter<
std::
string>(
"PhysicsTablesDirectory")),
68 m_StorePhysicsTables(p.getParameter<bool>(
"StorePhysicsTables")),
69 m_RestorePhysicsTables(p.getParameter<bool>(
"RestorePhysicsTables")),
74 m_G4Commands(p.getParameter<
std::vector<
std::
string> >(
"G4Commands")),
81 m_kernel =
new G4MTRunManagerKernel();
82 G4StateManager::GetStateManager()->SetExceptionHandler(
new ExceptionHandler());
93 G4StateManager::GetStateManager()->SetNewState(G4State_Quit);
94 G4GeometryManager::GetInstance()->OpenGeometry();
103 <<
"RunManagerMT: start initialisation of geometry";
112 <<
"RunManagerMT: start initialisation of magnetic field";
119 G4TransportationManager * tM =
120 G4TransportationManager::GetTransportationManager();
121 tM->SetFieldManager(fieldManager);
122 fieldBuilder.
build( fieldManager, tM->GetPropagatorInField());
128 <<
"RunManagerMT: create PhysicsList";
130 std::unique_ptr<PhysicsListMakerBase>
133 if (physicsMaker.get()==
nullptr) {
135 <<
"Unable to find the Physics list requested";
143 "Physics list construction failed!");
155 <<
"RunManagerMT: start initialisation of PhysicsList for master";
179 G4CascadeInterface::Initialize();
184 "G4RunManagerKernel initialization failed!");
188 std::ostringstream
dir;
192 G4UImanager::GetUIpointer()->ApplyCommand(cmd);
199 G4cout <<
"RunManagerMT: Requested UI commands: " << G4endl;
202 G4UImanager::GetUIpointer()->ApplyCommand(
m_G4Commands[it]);
211 gdml.SetRegionExport(
true);
212 gdml.SetEnergyCutsExport(
true);
229 G4StateManager::GetStateManager()->SetNewState(G4State_GeomClosed);
248 G4StateManager::GetStateManager()->SetNewState(G4State_Quit);
269 <<
" RunManager WARNING : " 270 <<
"error opening file <" <<
m_FieldFile <<
"> for magnetic field";
272 double rmax = 9000*mm;
273 double zmax = 16000*mm;
278 int nr = (
int)(rmax/dr);
279 int nz = 2*(
int)(zmax/dz);
286 double cosf =
cos(phi);
287 double sinf =
sin(phi);
289 double point[4] = {0.0,0.0,0.0,0.0};
290 double bfield[3] = {0.0,0.0,0.0};
292 fout << std::setprecision(6);
293 for(
int i=0;
i<=nr; ++
i) {
295 for(
int j=0; j<=nz; ++j) {
299 field->GetFieldValue(point, bfield);
300 fout <<
"R(mm)= " << r/mm <<
" phi(deg)= " << phi/degree
301 <<
" Z(mm)= " << z/mm <<
" Bz(tesla)= " << bfield[2]/tesla
302 <<
" Br(tesla)= " << (bfield[0]*cosf + bfield[1]*sinf)/tesla
303 <<
" Bphi(tesla)= " << (bfield[0]*sinf - bfield[1]*cosf)/tesla
void Connect(RunAction *)
const std::string m_PhysicsTablesDir
bool m_managerInitialized
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::unique_ptr< DDG4ProductionCuts > m_prodCuts
G4MTRunManagerKernel * m_kernel
SensitiveDetectorCatalog m_catalog
edm::ParameterSet m_pRunAction
def create(alignables, pedeDump, additionalData, outputFile, config)
HepPDT::ParticleDataTable ParticleDataTable
void initG4(const DDCompactView *pDD, const MagneticField *pMF, const HepPDT::ParticleDataTable *fPDGTable)
Sin< T >::type sin(const T &t)
SimActivityRegistry::EndOfRunSignal m_endOfRunSignal
BeginOfRunSignal beginOfRunSignal_
std::vector< std::string > m_G4Commands
std::unique_ptr< CustomUIsession > m_UIsession
void initializeUserActions()
type of data representation of DDCompactView
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
RunManagerMT(edm::ParameterSet const &p)
Cos< T >::type cos(const T &t)
void EndOfRunAction(const G4Run *aRun)
EndOfRunSignal endOfRunSignal_
void DumpMagneticField(const G4Field *) const
void connect(Observer< const T * > *iObs)
does not take ownership of memory
void build(CMSFieldManager *fM, G4PropagatorInField *fP)
bool m_StorePhysicsTables
std::unique_ptr< PhysicsList > m_physicsList
edm::ParameterSet m_pField
std::unique_ptr< DDDWorld > m_world
edm::ParameterSet m_pPhysics
void BeginOfRunAction(const G4Run *aRun)
DDDWorldSignal dddWorldSignal_
bool m_RestorePhysicsTables
std::unique_ptr< sim::ChordFinderSetter > m_chordFinderSetter
void ReportRegions(const std::string &ss)
SimActivityRegistry::BeginOfRunSignal m_beginOfRunSignal
std::unique_ptr< SimRunInterface > m_runInterface
edm::ParameterSet m_g4overlap
RunAction * m_userRunAction
T get(const Candidate &c)
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
SimActivityRegistry m_registry