#ifndef ALITRDPIDREFMAKER_H
#define ALITRDPIDREFMAKER_H
#ifndef ALITRDRECOTASK_H
#include "AliTRDrecoTask.h"
#endif
#ifndef ALITRDPIDUTIL_H
#include "AliTRDpidUtil.h"
#endif
class TTree;
class TObjArray;
class AliTRDseedV1;
class AliTRDtrackInfo;
class AliTRDpidInfo;
class AliTRDpidRefMaker : public AliTRDrecoTask
{
public:
enum ETRDpidRefMakerPBins {
k006 = 0
,k008 = 1
,k010 = 2
,k015 = 3
,k020 = 4
,k030 = 5
,k040 = 6
,k050 = 7
,k060 = 8
,k080 = 9
,k100 = 10
,kAll = 11
};
enum ETRDpidRefMakerSource {
kV0 = 0
,kMC = 1
,kRec= 2
};
AliTRDpidRefMaker();
AliTRDpidRefMaker(const char *name, const char *title);
virtual ~AliTRDpidRefMaker();
void UserCreateOutputObjects();
void UserExec(Option_t *option);
Float_t GetPthreshold() const { return fPthreshold;}
void SetAbundance(Float_t train);
void SetPthreshold(Float_t t) { fPthreshold = t;}
void SetRefPID(ETRDpidRefMakerSource select, AliTRDtrackInfo *t, const AliTRDtrackInfo::AliESDinfo *infoESD, Float_t *pid);
void SetSource(ETRDpidRefMakerSource pid, ETRDpidRefMakerSource momentum) {fRefPID = pid; fRefP = momentum;}
protected:
virtual Bool_t CheckQuality(AliTRDseedV1* trklt);
virtual Float_t* CookdEdx(AliTRDseedV1* trklt);
virtual void LinkPIDdata();
virtual void Fill();
TObjArray *fV0s;
TTree *fData;
TObjArray *fInfo;
AliTRDpidInfo *fPIDdataArray;
ETRDpidRefMakerSource fRefPID;
ETRDpidRefMakerSource fRefP;
Float_t fFreq;
Float_t fP;
Float_t fdEdx[AliTRDpidUtil::kNNslices];
Float_t fPID[AliPID::kSPECIES];
private:
AliTRDpidRefMaker(const AliTRDpidRefMaker&);
AliTRDpidRefMaker& operator=(const AliTRDpidRefMaker&);
Float_t fPthreshold;
ClassDef(AliTRDpidRefMaker, 4);
};
#endif