--- /dev/null
+#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; //! ESD object
+ AliESDVZERO* fEsdV0;
+ TList *fOutputList; //! Output list
+ Int_t fNClasses;
+ TObjArray *fClassesNames;
+
+ TH2F *fNFlags; //!
+
+ TH1F *fhAdcNoTime[2]; // ADC spectra (no time measurement)
+ TH1F *fhAdcWithTime[2]; // ADC spectra (with time measurement)
+
+ TH2F *fhAdcPMTNoTime; // ADC spectra per PMT (no time measurement)
+ TH2F *fhAdcPMTWithTime; // ADC spectra per PMT (with time measurement)
+
+ TH1F *fhTime[2]; // Time spectra per side
+
+ TH1F *fhWidth[2]; // Signal width per side
+
+ TH2F *fhTimePMT; // Time spectra per PMT
+ TH2F *fhWidthPMT; // Signal width per PMT
+
+ TH2F *fhAdcWidth[2]; // ADC vs Signal width per side
+
+ TH2F *fhTimeCorr; // Corrected mean time V0C vs V0A
+
+ TH2F *fhAdcTime[2]; // ADC vs Time per side
+
+ TH2F *fhPmtMult; // Number of fired PMTs in V0C vs V0A
+ TH1F *fhV0ampl; // ADC spectra for both rings
+
+ TH2F *fhEvents; // Event statistics histogram
+
+ TH2F *fhVtxXYBB; // XY vertex for beam-beam events
+ TH1F *fhVtxZBB; // Z vertex for beam-beam events
+ TH2F *fhVtxXYBGA; // XY vertex for beam-gas (A side) events
+ TH1F *fhVtxZBGA; // Z vertex for beam-gas (A side) events
+ TH2F *fhVtxXYBGC; // XY vertex for beam-gas (C side) events
+ TH1F *fhVtxZBGC; // Z vertex for beam-gas (C side) events
+
+ TH1F *fhL2Triggers; //! Triggers counting histo
+ TH2F **fhOnlineCharge; //! Online Charge (send to EMCAL) histo
+ TH2F **fhRecoMult; //! Reconstructed Multiplicity V0A % V0C
+ TH2F **fhRecoMultPMT; //! Reconstructed Multiplicity per PMT
+ TH2F **fhV0vsSPDCentrality; //! Centrality V0 % SPD
+ TH1F **fhTriggerBits; //! 16 trigger bits
+ TH1F **fhTotRecoMult; //! Total Reconstructed Multiplicity V0A + V0C
+ TH1F **fhCentrality; //! Centrality V0
+ TH2F **fhEqualizedMult; //! Equalized Multiplicity per channel
+ TH2F **fhEqualizedMultSum; //! Equalized Multiplicity V0A % V0C
+
+ Int_t fNBinTotMult; // number of bin of histo fhTotRecoMult
+ Float_t fTotMultMax; // max of histo fhTotRecoMult
+
+ Int_t fNBinMult; // number of bin of histo fhRecoMult
+ Float_t fV0AMultMax; // max VZERO-A of histo fhRecoMult
+ Float_t fV0CMultMax; // max VZERO-C of histo fhRecoMult
+
+ Int_t fNBinOnlineCharge; // number of bin of histo fhOnlineCharge
+ Float_t fV0AOnlineChargeMax; // max VZERO-A of histo fhOnlineCharge
+ Float_t fV0COnlineChargeMax; // max VZERO-C of histo fhOnlineCharge
+
+ Int_t fNBinEquaMult; // number of bin of histo fhEqualizedMult
+ Float_t fEquaMultMax; // max of histo fhEqualizedMult
+
+ Int_t fNBinSumsEqMult; // number of bin of histo fhEqualizedMultSum
+ Float_t fV0AEqMultMax; // max VZERO-A of histo fhEqualizedMultSum
+ Float_t fV0CEqMultMax; // max VZERO-C of histo fhEqualizedMultSum
+
+ Float_t fZvtxCut; // Z vertex cut
+
+ AliAnaVZEROPbPb(const AliAnaVZEROPbPb&); // not implemented
+ AliAnaVZEROPbPb& operator=(const AliAnaVZEROPbPb&); // not implemented
+
+ ClassDef(AliAnaVZEROPbPb, 3);
+};
+
+#endif