]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/PHOSTasks/UserTasks/AliPHOSpPbPi0Header.h
Restored the same non-linear energy correction version as «Default» in
[u/mrichter/AliRoot.git] / PWGGA / PHOSTasks / UserTasks / AliPHOSpPbPi0Header.h
1 #ifndef ALIPHOSPPBPI0HEADER_H
2 #define ALIPHOSPPBPI0HEADER_H
3
4 /* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
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 //*************************************************************************
13
14 #include <TNamed.h>
15 #include <TString.h>
16
17 class TList;
18 class TParticle;
19 class TClonesArray;
20
21 class AliInputEventHandler;
22 class AliStack;
23 class AliVEvent;
24 class AliVCaloCells;
25 class AliPHOSGeoUtils;
26
27 class AliCaloClusterInfo;
28
29 class AliPHOSpPbPi0Header : public TNamed {
30  public :
31
32   AliPHOSpPbPi0Header();
33   AliPHOSpPbPi0Header(const AliPHOSpPbPi0Header &src);
34   AliPHOSpPbPi0Header& operator=(const AliPHOSpPbPi0Header &src);
35   ~AliPHOSpPbPi0Header();
36
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;                     }
46
47   Bool_t   IsSelected();
48
49   void SetEventInfo(AliInputEventHandler* const handler);
50
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);
58
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]; }
63
64  private :
65
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);
72
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);
76
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
82                                     // 1, centrality max
83                                     // 2, centrality min
84
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
90
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
97
98   ClassDef(AliPHOSpPbPi0Header, 2)
99 };
100
101 #endif