]>
Commit | Line | Data |
---|---|---|
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 | ||
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 SetUseBit(Bool_t use=kTRUE){fUseBit=use;} | |
59 | void SetDoImpactParameterHistos(Bool_t doImp=kTRUE){fDoImpPar=doImp;} | |
60 | ||
61 | ||
62 | void SetMultiplVsZProfileLHC10b(TProfile* hprof){ | |
63 | if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0]; | |
64 | fMultEstimatorAvg[0]=new TProfile(*hprof); | |
65 | } | |
66 | void SetMultiplVsZProfileLHC10c(TProfile* hprof){ | |
67 | if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1]; | |
68 | fMultEstimatorAvg[1]=new TProfile(*hprof); | |
69 | } | |
70 | void SetMultiplVsZProfileLHC10d(TProfile* hprof){ | |
71 | if(fMultEstimatorAvg[2]) delete fMultEstimatorAvg[2]; | |
72 | fMultEstimatorAvg[2]=new TProfile(*hprof); | |
73 | } | |
74 | void SetMultiplVsZProfileLHC10e(TProfile* hprof){ | |
75 | if(fMultEstimatorAvg[3]) delete fMultEstimatorAvg[3]; | |
76 | fMultEstimatorAvg[3]=new TProfile(*hprof); | |
77 | } | |
78 | ||
79 | ||
80 | Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const; | |
81 | ||
82 | // Implementation of interface methods | |
83 | virtual void UserCreateOutputObjects(); | |
84 | virtual void Init(); | |
85 | virtual void LocalInit() {Init();} | |
86 | virtual void UserExec(Option_t *option); | |
87 | virtual void Terminate(Option_t *option); | |
88 | ||
89 | private: | |
90 | ||
91 | AliAnalysisTaskSEDvsMultiplicity(const AliAnalysisTaskSEDvsMultiplicity &source); | |
92 | AliAnalysisTaskSEDvsMultiplicity& operator=(const AliAnalysisTaskSEDvsMultiplicity& source); | |
93 | ||
94 | TProfile* GetEstimatorHistogram(const AliVEvent *event); | |
95 | void CreateImpactParameterHistos(); | |
96 | ||
97 | ||
98 | TList *fOutput; //! list send on output slot 1 | |
99 | TList *fListCuts; //list of cuts | |
100 | TList *fOutputCounters; //! list send on output slot 3 | |
101 | TList *fListProfiles; //list of profile histos for z-vtx correction | |
102 | ||
103 | TH1F *fHistNEvents; //!hist. for No. of events | |
104 | ||
105 | TH2F* fHistNtrEta16vsNtrEta1; //!hist. for Ntracklets in eta<1.6 vs. eta<1. | |
106 | TH2F* fHistNtrCorrEta1vsNtrRawEta1; //!hist. for Ntracklets in eta<1 with and w/o corrections | |
107 | TH2F* fHistNtrVsZvtx; //! hist of ntracklets vs Zvertex | |
108 | TH2F* fHistNtrCorrVsZvtx; //! hist of ntracklets vs Zvertex | |
109 | ||
110 | TH1F* fHistNtrCorrEvSel; //! hist. of ntracklets for selected events | |
111 | TH1F* fHistNtrCorrEvWithCand; //! hist. of ntracklets for evnts with a candidate | |
112 | TH1F* fHistNtrCorrEvWithD;//! hist. of ntracklets for evnts with a candidate in D mass peak | |
113 | ||
114 | TH3F *fPtVsMassVsMult; //! hist. of Pt vs Mult vs. mass ( | |
115 | TH3F *fPtVsMassVsMultNoPid; //! hist. of Pt vs Mult vs. mass (no pid) | |
116 | TH3F *fPtVsMassVsMultUncorr; //! hist. of Pt vs Mult vs. mass (raw mult) | |
117 | TH3F *fPtVsMassVsMultPart; //! hist. of Pt vs Mult vs. mass (particle) | |
118 | TH3F *fPtVsMassVsMultAntiPart; //! hist. of Pt vs Mult vs. mass (antiparticle) | |
119 | ||
120 | THnSparseF *fHistMassPtImpPar[5];//! histograms for impact paramter studies | |
121 | ||
122 | Double_t fUpmasslimit; //upper inv mass limit for histos | |
123 | Double_t fLowmasslimit; //lower inv mass limit for histos | |
124 | Int_t fNMassBins; // nbins for invariant mass histos | |
125 | ||
126 | AliRDHFCuts *fRDCutsAnalysis; // Cuts for Analysis | |
127 | AliNormalizationCounter *fCounter; //!Counter for normalization | |
128 | AliNormalizationCounter *fCounterU; //!Counter for normalization, uncorr mult | |
129 | ||
130 | Bool_t fDoImpPar; //swicth for D impact parameter THnSparse | |
131 | Int_t fNImpParBins; // nunber of bins in impact parameter histos | |
132 | Double_t fLowerImpPar; // lower limit in impact parameter (um) | |
133 | Double_t fHigherImpPar; // higher limit in impact parameter (um) | |
134 | ||
135 | Bool_t fReadMC; //flag for access to MC | |
136 | Int_t fMCOption; // 0=keep all cand, 1=keep only signal, 2= keep only back | |
137 | Bool_t fUseBit; // flag to use bitmask | |
138 | ||
139 | TProfile* fMultEstimatorAvg[4]; // TProfile with mult vs. Z per period | |
140 | Double_t fRefMult; // refrence multiplcity (period b) | |
141 | Int_t fPdgMeson; // pdg code of analyzed meson | |
142 | ||
143 | ||
144 | ClassDef(AliAnalysisTaskSEDvsMultiplicity,2); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates | |
145 | }; | |
146 | ||
147 | #endif |