]>
Commit | Line | Data |
---|---|---|
d486095a | 1 | #ifndef ALIANALYSISTASKDPLUS_H |
2 | #define ALIANALYSISTASKDPLUS_H | |
3 | ||
4 | /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | //************************************************************************* | |
8 | // Class AliAnalysisTaskSEDplus | |
4afc48a2 | 9 | // AliAnalysisTaskSE for the D+ candidates Invariant Mass Histogram and |
10 | //comparison of heavy-flavour decay candidates | |
d486095a | 11 | // to MC truth (kinematics stored in the AOD) |
4afc48a2 | 12 | // Renu Bala, bala@to.infn.it |
993bfba1 | 13 | // F. Prino, prino@to.infn.it |
14 | // G. Ortona, ortona@to.infn.it | |
d486095a | 15 | //************************************************************************* |
16 | ||
17 | #include <TROOT.h> | |
18 | #include <TSystem.h> | |
19 | #include <TNtuple.h> | |
20 | #include <TH1F.h> | |
595cc7e2 | 21 | #include <TH2F.h> |
82bb8d4b | 22 | #include <TArrayD.h> |
d486095a | 23 | |
4c230f6d | 24 | #include "AliRDHFCutsDplustoKpipi.h" |
d486095a | 25 | #include "AliAnalysisTaskSE.h" |
26 | #include "AliAnalysisVertexingHF.h" | |
27 | ||
28 | class AliAnalysisTaskSEDplus : public AliAnalysisTaskSE | |
29 | { | |
30 | public: | |
31 | ||
32 | AliAnalysisTaskSEDplus(); | |
4c230f6d | 33 | AliAnalysisTaskSEDplus(const char *name, AliRDHFCutsDplustoKpipi* analysiscuts,AliRDHFCutsDplustoKpipi* productioncuts,Bool_t fillNtuple=kFALSE); |
d486095a | 34 | virtual ~AliAnalysisTaskSEDplus(); |
82bb8d4b | 35 | |
4afc48a2 | 36 | void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;} |
37 | void SetDoLikeSign(Bool_t dols=kTRUE){fDoLS=dols;} | |
82bb8d4b | 38 | void SetMassLimits(Float_t range); |
39 | void SetMassLimits(Float_t lowlimit, Float_t uplimit); | |
4c230f6d | 40 | void SetPtBinLimit(Int_t n, Float_t *limitarray); |
993bfba1 | 41 | void SetBinWidth(Float_t w); |
82bb8d4b | 42 | |
43 | Float_t GetUpperMassLimit(){return fUpmasslimit;} | |
44 | Float_t GetLowerMassLimit(){return fLowmasslimit;} | |
45 | Int_t GetNBinsPt(){return fNPtBins;} | |
46 | Double_t GetPtBinLimit(Int_t ibin); | |
993bfba1 | 47 | Float_t GetBinWidth(){return fBinWidth;} |
48 | Int_t GetNBinsHistos(); | |
82bb8d4b | 49 | |
50 | void LSAnalysis(TClonesArray *arrayOppositeSign,TClonesArray *arrayLikeSign,AliAODEvent *aod,AliAODVertex *vtx1, Int_t nDplusOS); | |
51 | ||
d486095a | 52 | // Implementation of interface methods |
53 | virtual void UserCreateOutputObjects(); | |
54 | virtual void Init(); | |
55 | virtual void LocalInit() {Init();} | |
56 | virtual void UserExec(Option_t *option); | |
57 | virtual void Terminate(Option_t *option); | |
4afc48a2 | 58 | |
d486095a | 59 | private: |
60 | ||
61 | AliAnalysisTaskSEDplus(const AliAnalysisTaskSEDplus &source); | |
62 | AliAnalysisTaskSEDplus& operator=(const AliAnalysisTaskSEDplus& source); | |
82bb8d4b | 63 | Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*3;} |
64 | Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*3+1;} | |
65 | Int_t GetBackgroundHistoIndex(Int_t iPtBin) const { return iPtBin*3+2;} | |
66 | Int_t GetLSHistoIndex(Int_t iPtBin)const { return iPtBin*5;} | |
67 | ||
73173a6a | 68 | enum {kMaxPtBins=20}; |
82bb8d4b | 69 | |
d486095a | 70 | TList *fOutput; //! list send on output slot 0 |
4afc48a2 | 71 | TH1F *fHistNEvents; //!hist. for No. of events |
82bb8d4b | 72 | TH1F *fMassHist[3*kMaxPtBins]; //!hist. for inv mass (LC) |
ba9ae5b2 | 73 | TH1F* fCosPHist[3*kMaxPtBins]; //!hist. for PointingAngle (LC) |
74 | TH1F* fDLenHist[3*kMaxPtBins]; //!hist. for Dec Length (LC) | |
75 | TH1F* fSumd02Hist[3*kMaxPtBins]; //!hist. for sum d02 (LC) | |
76 | TH1F* fSigVertHist[3*kMaxPtBins]; //!hist. for sigVert (LC) | |
77 | TH1F* fPtMaxHist[3*kMaxPtBins]; //!hist. for Pt Max (LC) | |
78 | TH1F* fDCAHist[3*kMaxPtBins]; //!hist. for DCA (LC) | |
82bb8d4b | 79 | TH1F *fMassHistTC[3*kMaxPtBins]; //!hist. for inv mass (TC) |
80 | TH1F *fMassHistLS[5*kMaxPtBins];//!hist. for LS inv mass (LC) | |
ba9ae5b2 | 81 | TH1F *fCosPHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 1 (LC) |
82 | TH1F *fDLenHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 2 (LC) | |
83 | TH1F *fSumd02HistLS[3*kMaxPtBins];//!hist. for LS cuts variable 3 (LC) | |
84 | TH1F *fSigVertHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 4 (LC) | |
85 | TH1F *fPtMaxHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 5 (LC) | |
86 | TH1F *fDCAHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 6 (LC) | |
82bb8d4b | 87 | TH1F *fMassHistLSTC[5*kMaxPtBins];//!hist. for LS inv mass (TC) |
595cc7e2 | 88 | TH2F *fPtVsMass; //! hist. of pt vs. mass (prod. cuts) |
89 | TH2F *fPtVsMassTC; //! hist. of pt vs. mass (analysis cuts) | |
90 | TH2F *fYVsPt; //! hist. of Y vs. Pt (prod. cuts) | |
91 | TH2F *fYVsPtTC; //! hist. of Y vs. Pt (analysis cuts) | |
92 | TH2F *fYVsPtSig; //! hist. of Y vs. Pt (MC, only sig, prod. cuts) | |
93 | TH2F *fYVsPtSigTC; //! hist. of Y vs. Pt (MC, only sig, analysis cuts) | |
1f4e9722 | 94 | TNtuple *fNtupleDplus; //! output ntuple |
82bb8d4b | 95 | Float_t fUpmasslimit; //upper inv mass limit for histos |
96 | Float_t fLowmasslimit; //lower inv mass limit for histos | |
4c230f6d | 97 | Int_t fNPtBins; //Number of Pt Bins |
993bfba1 | 98 | Float_t fBinWidth;//width of one bin in output histos |
4c230f6d | 99 | TList *fListCuts; //list of cuts |
100 | AliRDHFCutsDplustoKpipi *fRDCutsProduction; //Production D+ Cuts | |
101 | AliRDHFCutsDplustoKpipi *fRDCutsAnalysis; //Cuts for Analysis | |
82bb8d4b | 102 | Double_t fArrayBinLimits[kMaxPtBins+1]; //limits for the Pt bins |
1f4e9722 | 103 | Bool_t fFillNtuple; // flag for filling ntuple |
82bb8d4b | 104 | Bool_t fReadMC; //flag for access to MC |
105 | Bool_t fDoLS; //flag to do LS analysis | |
d486095a | 106 | |
595cc7e2 | 107 | ClassDef(AliAnalysisTaskSEDplus,7); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates |
d486095a | 108 | }; |
109 | ||
110 | #endif |