geant events for multiple scattering
This commit is contained in:
@@ -1,30 +1,36 @@
|
||||
#include "ActionInitialization.hh"
|
||||
#include "EmitterPrimary.hh"
|
||||
#include "SteppingAction.hh"
|
||||
|
||||
namespace uLib {
|
||||
namespace Geant {
|
||||
|
||||
ActionInitialization::ActionInitialization() : G4VUserActionInitialization() {}
|
||||
ActionInitialization::ActionInitialization(EmitterPrimary *emitter,
|
||||
Vector<GeantEvent> *output)
|
||||
: G4VUserActionInitialization(),
|
||||
m_Emitter(emitter),
|
||||
m_Output(output)
|
||||
{}
|
||||
|
||||
ActionInitialization::~ActionInitialization() {}
|
||||
|
||||
void ActionInitialization::BuildForMaster() const {
|
||||
// Questo metodo viene usato in modalità Multi-Threading.
|
||||
// Serve per le azioni che devono esistere solo nel thread Master
|
||||
// (tipicamente solo per inizializzare file di output o il RunAction globale).
|
||||
|
||||
// Esempio: SetUserAction(new RunAction());
|
||||
// Master thread: no per-event actions needed
|
||||
}
|
||||
|
||||
void ActionInitialization::Build() const {
|
||||
// Questo è il cuore dell'inizializzazione per i thread di lavoro.
|
||||
// Qui passiamo il nostro generatore di muoni a Geant4.
|
||||
SetUserAction(new EmitterPrimary());
|
||||
// Register the primary generator
|
||||
if (m_Emitter) {
|
||||
SetUserAction(m_Emitter);
|
||||
} else {
|
||||
// Fallback: default EmitterPrimary
|
||||
SetUserAction(new EmitterPrimary());
|
||||
}
|
||||
|
||||
// In una simulazione completa, qui registreresti anche le altre classi:
|
||||
// SetUserAction(new RunAction());
|
||||
// SetUserAction(new EventAction());
|
||||
// SetUserAction(new SteppingAction());
|
||||
// Register stepping action to collect scattering data
|
||||
if (m_Output) {
|
||||
SetUserAction(new SteppingAction(m_Output));
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Geant
|
||||
|
||||
Reference in New Issue
Block a user