#ifndef AliAnaVZEROPbPb_cxx
#define AliAnaVZEROPbPb_cxx
class TH1F;
class TH2F;
class AliESDEvent;
#include "AliAnalysisTaskSE.h"
class AliAnaVZEROPbPb : public AliAnalysisTaskSE {
public:
AliAnaVZEROPbPb();
AliAnaVZEROPbPb(const char *name);
virtual ~AliAnaVZEROPbPb() {}
virtual void UserCreateOutputObjects();
virtual void UserExec(Option_t *option);
virtual void Terminate(Option_t *);
virtual void Init();
void SetClassesNames(const Char_t * names);
void SetOnlineChargeRange(Int_t nbins, Float_t maxA, Float_t macC);
void SetTotalMultiplicityRange(Int_t nbins, Float_t max);
void SetMultiplicityRange(Int_t nbins, Float_t maxA, Float_t maxC);
void SetSumEquaMultRange(Int_t nbins, Float_t maxA, Float_t maxC);
void SetEquaMultRange(Int_t nbins, Float_t max);
void SetZVertexCut(Float_t cut){fZvtxCut = cut;};
void CreateQAHistos();
void CreateHistosPerL2Trigger();
void FillQAHistos();
void FillPerL2TriggerHistos();
TH1F* CreateHisto1D(const char* name, const char* title, Int_t nBins, Double_t xMin, Double_t xMax,
const char* xLabel = NULL, const char* yLabel = NULL);
TH2F* CreateHisto2D(const char* name, const char* title, Int_t nBinsX, Double_t xMin, Double_t xMax,
Int_t nBinsY, Double_t yMin, Double_t yMax,
const char* xLabel = NULL, const char* yLabel = NULL);
private:
AliESDEvent *fESD;
AliESDVZERO* fEsdV0;
TList *fOutputList;
Int_t fNClasses;
TObjArray *fClassesNames;
TH2F *fNFlags;
TH1F *fhAdcNoTime[2];
TH1F *fhAdcWithTime[2];
TH2F *fhAdcPMTNoTime;
TH2F *fhAdcPMTWithTime;
TH1F *fhTime[2];
TH1F *fhWidth[2];
TH2F *fhTimePMT;
TH2F *fhWidthPMT;
TH2F *fhAdcWidth[2];
TH2F *fhTimeCorr;
TH2F *fhAdcTime[2];
TH2F *fhPmtMult;
TH1F *fhV0ampl;
TH2F *fhEvents;
TH2F *fhVtxXYBB;
TH1F *fhVtxZBB;
TH2F *fhVtxXYBGA;
TH1F *fhVtxZBGA;
TH2F *fhVtxXYBGC;
TH1F *fhVtxZBGC;
TH1F *fhL2Triggers;
TH2F **fhOnlineCharge;
TH2F **fhRecoMult;
TH2F **fhRecoMultPMT;
TH2F **fhV0vsSPDCentrality;
TH1F **fhTriggerBits;
TH1F **fhTotRecoMult;
TH1F **fhCentrality;
TH2F **fhEqualizedMult;
TH2F **fhEqualizedMultSum;
Int_t fNBinTotMult;
Float_t fTotMultMax;
Int_t fNBinMult;
Float_t fV0AMultMax;
Float_t fV0CMultMax;
Int_t fNBinOnlineCharge;
Float_t fV0AOnlineChargeMax;
Float_t fV0COnlineChargeMax;
Int_t fNBinEquaMult;
Float_t fEquaMultMax;
Int_t fNBinSumsEqMult;
Float_t fV0AEqMultMax;
Float_t fV0CEqMultMax;
Float_t fZvtxCut;
AliAnaVZEROPbPb(const AliAnaVZEROPbPb&);
AliAnaVZEROPbPb& operator=(const AliAnaVZEROPbPb&);
ClassDef(AliAnaVZEROPbPb, 3);
};
#endif