#ifndef ALIANALYSISTASKSED0MASS_H
#define ALIANALYSISTASKSED0MASS_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 "AliNormalizationCounter.h"
class AliAODEvent;
class AliAnalysisTaskSED0Mass : public AliAnalysisTaskSE
{
public:
AliAnalysisTaskSED0Mass();
AliAnalysisTaskSED0Mass(const char *name,AliRDHFCutsD0toKpi* cuts);
virtual ~AliAnalysisTaskSED0Mass();
virtual void UserCreateOutputObjects();
virtual void Init();
virtual void LocalInit() {Init();}
virtual void UserExec(Option_t *option);
virtual void Terminate(Option_t *option);
void SetArray(Int_t type=AliAnalysisTaskSED0Mass::kD0){fArray=type;}
enum{kD0,kLS};
void SetReadMC(Bool_t readMC=kFALSE){fReadMC=readMC;}
void SetCutOnDistr(Bool_t cutondistr=kFALSE){fCutOnDistr=cutondistr;}
void SetUsePid4Distr(Bool_t usepid=kTRUE){fUsePid4Distr=usepid;}
void SetFillOnlyD0D0bar(Int_t flagfill){fFillOnlyD0D0bar=flagfill;}
void SetFillVarHists(Bool_t flag) {fFillVarHists=flag;}
void SetFillPtHistos(Bool_t flag) {fFillPtHist=flag;}
void SetFillYHistos(Bool_t flag) {fFillYHist=flag;}
void SetFillImpactParameterHistos(Bool_t flag) {fFillImpParHist=flag;}
void SetSystem(Int_t sys){fSys=sys; if(fSys==1) SetFillVarHists(kFALSE);}
void SetRejectSDDClusters(Bool_t flag) { fIsRejectSDDClusters=flag; }
void SetUseSelectionBit(Bool_t flag) { fUseSelectionBit=flag; }
void SetWriteVariableTree(Bool_t flag) { fWriteVariableTree=flag; }
void SetDrawDetSignal(Bool_t flag) { fDrawDetSignal=flag; }
void SetPIDCheck(Bool_t flag) { fPIDCheck=flag; }
Bool_t GetCutOnDistr() const {return fCutOnDistr;}
Bool_t GetUsePid4Distr() const {return fUsePid4Distr;}
Int_t GetFillOnlyD0D0bar() const {return fFillOnlyD0D0bar;}
Bool_t GetFillVarHists() const {return fFillVarHists;}
Bool_t GetFillPtHistos() const {return fFillPtHist;}
Bool_t GetFillYHistos() const {return fFillYHist;}
Bool_t GetFillImpactParameterHistos() const {return fFillImpParHist;}
Int_t GetSystem() const {return fSys;}
Bool_t GetRejectSDDClusters() const { return fIsRejectSDDClusters; }
Bool_t GetUseSelectionBit() const { return fUseSelectionBit; }
Bool_t GetWriteVariableTree() const {return fWriteVariableTree;}
Bool_t GetDrawDetSignal() const {return fDrawDetSignal;}
Bool_t GetPIDCheck() const {return fPIDCheck;}
private:
AliAnalysisTaskSED0Mass(const AliAnalysisTaskSED0Mass &source);
AliAnalysisTaskSED0Mass& operator=(const AliAnalysisTaskSED0Mass& source);
void DrawDetSignal(AliAODRecoDecayHF2Prong *part, TList *ListDetSignal);
void FillMassHists(AliAODRecoDecayHF2Prong *part, TClonesArray *arrMC, AliAODMCHeader *mcHeader, AliRDHFCutsD0toKpi *cuts, TList *listout);
void FillVarHists(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *part, TClonesArray *arrMC, AliRDHFCutsD0toKpi *cuts, TList *listout);
AliAODVertex* GetPrimaryVtxSkipped(AliAODEvent *aodev);
void CreateImpactParameterHistos();
Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
Float_t GetTrueImpactParameter(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partD0) const ;
TList *fOutputMass;
TList *fOutputMassPt;
TList *fOutputMassY;
TList *fDistr;
TH1F *fNentries;
AliRDHFCutsD0toKpi *fCuts;
THnSparseF *fHistMassPtImpParTC[5];
Int_t fArray;
Bool_t fReadMC;
Bool_t fCutOnDistr;
Bool_t fUsePid4Distr;
AliNormalizationCounter *fCounter;
Int_t fNPtBins;
Double_t fLsNormalization;
Int_t fFillOnlyD0D0bar;
TObjArray fDaughterTracks;
Int_t fIsSelectedCandidate;
Bool_t fFillVarHists;
Int_t fSys;
Bool_t fIsRejectSDDClusters;
Bool_t fFillPtHist;
Bool_t fFillYHist;
Bool_t fFillImpParHist;
Bool_t fUseSelectionBit;
Bool_t fWriteVariableTree;
TTree *fVariablesTree;
Double_t *fCandidateVariables;
Bool_t fPIDCheck;
Bool_t fDrawDetSignal;
TList *fDetSignal;
ClassDef(AliAnalysisTaskSED0Mass,19);
};
#endif
AliAnalysisTaskSED0Mass.h:1 AliAnalysisTaskSED0Mass.h:2 AliAnalysisTaskSED0Mass.h:3 AliAnalysisTaskSED0Mass.h:4 AliAnalysisTaskSED0Mass.h:5 AliAnalysisTaskSED0Mass.h:6 AliAnalysisTaskSED0Mass.h:7 AliAnalysisTaskSED0Mass.h:8 AliAnalysisTaskSED0Mass.h:9 AliAnalysisTaskSED0Mass.h:10 AliAnalysisTaskSED0Mass.h:11 AliAnalysisTaskSED0Mass.h:12 AliAnalysisTaskSED0Mass.h:13 AliAnalysisTaskSED0Mass.h:14 AliAnalysisTaskSED0Mass.h:15 AliAnalysisTaskSED0Mass.h:16 AliAnalysisTaskSED0Mass.h:17 AliAnalysisTaskSED0Mass.h:18 AliAnalysisTaskSED0Mass.h:19 AliAnalysisTaskSED0Mass.h:20 AliAnalysisTaskSED0Mass.h:21 AliAnalysisTaskSED0Mass.h:22 AliAnalysisTaskSED0Mass.h:23 AliAnalysisTaskSED0Mass.h:24 AliAnalysisTaskSED0Mass.h:25 AliAnalysisTaskSED0Mass.h:26 AliAnalysisTaskSED0Mass.h:27 AliAnalysisTaskSED0Mass.h:28 AliAnalysisTaskSED0Mass.h:29 AliAnalysisTaskSED0Mass.h:30 AliAnalysisTaskSED0Mass.h:31 AliAnalysisTaskSED0Mass.h:32 AliAnalysisTaskSED0Mass.h:33 AliAnalysisTaskSED0Mass.h:34 AliAnalysisTaskSED0Mass.h:35 AliAnalysisTaskSED0Mass.h:36 AliAnalysisTaskSED0Mass.h:37 AliAnalysisTaskSED0Mass.h:38 AliAnalysisTaskSED0Mass.h:39 AliAnalysisTaskSED0Mass.h:40 AliAnalysisTaskSED0Mass.h:41 AliAnalysisTaskSED0Mass.h:42 AliAnalysisTaskSED0Mass.h:43 AliAnalysisTaskSED0Mass.h:44 AliAnalysisTaskSED0Mass.h:45 AliAnalysisTaskSED0Mass.h:46 AliAnalysisTaskSED0Mass.h:47 AliAnalysisTaskSED0Mass.h:48 AliAnalysisTaskSED0Mass.h:49 AliAnalysisTaskSED0Mass.h:50 AliAnalysisTaskSED0Mass.h:51 AliAnalysisTaskSED0Mass.h:52 AliAnalysisTaskSED0Mass.h:53 AliAnalysisTaskSED0Mass.h:54 AliAnalysisTaskSED0Mass.h:55 AliAnalysisTaskSED0Mass.h:56 AliAnalysisTaskSED0Mass.h:57 AliAnalysisTaskSED0Mass.h:58 AliAnalysisTaskSED0Mass.h:59 AliAnalysisTaskSED0Mass.h:60 AliAnalysisTaskSED0Mass.h:61 AliAnalysisTaskSED0Mass.h:62 AliAnalysisTaskSED0Mass.h:63 AliAnalysisTaskSED0Mass.h:64 AliAnalysisTaskSED0Mass.h:65 AliAnalysisTaskSED0Mass.h:66 AliAnalysisTaskSED0Mass.h:67 AliAnalysisTaskSED0Mass.h:68 AliAnalysisTaskSED0Mass.h:69 AliAnalysisTaskSED0Mass.h:70 AliAnalysisTaskSED0Mass.h:71 AliAnalysisTaskSED0Mass.h:72 AliAnalysisTaskSED0Mass.h:73 AliAnalysisTaskSED0Mass.h:74 AliAnalysisTaskSED0Mass.h:75 AliAnalysisTaskSED0Mass.h:76 AliAnalysisTaskSED0Mass.h:77 AliAnalysisTaskSED0Mass.h:78 AliAnalysisTaskSED0Mass.h:79 AliAnalysisTaskSED0Mass.h:80 AliAnalysisTaskSED0Mass.h:81 AliAnalysisTaskSED0Mass.h:82 AliAnalysisTaskSED0Mass.h:83 AliAnalysisTaskSED0Mass.h:84 AliAnalysisTaskSED0Mass.h:85 AliAnalysisTaskSED0Mass.h:86 AliAnalysisTaskSED0Mass.h:87 AliAnalysisTaskSED0Mass.h:88 AliAnalysisTaskSED0Mass.h:89 AliAnalysisTaskSED0Mass.h:90 AliAnalysisTaskSED0Mass.h:91 AliAnalysisTaskSED0Mass.h:92 AliAnalysisTaskSED0Mass.h:93 AliAnalysisTaskSED0Mass.h:94 AliAnalysisTaskSED0Mass.h:95 AliAnalysisTaskSED0Mass.h:96 AliAnalysisTaskSED0Mass.h:97 AliAnalysisTaskSED0Mass.h:98 AliAnalysisTaskSED0Mass.h:99 AliAnalysisTaskSED0Mass.h:100 AliAnalysisTaskSED0Mass.h:101 AliAnalysisTaskSED0Mass.h:102 AliAnalysisTaskSED0Mass.h:103 AliAnalysisTaskSED0Mass.h:104 AliAnalysisTaskSED0Mass.h:105 AliAnalysisTaskSED0Mass.h:106 AliAnalysisTaskSED0Mass.h:107 AliAnalysisTaskSED0Mass.h:108 AliAnalysisTaskSED0Mass.h:109 AliAnalysisTaskSED0Mass.h:110 AliAnalysisTaskSED0Mass.h:111 AliAnalysisTaskSED0Mass.h:112 AliAnalysisTaskSED0Mass.h:113 AliAnalysisTaskSED0Mass.h:114 AliAnalysisTaskSED0Mass.h:115 AliAnalysisTaskSED0Mass.h:116 AliAnalysisTaskSED0Mass.h:117 AliAnalysisTaskSED0Mass.h:118 AliAnalysisTaskSED0Mass.h:119 AliAnalysisTaskSED0Mass.h:120 AliAnalysisTaskSED0Mass.h:121 AliAnalysisTaskSED0Mass.h:122 AliAnalysisTaskSED0Mass.h:123 AliAnalysisTaskSED0Mass.h:124 AliAnalysisTaskSED0Mass.h:125 AliAnalysisTaskSED0Mass.h:126 AliAnalysisTaskSED0Mass.h:127 AliAnalysisTaskSED0Mass.h:128 AliAnalysisTaskSED0Mass.h:129