From 6a95020dc176df72c8b6b2866cfe32139d22cac7 Mon Sep 17 00:00:00 2001
From: "Stephen A. Wood" <saw@jlab.org>
Date: Fri, 1 Nov 2013 09:44:40 -0400
Subject: [PATCH] Add gHcParm variables for some run information     Added
 variables using ENGINE names        gen_run_number       
 gen_run_starting_event        gen_event_id_number

---
 examples/hodtest.C       |  1 +
 examples/report.template |  4 ++++
 src/THcAnalyzer.cxx      | 44 ++++++++++++++++++++++++++++++++++++++++
 src/THcAnalyzer.h        |  3 ++-
 src/THcDC.cxx            |  4 ----
 5 files changed, 51 insertions(+), 5 deletions(-)

diff --git a/examples/hodtest.C b/examples/hodtest.C
index bac859d..cd4d937 100644
--- a/examples/hodtest.C
+++ b/examples/hodtest.C
@@ -71,6 +71,7 @@
   analyzer->SetOutFile( "hodtest.root" );
   analyzer->SetOdefFile("output.def");
   analyzer->SetCutFile("hodtest_cuts.def");        // optional
+  analyzer->SetCountMode(2);// Counter event number same as gen_event_ID_number
   
   // File to record cuts accounting information
   //  analyzer->SetSummaryFile("summary_example.log"); // optional
diff --git a/examples/report.template b/examples/report.template
index e40bf12..1130749 100644
--- a/examples/report.template
+++ b/examples/report.template
@@ -32,6 +32,10 @@ DC Events: {hdc_tot_events}
 Hit in chamber: {hdc_cham_hits[0]/hdc_tot_events:%.3f} {hdc_cham_hits[1]/hdc_tot_events:%.3f}
 Hit in plane: {hdc_hits_per_plane[0]/hdc_tot_events:%.3f} {hdc_hits_per_plane[1]/hdc_tot_events:%.3f} {hdc_hits_per_plane[2]/hdc_tot_events:%.3f} {hdc_hits_per_plane[3]/hdc_tot_events:%.3f} {hdc_hits_per_plane[4]/hdc_tot_events:%.3f} {hdc_hits_per_plane[5]/hdc_tot_events:%.3f} {hdc_hits_per_plane[6]/hdc_tot_events:%.3f} {hdc_hits_per_plane[7]/hdc_tot_events:%.3f} {hdc_hits_per_plane[8]/hdc_tot_events:%.3f} {hdc_hits_per_plane[9]/hdc_tot_events:%.3f} {hdc_hits_per_plane[10]/hdc_tot_events:%.3f} {hdc_hits_per_plane[11]/hdc_tot_events:%.3f}
 
+Run #{gen_run_number}
+first event = {gen_run_starting_event}
+last event  = {gen_event_id_number}
+
 Later, such things as hardware scalers will be added to the set of variables
 that can be used in expressions.
 
diff --git a/src/THcAnalyzer.cxx b/src/THcAnalyzer.cxx
index d238146..91cd472 100644
--- a/src/THcAnalyzer.cxx
+++ b/src/THcAnalyzer.cxx
@@ -22,6 +22,7 @@
 //////////////////////////////////////////////////////////////////////////
 
 #include "THcAnalyzer.h"
+#include "THaRunBase.h"
 #include "THaBenchmark.h"
 #include "TList.h"
 #include "THcParmList.h"
@@ -74,8 +75,11 @@ void THcAnalyzer::PrintReport(const char* templatefile, const char* ofile)
 
   if(!ostr.is_open()) {
       cout << "Error opening report output file " << ofile << endl;
+      return;
   }
 
+  LoadInfo();			// Load some run information into gHcParms
+
   // In principle, we should allow braces to be escaped.  But for
   // now we won't.  Existing template files don't seem to output
   // any braces
@@ -128,6 +132,46 @@ void THcAnalyzer::PrintReport(const char* templatefile, const char* ofile)
   return;
 }
 
+//_____________________________________________________________________________
+void THcAnalyzer::LoadInfo()
+{
+  // Copy some run information into gHcParms variables so that in can
+  // be used in reports.
+  // For example run number, first event analyzed, number of events, etc.
+  Int_t* runnum;
+  Int_t* firstevent;
+  Int_t* lastevent;
+
+  THaVar* varptr;
+  varptr = gHcParms->Find("gen_run_number");
+  if(varptr) {
+    runnum = (Int_t*) varptr->GetValuePointer(); // Assume correct type
+  } else {
+    runnum = new Int_t[1];
+    gHcParms->Define("gen_run_number","Run Number", *runnum);
+  }
+  *runnum = fRun->GetNumber();
+  
+  varptr = gHcParms->Find("gen_run_starting_event");
+  if(varptr) {
+    firstevent = (Int_t*) varptr->GetValuePointer(); // Assume correct type
+  } else {
+    firstevent = new Int_t[1];
+    gHcParms->Define("gen_run_starting_event","First event analyzed", *firstevent);
+  }
+  // May not agree with engine event definintions
+  *firstevent = fRun->GetFirstEvent();
+  
+  varptr = gHcParms->Find("gen_event_id_number");
+  if(varptr) {
+    lastevent = (Int_t*)varptr->GetValuePointer(); // Assume correct type
+  } else {
+    lastevent = new Int_t[1];
+    gHcParms->Define("gen_event_id_number","Last event analyzed", *lastevent);
+  }
+  // Not accurate
+  *lastevent = fRun->GetFirstEvent()+fRun->GetNumAnalyzed();
+}  
 
 //_____________________________________________________________________________
 
diff --git a/src/THcAnalyzer.h b/src/THcAnalyzer.h
index e57d75e..fcb2842 100644
--- a/src/THcAnalyzer.h
+++ b/src/THcAnalyzer.h
@@ -27,7 +27,8 @@ protected:
 private:
   //  THcAnalyzer( const THcAnalyzer& );
   //  THcAnalyzer& operator=( const THcAnalyzer& );
-  
+  void LoadInfo();
+
   ClassDef(THcAnalyzer,0)  //Hall C Analyzer Standard Event Loop
 
 };
diff --git a/src/THcDC.cxx b/src/THcDC.cxx
index 823f34b..30ecae9 100644
--- a/src/THcDC.cxx
+++ b/src/THcDC.cxx
@@ -1008,14 +1008,10 @@ void THcDC::Eff()
   fTotEvents++;
   for(Int_t i=0;i<fNChambers;i++) {
     if(fChambers[i]->GetNHits()>0) fNChamHits[i]++;
-    cout << fNChamHits[i] << " ";
   }
-  cout << endl;
   for(Int_t i=0;i<fNPlanes;i++) {
     if(fPlanes[i]->GetNHits() > 0) fHitsPerPlane[i]++;
-    cout << fHitsPerPlane[i] << " ";
   }
-  cout << endl;
   return;
 }
 
-- 
GitLab