1 #ifndef ALIANALYSISTASKSEDVSMULTIPLICITY_H
2 #define ALIANALYSISTASKSEDVSMULTIPLICITY_H
4 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
9 //*************************************************************************
10 // Class AliAnalysisTaskSEDvsMultiplicity
11 // AliAnalysisTaskSE for the D meson vs. multiplcity analysis
12 // Authors: Renu Bala, Zaida Conesa del Valle, Francesco Prino
13 //*************************************************************************
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"
34 class AliAnalysisTaskSEDvsMultiplicity : public AliAnalysisTaskSE
38 AliAnalysisTaskSEDvsMultiplicity();
39 AliAnalysisTaskSEDvsMultiplicity(const char *name, Int_t pdgMeson, AliRDHFCuts* cuts, Bool_t switchPPb);
40 virtual ~AliAnalysisTaskSEDvsMultiplicity();
43 void SetMassLimits(Double_t lowlimit, Double_t uplimit);
44 void SetMassLimits(Int_t pdg, Double_t range);
45 Double_t GetUpperMassLimit() const {return fUpmasslimit;}
46 Double_t GetLowerMassLimit() const {return fLowmasslimit;}
47 void SetNMassBins(Int_t nbins){fNMassBins=nbins;}
48 Int_t GetNMassBins() const{return fNMassBins;}
49 Bool_t GetSubtractTrackletsFromDaughters() const {return fSubtractTrackletsFromDau;}
51 void SetImpactParameterBinning(Int_t nbins, Double_t dmin, Double_t dmax){
57 void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
58 void SetMCOption(Int_t option=0){ fMCOption = option; }
59 void SetIsPPbData(Bool_t flag=kTRUE){
62 void SetUseBit(Bool_t use=kTRUE){fUseBit=use;}
63 void SetDoImpactParameterHistos(Bool_t doImp=kTRUE){fDoImpPar=doImp;}
65 void SetMultiplVsZProfileLHC10b(TProfile* hprof){
66 if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0];
67 fMultEstimatorAvg[0]=new TProfile(*hprof);
69 void SetMultiplVsZProfileLHC10c(TProfile* hprof){
70 if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1];
71 fMultEstimatorAvg[1]=new TProfile(*hprof);
73 void SetMultiplVsZProfileLHC10d(TProfile* hprof){
74 if(fMultEstimatorAvg[2]) delete fMultEstimatorAvg[2];
75 fMultEstimatorAvg[2]=new TProfile(*hprof);
77 void SetMultiplVsZProfileLHC10e(TProfile* hprof){
78 if(fMultEstimatorAvg[3]) delete fMultEstimatorAvg[3];
79 fMultEstimatorAvg[3]=new TProfile(*hprof);
82 void SetMultiplVsZProfileLHC13b(TProfile* hprof){
83 if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0];
84 fMultEstimatorAvg[0]=new TProfile(*hprof);
86 void SetMultiplVsZProfileLHC13c(TProfile* hprof){
87 if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1];
88 fMultEstimatorAvg[1]=new TProfile(*hprof);
91 void SetReferenceMultiplcity(Double_t rmu){fRefMult=rmu;}
94 void UseMCNchWeight(Bool_t flag) { fUseNchWeight = flag; }
95 void SetHistoNchWeight(TH1F *h){
96 if(fHistoMCNch) delete fHistoMCNch;
97 fHistoMCNch = new TH1F(*h);
100 void SetSubtractTrackletsFromDaughters(Bool_t opt){fSubtractTrackletsFromDau=opt;}
101 Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
103 enum { kNtrk10=0, kNtrk10to16=1, kVZERO=2, kNtrk03=3, kNtrk05=4, kVZEROA=5 };
104 void SetMultiplicityEstimator(Int_t value){ fMultiplicityEstimator=value; }
105 Int_t GetMultiplicityEstimator(){ return fMultiplicityEstimator; }
106 enum { kEta10=0, kEta10to16=1, kEtaVZERO=2, kEta03=3, kEta05=5, kEtaVZEROA=5 };
107 void SetMCPrimariesEstimator(Int_t value){ fMCPrimariesEstimator=value; }
108 Int_t GetMCPrimariesEstimator(){ return fMCPrimariesEstimator; }
110 // Implementation of interface methods
111 virtual void UserCreateOutputObjects();
113 virtual void LocalInit() {Init();}
114 virtual void UserExec(Option_t *option);
115 virtual void Terminate(Option_t *option);
119 AliAnalysisTaskSEDvsMultiplicity(const AliAnalysisTaskSEDvsMultiplicity &source);
120 AliAnalysisTaskSEDvsMultiplicity& operator=(const AliAnalysisTaskSEDvsMultiplicity& source);
122 TProfile* GetEstimatorHistogram(const AliVEvent *event);
123 void CreateImpactParameterHistos();
124 void CreateMeasuredNchHisto();
125 void FillMCMassHistos(TClonesArray *arrayMC, Int_t labD, Int_t countMult,Double_t nchWeight);
127 TList *fOutput; //! list send on output slot 1
128 TList *fListCuts; //list of cuts
129 TList *fOutputCounters; //! list send on output slot 3
130 TList *fListProfiles; //list of profile histos for z-vtx correction
132 TH1F *fHistNEvents; //!hist. for No. of events
134 TH2F* fHistNtrEta16vsNtrEta1; //!hist. for Ntracklets in eta<1.6 vs. eta<1.
135 TH2F* fHistNtrEta05vsNtrEta1; //!hist. for Ntracklets in eta<0.5 vs. eta<1.
136 TH2F* fHistNtrEta03vsNtrEta1; //!hist. for Ntracklets in eta<0.3 vs. eta<1.
137 TH2F* fHistNtrCorrEta1vsNtrRawEta1; //!hist. for Ntracklets in eta<1 with and w/o corrections
138 TH2F* fHistNtrVsZvtx; //! hist of ntracklets vs Zvertex
139 TH2F* fHistNtrCorrVsZvtx; //! hist of ntracklets vs Zvertex
141 TH2F* fHistNtrVsNchMC; //! hist of ntracklets vs Nch (Generated)
142 TH2F* fHistNtrCorrVsNchMC; //! hist of ntracklets vs Nch (Generated)
143 TH2F* fHistNtrVsNchMCPrimary; //! hist of ntracklets vs Nch (Primary)
144 TH2F* fHistNtrCorrVsNchMCPrimary; //! hist of ntracklets vs Nch (Primary)
145 TH2F* fHistNtrVsNchMCPhysicalPrimary; //! hist of ntracklets vs Nch (Physical Primary)
146 TH2F* fHistNtrCorrVsNchMCPhysicalPrimary; //! hist of ntracklets vs Nch (Physical Primary)
147 TH1F* fHistGenPrimaryParticlesInelGt0; //!hist. of geenrated multiplcity
148 TH3F* fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary; //! hist of Nch (generated) vs Nch (Primary) vs Nch (Physical Primary)
150 TH1F* fHistNtrUnCorrEvSel; //! hist. of ntracklets for selected events
151 TH1F* fHistNtrUnCorrEvWithCand; //! hist. of ntracklets for evnts with a candidate
152 TH1F* fHistNtrUnCorrEvWithD;//! hist. of ntracklets for evnts with a candidate in D mass peak
153 TH1F* fHistNtrCorrEvSel; //! hist. of ntracklets for selected events
154 TH1F* fHistNtrCorrEvWithCand; //! hist. of ntracklets for evnts with a candidate
155 TH1F* fHistNtrCorrEvWithD;//! hist. of ntracklets for evnts with a candidate in D mass peak
158 TH3F *fPtVsMassVsMult; //! hist. of Pt vs Mult vs. mass (
159 TH3F *fPtVsMassVsMultNoPid; //! hist. of Pt vs Mult vs. mass (no pid)
160 TH3F *fPtVsMassVsMultUncorr; //! hist. of Pt vs Mult vs. mass (raw mult)
161 TH3F *fPtVsMassVsMultPart; //! hist. of Pt vs Mult vs. mass (particle)
162 TH3F *fPtVsMassVsMultAntiPart; //! hist. of Pt vs Mult vs. mass (antiparticle)
163 TH3F *fPtVsMassVsMultMC; //! hist. of Pt vs Mult vs. mass (MC true candidates before reconstruction)
165 THnSparseF *fHistMassPtImpPar[5];//! histograms for impact paramter studies
167 Double_t fUpmasslimit; //upper inv mass limit for histos
168 Double_t fLowmasslimit; //lower inv mass limit for histos
169 Int_t fNMassBins; // nbins for invariant mass histos
171 AliRDHFCuts *fRDCutsAnalysis; // Cuts for Analysis
172 AliNormalizationCounter *fCounter; //!Counter for normalization
173 AliNormalizationCounter *fCounterU; //!Counter for normalization, uncorr mult
175 Bool_t fDoImpPar; //swicth for D impact parameter THnSparse
176 Int_t fNImpParBins; // nunber of bins in impact parameter histos
177 Double_t fLowerImpPar; // lower limit in impact parameter (um)
178 Double_t fHigherImpPar; // higher limit in impact parameter (um)
180 Bool_t fReadMC; //flag for access to MC
181 Int_t fMCOption; // 0=keep all cand, 1=keep only signal, 2= keep only back
182 Bool_t fisPPbData; // flag to run on pPb data (differen histogram bining)
183 Bool_t fUseBit; // flag to use bitmask
184 Bool_t fSubtractTrackletsFromDau; // flag for subtracting D meson daughter contribution to N of tracklets
186 Bool_t fUseNchWeight; // weight on the MC on the generated multiplicity
187 TH1F* fHistoMCNch; // weight histogram for the MC on the generated multiplicity
188 TH1F* fHistoMeasNch; //! weight histogram on the true measured multiplicity
190 TProfile* fMultEstimatorAvg[4]; //TProfile with mult vs. Z per period
191 Double_t fRefMult; // refrence multiplcity (period b)
192 Int_t fPdgMeson; // pdg code of analyzed meson
194 Int_t fMultiplicityEstimator; // Definition of the multiplicity estimator: kNtrk10=0, kNtrk10to16=1, kVZERO=2
195 Int_t fMCPrimariesEstimator; // Definition of the primaries estimator eta range: |eta|<1.0=0, -1.6<|eta|<1.0=1, VZEROrange=2
197 ClassDef(AliAnalysisTaskSEDvsMultiplicity,10); // D vs. mult task