ROOT logo
#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
 AliAnaVZEROPbPb.h:1
 AliAnaVZEROPbPb.h:2
 AliAnaVZEROPbPb.h:3
 AliAnaVZEROPbPb.h:4
 AliAnaVZEROPbPb.h:5
 AliAnaVZEROPbPb.h:6
 AliAnaVZEROPbPb.h:7
 AliAnaVZEROPbPb.h:8
 AliAnaVZEROPbPb.h:9
 AliAnaVZEROPbPb.h:10
 AliAnaVZEROPbPb.h:11
 AliAnaVZEROPbPb.h:12
 AliAnaVZEROPbPb.h:13
 AliAnaVZEROPbPb.h:14
 AliAnaVZEROPbPb.h:15
 AliAnaVZEROPbPb.h:16
 AliAnaVZEROPbPb.h:17
 AliAnaVZEROPbPb.h:18
 AliAnaVZEROPbPb.h:19
 AliAnaVZEROPbPb.h:20
 AliAnaVZEROPbPb.h:21
 AliAnaVZEROPbPb.h:22
 AliAnaVZEROPbPb.h:23
 AliAnaVZEROPbPb.h:24
 AliAnaVZEROPbPb.h:25
 AliAnaVZEROPbPb.h:26
 AliAnaVZEROPbPb.h:27
 AliAnaVZEROPbPb.h:28
 AliAnaVZEROPbPb.h:29
 AliAnaVZEROPbPb.h:30
 AliAnaVZEROPbPb.h:31
 AliAnaVZEROPbPb.h:32
 AliAnaVZEROPbPb.h:33
 AliAnaVZEROPbPb.h:34
 AliAnaVZEROPbPb.h:35
 AliAnaVZEROPbPb.h:36
 AliAnaVZEROPbPb.h:37
 AliAnaVZEROPbPb.h:38
 AliAnaVZEROPbPb.h:39
 AliAnaVZEROPbPb.h:40
 AliAnaVZEROPbPb.h:41
 AliAnaVZEROPbPb.h:42
 AliAnaVZEROPbPb.h:43
 AliAnaVZEROPbPb.h:44
 AliAnaVZEROPbPb.h:45
 AliAnaVZEROPbPb.h:46
 AliAnaVZEROPbPb.h:47
 AliAnaVZEROPbPb.h:48
 AliAnaVZEROPbPb.h:49
 AliAnaVZEROPbPb.h:50
 AliAnaVZEROPbPb.h:51
 AliAnaVZEROPbPb.h:52
 AliAnaVZEROPbPb.h:53
 AliAnaVZEROPbPb.h:54
 AliAnaVZEROPbPb.h:55
 AliAnaVZEROPbPb.h:56
 AliAnaVZEROPbPb.h:57
 AliAnaVZEROPbPb.h:58
 AliAnaVZEROPbPb.h:59
 AliAnaVZEROPbPb.h:60
 AliAnaVZEROPbPb.h:61
 AliAnaVZEROPbPb.h:62
 AliAnaVZEROPbPb.h:63
 AliAnaVZEROPbPb.h:64
 AliAnaVZEROPbPb.h:65
 AliAnaVZEROPbPb.h:66
 AliAnaVZEROPbPb.h:67
 AliAnaVZEROPbPb.h:68
 AliAnaVZEROPbPb.h:69
 AliAnaVZEROPbPb.h:70
 AliAnaVZEROPbPb.h:71
 AliAnaVZEROPbPb.h:72
 AliAnaVZEROPbPb.h:73
 AliAnaVZEROPbPb.h:74
 AliAnaVZEROPbPb.h:75
 AliAnaVZEROPbPb.h:76
 AliAnaVZEROPbPb.h:77
 AliAnaVZEROPbPb.h:78
 AliAnaVZEROPbPb.h:79
 AliAnaVZEROPbPb.h:80
 AliAnaVZEROPbPb.h:81
 AliAnaVZEROPbPb.h:82
 AliAnaVZEROPbPb.h:83
 AliAnaVZEROPbPb.h:84
 AliAnaVZEROPbPb.h:85
 AliAnaVZEROPbPb.h:86
 AliAnaVZEROPbPb.h:87
 AliAnaVZEROPbPb.h:88
 AliAnaVZEROPbPb.h:89
 AliAnaVZEROPbPb.h:90
 AliAnaVZEROPbPb.h:91
 AliAnaVZEROPbPb.h:92
 AliAnaVZEROPbPb.h:93
 AliAnaVZEROPbPb.h:94
 AliAnaVZEROPbPb.h:95
 AliAnaVZEROPbPb.h:96
 AliAnaVZEROPbPb.h:97
 AliAnaVZEROPbPb.h:98
 AliAnaVZEROPbPb.h:99
 AliAnaVZEROPbPb.h:100
 AliAnaVZEROPbPb.h:101
 AliAnaVZEROPbPb.h:102
 AliAnaVZEROPbPb.h:103
 AliAnaVZEROPbPb.h:104
 AliAnaVZEROPbPb.h:105
 AliAnaVZEROPbPb.h:106
 AliAnaVZEROPbPb.h:107
 AliAnaVZEROPbPb.h:108
 AliAnaVZEROPbPb.h:109
 AliAnaVZEROPbPb.h:110
 AliAnaVZEROPbPb.h:111
 AliAnaVZEROPbPb.h:112
 AliAnaVZEROPbPb.h:113
 AliAnaVZEROPbPb.h:114
 AliAnaVZEROPbPb.h:115
 AliAnaVZEROPbPb.h:116
 AliAnaVZEROPbPb.h:117
 AliAnaVZEROPbPb.h:118
 AliAnaVZEROPbPb.h:119
 AliAnaVZEROPbPb.h:120