Possibility to remove the contribution of D meson daughters to the number of tracklet...
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEDvsMultiplicity.h
1 #ifndef ALIANALYSISTASKSEDVSMULTIPLICITY_H
2 #define ALIANALYSISTASKSEDVSMULTIPLICITY_H
3
4 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */ 
8
9 //*************************************************************************
10 // Class AliAnalysisTaskSEDvsMultiplicity
11 // AliAnalysisTaskSE for the D meson vs. multiplcity analysis
12 // Authors: Renu Bala, Zaida Conesa del Valle, Francesco Prino
13 //*************************************************************************
14
15 #include <TROOT.h>
16 #include <TSystem.h>
17 #include <TH1F.h>
18 #include <TH2F.h>
19 #include <TH3F.h>
20 #include <TArrayD.h>
21 #include <TFile.h>
22 #include <TRandom.h>
23 #include <TProfile.h>
24 #include "AliRDHFCutsDplustoKpipi.h"
25 #include "AliAnalysisTaskSE.h"
26 #include "AliAnalysisVertexingHF.h"
27 #include "AliNormalizationCounter.h"
28 #include "AliAODMCHeader.h"
29 #include "AliAODMCParticle.h"
30 #include "AliVertexingHFUtils.h"
31 #include "AliVEvent.h"
32
33
34
35 class AliAnalysisTaskSEDvsMultiplicity : public AliAnalysisTaskSE
36 {
37  public:
38
39   AliAnalysisTaskSEDvsMultiplicity();
40   AliAnalysisTaskSEDvsMultiplicity(const char *name, Int_t pdgMeson, AliRDHFCuts* cuts);
41   virtual ~AliAnalysisTaskSEDvsMultiplicity();
42
43
44   void SetMassLimits(Double_t lowlimit, Double_t uplimit);
45   void SetMassLimits(Int_t pdg, Double_t range);
46   Double_t GetUpperMassLimit() const {return fUpmasslimit;}
47   Double_t GetLowerMassLimit() const {return fLowmasslimit;}
48   void SetNMassBins(Int_t nbins){fNMassBins=nbins;}
49   Int_t GetNMassBins() const{return fNMassBins;}
50   Bool_t GetSubtractTrackletsFromDaughters() const {return fSubtractTrackletsFromDau;}
51
52   void SetImpactParameterBinning(Int_t nbins, Double_t dmin, Double_t dmax){
53     fNImpParBins=nbins;
54     fLowerImpPar=dmin;
55     fHigherImpPar=dmax;
56   }
57
58   void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
59   void SetUseBit(Bool_t use=kTRUE){fUseBit=use;}
60   void SetDoImpactParameterHistos(Bool_t doImp=kTRUE){fDoImpPar=doImp;}
61
62
63   void SetMultiplVsZProfileLHC10b(TProfile* hprof){
64     if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0];
65     fMultEstimatorAvg[0]=new TProfile(*hprof);
66   }
67   void SetMultiplVsZProfileLHC10c(TProfile* hprof){
68     if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1];
69     fMultEstimatorAvg[1]=new TProfile(*hprof);
70   }
71   void SetMultiplVsZProfileLHC10d(TProfile* hprof){
72     if(fMultEstimatorAvg[2]) delete fMultEstimatorAvg[2];
73     fMultEstimatorAvg[2]=new TProfile(*hprof);
74   }
75   void SetMultiplVsZProfileLHC10e(TProfile* hprof){
76     if(fMultEstimatorAvg[3]) delete fMultEstimatorAvg[3];
77     fMultEstimatorAvg[3]=new TProfile(*hprof);
78   }
79   void SetReferenceMultiplcity(Double_t rmu){fRefMult=rmu;}
80   void SetSubtractTrackletsFromDaughters(Bool_t opt){fSubtractTrackletsFromDau=opt;}
81   Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
82
83   // Implementation of interface methods
84   virtual void UserCreateOutputObjects();
85   virtual void Init();
86   virtual void LocalInit() {Init();}
87   virtual void UserExec(Option_t *option);
88   virtual void Terminate(Option_t *option);
89     
90  private:
91
92   AliAnalysisTaskSEDvsMultiplicity(const AliAnalysisTaskSEDvsMultiplicity &source);
93   AliAnalysisTaskSEDvsMultiplicity& operator=(const AliAnalysisTaskSEDvsMultiplicity& source); 
94
95   TProfile* GetEstimatorHistogram(const AliVEvent *event);
96   void CreateImpactParameterHistos();
97
98
99   TList  *fOutput; //! list send on output slot 1
100   TList  *fListCuts; //list of cuts
101   TList  *fOutputCounters; //! list send on output slot 3
102   TList  *fListProfiles; //list of profile histos for z-vtx correction
103
104   TH1F *fHistNEvents;     //!hist. for No. of events
105
106   TH2F* fHistNtrEta16vsNtrEta1; //!hist. for Ntracklets in eta<1.6 vs. eta<1.
107   TH2F* fHistNtrCorrEta1vsNtrRawEta1; //!hist. for Ntracklets in eta<1 with and w/o corrections 
108   TH2F* fHistNtrVsZvtx; //!  hist of ntracklets vs Zvertex
109   TH2F* fHistNtrCorrVsZvtx; //!  hist of ntracklets vs Zvertex
110
111   TH2F* fHistNtrVsNchMC; //!  hist of ntracklets vs Nch (Generated)
112   TH2F* fHistNtrCorrVsNchMC; //!  hist of ntracklets vs Nch (Generated)
113   TH2F* fHistNtrVsNchMCPrimary; //!  hist of ntracklets vs Nch (Primary)
114   TH2F* fHistNtrCorrVsNchMCPrimary; //!  hist of ntracklets vs Nch (Primary)
115   TH2F* fHistNtrVsNchMCPhysicalPrimary; //!  hist of ntracklets vs Nch (Physical Primary)
116   TH2F* fHistNtrCorrVsNchMCPhysicalPrimary; //!  hist of ntracklets vs Nch (Physical Primary)
117   TH1F* fHistGenPrimaryParticlesInelGt0; //!hist. of geenrated multiplcity
118   TH3F* fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary; //! hist of Nch (generated) vs Nch (Primary) vs Nch (Physical Primary) 
119   
120   TH1F* fHistNtrUnCorrEvSel; //! hist. of ntracklets for selected events
121   TH1F* fHistNtrCorrEvSel; //! hist. of ntracklets for selected events
122   TH1F* fHistNtrCorrEvWithCand; //! hist. of ntracklets for evnts with a candidate
123   TH1F* fHistNtrCorrEvWithD;//! hist. of ntracklets for evnts with a candidate in D mass peak
124
125
126   TH3F *fPtVsMassVsMult;  //! hist. of Pt vs Mult vs. mass (
127   TH3F *fPtVsMassVsMultNoPid;  //! hist. of Pt vs Mult vs. mass (no pid)
128   TH3F *fPtVsMassVsMultUncorr;  //! hist. of Pt vs Mult vs. mass (raw mult)
129   TH3F *fPtVsMassVsMultPart;  //! hist. of Pt vs Mult vs. mass (particle)
130   TH3F *fPtVsMassVsMultAntiPart;  //! hist. of Pt vs Mult vs. mass (antiparticle)
131
132   THnSparseF *fHistMassPtImpPar[5];//! histograms for impact paramter studies
133
134   Double_t fUpmasslimit;  //upper inv mass limit for histos
135   Double_t fLowmasslimit; //lower inv mass limit for histos
136   Int_t   fNMassBins;    // nbins for invariant mass histos
137
138   AliRDHFCuts *fRDCutsAnalysis; // Cuts for Analysis
139   AliNormalizationCounter *fCounter;  //!Counter for normalization
140   AliNormalizationCounter *fCounterU; //!Counter for normalization, uncorr mult
141
142   Bool_t fDoImpPar;  //swicth for D impact parameter THnSparse
143   Int_t  fNImpParBins;   // nunber of bins in impact parameter histos
144   Double_t fLowerImpPar;  // lower limit in impact parameter (um)
145   Double_t fHigherImpPar; // higher limit in impact parameter (um)
146
147   Bool_t fReadMC;    //flag for access to MC
148   Int_t  fMCOption;  // 0=keep all cand, 1=keep only signal, 2= keep only back
149   Bool_t fUseBit;    // flag to use bitmask
150   Bool_t fSubtractTrackletsFromDau; // flag for subtracting D meson daughter contribution to N of tracklets
151   
152   TProfile* fMultEstimatorAvg[4]; // TProfile with mult vs. Z per period
153   Double_t fRefMult;   // refrence multiplcity (period b)
154   Int_t fPdgMeson;   // pdg code of analyzed meson
155
156   
157   ClassDef(AliAnalysisTaskSEDvsMultiplicity,5); // D vs. mult task
158 };
159
160 #endif