1 #ifndef ALIANALYSISTASKSESIGNIFICANCE_H
2 #define ALIANALYSISTASKSESIGNIFICANCE_H
4 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
9 //*************************************************************************
10 // AliAnalysisTaskSESignificane to calculate effects on
11 // significance of D mesons cut
12 // Authors: G. Ortona, ortona@to.infn.it
13 // F. Prino, prino@to.infn.it
14 // Renu Bala, bala@to.infn.it
15 // Chiara Bianchin, cbianchi@pd.infn.it
16 //*************************************************************************
18 #include "AliAnalysisTaskSE.h"
19 #include "AliAnalysisVertexingHF.h"
22 class AliMultiDimVector;
25 class AliAnalysisTaskSESignificance : public AliAnalysisTaskSE
29 enum FeedDownEnum {kBoth,kCharmOnly,kBeautyOnly};
30 enum ChanDs {kAllReson,kPhi,kK0star};
32 AliAnalysisTaskSESignificance();
33 AliAnalysisTaskSESignificance(const char *name, TList *listMDV,AliRDHFCuts *RDCuts, Int_t decaychannel,Int_t selectionlevel=AliRDHFCuts::kAll);
35 virtual ~AliAnalysisTaskSESignificance();
37 Bool_t CheckConsistency();
38 void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
39 void SetBFeedDown(FeedDownEnum flagB);//see enum
40 void SetDFromCharmOnly(){SetBFeedDown(kCharmOnly);}
41 void SetDFromBeautyOnly(){SetBFeedDown(kBeautyOnly);}
42 void SetMassLimits(Float_t range,Int_t pdg);
43 void SetMassLimits(Float_t lowlimit, Float_t uplimit);
44 void SetNBins(Int_t nbins){fNBins=nbins;}
45 void SetFillWithPartAntiPartBoth(Int_t value){fPartOrAndAntiPart=value;}
46 void SetDsChannel(Int_t chan){fDsChannel=chan;}
48 //void SetMultiVector(const AliMultiDimVector *MultiDimVec){fMultiDimVec->CopyStructure(MultiDimVec);}
49 Float_t GetUpperMassLimit()const {return fUpmasslimit;}
50 Float_t GetLowerMassLimit()const {return fLowmasslimit;}
51 Int_t GetNBins()const {return fNBins;}
52 Int_t GetFillWithPartAntiPartBoth()const {return fPartOrAndAntiPart;}
53 Int_t GetBFeedDown()const {return fBFeedDown;}
54 Int_t GetDsChannel()const {return fDsChannel;}
56 // Implementation of interface methods
57 virtual void UserCreateOutputObjects();
58 virtual void LocalInit();// {Init();}
59 virtual void UserExec(Option_t *option);
60 virtual void Terminate(Option_t *option);
64 void SetPDGdaughterDstoKKpi(){
65 fPDGdaughters[0]=321;//K
66 fPDGdaughters[1]=321;//K
67 fPDGdaughters[2]=211;//pi
68 fPDGdaughters[3]=0; //empty
70 void SetPDGdaughterDstopiKK(){
71 fPDGdaughters[0]=211;//pi
72 fPDGdaughters[1]=321;//K
73 fPDGdaughters[2]=321;//K
74 fPDGdaughters[3]=0; //empty
77 AliAnalysisTaskSESignificance(const AliAnalysisTaskSESignificance &source);
78 AliAnalysisTaskSESignificance& operator=(const AliAnalysisTaskSESignificance& source);
80 Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*3;}
81 Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*3+1;}
82 Int_t GetBackgroundHistoIndex(Int_t iPtBin) const { return iPtBin*3+2;}
83 Int_t GetLSHistoIndex(Int_t iPtBin)const { return iPtBin*5;}
86 void FillDplus(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Int_t isSel);
87 void FillD02p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index, Int_t isSel);
88 void FillDs(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Int_t isSel,Int_t optDecay);
89 void FillDstar(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Int_t isSel);
90 void FillD04p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Int_t isSel);
91 void FillLambdac(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index, Int_t isSel);
97 enum {kMaxNHist=500000};
98 enum {kDplustoKpipi,kD0toKpi,kDstartoKpipi,kDstoKKpi,kD0toKpipipi,kLambdactopKpi};
100 TList *fOutput; //! list send on output slot 0
101 TList *fCutList; //Multidimvector container
102 TH1F *fMassHist[kMaxNHist]; //!hist. for inv mass
103 TH1F *fSigHist[kMaxNHist]; //!hist. for inv mass (sig from MC truth)
104 TH1F *fBkgHist[kMaxNHist]; //!hist. for inv mass (bkg from MC truth)
105 TH1F *fRflHist[kMaxNHist]; //!hist. for inv mass (bkg from MC truth)
106 TH1F* fHistNEvents; //! hist of n of aods
107 Float_t fUpmasslimit; //upper inv mass limit for histos
108 Float_t fLowmasslimit; //lower inv mass limit for histos
109 AliRDHFCuts *fRDCuts;//prong cut values
110 Int_t fNPtBins; //number of pt bins
111 Bool_t fReadMC; //flag for access to MC
112 FeedDownEnum fBFeedDown; //flag to search for D from B decays
113 Int_t fDecChannel; //decay channel identifier
114 Int_t fPDGmother; // PDG code of D meson
115 Int_t fNProngs; // number of prong of the decay channel
116 Int_t fPDGdaughters[4]; // PDG codes of daughters
117 TString fBranchName; // AOD branch name for channel
118 Int_t fSelectionlevel; //selection level: kALL,kTracks,kCandidate
119 Int_t fNVars; // number of selection variables
120 Float_t fVars[kMaxCutVar]; // array with values of cut variables
121 Int_t fNBins; //number of bins in the mass histograms
122 Int_t fPartOrAndAntiPart; //fill histograms with particle only (+1), antiparticle only (-1), both (0)
123 Int_t fDsChannel; // Ds resonant channel selected
125 ClassDef(AliAnalysisTaskSESignificance,4); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates