#ifndef ALIANALYSISTASKSEHFV2_H
#define ALIANALYSISTASKSEHFV2_H
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisVertexingHF.h"
#include "AliHFAfterBurner.h"
class TH1F;
class TH2D;
class AliMultiDimVector;
class AliRDHFCuts;
class TVector2;
class AliAnalysisTaskSEHFv2 : public AliAnalysisTaskSE
{
public:
enum DecChannel{kDplustoKpipi,kD0toKpi,kDstartoKpipi};
enum EventPlaneMeth{kTPC,kTPCVZERO,kVZERO,kVZEROA,kVZEROC};
AliAnalysisTaskSEHFv2();
AliAnalysisTaskSEHFv2(const char *name, AliRDHFCuts *rdCuts, Int_t decaychannel);
virtual ~AliAnalysisTaskSEHFv2();
void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
void SetMassLimits(Float_t range,Int_t pdg);
void SetMassLimits(Float_t lowlimit, Float_t uplimit);
void SetNMassBins(Int_t nbins){fNMassBins=nbins;}
void SetV0EventPlaneOrder(Int_t n){fV0EPorder=n;}
void SetMinCentrality(Int_t mincentr){fMinCentr=mincentr;}
void SetMaxCentrality(Int_t maxcentr){fMaxCentr=maxcentr;}
void SetUseAfterBurner(Bool_t ab){fUseAfterBurner=ab;}
void SetAfterBurner(AliHFAfterBurner *ab){fAfterBurner=ab;}
void SetEtaGapFeatureForEventplaneFromTracks (Bool_t etaGap) {fEtaGap = etaGap;}
void SetCentralityBinWidthPerMil(Int_t w){fCentBinSizePerMil=w;}
void SetNTPCSubEvents(Int_t nsub);
void Set2TPCEPSubEvents(){SetNTPCSubEvents(2);}
void Set3TPCEPSubEvents(){SetNTPCSubEvents(3);}
void SetEventPlaneMethod(Int_t epmethod);
void SetTPCEPOnly(){SetEventPlaneMethod(kTPC);}
void SetVZEROEP(){SetEventPlaneMethod(kVZERO);}
void SetVZEROAEP(){SetEventPlaneMethod(kVZEROA);}
void SetVZEROCEP(){SetEventPlaneMethod(kVZEROC);}
void SetTPCEP(){SetEventPlaneMethod(kTPCVZERO);}
void SetEventPlanesCompatibility(Float_t comp) {fEventPlanesComp=comp;}
Int_t GetEventPlaneMethod()const {return fEventPlaneMeth;}
Int_t GetNTPCSubEvents()const {return fSubEvents;}
Float_t GetEventPlanesCompatibility()const {return fEventPlanesComp;}
Float_t GetUpperMassLimit()const {return fUpmasslimit;}
Float_t GetLowerMassLimit()const {return fLowmasslimit;}
Int_t GetNMassBins()const {return fNMassBins;}
Float_t GetPhi0Pi(Float_t phi);
AliHFAfterBurner *GetAfterBurner()const {return fAfterBurner;}
virtual void UserCreateOutputObjects();
virtual void LocalInit();
virtual void UserExec(Option_t *option);
virtual void Terminate(Option_t *option);
private:
AliAnalysisTaskSEHFv2(const AliAnalysisTaskSEHFv2 &source);
AliAnalysisTaskSEHFv2& operator=(const AliAnalysisTaskSEHFv2& source);
void CalculateInvMasses(AliAODRecoDecayHF* d,Float_t* &masses,Int_t& nmasses);
void FillDplus(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t ptbin, Float_t dphi, const Float_t* masses,Int_t isSel,Int_t icentr, Double_t phiD);
void FillD02p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t ptbin, Float_t dphi, const Float_t* masses, Int_t isSel,Int_t icentr, Double_t phiD);
void FillDstar(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t ptbin, Float_t dphi, const Float_t* masses,Int_t isSel,Int_t icentr, Double_t phiD);
Float_t GetEventPlaneForCandidate(AliAODRecoDecayHF* d, const TVector2* q,AliEventplane *pl,const TVector2* qsub1,const TVector2* qsub2);
TH1F* fhEventsInfo;
TList *fOutput;
AliRDHFCuts *fRDCuts;
Float_t fLowmasslimit;
Float_t fUpmasslimit;
Int_t fNPtBins;
Int_t fNMassBins;
Bool_t fReadMC;
Bool_t fUseAfterBurner;
Int_t fDecChannel;
AliHFAfterBurner *fAfterBurner;
Int_t fEventPlaneMeth;
Float_t fEventPlanesComp;
Int_t fV0EPorder;
Int_t fMinCentr;
Int_t fMaxCentr;
Bool_t fEtaGap;
Int_t fSubEvents;
Int_t fCentBinSizePerMil;
ClassDef(AliAnalysisTaskSEHFv2,3);
};
#endif
AliAnalysisTaskSEHFv2.h:1 AliAnalysisTaskSEHFv2.h:2 AliAnalysisTaskSEHFv2.h:3 AliAnalysisTaskSEHFv2.h:4 AliAnalysisTaskSEHFv2.h:5 AliAnalysisTaskSEHFv2.h:6 AliAnalysisTaskSEHFv2.h:7 AliAnalysisTaskSEHFv2.h:8 AliAnalysisTaskSEHFv2.h:9 AliAnalysisTaskSEHFv2.h:10 AliAnalysisTaskSEHFv2.h:11 AliAnalysisTaskSEHFv2.h:12 AliAnalysisTaskSEHFv2.h:13 AliAnalysisTaskSEHFv2.h:14 AliAnalysisTaskSEHFv2.h:15 AliAnalysisTaskSEHFv2.h:16 AliAnalysisTaskSEHFv2.h:17 AliAnalysisTaskSEHFv2.h:18 AliAnalysisTaskSEHFv2.h:19 AliAnalysisTaskSEHFv2.h:20 AliAnalysisTaskSEHFv2.h:21 AliAnalysisTaskSEHFv2.h:22 AliAnalysisTaskSEHFv2.h:23 AliAnalysisTaskSEHFv2.h:24 AliAnalysisTaskSEHFv2.h:25 AliAnalysisTaskSEHFv2.h:26 AliAnalysisTaskSEHFv2.h:27 AliAnalysisTaskSEHFv2.h:28 AliAnalysisTaskSEHFv2.h:29 AliAnalysisTaskSEHFv2.h:30 AliAnalysisTaskSEHFv2.h:31 AliAnalysisTaskSEHFv2.h:32 AliAnalysisTaskSEHFv2.h:33 AliAnalysisTaskSEHFv2.h:34 AliAnalysisTaskSEHFv2.h:35 AliAnalysisTaskSEHFv2.h:36 AliAnalysisTaskSEHFv2.h:37 AliAnalysisTaskSEHFv2.h:38 AliAnalysisTaskSEHFv2.h:39 AliAnalysisTaskSEHFv2.h:40 AliAnalysisTaskSEHFv2.h:41 AliAnalysisTaskSEHFv2.h:42 AliAnalysisTaskSEHFv2.h:43 AliAnalysisTaskSEHFv2.h:44 AliAnalysisTaskSEHFv2.h:45 AliAnalysisTaskSEHFv2.h:46 AliAnalysisTaskSEHFv2.h:47 AliAnalysisTaskSEHFv2.h:48 AliAnalysisTaskSEHFv2.h:49 AliAnalysisTaskSEHFv2.h:50 AliAnalysisTaskSEHFv2.h:51 AliAnalysisTaskSEHFv2.h:52 AliAnalysisTaskSEHFv2.h:53 AliAnalysisTaskSEHFv2.h:54 AliAnalysisTaskSEHFv2.h:55 AliAnalysisTaskSEHFv2.h:56 AliAnalysisTaskSEHFv2.h:57 AliAnalysisTaskSEHFv2.h:58 AliAnalysisTaskSEHFv2.h:59 AliAnalysisTaskSEHFv2.h:60 AliAnalysisTaskSEHFv2.h:61 AliAnalysisTaskSEHFv2.h:62 AliAnalysisTaskSEHFv2.h:63 AliAnalysisTaskSEHFv2.h:64 AliAnalysisTaskSEHFv2.h:65 AliAnalysisTaskSEHFv2.h:66 AliAnalysisTaskSEHFv2.h:67 AliAnalysisTaskSEHFv2.h:68 AliAnalysisTaskSEHFv2.h:69 AliAnalysisTaskSEHFv2.h:70 AliAnalysisTaskSEHFv2.h:71 AliAnalysisTaskSEHFv2.h:72 AliAnalysisTaskSEHFv2.h:73 AliAnalysisTaskSEHFv2.h:74 AliAnalysisTaskSEHFv2.h:75 AliAnalysisTaskSEHFv2.h:76 AliAnalysisTaskSEHFv2.h:77 AliAnalysisTaskSEHFv2.h:78 AliAnalysisTaskSEHFv2.h:79 AliAnalysisTaskSEHFv2.h:80 AliAnalysisTaskSEHFv2.h:81 AliAnalysisTaskSEHFv2.h:82 AliAnalysisTaskSEHFv2.h:83 AliAnalysisTaskSEHFv2.h:84 AliAnalysisTaskSEHFv2.h:85 AliAnalysisTaskSEHFv2.h:86 AliAnalysisTaskSEHFv2.h:87 AliAnalysisTaskSEHFv2.h:88 AliAnalysisTaskSEHFv2.h:89 AliAnalysisTaskSEHFv2.h:90 AliAnalysisTaskSEHFv2.h:91 AliAnalysisTaskSEHFv2.h:92 AliAnalysisTaskSEHFv2.h:93 AliAnalysisTaskSEHFv2.h:94 AliAnalysisTaskSEHFv2.h:95 AliAnalysisTaskSEHFv2.h:96 AliAnalysisTaskSEHFv2.h:97 AliAnalysisTaskSEHFv2.h:98 AliAnalysisTaskSEHFv2.h:99 AliAnalysisTaskSEHFv2.h:100 AliAnalysisTaskSEHFv2.h:101 AliAnalysisTaskSEHFv2.h:102 AliAnalysisTaskSEHFv2.h:103 AliAnalysisTaskSEHFv2.h:104 AliAnalysisTaskSEHFv2.h:105 AliAnalysisTaskSEHFv2.h:106 AliAnalysisTaskSEHFv2.h:107 AliAnalysisTaskSEHFv2.h:108 AliAnalysisTaskSEHFv2.h:109 AliAnalysisTaskSEHFv2.h:110 AliAnalysisTaskSEHFv2.h:111 AliAnalysisTaskSEHFv2.h:112 AliAnalysisTaskSEHFv2.h:113 AliAnalysisTaskSEHFv2.h:114 AliAnalysisTaskSEHFv2.h:115 AliAnalysisTaskSEHFv2.h:116 AliAnalysisTaskSEHFv2.h:117 AliAnalysisTaskSEHFv2.h:118 AliAnalysisTaskSEHFv2.h:119 AliAnalysisTaskSEHFv2.h:120 AliAnalysisTaskSEHFv2.h:121 AliAnalysisTaskSEHFv2.h:122 AliAnalysisTaskSEHFv2.h:123