]>
Commit | Line | Data |
---|---|---|
5d836c02 | 1 | #ifndef ALIANALYSISTASKSEDPLUS_H |
2 | #define ALIANALYSISTASKSEDPLUS_H | |
d486095a | 3 | |
4 | /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
27de2dfb | 7 | /* $Id$ */ |
8 | ||
d486095a | 9 | //************************************************************************* |
10 | // Class AliAnalysisTaskSEDplus | |
4afc48a2 | 11 | // AliAnalysisTaskSE for the D+ candidates Invariant Mass Histogram and |
12 | //comparison of heavy-flavour decay candidates | |
d486095a | 13 | // to MC truth (kinematics stored in the AOD) |
4afc48a2 | 14 | // Renu Bala, bala@to.infn.it |
993bfba1 | 15 | // F. Prino, prino@to.infn.it |
16 | // G. Ortona, ortona@to.infn.it | |
d486095a | 17 | //************************************************************************* |
18 | ||
19 | #include <TROOT.h> | |
20 | #include <TSystem.h> | |
21 | #include <TNtuple.h> | |
22 | #include <TH1F.h> | |
595cc7e2 | 23 | #include <TH2F.h> |
537c0db0 | 24 | #include <TH3F.h> |
3de19caa | 25 | #include <THnSparse.h> |
82bb8d4b | 26 | #include <TArrayD.h> |
d486095a | 27 | |
4c230f6d | 28 | #include "AliRDHFCutsDplustoKpipi.h" |
d486095a | 29 | #include "AliAnalysisTaskSE.h" |
30 | #include "AliAnalysisVertexingHF.h" | |
a96083b9 | 31 | #include "AliNormalizationCounter.h" |
7d9ca2b5 | 32 | #include "AliAODMCHeader.h" |
33 | #include "AliAODMCParticle.h" | |
d486095a | 34 | |
35 | class AliAnalysisTaskSEDplus : public AliAnalysisTaskSE | |
36 | { | |
37 | public: | |
38 | ||
39 | AliAnalysisTaskSEDplus(); | |
d48d81b5 | 40 | AliAnalysisTaskSEDplus(const char *name, AliRDHFCutsDplustoKpipi* analysiscuts,Bool_t fillNtuple=kFALSE); |
d486095a | 41 | virtual ~AliAnalysisTaskSEDplus(); |
82bb8d4b | 42 | |
4afc48a2 | 43 | void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;} |
3ec9254b | 44 | void SetDoLikeSign(Int_t dols=0){fDoLS=dols;} |
aa7302d4 | 45 | void SetSystem(Int_t system=0){fSystem=system;} |
2edd194d | 46 | void SetCutsDistr(Bool_t cutsDistr=kTRUE){fCutsDistr=cutsDistr;} |
7d9ca2b5 | 47 | void SetDoImpactParameterHistos(Bool_t doImp=kTRUE){fDoImpPar=doImp;} |
3de19caa | 48 | void SetImpactParameterBinning(Int_t nbins, Float_t dmin, Float_t dmax){ |
49 | fNImpParBins=nbins; | |
50 | fLowerImpPar=dmin; | |
51 | fHigherImpPar=dmax; | |
52 | } | |
a96083b9 | 53 | void SetUseStrangeness(Bool_t uses=kTRUE){fUseStrangeness=uses;} |
82bb8d4b | 54 | void SetMassLimits(Float_t range); |
55 | void SetMassLimits(Float_t lowlimit, Float_t uplimit); | |
993bfba1 | 56 | void SetBinWidth(Float_t w); |
5fc4893f | 57 | void SetUseBit(Bool_t dols=kTRUE){fUseBit=dols;} |
3de19caa | 58 | |
cee75703 | 59 | void SetUseOnlyPositiveEta(){fEtaSelection=1;} |
60 | void SetUseOnlyNegativeEta(){fEtaSelection=-1;} | |
61 | void SetUseFullEta(){fEtaSelection=0;} | |
82bb8d4b | 62 | |
63 | Float_t GetUpperMassLimit(){return fUpmasslimit;} | |
64 | Float_t GetLowerMassLimit(){return fLowmasslimit;} | |
65 | Int_t GetNBinsPt(){return fNPtBins;} | |
993bfba1 | 66 | Float_t GetBinWidth(){return fBinWidth;} |
67 | Int_t GetNBinsHistos(); | |
82bb8d4b | 68 | |
69 | void LSAnalysis(TClonesArray *arrayOppositeSign,TClonesArray *arrayLikeSign,AliAODEvent *aod,AliAODVertex *vtx1, Int_t nDplusOS); | |
5d836c02 | 70 | Int_t CheckOrigin(TClonesArray* arrayMC, const AliAODMCParticle *mcPartCandidate) const; |
7d9ca2b5 | 71 | void CreateLikeSignHistos(); |
72 | void CreateImpactParameterHistos(); | |
73 | ||
d486095a | 74 | // Implementation of interface methods |
75 | virtual void UserCreateOutputObjects(); | |
76 | virtual void Init(); | |
77 | virtual void LocalInit() {Init();} | |
78 | virtual void UserExec(Option_t *option); | |
79 | virtual void Terminate(Option_t *option); | |
4afc48a2 | 80 | |
d486095a | 81 | private: |
82 | ||
83 | AliAnalysisTaskSEDplus(const AliAnalysisTaskSEDplus &source); | |
84 | AliAnalysisTaskSEDplus& operator=(const AliAnalysisTaskSEDplus& source); | |
82bb8d4b | 85 | Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*3;} |
86 | Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*3+1;} | |
87 | Int_t GetBackgroundHistoIndex(Int_t iPtBin) const { return iPtBin*3+2;} | |
88 | Int_t GetLSHistoIndex(Int_t iPtBin)const { return iPtBin*5;} | |
5d836c02 | 89 | Float_t GetTrueImpactParameter(const AliAODMCHeader *mcHeader, TClonesArray* arrayMC, const AliAODMCParticle *partDp) const; |
70675e50 | 90 | Float_t GetStrangenessWeights(const AliAODRecoDecayHF3Prong* d, TClonesArray* arrayMC, Float_t factor[3]) const; |
af636507 | 91 | |
73173a6a | 92 | enum {kMaxPtBins=20}; |
82bb8d4b | 93 | |
d486095a | 94 | TList *fOutput; //! list send on output slot 0 |
3ec9254b | 95 | TH1F *fHistNEvents; //!hist. for No. of events |
82bb8d4b | 96 | TH1F *fMassHist[3*kMaxPtBins]; //!hist. for inv mass (LC) |
3ec9254b | 97 | TH1F *fCosPHist[3*kMaxPtBins]; //!hist. for PointingAngle (LC) |
98 | TH1F *fDLenHist[3*kMaxPtBins]; //!hist. for Dec Length (LC) | |
99 | TH1F *fSumd02Hist[3*kMaxPtBins]; //!hist. for sum d02 (LC) | |
100 | TH1F *fSigVertHist[3*kMaxPtBins]; //!hist. for sigVert (LC) | |
101 | TH1F *fPtMaxHist[3*kMaxPtBins]; //!hist. for Pt Max (LC) | |
102 | TH1F *fPtKHist[3*kMaxPtBins]; //!hist. for PtK (LC) | |
103 | TH1F *fPtpi1Hist[3*kMaxPtBins]; //!hist. for PtPi1 (LC) | |
104 | TH1F *fPtpi2Hist[3*kMaxPtBins]; //!hist. for PtPi2 (LC) | |
105 | TH1F *fDCAHist[3*kMaxPtBins]; //!hist. for DCA (LC) | |
106 | TH1F *fDLxy[3*kMaxPtBins]; //!hist. for DLxy (LC) | |
107 | TH1F *fDLxyTC[3*kMaxPtBins]; //!hist. for DLxy (TC) | |
108 | TH1F *fCosxy[3*kMaxPtBins]; //!hist. for Cosxy (LC) | |
109 | TH1F *fCosxyTC[3*kMaxPtBins]; //!hist. for Cosxy (TC) | |
7d9ca2b5 | 110 | TH1F *fMassHistTC[3*kMaxPtBins]; //!hist. for inv mass (TC) |
bb69f127 | 111 | TH1F *fMassHistTCPlus[3*kMaxPtBins]; //!hist. for D+ inv mass (TC) |
112 | TH1F *fMassHistTCMinus[3*kMaxPtBins]; //!hist. for D- inv mass (TC) | |
82bb8d4b | 113 | TH1F *fMassHistLS[5*kMaxPtBins];//!hist. for LS inv mass (LC) |
ba9ae5b2 | 114 | TH1F *fCosPHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 1 (LC) |
115 | TH1F *fDLenHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 2 (LC) | |
116 | TH1F *fSumd02HistLS[3*kMaxPtBins];//!hist. for LS cuts variable 3 (LC) | |
117 | TH1F *fSigVertHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 4 (LC) | |
118 | TH1F *fPtMaxHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 5 (LC) | |
119 | TH1F *fDCAHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 6 (LC) | |
82bb8d4b | 120 | TH1F *fMassHistLSTC[5*kMaxPtBins];//!hist. for LS inv mass (TC) |
cdc197b1 | 121 | TH2F *fCorreld0Kd0pi[3]; //!hist. for d0k*d0pi vs. d0k*d0pi (LC) |
9125e019 | 122 | TH2F *fHistCentrality[3];//!hist. for cent distr (all,sel ev, ) |
3de19caa | 123 | THnSparseF *fHistMassPtImpParTC[5];//! histograms for impact paramter studies |
cee75703 | 124 | TH2F *fPtVsMass; //! hist. of pt vs. mass (prod. cuts) |
595cc7e2 | 125 | TH2F *fPtVsMassTC; //! hist. of pt vs. mass (analysis cuts) |
537c0db0 | 126 | TH3F *fYVsPt; //! hist. of Y vs. Pt vs. Mass(prod. cuts) |
127 | TH3F *fYVsPtTC; //! hist. of Y vs. Pt vs. Mass (analysis cuts) | |
595cc7e2 | 128 | TH2F *fYVsPtSig; //! hist. of Y vs. Pt (MC, only sig, prod. cuts) |
129 | TH2F *fYVsPtSigTC; //! hist. of Y vs. Pt (MC, only sig, analysis cuts) | |
7f7f3af0 | 130 | TH2F *fPhiEtaCand; //! hist. with eta/phi distribution of candidates |
131 | TH2F *fPhiEtaCandSigReg;//! hist. eta/phi of candidates in D+ mass region | |
d48d81b5 | 132 | TH1F *fSPDMult; //! hist. of spd mult |
1f4e9722 | 133 | TNtuple *fNtupleDplus; //! output ntuple |
82bb8d4b | 134 | Float_t fUpmasslimit; //upper inv mass limit for histos |
135 | Float_t fLowmasslimit; //lower inv mass limit for histos | |
4c230f6d | 136 | Int_t fNPtBins; //Number of Pt Bins |
993bfba1 | 137 | Float_t fBinWidth;//width of one bin in output histos |
4c230f6d | 138 | TList *fListCuts; //list of cuts |
4c230f6d | 139 | AliRDHFCutsDplustoKpipi *fRDCutsAnalysis; //Cuts for Analysis |
a96083b9 | 140 | AliNormalizationCounter *fCounter;//!Counter for normalization |
82bb8d4b | 141 | Double_t fArrayBinLimits[kMaxPtBins+1]; //limits for the Pt bins |
1f4e9722 | 142 | Bool_t fFillNtuple; // flag for filling ntuple |
82bb8d4b | 143 | Bool_t fReadMC; //flag for access to MC |
a96083b9 | 144 | Bool_t fUseStrangeness;//flag to enhance strangeness in MC to fit to data |
7d9ca2b5 | 145 | Bool_t fUseBit; // flag to use bitmask |
2edd194d | 146 | Bool_t fCutsDistr; // flag to activate cuts distr histos |
7d9ca2b5 | 147 | Bool_t fDoImpPar; // flag to activate impact paramter histos |
3de19caa | 148 | Int_t fNImpParBins; // nunber of bins in impact parameter histos |
149 | Float_t fLowerImpPar; // lower limit in impact parameter (um) | |
150 | Float_t fHigherImpPar; // higher limit in impact parameter (um) | |
7d9ca2b5 | 151 | Int_t fDoLS; // flag to do LS analysis |
cee75703 | 152 | Int_t fEtaSelection; // eta region to accept D+ 0=all, -1 = negative, 1 = positive |
aa7302d4 | 153 | Int_t fSystem; //0=pp,1=PbPb |
d486095a | 154 | |
7f7f3af0 | 155 | ClassDef(AliAnalysisTaskSEDplus,21); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates |
d486095a | 156 | }; |
157 | ||
158 | #endif |