]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliAnalysisTaskSEDvsMultiplicity.h
Nrew task for D vs. multiplcity analysis
[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, AliRDHFCuts* cuts);
41   virtual ~AliAnalysisTaskSEDvsMultiplicity();
42
43   void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
44
45   void SetMassLimits(Float_t lowlimit, Float_t uplimit);
46   Float_t GetUpperMassLimit(){return fUpmasslimit;}
47   Float_t GetLowerMassLimit(){return fLowmasslimit;}
48   Int_t GetNMassBins() const;
49
50   void SetBinWidth(Float_t w);
51   Float_t GetBinWidth(){return fBinWidth;}
52
53   void SetImpactParameterBinning(Int_t nbins, Float_t dmin, Float_t dmax){
54     fNImpParBins=nbins;
55     fLowerImpPar=dmin;
56     fHigherImpPar=dmax;
57   }
58
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     fMultEstimatorAvg[0]=hprof;
65   }
66   void SetMultiplVsZProfileLHC10c(TProfile* hprof){
67     fMultEstimatorAvg[1]=hprof;
68   }
69   void SetMultiplVsZProfileLHC10d(TProfile* hprof){
70     fMultEstimatorAvg[2]=hprof;
71   }
72   void SetMultiplVsZProfileLHC10e(TProfile* hprof){
73     fMultEstimatorAvg[3]=hprof;
74   }
75
76
77   Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
78
79   // Implementation of interface methods
80   virtual void UserCreateOutputObjects();
81   virtual void Init();
82   virtual void LocalInit() {Init();}
83   virtual void UserExec(Option_t *option);
84   virtual void Terminate(Option_t *option);
85     
86  private:
87
88   AliAnalysisTaskSEDvsMultiplicity(const AliAnalysisTaskSEDvsMultiplicity &source);
89   AliAnalysisTaskSEDvsMultiplicity& operator=(const AliAnalysisTaskSEDvsMultiplicity& source); 
90
91   TProfile* GetEstimatorHistogram(const AliVEvent *event);
92   void CreateImpactParameterHistos();
93
94
95   TList  *fOutput; //! list send on output slot 1
96   TList  *fListCuts; //list of cuts
97   TList  *fOutputCounters; //! list send on output slot 3
98
99   TH1F *fHistNEvents; //!hist. for No. of events
100   TH3F *fPtVsMassVsMult;  //! hist. of Pt vs Mult vs. mass (
101   TH3F *fPtVsMassVsMultNoPid;  //! hist. of Pt vs Mult vs. mass (no pid)
102   TH3F *fPtVsMassVsMultUncorr;  //! hist. of Pt vs Mult vs. mass (raw mult)
103   TH3F *fPtVsMassVsMultPart;  //! hist. of Pt vs Mult vs. mass (particle)
104   TH3F *fPtVsMassVsMultAntiPart;  //! hist. of Pt vs Mult vs. mass (antiparticle)
105
106   THnSparseF *fHistMassPtImpPar[5];//! histograms for impact paramter studies
107
108   Float_t fUpmasslimit;  //upper inv mass limit for histos
109   Float_t fLowmasslimit; //lower inv mass limit for histos
110   Float_t fBinWidth;//width of one bin in output histos
111
112   AliRDHFCuts *fRDCutsAnalysis; // Cuts for Analysis
113   AliNormalizationCounter *fCounter;  //!Counter for normalization
114   AliNormalizationCounter *fCounterU; //!Counter for normalization, uncorr mult
115
116   Bool_t fDoImpPar;  //swicth for D impact parameter THnSparse
117   Int_t  fNImpParBins;   // nunber of bins in impact parameter histos
118   Float_t fLowerImpPar;  // lower limit in impact parameter (um)
119   Float_t fHigherImpPar; // higher limit in impact parameter (um)
120
121   Bool_t fReadMC;    //flag for access to MC
122   Int_t  fMCOption;  // 0=keep all cand, 1=keep only signal, 2= keep only back
123   Bool_t fUseBit;    // flag to use bitmask
124   
125   TProfile* fMultEstimatorAvg[4]; // TProfile with mult vs. Z per period
126   Double_t fRefMult;   // refrence multiplcity (period b)
127   Int_t fPdgMeson;   // pdg code of analyzed meson
128
129   
130    ClassDef(AliAnalysisTaskSEDvsMultiplicity,1); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates
131 };
132
133 #endif