#ifndef ALIANALYSISTASKSED0CORRELATIONS_H
#define ALIANALYSISTASKSED0CORRELATIONS_H
#include <TROOT.h>
#include <TSystem.h>
#include <TNtuple.h>
#include <TTree.h>
#include <TH1F.h>
#include <THnSparse.h>
#include "AliAnalysisTaskSE.h"
#include "AliRDHFCutsD0toKpi.h"
#include "AliHFAssociatedTrackCuts.h"
#include "AliHFCorrelator.h"
#include "AliNormalizationCounter.h"
using std::vector;
class AliAODEvent;
class AliAnalysisTaskSED0Correlations : public AliAnalysisTaskSE
{
public:
AliAnalysisTaskSED0Correlations();
AliAnalysisTaskSED0Correlations(const char *name,AliRDHFCutsD0toKpi* cutsD0, AliHFAssociatedTrackCuts* cutsTrk);
virtual ~AliAnalysisTaskSED0Correlations();
virtual void UserCreateOutputObjects();
virtual void Init();
virtual void LocalInit() {Init();}
virtual void UserExec(Option_t *option);
virtual void Terminate(Option_t *option);
void SetReadMC(Bool_t readMC=kFALSE){fReadMC=readMC;}
void SetMCReconstructedTracks(Bool_t recoTrMC=kTRUE){fRecoTr=recoTrMC;}
void SetMCReconstructedD0(Bool_t recoD0MC=kTRUE){fRecoD0=recoD0MC;}
void SetMCSelEventType(Bool_t sel=kFALSE){fSelEvType=sel;}
void SetFillOnlyD0D0bar(Int_t flagfill){fFillOnlyD0D0bar=flagfill;}
void SetSystem(Int_t sys){fSys=sys;}
void SetRejectSDDClusters(Bool_t flag) {fIsRejectSDDClusters=flag; }
void SetFillGlobalPlots(Bool_t fill=kTRUE){fFillGlobal=fill;}
void SetSoftPiFlag(Bool_t piflag) {fSoftPiCut=piflag;}
void SetMEAxisThresh(Bool_t methresh) {fMEAxisThresh=methresh;}
void SetKaonCorrelations(Bool_t kaonCorr) {fKaonCorr=kaonCorr;}
Int_t GetReadMC() const {return fReadMC;}
Int_t GetMCReconstructedTracks() const {return fRecoTr;}
Int_t GetMCReconstructedD0() const {return fRecoD0;}
Int_t GetMCSelEventType() const {return fSelEvType;}
Int_t GetFillOnlyD0D0bar() const {return fFillOnlyD0D0bar;}
Int_t GetSystem() const {return fSys;}
Bool_t GetRejectSDDClusters() const {return fIsRejectSDDClusters;}
Bool_t GetFillGlobalPlots() const {return fFillGlobal;}
Double_t GetEtaForCorrel() {return fEtaForCorrel;}
Double_t GetMultEv() {return fMultEv;}
Bool_t GetSoftPiFlag() const {return fSoftPiCut;}
Bool_t GetMEAxisThresh() const {return fMEAxisThresh;}
Bool_t GetKaonCorrelations() const {return fKaonCorr;}
void SetNPtBinsCorr(Int_t nbins) {fNPtBinsCorr = nbins;}
void SetPtBinsLimsCorr(Double_t* ptlims) {for(int i=0;i<=fNPtBinsCorr;i++) {fBinLimsCorr.push_back(ptlims[i]);}}
void SetPtBinsLimsCorr(Float_t* ptlims) {for(int i=0;i<=fNPtBinsCorr;i++) {fBinLimsCorr.push_back((Double_t)ptlims[i]);}}
void SetPtTreshLow(Double_t* pttreshlow) {for(int i=0;i<fNPtBinsCorr;i++) {fPtThreshLow.push_back(pttreshlow[i]);}}
void SetPtTreshUp(Double_t* pttreshup) {for(int i=0;i<fNPtBinsCorr;i++) {fPtThreshUp.push_back(pttreshup[i]);}}
void PrintBinsAndLimits();
Int_t PtBinCorr(Double_t pt) const;
void SetEvMixing(Bool_t mix) {fMixing=mix;}
void SetEtaForCorrel(Double_t etacorr) {fEtaForCorrel=etacorr;}
enum PartType {kTrack,kKCharg,kK0};
enum FillType {kSE, kME};
private:
AliAnalysisTaskSED0Correlations(const AliAnalysisTaskSED0Correlations &source);
AliAnalysisTaskSED0Correlations& operator=(const AliAnalysisTaskSED0Correlations& source);
void FillMassHists(AliAODRecoDecayHF2Prong *part, TClonesArray *arrMC, AliRDHFCutsD0toKpi *cuts, TList *listout);
Int_t CheckD0Origin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
void CreateCorrelationsObjs();
void CalculateCorrelations(AliAODRecoDecayHF2Prong* d, Int_t labD0=-1, TClonesArray* mcArray=0x0);
void CalculateCorrelationsMCKine(AliAODMCParticle* d, TClonesArray* mcArray=0x0);
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.);
Int_t CheckTrackOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
Bool_t IsDDaughter(AliAODMCParticle* d, AliAODMCParticle* track, TClonesArray* mcArray) const;
Bool_t SelectV0(AliAODv0* v0, AliAODVertex *vtx, Int_t option, Int_t idArrayV0[][2]) const;
Bool_t IsSoftPion_MCKine(AliAODMCParticle* d, AliAODMCParticle* track, TClonesArray* arrayMC) const;
Int_t fNPtBinsCorr;
std::vector<Double_t> fBinLimsCorr;
std::vector<Double_t> fPtThreshLow;
std::vector<Double_t> fPtThreshUp;
Int_t fEvents;
Bool_t fAlreadyFilled;
TList *fOutputMass;
TList *fOutputCorr;
TList *fOutputStudy;
TH1F *fNentries;
AliRDHFCutsD0toKpi *fCutsD0;
AliHFAssociatedTrackCuts *fCutsTracks;
AliHFCorrelator* fCorrelatorTr;
AliHFCorrelator* fCorrelatorKc;
AliHFCorrelator* fCorrelatorK0;
Bool_t fReadMC;
Bool_t fRecoTr;
Bool_t fRecoD0;
Bool_t fSelEvType;
Bool_t fMixing;
AliNormalizationCounter *fCounter;
Int_t fNPtBins;
Int_t fFillOnlyD0D0bar;
Int_t fIsSelectedCandidate;
Int_t fSys;
Double_t fEtaForCorrel;
Bool_t fIsRejectSDDClusters;
Bool_t fFillGlobal;
Double_t fMultEv;
Bool_t fSoftPiCut;
Bool_t fMEAxisThresh;
Bool_t fKaonCorr;
ClassDef(AliAnalysisTaskSED0Correlations,5);
};
#endif
AliAnalysisTaskSED0Correlations.h:1 AliAnalysisTaskSED0Correlations.h:2 AliAnalysisTaskSED0Correlations.h:3 AliAnalysisTaskSED0Correlations.h:4 AliAnalysisTaskSED0Correlations.h:5 AliAnalysisTaskSED0Correlations.h:6 AliAnalysisTaskSED0Correlations.h:7 AliAnalysisTaskSED0Correlations.h:8 AliAnalysisTaskSED0Correlations.h:9 AliAnalysisTaskSED0Correlations.h:10 AliAnalysisTaskSED0Correlations.h:11 AliAnalysisTaskSED0Correlations.h:12 AliAnalysisTaskSED0Correlations.h:13 AliAnalysisTaskSED0Correlations.h:14 AliAnalysisTaskSED0Correlations.h:15 AliAnalysisTaskSED0Correlations.h:16 AliAnalysisTaskSED0Correlations.h:17 AliAnalysisTaskSED0Correlations.h:18 AliAnalysisTaskSED0Correlations.h:19 AliAnalysisTaskSED0Correlations.h:20 AliAnalysisTaskSED0Correlations.h:21 AliAnalysisTaskSED0Correlations.h:22 AliAnalysisTaskSED0Correlations.h:23 AliAnalysisTaskSED0Correlations.h:24 AliAnalysisTaskSED0Correlations.h:25 AliAnalysisTaskSED0Correlations.h:26 AliAnalysisTaskSED0Correlations.h:27 AliAnalysisTaskSED0Correlations.h:28 AliAnalysisTaskSED0Correlations.h:29 AliAnalysisTaskSED0Correlations.h:30 AliAnalysisTaskSED0Correlations.h:31 AliAnalysisTaskSED0Correlations.h:32 AliAnalysisTaskSED0Correlations.h:33 AliAnalysisTaskSED0Correlations.h:34 AliAnalysisTaskSED0Correlations.h:35 AliAnalysisTaskSED0Correlations.h:36 AliAnalysisTaskSED0Correlations.h:37 AliAnalysisTaskSED0Correlations.h:38 AliAnalysisTaskSED0Correlations.h:39 AliAnalysisTaskSED0Correlations.h:40 AliAnalysisTaskSED0Correlations.h:41 AliAnalysisTaskSED0Correlations.h:42 AliAnalysisTaskSED0Correlations.h:43 AliAnalysisTaskSED0Correlations.h:44 AliAnalysisTaskSED0Correlations.h:45 AliAnalysisTaskSED0Correlations.h:46 AliAnalysisTaskSED0Correlations.h:47 AliAnalysisTaskSED0Correlations.h:48 AliAnalysisTaskSED0Correlations.h:49 AliAnalysisTaskSED0Correlations.h:50 AliAnalysisTaskSED0Correlations.h:51 AliAnalysisTaskSED0Correlations.h:52 AliAnalysisTaskSED0Correlations.h:53 AliAnalysisTaskSED0Correlations.h:54 AliAnalysisTaskSED0Correlations.h:55 AliAnalysisTaskSED0Correlations.h:56 AliAnalysisTaskSED0Correlations.h:57 AliAnalysisTaskSED0Correlations.h:58 AliAnalysisTaskSED0Correlations.h:59 AliAnalysisTaskSED0Correlations.h:60 AliAnalysisTaskSED0Correlations.h:61 AliAnalysisTaskSED0Correlations.h:62 AliAnalysisTaskSED0Correlations.h:63 AliAnalysisTaskSED0Correlations.h:64 AliAnalysisTaskSED0Correlations.h:65 AliAnalysisTaskSED0Correlations.h:66 AliAnalysisTaskSED0Correlations.h:67 AliAnalysisTaskSED0Correlations.h:68 AliAnalysisTaskSED0Correlations.h:69 AliAnalysisTaskSED0Correlations.h:70 AliAnalysisTaskSED0Correlations.h:71 AliAnalysisTaskSED0Correlations.h:72 AliAnalysisTaskSED0Correlations.h:73 AliAnalysisTaskSED0Correlations.h:74 AliAnalysisTaskSED0Correlations.h:75 AliAnalysisTaskSED0Correlations.h:76 AliAnalysisTaskSED0Correlations.h:77 AliAnalysisTaskSED0Correlations.h:78 AliAnalysisTaskSED0Correlations.h:79 AliAnalysisTaskSED0Correlations.h:80 AliAnalysisTaskSED0Correlations.h:81 AliAnalysisTaskSED0Correlations.h:82 AliAnalysisTaskSED0Correlations.h:83 AliAnalysisTaskSED0Correlations.h:84 AliAnalysisTaskSED0Correlations.h:85 AliAnalysisTaskSED0Correlations.h:86 AliAnalysisTaskSED0Correlations.h:87 AliAnalysisTaskSED0Correlations.h:88 AliAnalysisTaskSED0Correlations.h:89 AliAnalysisTaskSED0Correlations.h:90 AliAnalysisTaskSED0Correlations.h:91 AliAnalysisTaskSED0Correlations.h:92 AliAnalysisTaskSED0Correlations.h:93 AliAnalysisTaskSED0Correlations.h:94 AliAnalysisTaskSED0Correlations.h:95 AliAnalysisTaskSED0Correlations.h:96 AliAnalysisTaskSED0Correlations.h:97 AliAnalysisTaskSED0Correlations.h:98 AliAnalysisTaskSED0Correlations.h:99 AliAnalysisTaskSED0Correlations.h:100 AliAnalysisTaskSED0Correlations.h:101 AliAnalysisTaskSED0Correlations.h:102 AliAnalysisTaskSED0Correlations.h:103 AliAnalysisTaskSED0Correlations.h:104 AliAnalysisTaskSED0Correlations.h:105 AliAnalysisTaskSED0Correlations.h:106 AliAnalysisTaskSED0Correlations.h:107 AliAnalysisTaskSED0Correlations.h:108 AliAnalysisTaskSED0Correlations.h:109 AliAnalysisTaskSED0Correlations.h:110 AliAnalysisTaskSED0Correlations.h:111 AliAnalysisTaskSED0Correlations.h:112 AliAnalysisTaskSED0Correlations.h:113 AliAnalysisTaskSED0Correlations.h:114 AliAnalysisTaskSED0Correlations.h:115 AliAnalysisTaskSED0Correlations.h:116 AliAnalysisTaskSED0Correlations.h:117 AliAnalysisTaskSED0Correlations.h:118 AliAnalysisTaskSED0Correlations.h:119 AliAnalysisTaskSED0Correlations.h:120 AliAnalysisTaskSED0Correlations.h:121 AliAnalysisTaskSED0Correlations.h:122 AliAnalysisTaskSED0Correlations.h:123 AliAnalysisTaskSED0Correlations.h:124 AliAnalysisTaskSED0Correlations.h:125 AliAnalysisTaskSED0Correlations.h:126 AliAnalysisTaskSED0Correlations.h:127 AliAnalysisTaskSED0Correlations.h:128 AliAnalysisTaskSED0Correlations.h:129 AliAnalysisTaskSED0Correlations.h:130 AliAnalysisTaskSED0Correlations.h:131 AliAnalysisTaskSED0Correlations.h:132 AliAnalysisTaskSED0Correlations.h:133 AliAnalysisTaskSED0Correlations.h:134 AliAnalysisTaskSED0Correlations.h:135 AliAnalysisTaskSED0Correlations.h:136 AliAnalysisTaskSED0Correlations.h:137 AliAnalysisTaskSED0Correlations.h:138 AliAnalysisTaskSED0Correlations.h:139 AliAnalysisTaskSED0Correlations.h:140 AliAnalysisTaskSED0Correlations.h:141 AliAnalysisTaskSED0Correlations.h:142 AliAnalysisTaskSED0Correlations.h:143 AliAnalysisTaskSED0Correlations.h:144