Compatibility with the Root trunk
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliAnalysisTaskSED0Correlations.h
CommitLineData
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
7/* $Id$ */
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
c64cb1f6 17#include <vector>
a2ad7da1 18#include <TROOT.h>
19#include <TSystem.h>
20#include <TNtuple.h>
21#include <TTree.h>
22#include <TH1F.h>
23#include <THnSparse.h>
24
25#include "AliAnalysisTaskSE.h"
26#include "AliRDHFCutsD0toKpi.h"
27#include "AliHFAssociatedTrackCuts.h"
28#include "AliNormalizationCounter.h"
29
c64cb1f6 30using std::vector;
31
a2ad7da1 32class AliAODEvent;
33
34class 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;}
50 void SetFillOnlyD0D0bar(Int_t flagfill){fFillOnlyD0D0bar=flagfill;}
51 void SetSystem(Int_t sys){fSys=sys;}
52 void SetRejectSDDClusters(Bool_t flag) {fIsRejectSDDClusters=flag; }
53 void SetFillGlobalPlots(Bool_t fill=kTRUE){fFillGlobal=fill;}
54
55 Int_t GetReadMC() const {return fReadMC;}
56 Int_t GetFillOnlyD0D0bar() const {return fFillOnlyD0D0bar;}
57 Int_t GetSystem() const {return fSys;}
58 Bool_t GetRejectSDDClusters() const {return fIsRejectSDDClusters;}
59 Bool_t GetFillGlobalPlots() const {return fFillGlobal;}
60
61 //correlations setters/printers
62 void SetNPtBinsCorr(Int_t nbins) {fNPtBinsCorr = nbins;}
63 void SetPtBinsLimsCorr(Double_t* ptlims) {for(int i=0;i<=fNPtBinsCorr;i++) {fBinLimsCorr.push_back(ptlims[i]);}}
64 void SetPtBinsLimsCorr(Float_t* ptlims) {for(int i=0;i<=fNPtBinsCorr;i++) {fBinLimsCorr.push_back((Double_t)ptlims[i]);}}
65 void SetPtTreshLow(Double_t* pttreshlow) {for(int i=0;i<fNPtBinsCorr;i++) {fPtThreshLow.push_back(pttreshlow[i]);}}
66 void SetPtTreshUp(Double_t* pttreshup) {for(int i=0;i<fNPtBinsCorr;i++) {fPtThreshUp.push_back(pttreshup[i]);}}
67 void PrintBinsAndLimits();
68 Int_t PtBinCorr(Double_t pt) const;
69
70 private:
71
72 AliAnalysisTaskSED0Correlations(const AliAnalysisTaskSED0Correlations &source);
73 AliAnalysisTaskSED0Correlations& operator=(const AliAnalysisTaskSED0Correlations& source);
74 void FillMassHists(AliAODRecoDecayHF2Prong *part, TClonesArray *arrMC, AliRDHFCutsD0toKpi *cuts, TList *listout);
75 void FillVarHists(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *part, TClonesArray *arrMC, AliRDHFCutsD0toKpi *cuts, TList *listout);
76 Int_t CheckD0Origin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
77 //correlation methods
78 void CreateCorrelationsObjs();
79 void CalculateCorrelations(AliAODEvent* aod, AliAODRecoDecayHF2Prong* d, Int_t labD0=-1, TClonesArray* mcArray=0x0);
80 void GetImpParameter(AliAODTrack *track, AliAODEvent* aod, Double_t &d0, Double_t &d0err) const;
81 Bool_t TrackSelectedInLoop(AliAODTrack* track, AliAODRecoDecayHF2Prong *d, AliAODEvent *aod, Int_t ptbin, Int_t idDaughs[]) const;
82 Int_t CheckTrackOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
83 Bool_t SelectV0(AliAODv0* v0, AliAODVertex *vtx, Int_t option, Int_t idArrayV0[][2]) const;
84 Double_t PtWeig(Int_t ptbin, Double_t ptTrack) const;
85
86 Int_t fNPtBinsCorr; // number of pt bins per correlations
87 vector<Double_t> fBinLimsCorr; // limits of pt bins per correlations
88 vector<Double_t> fPtThreshLow; // pT treshold of hadrons - low
89 vector<Double_t> fPtThreshUp; // pT treshold of hadrons - up
90
91 Int_t fEvents; // EventCounter
92 Bool_t fAlreadyFilled; // D0 in an event already analyzed (for track distribution plots)
93 TList *fOutputMass; //!list send on output slot 1
94 TList *fOutputCorr; //!list of correlation histos, output slot 5
95 TList *fOutputStudy; //!list of histos with MC distributions, output slot 6
96 TH1F *fNentries; //!histogram with number of events on output slot 2
97 AliRDHFCutsD0toKpi *fCutsD0; // Cuts for D0, output 3
98 AliHFAssociatedTrackCuts *fCutsTracks;// Cuts for tracks and K0, output 7
99 Bool_t fReadMC; // flag for MC array: kTRUE = read it, kFALSE = do not read it
100 AliNormalizationCounter *fCounter; //!AliNormalizationCounter on output slot 4
101 Int_t fNPtBins; // Number of pt bins
102 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)
103 Int_t fIsSelectedCandidate; // selection outcome
104 Int_t fSys; // fSys=0 -> p-p; fSys=1 ->PbPb
105 Bool_t fIsRejectSDDClusters; // flag to reject events with SDD clusters
106 Bool_t fFillGlobal; // flag to fill global plots (in loops on tracks and V0 for each event)
107
108 ClassDef(AliAnalysisTaskSED0Correlations,1); // AliAnalysisTaskSE for D0->Kpi
109};
110
111#endif
112