17 #include "Geant4GM/volumes/Factory.h"
18 #include "RootGM/volumes/Factory.h"
19 #include "TGeoManager.h"
32 static const std::string routineName(
"GGSSaveTGeoAction::BeginOfRunAction");
37 if (!_outFile || (_outFile && _outFile->IsZombie())) {
38 COUT(ERROR) <<
"Cannot open ROOT file " << _outBase <<
"for run" << run->GetRunID() <<
ENDL;
39 throw std::runtime_error(
"");
45 static const std::string routineName(
"GGSSaveTGeoAction::EndOfRunAction");
49 COUT(ERROR) <<
"Can't get the geometry. Exit." <<
ENDL;
50 throw std::runtime_error(
"Invalid geometry");
55 auto g4Factory = std::make_unique<Geant4GM::Factory>();
56 if (GGSSmartLog::verboseLevel >= GGSSmartLog::DEBUG)
57 g4Factory->SetDebug(1);
58 g4Factory->Import(physVolume);
61 auto rtFactory = std::make_unique<RootGM::Factory>();
62 if (GGSSmartLog::verboseLevel >= GGSSmartLog::DEBUG)
63 rtFactory->SetDebug(1);
64 g4Factory->Export(rtFactory.get());
65 gGeoManager->CloseGeometry();
68 gGeoManager->Write(
"GGSGeometry");
TFile * GetFileForThisRun(const path &baseName, const G4Run *run)
Opens a file for a given run and returns a pointer to it.
Abstract class needed to load GGS geometry.
static GGSGeoPluginManager & GetInstance()
Get the singleton instance.
void CloseFileForThisRun(const path &baseName)
Closes the ROOT output file.
#define COUT(level)
Smart log macro. It writes on stdout only if the specified verbosity level is lesser than the maximum...
void EndOfRunAction(const G4Run *run)
Actions executed at end of run.
static GGSRootFileService & GetInstance()
Get reference to GGSRootFileService unique instance.
Mother class for user actions in GGS.
GGSSaveTGeoAction()
Constructor.
GGSVGeometryConstruction * GetGeoConstruction()
Returns the geometry construction object.
#define RegisterUA(uaClassName)
Macro for registration of user actions classes.
void BeginOfRunAction(const G4Run *run)
Actions executed at beginning of run.
virtual G4VPhysicalVolume * GetVolume()=0
Get the detector VPhysicalVolume - virtual method.