]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliAnalysisTaskSEDvsMultiplicity.h
Add correlation plots for V0A and V0M, and a flag to switch off by default the creati...
[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 class AliAnalysisTaskSEDvsMultiplicity : public AliAnalysisTaskSE
35 {
36  public:
37
38   AliAnalysisTaskSEDvsMultiplicity();
39   AliAnalysisTaskSEDvsMultiplicity(const char *name, Int_t pdgMeson, AliRDHFCuts* cuts, Bool_t switchPPb);
40   virtual ~AliAnalysisTaskSEDvsMultiplicity();
41
42
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;}
50
51   void SetImpactParameterBinning(Int_t nbins, Double_t dmin, Double_t dmax){
52     fNImpParBins=nbins;
53     fLowerImpPar=dmin;
54     fHigherImpPar=dmax;
55   }
56
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){ 
60     fisPPbData=flag;
61   }
62   void SetUseBit(Bool_t use=kTRUE){fUseBit=use;}
63   void SetDoImpactParameterHistos(Bool_t doImp=kTRUE){fDoImpPar=doImp;}
64   void SetKeepEstimatorCorrelationPlots(Bool_t use=kTRUE){fKeepCorrPlots=use;}
65
66   void SetMultiplVsZProfileLHC10b(TProfile* hprof){
67     if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0];
68     fMultEstimatorAvg[0]=new TProfile(*hprof);
69   }
70   void SetMultiplVsZProfileLHC10c(TProfile* hprof){
71     if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1];
72     fMultEstimatorAvg[1]=new TProfile(*hprof);
73   }
74   void SetMultiplVsZProfileLHC10d(TProfile* hprof){
75     if(fMultEstimatorAvg[2]) delete fMultEstimatorAvg[2];
76     fMultEstimatorAvg[2]=new TProfile(*hprof);
77   }
78   void SetMultiplVsZProfileLHC10e(TProfile* hprof){
79     if(fMultEstimatorAvg[3]) delete fMultEstimatorAvg[3];
80     fMultEstimatorAvg[3]=new TProfile(*hprof);
81   }
82   
83   void SetMultiplVsZProfileLHC13b(TProfile* hprof){
84     if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0];
85     fMultEstimatorAvg[0]=new TProfile(*hprof);
86   }
87   void SetMultiplVsZProfileLHC13c(TProfile* hprof){
88     if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1];
89     fMultEstimatorAvg[1]=new TProfile(*hprof);
90   }
91     
92   void SetReferenceMultiplcity(Double_t rmu){fRefMult=rmu;}
93
94   // Nch weights on MC
95   void UseMCNchWeight(Bool_t flag) { fUseNchWeight = flag; }
96   void SetHistoNchWeight(TH1F *h){
97     if(fHistoMCNch) delete fHistoMCNch;
98     fHistoMCNch = new TH1F(*h);
99   }
100
101   void SetSubtractTrackletsFromDaughters(Bool_t opt){fSubtractTrackletsFromDau=opt;}
102   Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
103
104   enum { kNtrk10=0, kNtrk10to16=1, kVZERO=2, kNtrk03=3, kNtrk05=4, kVZEROA=5 };
105   void SetMultiplicityEstimator(Int_t value){ fMultiplicityEstimator=value; }
106   Int_t GetMultiplicityEstimator(){ return fMultiplicityEstimator; }
107   enum { kEta10=0, kEta10to16=1, kEtaVZERO=2, kEta03=3, kEta05=5, kEtaVZEROA=5 };
108   void SetMCPrimariesEstimator(Int_t value){ fMCPrimariesEstimator=value; }
109   Int_t GetMCPrimariesEstimator(){ return fMCPrimariesEstimator; }
110
111   // Implementation of interface methods
112   virtual void UserCreateOutputObjects();
113   virtual void Init();
114   virtual void LocalInit() {Init();}
115   virtual void UserExec(Option_t *option);
116   virtual void Terminate(Option_t *option);
117     
118  private:
119
120   AliAnalysisTaskSEDvsMultiplicity(const AliAnalysisTaskSEDvsMultiplicity &source);
121   AliAnalysisTaskSEDvsMultiplicity& operator=(const AliAnalysisTaskSEDvsMultiplicity& source); 
122
123   TProfile* GetEstimatorHistogram(const AliVEvent *event);
124   void CreateImpactParameterHistos();
125   void CreateMeasuredNchHisto();
126   void FillMCMassHistos(TClonesArray *arrayMC, Int_t labD, Int_t countMult,Double_t nchWeight);
127
128   TList  *fOutput; //! list send on output slot 1
129   TList  *fListCuts; //list of cuts
130   TList  *fOutputCounters; //! list send on output slot 3
131   TList  *fListProfiles; //list of profile histos for z-vtx correction
132
133   TH1F *fHistNEvents;     //!hist. for No. of events
134
135   TH2F* fHistNtrEta16vsNtrEta1; //!hist. for Ntracklets in eta<1.6 vs. eta<1.
136   TH2F* fHistNtrEta05vsNtrEta1; //!hist. for Ntracklets in eta<0.5 vs. eta<1.
137   TH2F* fHistNtrEta03vsNtrEta1; //!hist. for Ntracklets in eta<0.3 vs. eta<1.
138   TH2F* fHistNtrEtaV0AvsNtrEta1; //!hist. for Ntracklets in eta-V0A vs. eta<1.
139   TH2F* fHistNtrEtaV0MvsNtrEta1; //!hist. for Ntracklets in eta-V0M vs. eta<1.
140   TH2F* fHistNtrCorrEta1vsNtrRawEta1; //!hist. for Ntracklets in eta<1 with and w/o corrections 
141   TH2F* fHistNtrVsZvtx; //!  hist of ntracklets vs Zvertex
142   TH2F* fHistNtrCorrVsZvtx; //!  hist of ntracklets vs Zvertex
143
144   TH2F* fHistNtrVsNchMC; //!  hist of ntracklets vs Nch (Generated)
145   TH2F* fHistNtrCorrVsNchMC; //!  hist of ntracklets vs Nch (Generated)
146   TH2F* fHistNtrVsNchMCPrimary; //!  hist of ntracklets vs Nch (Primary)
147   TH2F* fHistNtrCorrVsNchMCPrimary; //!  hist of ntracklets vs Nch (Primary)
148   TH2F* fHistNtrVsNchMCPhysicalPrimary; //!  hist of ntracklets vs Nch (Physical Primary)
149   TH2F* fHistNtrCorrVsNchMCPhysicalPrimary; //!  hist of ntracklets vs Nch (Physical Primary)
150   TH1F* fHistGenPrimaryParticlesInelGt0; //!hist. of geenrated multiplcity
151   TH3F* fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary; //! hist of Nch (generated) vs Nch (Primary) vs Nch (Physical Primary) 
152   
153   TH1F* fHistNtrUnCorrEvSel; //! hist. of ntracklets for selected events
154   TH1F* fHistNtrUnCorrEvWithCand; //! hist. of ntracklets for evnts with a candidate
155   TH1F* fHistNtrUnCorrEvWithD;//! hist. of ntracklets for evnts with a candidate in D mass peak
156   TH1F* fHistNtrCorrEvSel; //! hist. of ntracklets for selected events
157   TH1F* fHistNtrCorrEvWithCand; //! hist. of ntracklets for evnts with a candidate
158   TH1F* fHistNtrCorrEvWithD;//! hist. of ntracklets for evnts with a candidate in D mass peak
159
160
161   TH3F *fPtVsMassVsMult;  //! hist. of Pt vs Mult vs. mass (
162   TH3F *fPtVsMassVsMultNoPid;  //! hist. of Pt vs Mult vs. mass (no pid)
163   TH3F *fPtVsMassVsMultUncorr;  //! hist. of Pt vs Mult vs. mass (raw mult)
164   TH3F *fPtVsMassVsMultPart;  //! hist. of Pt vs Mult vs. mass (particle)
165   TH3F *fPtVsMassVsMultAntiPart;  //! hist. of Pt vs Mult vs. mass (antiparticle)
166   TH3F *fPtVsMassVsMultMC;  //! hist. of Pt vs Mult vs. mass (MC true candidates before reconstruction)
167
168   THnSparseF *fHistMassPtImpPar[5];//! histograms for impact paramter studies
169
170   Double_t fUpmasslimit;  //upper inv mass limit for histos
171   Double_t fLowmasslimit; //lower inv mass limit for histos
172   Int_t   fNMassBins;    // nbins for invariant mass histos
173
174   AliRDHFCuts *fRDCutsAnalysis; // Cuts for Analysis
175   AliNormalizationCounter *fCounter;  //!Counter for normalization
176   AliNormalizationCounter *fCounterU; //!Counter for normalization, uncorr mult
177
178   Bool_t fDoImpPar;  //swicth for D impact parameter THnSparse
179   Int_t  fNImpParBins;   // nunber of bins in impact parameter histos
180   Double_t fLowerImpPar;  // lower limit in impact parameter (um)
181   Double_t fHigherImpPar; // higher limit in impact parameter (um)
182
183   Bool_t fReadMC;    //flag for access to MC
184   Int_t  fMCOption;  // 0=keep all cand, 1=keep only signal, 2= keep only back
185   Bool_t fisPPbData; // flag to run on pPb data (differen histogram bining)
186   Bool_t fUseBit;    // flag to use bitmask
187   Bool_t fSubtractTrackletsFromDau; // flag for subtracting D meson daughter contribution to N of tracklets
188   Bool_t fKeepCorrPlots; // flag to look at the correlation of different estimators (eta ranges)
189
190   Bool_t fUseNchWeight; // weight on the MC on the generated multiplicity
191   TH1F* fHistoMCNch;    // weight histogram for the MC on the generated multiplicity
192   TH1F* fHistoMeasNch;  //! weight histogram on the true measured multiplicity
193   
194   TProfile* fMultEstimatorAvg[4]; //TProfile with mult vs. Z per period
195   Double_t fRefMult;   // refrence multiplcity (period b)
196   Int_t fPdgMeson;   // pdg code of analyzed meson
197
198   Int_t fMultiplicityEstimator; // Definition of the multiplicity estimator: kNtrk10=0, kNtrk10to16=1, kVZERO=2
199   Int_t fMCPrimariesEstimator;  // Definition of the primaries estimator eta range: |eta|<1.0=0, -1.6<|eta|<1.0=1, VZEROrange=2 
200   
201   ClassDef(AliAnalysisTaskSEDvsMultiplicity,11); // D vs. mult task
202 };
203
204 #endif