]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/EVCHAR/AliAnalysisTaskSPDdNdEta.h
9ca84c67800e754cafe131d5ba50d40c5e9ab294
[u/mrichter/AliRoot.git] / PWG2 / EVCHAR / AliAnalysisTaskSPDdNdEta.h
1 #ifndef ALIANALYSISTASKSPDDNDETA_H
2 #define ALIANALYSISTASKSPDDNDETA_H
3
4 ///////////////////////////////////////////////////////////////////////////
5 // Class AliAnalysisTaskSPDdNdEta                                        //
6 // Analysis task for dN/dEta reconstruction with the SPD                 //
7 //                                                                       //
8 // Author:  M. Nicassio (INFN Bari)                                      //
9 // Contact: Maria.Nicassio@ba.infn.it, Domenico.Elia@ba.infn.it          //
10 ///////////////////////////////////////////////////////////////////////////
11
12 class TH1F; 
13 class TH2F;
14 class TH3F;
15 class AliESDEvent;
16 class TList;
17
18 #include "AliAnalysisTaskSE.h"
19
20 class AliAnalysisTaskSPDdNdEta : public AliAnalysisTaskSE {
21  public:
22   AliAnalysisTaskSPDdNdEta(const char *name = "AliAnalysisTaskSPDdNdEta");
23   virtual ~AliAnalysisTaskSPDdNdEta(); 
24   
25   virtual void   UserCreateOutputObjects();
26   virtual void   UserExec(Option_t *option);
27   virtual void   Terminate(Option_t *);
28
29   enum MCCentralityBin{kcentral=1,kbin3to6=2,kbin6to9=3,kbin9to12=4,kbin12to15=5,kperipheral=6,kall=7};
30
31   void SetReadMC(Bool_t readmc = kFALSE) { fUseMC = readmc; }
32   void SetTrigger(AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; }
33   void SetReadTrackRefs(Bool_t readtr = kFALSE) { fTR = readtr; }
34   void SetRecoTracklets(Bool_t recotracklets = kFALSE) { fRecoTracklets = recotracklets; }
35   void SetMCCentralityBin(MCCentralityBin mccentrbin) {fMCCentralityBin=mccentrbin;}
36   void SetCentralityLowLim(Float_t centrlowlim) {fCentrLowLim=centrlowlim;}
37   void SetCentralityUpLim(Float_t centruplim) {fCentrUpLim=centruplim;}
38   void SetCentralityEst(TString centrest) {fCentrEst=centrest;}
39   void SetMinClusterMultLay2(Int_t minClMultLay2=0) {fMinClMultLay2=minClMultLay2;}
40
41   void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;}
42   void SetThetaWindow(Float_t w=0.025) {fThetaWindow=w;}
43   void SetPhiShift(Float_t w=0.0045) {fPhiShift=w;}
44   void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;}
45   void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;}
46   void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;}
47   void SetPhiRotationAngle(Float_t w=0.0) {fPhiRotationAngle=w;}
48   void SetPhiWindowAna(Float_t w=0.08) {fPhiWindowAna=w;}
49  
50   Bool_t IsDetectablePrimary(Int_t nref, AliMCParticle* mcpart);
51   Bool_t IsDetectedPrimary(Int_t nref, AliMCParticle* mcpart, Int_t Layer);
52
53  protected:
54   AliESDEvent *fmyESD;             // ! ESD object 
55   TList *fOutput;                  // ! output list send on output slot 1 
56
57   Bool_t fUseMC;                   // flag to enable the calculation of correction histograms
58   Bool_t fPbPb;                    // flag to analyze PbPb data 
59   AliTriggerAnalysis::Trigger fTrigger;  
60   Bool_t fTR;                      // to read track references and calculate factors of track to particle correction 
61   Bool_t fRecoTracklets;           // flag to recostruct tracklets
62   
63   MCCentralityBin fMCCentralityBin; // to select MC centrality bin in which corrections are calculated
64   Float_t fCentrLowLim;             // to select centrality bin on data
65   Float_t fCentrUpLim;              // to select centrality bin on data
66   TString fCentrEst;                // to select centrality estimator
67   Int_t fMinClMultLay2;             // to select multiplicity class
68
69   Float_t       fPhiWindow;                    // Search window in phi
70   Float_t       fThetaWindow;                  // Search window in theta
71   Float_t       fPhiShift;                     // Phi shift reference value (at 0.5 T)
72   Bool_t        fRemoveClustersFromOverlaps;   // Option to skip clusters in the overlaps
73   Float_t       fPhiOverlapCut;                // Fiducial window in phi for overlap cut
74   Float_t       fZetaOverlapCut;               // Fiducial window in eta for overlap cut
75   Float_t       fPhiRotationAngle;             // Angle to rotate the inner layer cluster for combinatorial reco only
76   Float_t       fPhiWindowAna;                 // Final analysis tracklet definition window in phi
77
78   AliTrackletAlg *fMultReco;       // tracklet reconstruction class
79
80   TH2F        *fHistSPDRAWMultvsZ;          // ! data to be corrected 
81   TH2F        *fHistSPDRAWMultvsZTriggCentrEvts; // ! data to be corrected
82   TH2F        *fHistSPDRAWMultvsZCentrEvts; // ! data to be corrected
83
84   TH2F        *fHistSPDRAWEtavsZ;           // ! data to be corrected
85
86   TH1F        *fHistSPDmultEtacut;          // ! cluster inner layer and tracklet check histos
87   TH1F        *fHistSPDmult;                // ! cluster inner layer and tracklet check histos
88   TH1F        *fHistSPDmultcl1;             // ! cluster inner layer and tracklet check histos
89   TH1F        *fHistSPDmultcl2;             // ! cluster inner layer and tracklet check histos
90   TH2F        *fHistSPDmultcl1vscl2;        // ! cluster inner layer and tracklet check histos
91   TH2F        *fHistSPDmultvscl1;        // ! cluster inner layer and tracklet check histos
92   TH2F        *fHistSPDmultvscl2;        // ! cluster inner layer and tracklet check histos
93
94   TH1F        *fHistSPDeta;                 // ! cluster inner layer and tracklet check histos
95   TH1F        *fHistSPDphi;                 // ! cluster inner layer and tracklet check histos
96   TH1F        *fHistSPDtheta;               // ! cluster inner layer and tracklet check histos
97   TH1F        *fHistSPDdePhi;               // ! cluster inner layer and tracklet check histos
98   TH2F        *fHistSPDphivsSPDeta;         // ! cluster inner layer and tracklet check histos
99   TH1F        *fHistSPDdeTheta;             // ! cluster inner layer and tracklet check histos
100   
101   TH1F        *fHistSPDvtx;                 // ! SPD vertex distributions
102   TH1F        *fHistSPDvtxAnalysis;         // ! SPD vertex distributions
103   TH2F        *fHistSPDdePhideTheta;        // ! histogram for combinatorial background studies
104
105   TH1F        *fHistSPDphicl1;                 // ! cluster inner layer and tracklet check histos
106   TH1F        *fHistSPDphicl2;                 // ! cluster inner layer and tracklet check histos
107
108   TH2F* fHistBkgCorrDen;             // ! track level correction histograms
109   TH2F* fHistBkgCorrDenPrimGen;      // ! track level correction histograms
110   TH2F* fHistBkgCorrNum;             // ! track level correction histograms
111   TH2F* fHistAlgEffNum;              // ! track level correction histograms
112   TH2F* fHistNonDetectableCorrDen;   // ! track level correction histograms
113
114   TH2F* fHistNonDetectableCorrNum;   // ! track level correction histograms
115   TH2F* fHistAllPrimaries;           // ! track level correction histograms
116   TH2F* fHistTrackCentrEvts;         // ! track level correction histograms
117   TH2F* fHistTrackTrigCentrEvts;     // ! track level correction histograms
118  
119   TH2F* fHistAllEvts;                // ! event level correction histograms
120   TH2F* fHistCentrEvts;              // ! event level correction histograms
121   TH2F* fHistTrigCentrEvts;          // ! event level correction histograms
122   TH2F* fHistSelEvts;                // ! event level correction histograms
123
124   TH1F* fHistMCmultEtacut;           // ! MC distributions
125   TH2F* fHistMCmultEtacutvsSPDmultEtacut; // ! MC distributions
126   TH2F* fHistMCmultEtacutvsSPDmultcl1;  // ! MC distributions
127   TH2F* fHistMCmultEtacutvsSPDmultcl2;  // ! MC distributions
128
129   TH1F* fHistMCvtxx;                 // ! MC vertex
130   TH1F* fHistMCvtxy;                 // ! MC vertex
131   TH1F* fHistMCvtxz;                 // ! MC vertex
132
133   TH2F* fHistRecvsGenImpactPar;      // ! impact parameter correlation (ZDC est vs gen)
134   TH1F* fHistMCNpart;                // ! distribution of number of participants from MC 
135
136   TH1F* fHistdPhiPP;                 // ! tracklet check histo
137   TH1F* fHistdPhiSS;                 // ! tracklet check histo
138   TH1F* fHistdPhiComb;               // ! tracklet check histo
139
140   TH2F* fHistDeVtx;                  // ! check histo
141
142  private:    
143   AliAnalysisTaskSPDdNdEta(const AliAnalysisTaskSPDdNdEta&); // not implemented
144   AliAnalysisTaskSPDdNdEta& operator=(const AliAnalysisTaskSPDdNdEta&); // not implemented 
145   
146   ClassDef(AliAnalysisTaskSPDdNdEta, 3);  
147 };
148
149 #endif