using namespace std;
#include <iostream>
#include <iomanip>
#include <math.h>
#include "TObjString.h"
#include "TProfile.h"
#include "TList.h"
#include "hqascalers.h"
ClassImp(HQAScalers)
ClassImp(HQAScaler)
ClassImp(HQAScaler6)
HQAScalers::HQAScalers()
{
   scalerList = new TList();
   resetPointers();
}
void HQAScalers::resetPointers()
{
   ;
   
   richCal_n = 0;     
   richHit_n = 0;     
   
   mdcCal1_n_m0 = 0;  
   mdcCal1_n_m1 = 0;  
   mdcCal1_n_m2 = 0;  
   mdcCal1_n_m3 = 0;  
   
   tofHit_n = 0;      
   
   
   shoHit_n = 0;      
   shoHitTof_n = 0;   
   
   kickTrack_n = 0;   
   
   trigRich_n    = 0;      
   trigTof_n     = 0;      
   trigShower_n  = 0;      
   trigTlepton_n = 0;      
   trigSlepton_n = 0;      
}
void HQAScalers::activateScalers()
{
   TList *activeList = new TList();
   const Char_t *scalers[1000] = {
#include "QAscalers.h"
   };
   
   for (Int_t i = 0; scalers[i] != 0; i++)
      activeList->Add(new TObjString(scalers[i]));
   
   TIter next(scalerList);
   while (TNamed *scal = (TNamed*) next()) {
      if (! activeList->Contains(scal->GetName()))
         scalerList->Remove(scal);
   }
   activeList->Delete();
   delete activeList;
}
void HQAScalers::bookScalers()
{
   
   richCal_n = new HQAScaler6("richCal_n", "richCal: pads/event");
   scalerList->Add(richCal_n, "rich--sectorwise");
   richHit_n = new HQAScaler6("richHit_n", "richHit: hits/event (*1000)");
   scalerList->Add(richHit_n, "rich--sectorwise");
   
   mdcCal1_n_m0 = new HQAScaler6("mdcCal1_n_m0", "mdcCal1: Plane I, avg. mult.");
   scalerList->Add(mdcCal1_n_m0, "mdc--sectorwise");
   mdcCal1_n_m1 = new HQAScaler6("mdcCal1_n_m1", "mdcCal1: Plane II, avg. mult.");
   scalerList->Add(mdcCal1_n_m1, "mdc--sectorwise");
   mdcCal1_n_m2 = new HQAScaler6("mdcCal1_n_m2", "mdcCal1: Plane III, avg. mult.");
   scalerList->Add(mdcCal1_n_m2, "mdc--sectorwise");
   mdcCal1_n_m3 = new HQAScaler6("mdcCal1_n_m3", "mdcCal1: Plane IV, avg. mult.");
   scalerList->Add(mdcCal1_n_m3, "mdc--sectorwise");
   
   tofHit_n = new HQAScaler6("tofHit_n", "tofHit: multiplicity/event");
   scalerList->Add(tofHit_n, "tof--sectorwise");
   
   shoHit_n = new HQAScaler6("shoHit_n", "showerHit: multiplicity/event");
   scalerList->Add(shoHit_n, "shower--sectorwise");
   shoHitTof_n = new HQAScaler6("shoHitTof_n", "showerHitTof: multiplicity/event");
   scalerList->Add(shoHitTof_n, "shower--sectorwise");
   
   kickTrack_n = new HQAScaler6("kickTrack_n", "kickTrack: tracks/event");
   scalerList->Add(kickTrack_n, "kick--sectorwise");
   
   trigRich_n = new HQAScaler6("trigRich_n", "RichIPU: hits/event");
   
   scalerList->Add(trigRich_n, "trigger--sectorwise");
   trigTof_n = new HQAScaler6("trigTof_n", "TofIPU: hits/event");
   
   scalerList->Add(trigTof_n, "trigger--sectorwise");
   trigShower_n = new HQAScaler6("trigShower_n", "ShowerIPU: hits/event");
   
   scalerList->Add(trigShower_n, "trigger--sectorwise");
   trigTlepton_n = new HQAScaler6("trigTlepton_n", "MU Leptonen(Tof): hits/event");
   
   scalerList->Add(trigTlepton_n, "trigger--sectorwise");
   trigSlepton_n = new HQAScaler6("trigSlepton_n", "MU Leptonen(Shower): hits/event");
   
   scalerList->Add(trigSlepton_n, "trigger--sectorwise");
   
   activateScalers();
}