]>
Commit | Line | Data |
---|---|---|
a2ad7da1 | 1 | #ifndef ALIANALYSISTASKSED0CORRELATIONS_H |
2 | #define ALIANALYSISTASKSED0CORRELATIONS_H | |
3 | ||
4 | /* Copyright(c) 1998-2012, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
241994ab | 7 | /* $Id$ */ |
a2ad7da1 | 8 | |
9 | //************************************************************************* | |
10 | // Class AliAnalysisTaskSED0Correlations | |
11 | // AliAnalysisTaskSE for D0 candidates (2Prongs) and hadrons correlations | |
12 | // Authors: | |
13 | // C.Bianchin, chiara.bianchin@pd.infn.it | |
14 | // F.Colamaria, fabio.colamaria@ba.infn.it | |
15 | //************************************************************************* | |
16 | ||
17 | #include <TROOT.h> | |
18 | #include <TSystem.h> | |
19 | #include <TNtuple.h> | |
20 | #include <TTree.h> | |
21 | #include <TH1F.h> | |
22 | #include <THnSparse.h> | |
23 | ||
24 | #include "AliAnalysisTaskSE.h" | |
25 | #include "AliRDHFCutsD0toKpi.h" | |
26 | #include "AliHFAssociatedTrackCuts.h" | |
bce70c96 | 27 | #include "AliHFCorrelator.h" |
a2ad7da1 | 28 | #include "AliNormalizationCounter.h" |
29 | ||
e61afb80 | 30 | using std::vector; |
31 | ||
a2ad7da1 | 32 | class AliAODEvent; |
33 | ||
34 | class AliAnalysisTaskSED0Correlations : public AliAnalysisTaskSE | |
35 | { | |
36 | public: | |
37 | ||
38 | AliAnalysisTaskSED0Correlations(); | |
39 | AliAnalysisTaskSED0Correlations(const char *name,AliRDHFCutsD0toKpi* cutsD0, AliHFAssociatedTrackCuts* cutsTrk); | |
40 | virtual ~AliAnalysisTaskSED0Correlations(); | |
41 | ||
42 | // Implementation of interface methods | |
43 | virtual void UserCreateOutputObjects(); | |
44 | virtual void Init(); | |
45 | virtual void LocalInit() {Init();} | |
46 | virtual void UserExec(Option_t *option); | |
47 | virtual void Terminate(Option_t *option); | |
48 | ||
49 | void SetReadMC(Bool_t readMC=kFALSE){fReadMC=readMC;} | |
4d978a4a | 50 | void SetMCReconstructedTracks(Bool_t recoTrMC=kTRUE){fRecoTr=recoTrMC;} |
51 | void SetMCReconstructedD0(Bool_t recoD0MC=kTRUE){fRecoD0=recoD0MC;} | |
52 | void SetMCSelEventType(Bool_t sel=kFALSE){fSelEvType=sel;} | |
a2ad7da1 | 53 | void SetFillOnlyD0D0bar(Int_t flagfill){fFillOnlyD0D0bar=flagfill;} |
54 | void SetSystem(Int_t sys){fSys=sys;} | |
55 | void SetRejectSDDClusters(Bool_t flag) {fIsRejectSDDClusters=flag; } | |
56 | void SetFillGlobalPlots(Bool_t fill=kTRUE){fFillGlobal=fill;} | |
241994ab | 57 | void SetSoftPiFlag(Bool_t piflag) {fSoftPiCut=piflag;} |
58 | void SetMEAxisThresh(Bool_t methresh) {fMEAxisThresh=methresh;} | |
a2ad7da1 | 59 | |
60 | Int_t GetReadMC() const {return fReadMC;} | |
4d978a4a | 61 | Int_t GetMCReconstructedTracks() const {return fRecoTr;} |
62 | Int_t GetMCReconstructedD0() const {return fRecoD0;} | |
63 | Int_t GetMCSelEventType() const {return fSelEvType;} | |
a2ad7da1 | 64 | Int_t GetFillOnlyD0D0bar() const {return fFillOnlyD0D0bar;} |
65 | Int_t GetSystem() const {return fSys;} | |
66 | Bool_t GetRejectSDDClusters() const {return fIsRejectSDDClusters;} | |
67 | Bool_t GetFillGlobalPlots() const {return fFillGlobal;} | |
8c2d7467 | 68 | Double_t GetEtaForCorrel() {return fEtaForCorrel;} |
241994ab | 69 | Double_t GetMultEv() {return fMultEv;} |
70 | Bool_t GetSoftPiFlag() const {return fSoftPiCut;} | |
71 | Bool_t GetMEAxisThresh() const {return fMEAxisThresh;} | |
a2ad7da1 | 72 | |
73 | //correlations setters/printers | |
74 | void SetNPtBinsCorr(Int_t nbins) {fNPtBinsCorr = nbins;} | |
75 | void SetPtBinsLimsCorr(Double_t* ptlims) {for(int i=0;i<=fNPtBinsCorr;i++) {fBinLimsCorr.push_back(ptlims[i]);}} | |
76 | void SetPtBinsLimsCorr(Float_t* ptlims) {for(int i=0;i<=fNPtBinsCorr;i++) {fBinLimsCorr.push_back((Double_t)ptlims[i]);}} | |
77 | void SetPtTreshLow(Double_t* pttreshlow) {for(int i=0;i<fNPtBinsCorr;i++) {fPtThreshLow.push_back(pttreshlow[i]);}} | |
78 | void SetPtTreshUp(Double_t* pttreshup) {for(int i=0;i<fNPtBinsCorr;i++) {fPtThreshUp.push_back(pttreshup[i]);}} | |
7f221b36 | 79 | |
a2ad7da1 | 80 | void PrintBinsAndLimits(); |
81 | Int_t PtBinCorr(Double_t pt) const; | |
bce70c96 | 82 | void SetEvMixing(Bool_t mix) {fMixing=mix;} |
8c2d7467 | 83 | void SetEtaForCorrel(Double_t etacorr) {fEtaForCorrel=etacorr;} |
bce70c96 | 84 | |
85 | enum PartType {kTrack,kKCharg,kK0}; | |
86 | enum FillType {kSE, kME}; //for single event or event mixing histos fill | |
a2ad7da1 | 87 | |
88 | private: | |
89 | ||
90 | AliAnalysisTaskSED0Correlations(const AliAnalysisTaskSED0Correlations &source); | |
91 | AliAnalysisTaskSED0Correlations& operator=(const AliAnalysisTaskSED0Correlations& source); | |
92 | void FillMassHists(AliAODRecoDecayHF2Prong *part, TClonesArray *arrMC, AliRDHFCutsD0toKpi *cuts, TList *listout); | |
a2ad7da1 | 93 | Int_t CheckD0Origin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const; |
94 | //correlation methods | |
95 | void CreateCorrelationsObjs(); | |
bce70c96 | 96 | void CalculateCorrelations(AliAODRecoDecayHF2Prong* d, Int_t labD0=-1, TClonesArray* mcArray=0x0); |
4d978a4a | 97 | void CalculateCorrelationsMCKine(AliAODMCParticle* d, TClonesArray* mcArray=0x0); |
98 | void FillSparsePlots(TClonesArray* arrayMC, Double_t mInv[], Int_t origD0, Int_t PdgD0, AliReducedParticle* track, Int_t ptbin, Int_t type, Double_t wg=1.); | |
a2ad7da1 | 99 | Int_t CheckTrackOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const; |
4d978a4a | 100 | Bool_t IsDDaughter(AliAODMCParticle* d, AliAODMCParticle* track, TClonesArray* mcArray) const; |
a2ad7da1 | 101 | Bool_t SelectV0(AliAODv0* v0, AliAODVertex *vtx, Int_t option, Int_t idArrayV0[][2]) const; |
241994ab | 102 | Bool_t IsSoftPion_MCKine(AliAODMCParticle* d, AliAODMCParticle* track, TClonesArray* arrayMC) const; |
a2ad7da1 | 103 | |
104 | Int_t fNPtBinsCorr; // number of pt bins per correlations | |
2ad98fc5 | 105 | std::vector<Double_t> fBinLimsCorr; // limits of pt bins per correlations |
106 | std::vector<Double_t> fPtThreshLow; // pT treshold of hadrons - low | |
107 | std::vector<Double_t> fPtThreshUp; // pT treshold of hadrons - up | |
a2ad7da1 | 108 | |
109 | Int_t fEvents; // EventCounter | |
110 | Bool_t fAlreadyFilled; // D0 in an event already analyzed (for track distribution plots) | |
111 | TList *fOutputMass; //!list send on output slot 1 | |
112 | TList *fOutputCorr; //!list of correlation histos, output slot 5 | |
113 | TList *fOutputStudy; //!list of histos with MC distributions, output slot 6 | |
114 | TH1F *fNentries; //!histogram with number of events on output slot 2 | |
115 | AliRDHFCutsD0toKpi *fCutsD0; // Cuts for D0, output 3 | |
116 | AliHFAssociatedTrackCuts *fCutsTracks;// Cuts for tracks and K0, output 7 | |
bce70c96 | 117 | AliHFCorrelator* fCorrelatorTr; // Correlator for tracks |
118 | AliHFCorrelator* fCorrelatorKc; // Correlator for charged K | |
119 | AliHFCorrelator* fCorrelatorK0; // Correlator for K0 | |
a2ad7da1 | 120 | Bool_t fReadMC; // flag for MC array: kTRUE = read it, kFALSE = do not read it |
4d978a4a | 121 | Bool_t fRecoTr; // flag for using MC reconstructed (kTRUE) or pure kinematic MC (kFALSE) - Associated tracks |
122 | Bool_t fRecoD0; // flag for using MC reconstructed (kTRUE) or pure kinematic MC (kFALSE) - D0 | |
123 | Bool_t fSelEvType; // flag for enabling selection of event tpye (PP, GS, FE, ...) on MC analysis | |
bce70c96 | 124 | Bool_t fMixing; // flag to enable also event mixing |
a2ad7da1 | 125 | AliNormalizationCounter *fCounter; //!AliNormalizationCounter on output slot 4 |
126 | Int_t fNPtBins; // Number of pt bins | |
127 | Int_t fFillOnlyD0D0bar; // flag to fill mass histogram with D0/D0bar only (0 = fill with both, 1 = fill with D0 only, 2 = fill with D0bar only) | |
128 | Int_t fIsSelectedCandidate; // selection outcome | |
129 | Int_t fSys; // fSys=0 -> p-p; fSys=1 ->PbPb | |
8c2d7467 | 130 | Double_t fEtaForCorrel; // cut for D0 eta to enable correlation with associated particles |
a2ad7da1 | 131 | Bool_t fIsRejectSDDClusters; // flag to reject events with SDD clusters |
132 | Bool_t fFillGlobal; // flag to fill global plots (in loops on tracks and V0 for each event) | |
241994ab | 133 | Double_t fMultEv; // event multiplicity (for trigger eff) |
134 | Bool_t fSoftPiCut; // flag to activate soft pion cut on Data | |
135 | Bool_t fMEAxisThresh; // flag to fill threshold axis in ME plots | |
a2ad7da1 | 136 | |
241994ab | 137 | ClassDef(AliAnalysisTaskSED0Correlations,4); // AliAnalysisTaskSE for D0->Kpi |
a2ad7da1 | 138 | }; |
139 | ||
140 | #endif | |
141 |