1 #ifndef ALIPHOSPPBPI0HEADER_H
2 #define ALIPHOSPPBPI0HEADER_H
4 /* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //*************************************************************************
8 // Class AliPHOSpPbPi0Header
9 // class used to extract ,store info and fill histograms at event level
10 // Author: H-S. Zhu, hongsheng.zhu@cern.ch
11 // hszhu@iopp.ccnu.edu.cn
12 //*************************************************************************
21 class AliInputEventHandler;
25 class AliPHOSGeoUtils;
27 class AliCaloClusterInfo;
29 class AliPHOSpPbPi0Header : public TNamed {
32 AliPHOSpPbPi0Header();
33 AliPHOSpPbPi0Header(const AliPHOSpPbPi0Header &src);
34 AliPHOSpPbPi0Header& operator=(const AliPHOSpPbPi0Header &src);
35 ~AliPHOSpPbPi0Header();
37 void GetXYZ(Double_t *vtx) const { for (Int_t i=3; i--;) vtx[i]=fVtx[i]; }
38 Double_t Vx() const { return fVtx[0]; }
39 Double_t Vy() const { return fVtx[1]; }
40 Double_t Vz() const { return fVtx[2]; }
41 TString FiredTriggerClass() const { return fFiredTriggerClass; }
42 UInt_t SelectionMask() const { return fSelMask; }
43 Bool_t IsVertexOK() const { return fIsVertexOK; }
44 Bool_t IsPileup() const { return fIsPileup; }
45 Float_t Centrality() const { return fCentrality; }
49 void SetEventInfo(AliInputEventHandler* const handler);
51 void CreateHistograms(TList *listQA, TList *listRD, TList *listMC);
52 void FillHistosEvent(TList *listQA);
53 void FillHistosCaloCellsQA(TList *listQA, AliVCaloCells* const cells, AliPHOSGeoUtils* const phosGeo);
54 void FillHistosCaloCluster(TList *listQA, TClonesArray* const caloClArr, Int_t cent);
55 void FillHistosPi0(TList *listRD, TClonesArray* const caloClArr, Int_t cent);
56 void FillHistosMixPi0(TList *listRD, TClonesArray* const caloClArr, TList* const eventlist, Int_t cent);
57 void FillHistosMC(TList *listMC, AliStack* const stack, TClonesArray* const caloClArr, AliPHOSGeoUtils* const phosGeo, Int_t cent);
59 static void SetIsMC(Bool_t isMC=kFALSE) { fgIsMC = isMC; }
60 static void SetUseFiducialCut(Bool_t fc=kFALSE) { fgUseFiducialCut = fc; }
61 static void SetNCent(Int_t ncent=10) { fgNCent = ncent; }
62 static void SetSelectionCuts(Double_t cuts[3]) { for (Int_t i=3; i--;) fgCuts[i] = cuts[i]; }
66 void CreateHistosEvent(TList *listQA);
67 void CreateHistosCaloCellsQA(TList *listQA);
68 void CreateHistosCaloCluster(TList *listQA);
69 void CreateHistosPi0(TList *listRD);
70 void CreateHistosMixPi0(TList *listRD);
71 void CreateHistosMC(TList *listMC);
73 Bool_t CheckEventVertex(AliVEvent* const event);
74 TString ClassifyMCPi0(Int_t index, AliStack* const stack);
75 Int_t HitPHOSModule(TParticle* const pMC, AliPHOSGeoUtils* const phosGeo);
77 static Bool_t fgIsMC; // flag to use MC
78 static Bool_t fgIspARun; // flag to use pA vertex cut
79 static Bool_t fgUseFiducialCut; // flag to use fiducial cut
80 static Int_t fgNCent; // # of centrality bins
81 static Double_t fgCuts[3]; // 0, up limit of vz
85 enum { kAll, kCpv, kDisp, kBoth, kCpv2, kDisp2, kBoth2, kPIDs }; // PID
86 enum { kPtClu, kEtaClu, kPhiClu, kM02Clu, kM20Clu, kTOFClu, kNCellsClu, kNClustersClu, kVarsClu }; // clusters
87 enum { kPtPi0, kEtaPi0, kPhiPi0, kAsyPi0, kAnglePi0, kInvMassPi0, kVarsPi0 }; // pi0
88 enum { kPtMixPi0, kEtaMixPi0, kPhiMixPi0, kInvMassMixPi0, kVarsMixPi0 }; // Mixed pi0
89 enum { kPtMC, kRapidityMC, kRadiusMC, kPhiMC, kInvMassMC, kVarsMC }; // MC
91 Double_t fVtx[3]; // position of vtx
92 TString fFiredTriggerClass; // trigger class
93 UInt_t fSelMask; // mask of physics selection
94 Bool_t fIsVertexOK; // is vertex OK
95 Bool_t fIsPileup; // is Pileup from SPD
96 Float_t fCentrality; // event certrality
98 ClassDef(AliPHOSpPbPi0Header, 2)