GGS(GenericGEANT4Simulation)Software  2.7.0
 All Data Structures Namespaces Files Functions Variables Typedefs Macros
Public Member Functions
GGSSaveTGeoAction Class Reference
Inheritance diagram for GGSSaveTGeoAction:
Inheritance graph
[legend]
Collaboration diagram for GGSSaveTGeoAction:
Collaboration graph
[legend]

Public Member Functions

 GGSSaveTGeoAction ()
 Constructor.
 
 ~GGSSaveTGeoAction ()=default
 Destructor.
 
void BeginOfRunAction (const G4Run *run)
 Actions executed at beginning of run. More...
 
void EndOfRunAction (const G4Run *run)
 Actions executed at end of run. More...
 
void SetOutputFileBase (const std::string &outFileBase)
 Sets the output file base name. More...
 
- Public Member Functions inherited from GGSUserAction
 GGSUserAction ()
 Constructor. More...
 
virtual ~GGSUserAction ()
 Destructor.
 
G4ClassificationOfNewTrack ClassifyNewTrack (const G4Track *)
 Override of the ClassifyNewTrack method. More...
 

Detailed Description

Definition at line 21 of file GGSSaveTGeoAction.h.

Member Function Documentation

void GGSSaveTGeoAction::BeginOfRunAction ( const G4Run *  run)

Actions executed at beginning of run.

Method executed at the beginning of each run. A new ROOT file is created for each run.

Parameters
runPointer to the G4Run

Definition at line 31 of file GGSSaveTGeoAction.cpp.

31  { // -----------------
32  static const std::string routineName("GGSSaveTGeoAction::BeginOfRunAction");
33 
34  // Open the run file
35  // -----------------
36  _outFile = GGSRootFileService::GetInstance().GetFileForThisRun(_outBase, run);
37  if (!_outFile || (_outFile && _outFile->IsZombie())) {
38  COUT(ERROR) << "Cannot open ROOT file " << _outBase << "for run" << run->GetRunID() << ENDL;
39  throw std::runtime_error("");
40  }
41 }
TFile * GetFileForThisRun(const path &baseName, const G4Run *run)
Opens a file for a given run and returns a pointer to it.
#define ENDL
Definition: GGSSmartLog.h:105
#define COUT(level)
Smart log macro. It writes on stdout only if the specified verbosity level is lesser than the maximum...
Definition: GGSSmartLog.h:76
static GGSRootFileService & GetInstance()
Get reference to GGSRootFileService unique instance.
void GGSSaveTGeoAction::EndOfRunAction ( const G4Run *  run)

Actions executed at end of run.

Method executed at the end of each run. The TGeo object is written to file and the file is closed.

Parameters
runPointer to a G4Run

Definition at line 44 of file GGSSaveTGeoAction.cpp.

44  { // -----------------
45  static const std::string routineName("GGSSaveTGeoAction::EndOfRunAction");
46 
48  if (!geometry) {
49  COUT(ERROR) << "Can't get the geometry. Exit." << ENDL;
50  throw std::runtime_error("Invalid geometry");
51  }
52 
53  auto physVolume = geometry->GetVolume();
54 
55  auto g4Factory = std::make_unique<Geant4GM::Factory>();
56  if (GGSSmartLog::verboseLevel >= GGSSmartLog::DEBUG)
57  g4Factory->SetDebug(1);
58  g4Factory->Import(physVolume);
59 
60  // Export VGM geometry to Root
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();
66 
67  _outFile->cd();
68  gGeoManager->Write("GGSGeometry");
69 
71 }
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 ENDL
Definition: GGSSmartLog.h:105
#define COUT(level)
Smart log macro. It writes on stdout only if the specified verbosity level is lesser than the maximum...
Definition: GGSSmartLog.h:76
static GGSRootFileService & GetInstance()
Get reference to GGSRootFileService unique instance.
GGSVGeometryConstruction * GetGeoConstruction()
Returns the geometry construction object.
virtual G4VPhysicalVolume * GetVolume()=0
Get the detector VPhysicalVolume - virtual method.
void GGSSaveTGeoAction::SetOutputFileBase ( const std::string &  outFileBase)
inline

Sets the output file base name.

The file base name can be with or without extension (.root will be automatically used as extension). For each run, the run number will be appended to the base name before the .root extension. If no value is provided the file base name will fallback to the default value set in GSRootFileservice.

Parameters
outFileBaseThe output file base name.
See Also
GGSRootFileservice

Definition at line 58 of file GGSSaveTGeoAction.h.

58 { _outBase = outFileBase; }

The documentation for this class was generated from the following files: