#ifndef ALITRIGGERRUNSCALERS_H
#define ALITRIGGERRUNSCALERS_H
class TObject;
class TGraphErrors;
class AliTimeStamp;
class AliTriggerScalersESD;
class AliTriggerScalersRecord;
class AliTriggerScalersRecordESD;
class AliTriggerConfiguration;
#include "TArrayC.h"
class AliTriggerRunScalers : public TObject {
public:
AliTriggerRunScalers();
virtual ~AliTriggerRunScalers();
Short_t GetVersion() const { return fVersion; }
ULong_t GetRunNumber() const { return fRunNumber; }
UChar_t GetNumClasses() const { return fnClasses; }
Char_t GetClass( Int_t i ) const { return fClassIndex[i]; }
const TObjArray* GetScalersRecords() const { return &fScalersRecord; }
const TObjArray* GetScalersRecordsESD() const { return &fScalersRecordESD; }
AliTriggerScalersRecord* GetScalersRecord( Int_t index ) const { return (AliTriggerScalersRecord*)fScalersRecord.At(index); }
Int_t FindNearestScalersRecord( const AliTimeStamp *stamp ) const;
AliTriggerScalersESD* GetScalersForEventClass(const AliTimeStamp* stamp,const Int_t classIndex) const;
const AliTriggerScalersRecordESD* GetScalersDeltaForEvent(const AliTimeStamp* stamp) const;
const AliTriggerScalersRecordESD* GetScalersDeltaForRun() const;
Int_t ConsistencyCheck(Int_t position,Bool_t correctOverflow, UInt_t** overflow);
Int_t CorrectScalersOverflow();
Int_t CheckRunScalers(){return (fScalersRecord.GetEntriesFast()==fScalersRecordESD.GetEntriesFast());}
void SetVersion( Short_t ver ) { fVersion = ver; }
void SetRunNumber( ULong_t run ) { fRunNumber = run; }
void SetNumClasses( UChar_t nclass ) { fnClasses = nclass; fClassIndex.Set(nclass); }
void SetClass( UChar_t i, UChar_t index ) { fClassIndex[i]=index; }
void AddTriggerScalers( AliTriggerScalersRecord* scal );
virtual void Print( const Option_t* opt ="" ) const;
AliTriggerRunScalers( const AliTriggerRunScalers &run );
AliTriggerRunScalers& operator=(const AliTriggerRunScalers& run);
static AliTriggerRunScalers* ReadScalers( TString & filename );
static Bool_t CalculateMu(Double_t &mu, Double_t &errmu, ULong64_t countsB, ULong64_t countsAC, UShort_t nB, UShort_t nAC, UInt_t orbits, Bool_t bkgCorr=kTRUE, Double_t triggerEff=1., Double_t errorEff=0.);
static Bool_t CalculateMu(Double_t &mu, Double_t &errmu, ULong64_t countsB, ULong64_t countsAC, ULong64_t beamB, UShort_t nB, UShort_t nAC, Bool_t bkgCorr=kTRUE, Double_t triggerEff=1., Double_t errorEff=0.);
static ULong64_t GetDeltaScaler(const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, Int_t classIndex, TString level);
static Double_t GetDeltaTime(const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2);
static UInt_t GetDeltaOrbits(const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2);
static Bool_t GetScalerRate(Double_t &rate, Double_t &error, const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, Int_t classIndex, TString level);
static Bool_t GetScalerRatePerBC(Double_t &rate, Double_t &error, const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, AliTriggerConfiguration* cfg, Int_t classIndex, TString level);
static Bool_t GetClassL2L0(Double_t &l2l0, Double_t &error, const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, Int_t classIndex);
static Bool_t GetMuFromClassScaler(Double_t &mu, Double_t &errmu, const char* className, const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, AliTriggerConfiguration* cfg, Bool_t colBCsFromFillScheme=kTRUE, Bool_t bkgCorr=kTRUE, Double_t triggerEff=1., Double_t errorEff=0.);
ULong64_t GetDeltaScalerForRun(Int_t classIndex, TString level);
Bool_t GetScalerRateForRun(Double_t &rate, Double_t &error, Int_t classIndex, TString level);
Bool_t GetClassL2L0ForRun(Double_t &l2l0, Double_t &error, Int_t classIndex);
TGraphErrors* GetGraphScalerRate(const char* className, TString level, AliTriggerConfiguration* cfg);
TGraphErrors* GetGraphScalerL2L0Ratio(const char* className, AliTriggerConfiguration* cfg);
TGraphErrors* GetGraphMu(AliTriggerConfiguration* cfg, const char* className, Bool_t colBCsFromFillScheme=kTRUE, Bool_t bkgCorr=kTRUE, Double_t triggerEff=1., Double_t errorEff=0.);
private:
Short_t fVersion;
ULong_t fRunNumber;
UChar_t fnClasses;
TArrayC fClassIndex;
TObjArray fScalersRecord;
TObjArray fScalersRecordESD;
ClassDef( AliTriggerRunScalers, 4 )
};
#endif
AliTriggerRunScalers.h:10 AliTriggerRunScalers.h:11 AliTriggerRunScalers.h:12 AliTriggerRunScalers.h:13 AliTriggerRunScalers.h:14 AliTriggerRunScalers.h:15 AliTriggerRunScalers.h:16 AliTriggerRunScalers.h:17 AliTriggerRunScalers.h:18 AliTriggerRunScalers.h:19 AliTriggerRunScalers.h:20 AliTriggerRunScalers.h:21 AliTriggerRunScalers.h:22 AliTriggerRunScalers.h:23 AliTriggerRunScalers.h:24 AliTriggerRunScalers.h:25 AliTriggerRunScalers.h:26 AliTriggerRunScalers.h:27 AliTriggerRunScalers.h:28 AliTriggerRunScalers.h:29 AliTriggerRunScalers.h:30 AliTriggerRunScalers.h:31 AliTriggerRunScalers.h:32 AliTriggerRunScalers.h:33 AliTriggerRunScalers.h:34 AliTriggerRunScalers.h:35 AliTriggerRunScalers.h:36 AliTriggerRunScalers.h:37 AliTriggerRunScalers.h:38 AliTriggerRunScalers.h:39 AliTriggerRunScalers.h:40 AliTriggerRunScalers.h:41 AliTriggerRunScalers.h:42 AliTriggerRunScalers.h:43 AliTriggerRunScalers.h:44 AliTriggerRunScalers.h:45 AliTriggerRunScalers.h:46 AliTriggerRunScalers.h:47 AliTriggerRunScalers.h:48 AliTriggerRunScalers.h:49 AliTriggerRunScalers.h:50 AliTriggerRunScalers.h:51 AliTriggerRunScalers.h:52 AliTriggerRunScalers.h:53 AliTriggerRunScalers.h:54 AliTriggerRunScalers.h:55 AliTriggerRunScalers.h:56 AliTriggerRunScalers.h:57 AliTriggerRunScalers.h:58 AliTriggerRunScalers.h:59 AliTriggerRunScalers.h:60 AliTriggerRunScalers.h:61 AliTriggerRunScalers.h:62 AliTriggerRunScalers.h:63 AliTriggerRunScalers.h:64 AliTriggerRunScalers.h:65 AliTriggerRunScalers.h:66 AliTriggerRunScalers.h:67 AliTriggerRunScalers.h:68 AliTriggerRunScalers.h:69 AliTriggerRunScalers.h:70 AliTriggerRunScalers.h:71 AliTriggerRunScalers.h:72 AliTriggerRunScalers.h:73 AliTriggerRunScalers.h:74 AliTriggerRunScalers.h:75 AliTriggerRunScalers.h:76 AliTriggerRunScalers.h:77 AliTriggerRunScalers.h:78 AliTriggerRunScalers.h:79 AliTriggerRunScalers.h:80 AliTriggerRunScalers.h:81 AliTriggerRunScalers.h:82 AliTriggerRunScalers.h:83 AliTriggerRunScalers.h:84 AliTriggerRunScalers.h:85 AliTriggerRunScalers.h:86 AliTriggerRunScalers.h:87 AliTriggerRunScalers.h:88