gabbbri_ella

codice commentato EventAction da un utente

May 10th, 2022 (edited)
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.63 KB | None | 0 0
  1. APPUNTI DI UN TUTORIAL ONLINE
  2.  
  3. Geant4 Tutorial 13: Creating User-Defined Stepping & Event Action
  4. EVENT.HH--> header file
  5.  
  6. #include "G4UserEventAction.hh"
  7. #include "G4EventAction.hh"
  8.  
  9. #include "G4root.hh"
  10.  
  11. #include "run.hh"
  12.  
  13. //..........così creo la classe MyEventAction che userà la parte pubblica di G4UserEventAction............
  14. class MyEventAction : public G4UserEventAction
  15. {
  16.    public:
  17.       MyEventAction [MyRunAction *]; //costruttore
  18.      ~MyEventAction(); //distruttore
  19.      //Adesso prendo due funzioni da G4UserEventAction--> qui andranno rispettivamente tutto quello che succede a inizio e fine di un evento    
  20.      virtual void BeginOfEventaction (const G4Event*)
  21.      virtual void EndOfEventAction (const G4Event*)
  22.  
  23.      void AddEdep (G4double edep) { fEdep += edep }
  24.   //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.
  25.    
  26.    private:
  27.        G4double fEdep; //Variabile che sarà usata per accumulare energia    
  28. };
  29.  
  30. APPUNTI DI UN TUTORIAL ONLINE
  31.  
  32. Geant4 Tutorial 13: Creating User-Defined Stepping & Event Action
  33. EVENT.CC--> file
  34.  
  35. #include "event.hh" //andiamo ad includere l'header file appena creato
  36.  
  37. //iniziamo descrivendo il nostro costruttore:
  38.  
  39. MyEventAction::MyEventAction{MyRunaction* }
  40. {
  41. //qui dentro definiremo la variabile vista nell'header file e la porremmo pari a zero per inizializzarla    
  42.     fEdep = 0.;    
  43. }
  44.  
  45. MyEventAction::~MyEventAction //aggiungiamo il nostro distruttore
  46. {}
  47.  
  48. void MyEventaction::BeginOfEventAction (const G4Event*) //è la funzione più importante e torna un puntatore a G4Event
  49. {
  50.     fEdep = 0.;
  51.     //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!
  52. }
  53.    
  54. void MyEventaction::EndOfEventAction (const G4Event*)
  55. {
  56.     //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
  57.     G4cout << "Energy deposition: "<< fEdep << G4endl
  58.    //inoltre voglio registrare questo valore all'interno di un file root
  59.     G4AnalysisManager *man = G4AnalysisManager::Instance();
  60.    
  61.     man->FillNtupleDColumn(2,0, fEdep);
  62.    
  63.     man->AddNtupleRow(2);
  64.        
  65. }
  66.  
  67.  
  68. FINE
Add Comment
Please, Sign In to add comment