From 02fe3700ef827780869da7447d5905bcd91c3bbf Mon Sep 17 00:00:00 2001
From: Adrien Matta <matta@lpccaen.in2p3.fr>
Date: Fri, 4 Mar 2022 11:10:22 +0100
Subject: [PATCH] * adding event number to npsimulation progress display

---
 NPSimulation/Core/EventAction.cc | 183 +++++++++++++++----------------
 1 file changed, 89 insertions(+), 94 deletions(-)

diff --git a/NPSimulation/Core/EventAction.cc b/NPSimulation/Core/EventAction.cc
index 90f69f130..d72051f41 100644
--- a/NPSimulation/Core/EventAction.cc
+++ b/NPSimulation/Core/EventAction.cc
@@ -21,129 +21,124 @@
  *****************************************************************************/
 // G4 headers
 #include "G4Event.hh"
-#include "G4UnitsTable.hh"
 #include "G4RunManager.hh"
 #include "G4Trajectory.hh"
 #include "G4TrajectoryContainer.hh"
+#include "G4UnitsTable.hh"
 #include "Randomize.hh"
 // NPTool headers
-#include "EventAction.hh"
 #include "DetectorConstruction.hh"
-#include "RootOutput.h"
+#include "EventAction.hh"
 #include "ParticleStack.hh"
+#include "RootOutput.h"
 
-#include<iostream>
+#include <iostream>
 
-EventAction* EventAction::m_EventAction=0;
+EventAction *EventAction::m_EventAction = 0;
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventAction::EventAction(){
-    m_EventAction=this;
-    begin=clock();
-    treated=0;
-    inter=0;
-    total=0;
-    mean_rate=0;
-    displayed=0;
-    m_tree =  RootOutput::getInstance()->GetTree();
+EventAction::EventAction() {
+  m_EventAction = this;
+  begin = clock();
+  treated = 0;
+  inter = 0;
+  total = 0;
+  mean_rate = 0;
+  displayed = 0;
+  m_tree = RootOutput::getInstance()->GetTree();
   //  m_tree->Branch("Geant4RandomState",&m_G4State );
- 
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventAction::~EventAction(){
-}
+EventAction::~EventAction() {}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventAction::BeginOfEventAction(const G4Event* event){
-    treated= event->GetEventID()+1;
-    ProgressDisplay();
-//    SaveRandomGeneratorInitialState();
+void EventAction::BeginOfEventAction(const G4Event *event) {
+  treated = event->GetEventID() + 1;
+  ProgressDisplay();
+  //    SaveRandomGeneratorInitialState();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventAction::EndOfEventAction(const G4Event* event){
-    m_detector->ReadAllSensitive(event) ;
-    m_tree->Fill();
-    m_detector->ClearInteractionCoordinates();
-//    if(treated%10000==0){
-//        tree->AutoSave();
-//        RootOutput::getInstance()->GetFile()->SaveSelf(kTRUE);
-//    }
+void EventAction::EndOfEventAction(const G4Event *event) {
+  m_detector->ReadAllSensitive(event);
+  m_tree->Fill();
+  m_detector->ClearInteractionCoordinates();
+  //    if(treated%10000==0){
+  //        tree->AutoSave();
+  //        RootOutput::getInstance()->GetFile()->SaveSelf(kTRUE);
+  //    }
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventAction::SetDetector(DetectorConstruction* detector){
-    m_detector = detector   ;
-}
+void EventAction::SetDetector(DetectorConstruction *detector) { m_detector = detector; }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventAction::SaveRandomGeneratorInitialState(){
-    // This allow to restore the geant4 random generator status for problematic
-    // event
-
-    CLHEP::HepRandom::saveFullState(m_Geant4RandomFullState);
-    m_G4State=m_Geant4RandomFullState.str();
-    m_Geant4RandomFullState.str("");
-    m_Geant4RandomFullState.clear();
-}
+void EventAction::SaveRandomGeneratorInitialState() {
+  // This allow to restore the geant4 random generator status for problematic
+  // event
 
+  CLHEP::HepRandom::saveFullState(m_Geant4RandomFullState);
+  m_G4State = m_Geant4RandomFullState.str();
+  m_Geant4RandomFullState.str("");
+  m_Geant4RandomFullState.clear();
+}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventAction::ProgressDisplay(){
-    if(treated==0){
-        begin = clock() ;
-        return;
+void EventAction::ProgressDisplay() {
+  if (treated == 0) {
+    begin = clock();
+    return;
+  }
+
+  end = clock();
+  if ((end - begin) > CLOCKS_PER_SEC || treated >= total) {
+    displayed++;
+    long double elapsed = (long double)(end - begin) / CLOCKS_PER_SEC;
+    double event_rate = inter / elapsed;
+    mean_rate += (event_rate - mean_rate) / (displayed);
+    double percent = 100 * treated / total;
+    double remain = (total - treated) / mean_rate;
+
+    char *timer;
+    double check;
+    check = 0;
+    if (remain > 60)
+      check = asprintf(&timer, "%dmin", (int)(remain / 60.));
+    else
+      check = asprintf(&timer, "%ds", (int)(remain));
+
+    check++;
+
+    static char star[] = "*******";
+    if (displayed % 2 == 0)
+      sprintf(star, "*******");
+    else
+      sprintf(star, "-------");
+
+    if (treated != total && mean_rate >= 1000 && remain >= 0 && displayed > 1)
+      printf("\r \033[1;31m %s Event: %d | Progress:  %.1f%% | Rate: %.1fk evt/s | Remain: %s %s\033[0m        ", star,
+             treated, percent, mean_rate / 1000., timer, star);
+
+    else if (mean_rate >= 1000 && remain >= 0 && displayed > 1) {
+      printf("\r \033[1;32m %s Event: %d | Progress:  %.1f%% | Rate: %.1fk evt/s | Remain: %s %s\033[0m        ", star,
+             treated, percent, mean_rate / 1000., timer, star);
     }
-    
-    end = clock();
-    if((end-begin)>CLOCKS_PER_SEC||treated>=total ){
-        displayed++;
-        long double elapsed =(long double) (end-begin)/CLOCKS_PER_SEC;
-        double event_rate = inter/elapsed;
-        mean_rate += (event_rate-mean_rate)/(displayed);
-        double percent = 100*treated/total;
-        double remain = (total-treated)/mean_rate;
-        
-        char* timer;
-        double check ;
-        check = 0;
-        if(remain>60)
-            check = asprintf(&timer,"%dmin",(int)(remain/60.));
-        else
-            check = asprintf(&timer,"%ds",(int)(remain));
-        
-        check++;
-        
-        static char star[]="*******";
-        if(displayed%2==0)
-            sprintf(star,"*******");
-        else
-            sprintf(star,"-------");
-        
-        if(treated!=total && mean_rate >=1000 && remain>=0 && displayed>1)
-            printf("\r \033[1;31m %s Progress:  %.1f%% | Rate: %.1fk evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate/1000.,timer,star);
-        
-        else if(mean_rate >=1000 && remain>=0 && displayed>1){
-            printf("\r \033[1;32m %s Progress: %.1f%% | Rate: %.1fk evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate/1000.,timer,star);
-        }
-        else if( treated!=total && mean_rate >= 0 && remain>=0 && displayed>1)
-            printf("\r \033[1;31m %s Progress:  %.1f%% | Rate: %.1f evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate,timer,star);
-        
-        else if(mean_rate >=0 && remain>=0 && displayed>1){
-            printf("\r \033[1;32m %s Progress: %.1f%% | Rate: %.1f evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate,timer,star);
-        }
-        fflush(stdout);
-        inter=0;
-        begin = clock() ;
+    else if (treated != total && mean_rate >= 0 && remain >= 0 && displayed > 1)
+      printf("\r \033[1;31m %s Event: %d | Progress:  %.1f%% | Rate: %.1f evt/s | Remain: %s %s\033[0m        ", star,
+             treated, percent, mean_rate, timer, star);
+
+    else if (mean_rate >= 0 && remain >= 0 && displayed > 1) {
+      printf("\r \033[1;32m %s Event: %d | Progress:  %.1f%% | Rate: %.1f evt/s | Remain: %s %s\033[0m        ", star,
+             treated, percent, mean_rate, timer, star);
     }
-    //  treated++;
-    inter++;
+    fflush(stdout);
+    inter = 0;
+    begin = clock();
+  }
+  //  treated++;
+  inter++;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventAction::SetRunLength(int length){
-    total = length;
-}
+void EventAction::SetRunLength(int length) { total = length; }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventAction* EventAction::GetInstance(){
-    return m_EventAction;
-}
+EventAction *EventAction::GetInstance() { return m_EventAction; }
-- 
GitLab