00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef StProbPidTraits_hh
00017 #define StProbPidTraits_hh
00018 #include "StDetectorId.h"
00019 #include "StTrackPidTraits.h"
00020 #include "TArrayF.h"
00021 #include "StParticleDefinition.hh"
00022
00023 enum StPidParticle {
00024 kPidElectron ,
00025 kPidProton ,
00026 kPidKaon ,
00027 kPidPion ,
00028 kPidMuon ,
00029 kPidDeuteron ,
00030 kPidTriton ,
00031 kPidHe3 ,
00032 kPidAlpha ,
00033 KPidParticles
00034 };
00035
00036 class StProbPidTraits : public StTrackPidTraits {
00037 public:
00038 StProbPidTraits(const Int_t NDF=0, const StDetectorId Id=kUnknownId, const StPidParticle N=KPidParticles,
00039 const Float_t *PidArray = 0, Double_t *Fractions = 0);
00040 virtual ~StProbPidTraits();
00041 Int_t GetNDF() {return mNDF;}
00042 TArrayF *GetPidArray() {return mPidArray;}
00043 Double_t GetProbability(Int_t PartId) ;
00044 Double_t GetChi2Prob(Int_t PartId) const;
00045 Double_t GetSum() { return mSum;}
00046 void SetFractions(Double_t *Fractions) {mFractions = Fractions; mSum = 0;}
00047 void SetNDF(Int_t ndf) {mNDF = ndf;}
00048 void Print(Option_t *opt = "") const;
00049 static StParticleDefinition *mPidParticleDefinitions[KPidParticles];
00050
00051 protected:
00052 Int_t mNDF;
00053 TArrayF *mPidArray;
00054 Double_t mSum;
00055 Double_t *mFractions;
00056 Double_t mProbability[KPidParticles];
00057
00058 ClassDef(StProbPidTraits,1)
00059 };
00060 #endif