PlasmaMLPALLAS
Loading...
Searching...
No Matches
PlasmaMLPALLASRunAction.hh
Go to the documentation of this file.
1#ifndef PlasmaMLPALLASRunAction_h
2#define PlasmaMLPALLASRunAction_h 1
3
34// Include base classes and Geant4 utilities
35#include "G4UserRunAction.hh" // Base class for user-defined run actions
36#include "G4Run.hh" // Run object for event accumulation
37#include "G4UImanager.hh" // UI manager (for commands)
38#include "G4VVisManager.hh" // Visualization manager
39#include "G4RunManager.hh"
40#include "TFile.h" // ROOT file I/O
41#include "TTree.h"
42#include "TBranch.h"
43#include <mutex>
47
48
49// Forward declarations
52
58 // --- General run settings ---
59 int NEvents = 0;
63
64 // --- Physical parameters ---
65 float Xoff = 0.0;
66 float p = 0.0;
67 float cN2 = 0.0;
68 float A0 = 0.0;
69 float Ekin = 0.0;
70 float dEkin = 0.0;
71 float Q = 0.0;
72 float epsb = 0.0;
73 float Q1_Grad = 0.0;
74 float Q2_Grad = 0.0;
75 float Q3_Grad = 0.0;
76 float Q4_Grad = 0.0;
77 float Q1_Length = 0.0;
78 float Q2_Length = 0.0;
79 float Q3_Length = 0.0;
80 float Q4_Length = 0.0;
81 float SourceQ1Distance = 0.0;
82 float Q1Q2Distance = 0.0;
83 float Q2Q3Distance = 0.0;
84 float Q3Q4Distance = 0.0;
85 float B_Dipole = 0.0;
86 int B_Dipole_Map = 0;
87
96 int nEvents);
97};
98
103class PlasmaMLPALLASRunAction : public G4UserRunAction
104{
105public:
112 PlasmaMLPALLASRunAction(const char* fileName, size_t nEventsGenerated, G4bool multithreaded);
113
116
118 void BeginOfRunAction(const G4Run* run) override;
119
121 void EndOfRunAction(const G4Run* run) override;
122
124 template<typename T>
125 static void UpdateStatistics(T& stats, const T& newStats, TTree* tree);
126
127 // --- Specific statistics update methods ---
135
138
141
142private:
143 // --- Output configuration ---
144 G4String suffixe;
145 G4String fileName;
146
147 // --- Stored run statistics ---
148 RunTallyGlobalInput StatsGlobalInput;
149 RunTallyInput StatsInput;
150 RunTallyQuadrupoles StatsQuadrupoles;
151 RunTallyCollimators StatsHorizontalColl;
152 RunTallyCollimators StatsVerticalColl;
153 RunTallyYAG StatsBSYAG;
154 RunTallyYAG StatsBSPECYAG;
155
156 size_t NEventsGenerated;
157 G4bool flag_MT;
158
159 // --- ROOT file and trees ---
160 TFile *f = nullptr;
161 TTree *Tree_GlobalInput = nullptr;
162 TTree *Tree_Input = nullptr;
163 TTree *Tree_Quadrupoles = nullptr;
164 TTree *Tree_HorizontalColl = nullptr;
165 TTree *Tree_VerticalColl = nullptr;
166 TTree *Tree_BSYAG = nullptr;
167 TTree *Tree_BSPECYAG = nullptr;
168 TBranch *RunBranch = nullptr;
169
170 time_t start;
171
172 // --- Thread-safety ---
173 static std::atomic<int> activeThreads;
174 static G4Mutex fileMutex;
175
176protected:
179};
180
181#endif // PlasmaMLPALLASRunAction_h
Defines the detector geometry and magnetic fields for the PALLAS simulation.
Definition PlasmaMLPALLASGeometryConstruction.hh:41
Defines the primary generator action for the simulation.
Definition PlasmaMLPALLASPrimaryGeneratorAction.hh:29
Defines the run-level actions and statistics handling for the PALLAS simulation.
Definition PlasmaMLPALLASRunAction.hh:104
PlasmaMLPALLASPrimaryGeneratorAction * fPrimaryGenerator
Primary generator reference.
Definition PlasmaMLPALLASRunAction.hh:177
void SetGeometry(PlasmaMLPALLASGeometryConstruction *geom)
Set the geometry reference.
Definition PlasmaMLPALLASRunAction.cc:61
void BeginOfRunAction(const G4Run *run) override
Called at the start of each run.
Definition PlasmaMLPALLASRunAction.cc:201
void UpdateStatisticsGlobalInput(RunTallyGlobalInput)
Definition PlasmaMLPALLASRunAction.cc:138
void UpdateStatisticsQuadrupoles(RunTallyQuadrupoles)
Definition PlasmaMLPALLASRunAction.cc:140
void UpdateStatisticsHorizontalColl(RunTallyCollimators)
Definition PlasmaMLPALLASRunAction.cc:141
static void UpdateStatistics(T &stats, const T &newStats, TTree *tree)
Generic template to update cumulative statistics in a ROOT tree.
Definition PlasmaMLPALLASRunAction.cc:127
void EndOfRunAction(const G4Run *run) override
Called at the end of each run.
Definition PlasmaMLPALLASRunAction.cc:343
PlasmaMLPALLASGeometryConstruction * fGeometry
Geometry reference.
Definition PlasmaMLPALLASRunAction.hh:178
void SetPrimaryGenerator(PlasmaMLPALLASPrimaryGeneratorAction *gen)
Set the primary generator reference.
Definition PlasmaMLPALLASRunAction.cc:55
~PlasmaMLPALLASRunAction()
Destructor.
Definition PlasmaMLPALLASRunAction.cc:52
void UpdateStatisticsInput(RunTallyInput)
Definition PlasmaMLPALLASRunAction.cc:139
void UpdateStatisticsVerticalColl(RunTallyCollimators)
Definition PlasmaMLPALLASRunAction.cc:142
void UpdateStatisticsBSPECYAG(RunTallyYAG)
Definition PlasmaMLPALLASRunAction.cc:144
void UpdateStatisticsBSYAG(RunTallyYAG)
Definition PlasmaMLPALLASRunAction.cc:143
Structure for collimators statistics.
Definition PlasmaMLPALLASEventAction.hh:40
Stores configuration parameters and beamline settings for a simulation run.
Definition PlasmaMLPALLASRunAction.hh:57
float SourceQ1Distance
Definition PlasmaMLPALLASRunAction.hh:81
float Xoff
Definition PlasmaMLPALLASRunAction.hh:65
float Q2_Length
Definition PlasmaMLPALLASRunAction.hh:78
int B_Dipole_Map
Definition PlasmaMLPALLASRunAction.hh:86
void FillFrom(const PlasmaMLPALLASPrimaryGeneratorAction *gen, const PlasmaMLPALLASGeometryConstruction *geo, int nEvents)
Populate structure from generator and geometry settings.
Definition PlasmaMLPALLASRunAction.cc:152
int NEvents
Definition PlasmaMLPALLASRunAction.hh:59
float dEkin
Definition PlasmaMLPALLASRunAction.hh:70
float Q3_Grad
Definition PlasmaMLPALLASRunAction.hh:75
float Q3_Length
Definition PlasmaMLPALLASRunAction.hh:79
float cN2
Definition PlasmaMLPALLASRunAction.hh:67
float epsb
Definition PlasmaMLPALLASRunAction.hh:72
float Q4_Grad
Definition PlasmaMLPALLASRunAction.hh:76
float Q3Q4Distance
Definition PlasmaMLPALLASRunAction.hh:84
float Q
Definition PlasmaMLPALLASRunAction.hh:71
int Display_Collimators
Definition PlasmaMLPALLASRunAction.hh:61
float Q1Q2Distance
Definition PlasmaMLPALLASRunAction.hh:82
float A0
Definition PlasmaMLPALLASRunAction.hh:68
float Q1_Grad
Definition PlasmaMLPALLASRunAction.hh:73
float B_Dipole
Definition PlasmaMLPALLASRunAction.hh:85
int Display_Quadrupoles
Definition PlasmaMLPALLASRunAction.hh:62
int Display_Geometry
Definition PlasmaMLPALLASRunAction.hh:60
float Q2_Grad
Definition PlasmaMLPALLASRunAction.hh:74
float Ekin
Definition PlasmaMLPALLASRunAction.hh:69
float Q2Q3Distance
Definition PlasmaMLPALLASRunAction.hh:83
float Q4_Length
Definition PlasmaMLPALLASRunAction.hh:80
float p
Definition PlasmaMLPALLASRunAction.hh:66
float Q1_Length
Definition PlasmaMLPALLASRunAction.hh:77
Structure to store per-event input particle data.
Definition PlasmaMLPALLASEventAction.hh:23
Definition PlasmaMLPALLASQuadrupoleUtils.hh:56
Structure for YAG detector statistics.
Definition PlasmaMLPALLASEventAction.hh:71