AliRoot Core  ee782a0 (ee782a0)
AliTriggerRunScalers.h
Go to the documentation of this file.
1 #ifndef ALITRIGGERRUNSCALERS_H
2 #define ALITRIGGERRUNSCALERS_H
3 
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice */
6 
7 /* $Id: AliTriggerRunScalers.h 22322 2007-11-22 11:43:14Z cvetan $ */
8 
10 //
11 // Class to define a collection scalers per Run
12 //
13 //
14 //
16 class TObject;
17 class TGraphErrors;
18 class AliTimeStamp;
23 
24 #include "TArrayC.h"
25 
26 class AliTriggerRunScalers : public TObject {
27 
28 public:
30  virtual ~AliTriggerRunScalers();
31  // Getters
32  Short_t GetVersion() const { return fVersion; }
33  ULong_t GetRunNumber() const { return fRunNumber; }
34  UChar_t GetNumClasses() const { return fnClasses; }
35  Char_t GetClass( Int_t i ) const { return fClassIndex[i]; }
36  const TObjArray* GetScalersRecords() const { return &fScalersRecord; }
37  const TObjArray* GetScalersRecordsESD() const { return &fScalersRecordESD; }
39  Int_t FindNearestScalersRecord( const AliTimeStamp *stamp ) const;
40  AliTriggerScalersESD* GetScalersForEventClass(const AliTimeStamp* stamp,const Int_t classIndex) const;
43 
44  // Analysis
45  Int_t ConsistencyCheck(Int_t position,Bool_t correctOverflow, UInt_t** overflow);
46  Int_t CorrectScalersOverflow();
47  Int_t CheckRunScalers(){return (fScalersRecord.GetEntriesFast()==fScalersRecordESD.GetEntriesFast());}
48  // Setters
49  void SetVersion( Short_t ver ) { fVersion = ver; }
50  void SetRunNumber( ULong_t run ) { fRunNumber = run; }
51  void SetNumClasses( UChar_t nclass ) { fnClasses = nclass; fClassIndex.Set(nclass); }
52  void SetClass( UChar_t i, UChar_t index ) { fClassIndex[i]=index; }
54  virtual void Print( const Option_t* opt ="" ) const;
57 
58 static AliTriggerRunScalers* ReadScalers( TString & filename );
59  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.);
60  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.);
61  static ULong64_t GetDeltaScaler(const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, Int_t classIndex, TString level);
62  static Double_t GetDeltaTime(const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2);
63  static UInt_t GetDeltaOrbits(const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2);
64  static Bool_t GetScalerRate(Double_t &rate, Double_t &error, const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, Int_t classIndex, TString level);
65  static Bool_t GetScalerRatePerBC(Double_t &rate, Double_t &error, const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, AliTriggerConfiguration* cfg, Int_t classIndex, TString level);
66  static Bool_t GetClassL2L0(Double_t &l2l0, Double_t &error, const AliTriggerScalersRecordESD* scalRec1, const AliTriggerScalersRecordESD* scalRec2, Int_t classIndex);
67  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.);
68  ULong64_t GetDeltaScalerForRun(Int_t classIndex, TString level);
69  Bool_t GetScalerRateForRun(Double_t &rate, Double_t &error, Int_t classIndex, TString level);
70  Bool_t GetClassL2L0ForRun(Double_t &l2l0, Double_t &error, Int_t classIndex);
71  TGraphErrors* GetGraphScalerRate(const char* className, TString level, AliTriggerConfiguration* cfg);
72  TGraphErrors* GetGraphScalerL2L0Ratio(const char* className, AliTriggerConfiguration* cfg);
73  TGraphErrors* GetGraphMu(AliTriggerConfiguration* cfg, const char* className, Bool_t colBCsFromFillScheme=kTRUE, Bool_t bkgCorr=kTRUE, Double_t triggerEff=1., Double_t errorEff=0.);
74 
75 private:
76  Short_t fVersion; // Version
77  ULong_t fRunNumber; // Run number
78  UChar_t fnClasses; // Number of trigger classes
79  TArrayC fClassIndex; // list of classes used in this partition
80  TObjArray fScalersRecord; // Array of records (AliTriggerScalersRecord)
81  TObjArray fScalersRecordESD; // Array of records with 64bit scalers (AliTriggerScalersRecordESD)
82 
83 
84 
85  ClassDef( AliTriggerRunScalers, 4 ) // Define a Run Trigger Scalers (Scalers)
86 };
87 
88 #endif
void SetNumClasses(UChar_t nclass)
UChar_t GetNumClasses() const
virtual void Print(const Option_t *opt="") const
const TObjArray * GetScalersRecords() const
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.)
Bool_t GetClassL2L0ForRun(Double_t &l2l0, Double_t &error, Int_t classIndex)
#define TObjArray
Char_t GetClass(Int_t i) const
void SetClass(UChar_t i, UChar_t index)
static ULong64_t GetDeltaScaler(const AliTriggerScalersRecordESD *scalRec1, const AliTriggerScalersRecordESD *scalRec2, Int_t classIndex, TString level)
static UInt_t GetDeltaOrbits(const AliTriggerScalersRecordESD *scalRec1, const AliTriggerScalersRecordESD *scalRec2)
static Bool_t GetClassL2L0(Double_t &l2l0, Double_t &error, const AliTriggerScalersRecordESD *scalRec1, const AliTriggerScalersRecordESD *scalRec2, Int_t classIndex)
AliTriggerScalersESD * GetScalersForEventClass(const AliTimeStamp *stamp, const Int_t classIndex) const
const TObjArray * GetScalersRecordsESD() const
static AliTriggerRunScalers * ReadScalers(TString &filename)
static Bool_t GetScalerRate(Double_t &rate, Double_t &error, const AliTriggerScalersRecordESD *scalRec1, const AliTriggerScalersRecordESD *scalRec2, Int_t classIndex, TString level)
ULong64_t GetDeltaScalerForRun(Int_t classIndex, TString level)
static Double_t GetDeltaTime(const AliTriggerScalersRecordESD *scalRec1, const AliTriggerScalersRecordESD *scalRec2)
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 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.)
ULong_t GetRunNumber() const
const AliTriggerScalersRecordESD * GetScalersDeltaForRun() const
void SetRunNumber(ULong_t run)
Int_t ConsistencyCheck(Int_t position, Bool_t correctOverflow, UInt_t **overflow)
TGraphErrors * GetGraphScalerRate(const char *className, TString level, AliTriggerConfiguration *cfg)
TGraphErrors * GetGraphScalerL2L0Ratio(const char *className, AliTriggerConfiguration *cfg)
void AddTriggerScalers(AliTriggerScalersRecord *scal)
const AliTriggerScalersRecordESD * GetScalersDeltaForEvent(const AliTimeStamp *stamp) const
Short_t GetVersion() const
Int_t FindNearestScalersRecord(const AliTimeStamp *stamp) const
Bool_t GetScalerRateForRun(Double_t &rate, Double_t &error, Int_t classIndex, TString level)
AliTriggerRunScalers & operator=(const AliTriggerRunScalers &run)
AliTriggerScalersRecord * GetScalersRecord(Int_t index) const
void SetVersion(Short_t ver)
TGraphErrors * GetGraphMu(AliTriggerConfiguration *cfg, const char *className, Bool_t colBCsFromFillScheme=kTRUE, Bool_t bkgCorr=kTRUE, Double_t triggerEff=1., Double_t errorEff=0.)