Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- APPUNTI DI UN TUTORIAL ONLINE
- Geant4 Tutorial 13: Creating User-Defined Stepping & Event Action
- EVENT.HH--> header file
- #include "G4UserEventAction.hh"
- #include "G4EventAction.hh"
- #include "G4root.hh"
- #include "run.hh"
- //..........così creo la classe MyEventAction che userà la parte pubblica di G4UserEventAction............
- class MyEventAction : public G4UserEventAction
- {
- public:
- MyEventAction [MyRunAction *]; //costruttore
- ~MyEventAction(); //distruttore
- //Adesso prendo due funzioni da G4UserEventAction--> qui andranno rispettivamente tutto quello che succede a inizio e fine di un evento
- virtual void BeginOfEventaction (const G4Event*)
- virtual void EndOfEventAction (const G4Event*)
- void AddEdep (G4double edep) { fEdep += edep }
- //ho creato una funzione che ha come argomento un double, all'interno delle parentesi grasse c'è scritto quello che fa, ovvero accumulare energia sulla variabile fEdep una volta che questo valore si troverà dentro edep.
- private:
- G4double fEdep; //Variabile che sarà usata per accumulare energia
- };
- APPUNTI DI UN TUTORIAL ONLINE
- Geant4 Tutorial 13: Creating User-Defined Stepping & Event Action
- EVENT.CC--> file
- #include "event.hh" //andiamo ad includere l'header file appena creato
- //iniziamo descrivendo il nostro costruttore:
- MyEventAction::MyEventAction{MyRunaction* }
- {
- //qui dentro definiremo la variabile vista nell'header file e la porremmo pari a zero per inizializzarla
- fEdep = 0.;
- }
- MyEventAction::~MyEventAction //aggiungiamo il nostro distruttore
- {}
- void MyEventaction::BeginOfEventAction (const G4Event*) //è la funzione più importante e torna un puntatore a G4Event
- {
- fEdep = 0.;
- //scrivere questo diventa fondamentale perchè ogni volta che inizia un nuovo evento, il valore di energia che è accumulato, deve essere risettato a zero di nuovo: infatti se così non si facesse in ogni evento sarebbe accumulato continuamente il valore fino alla fine del run e si avrebbe un overall di valori, non si desidera questo!
- }
- void MyEventaction::EndOfEventAction (const G4Event*)
- {
- //molto simile alla funzione begin, l'unica differenza sta nel fatto che quando un evento finisce io vorrei leggere in output tutta l'energia depositata: la variabile che voglio stampata sarà fEdep
- G4cout << "Energy deposition: "<< fEdep << G4endl
- //inoltre voglio registrare questo valore all'interno di un file root
- G4AnalysisManager *man = G4AnalysisManager::Instance();
- man->FillNtupleDColumn(2,0, fEdep);
- man->AddNtupleRow(2);
- }
- FINE
Add Comment
Please, Sign In to add comment