#ifndef ALITRDCALPID_H
#define ALITRDCALPID_H
#include <TNamed.h>
#include "AliPID.h"
class AliTRDCalPID : public TNamed
{
public:
enum {
kNMom = 11,
kNSlicesLQ = 2,
kNSlicesNN = 8
};
AliTRDCalPID();
AliTRDCalPID(const Text_t *name, const Text_t *title);
virtual ~AliTRDCalPID();
virtual Bool_t LoadReferences(Char_t *refFile) = 0;
static Double_t GetMomentum(Int_t ip) {
return (ip<0 || ip>=kNMom) ? -1.0 : fgTrackMomentum[ip]; }
static Double_t GetMomentumBinning(Int_t ip) {
return (ip<0 || ip>=kNMom+1) ? -1.0 : fgTrackMomentumBinning[ip]; }
virtual TObject *GetModel(Int_t ip, Int_t iType, Int_t iPlane) const = 0;
virtual Double_t GetProbability(Int_t spec, Float_t mom
, const Float_t * const dedx
, Float_t length, Int_t plane) const = 0;
static Color_t GetPartColor(Int_t i) { return fgPartColor[i]; }
static Int_t GetPartIndex(Int_t pdg);
static const Char_t *GetPartName(Int_t i) { return fPartName[i]; }
static const Char_t *GetPartSymb(Int_t i) { return fPartSymb[i]; }
void SetPartName(Int_t i, const Char_t *name) { fPartName[i] = name; }
void SetPartSymb(Int_t i, const Char_t *symb) { fPartSymb[i] = symb; }
protected:
virtual void Init() = 0;
static const Char_t *fPartName[AliPID::kSPECIES];
static const Char_t *fPartSymb[AliPID::kSPECIES];
static Color_t fgPartColor[AliPID::kSPECIES];
static Float_t fgTrackMomentum[kNMom];
static Float_t fgTrackMomentumBinning[kNMom+1];
TObjArray *fModel;
private:
AliTRDCalPID(const AliTRDCalPID& pd);
AliTRDCalPID &operator=(const AliTRDCalPID &c);
ClassDef(AliTRDCalPID, 4)
};
#endif