00001
00002
00003
00004
00005
00007
00008
00009 #ifndef Bichsel_h
00010 #define Bichsel_h
00011
00012 #include "TString.h"
00013 #include "dEdxParameterization.h"
00014 class tpcCorrection_st;
00015 class Bichsel {
00016 public:
00017 enum EParTypes {kP10, kBichsel, kPAI, kTotal};
00018 private:
00019 static TString m_Tags[kTotal];
00020 Int_t m_Type;
00021 TString m_Tag;
00022 static dEdxParameterization *m_dEdxParameterizations[kTotal];
00023 dEdxParameterization *m_dEdxParameterization;
00024 static Bichsel *fgBichsel;
00025 public:
00026 Bichsel(const Char_t *tag="P10", Int_t keep3D=0);
00027 virtual ~Bichsel() {fgBichsel = 0;};
00028 static Bichsel* Instance(const Char_t *tag="P10", Int_t keep3D=0);
00029 static Double_t GetdEdxResolution(Int_t k=1, Double_t TrackLengthInTPC=60);
00030 static Double_t GetdEdxResolution(Double_t *x, Double_t *p);
00031 static Double_t CalcCorrection(const tpcCorrection_st *cor,const Double_t x);
00032 static Double_t SumSeries(const Double_t &X,const Int_t &N,const Double_t *params);
00033 static void Clean();
00034 #ifdef __OWN_INTERPOLATION__
00035 Double_t GetMostProbableZ(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00036 return m_dEdxParameterization->GetMostProbableZ(log10bg,log2dx,kase);
00037 }
00038 Double_t GetMostProbableZM(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00039 return m_dEdxParameterization->GetMostProbableZM(log10bg,log2dx,kase);
00040 }
00041 Double_t GetAverageZ(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00042 return m_dEdxParameterization->GetAverageZ(log10bg,log2dx,kase);
00043 }
00044 Double_t GetAverageZM(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00045 return m_dEdxParameterization->GetAverageZM(log10bg,log2dx,kase);
00046 }
00047 Double_t GetRmsZ(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00048 return m_dEdxParameterization->GetRmsZ(log10bg,log2dx,kase);
00049 }
00050 Double_t GetI70(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00051 return m_dEdxParameterization->GetI70(log10bg,log2dx,kase);
00052 }
00053 Double_t GetI70M(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00054 return m_dEdxParameterization->GetI70M(log10bg,log2dx,kase);
00055 }
00056 Double_t GetI60(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00057 return m_dEdxParameterization->GetI60(log10bg,log2dx,kase);
00058 }
00059 Double_t GetMostProbabledEdx(Double_t log10bg, Double_t log2dx = 1., Int_t kase = 0) {
00060 return m_dEdxParameterization->GetMostProbabledEdx(log10bg,log2dx,kase);
00061 }
00062 Double_t GetdEdxWidth(Double_t log10bg, Double_t log2dx = 1., Int_t kase=0) {
00063 return m_dEdxParameterization->GetdEdxWidth(log10bg,log2dx,kase);
00064 }
00065 Double_t GetProbability(Double_t log10bg, Double_t log2dx, Double_t z, Int_t kase=0) {
00066 return m_dEdxParameterization->GetProbability(log10bg,log2dx,z,kase);}
00067 #else
00068 Double_t GetMostProbableZ(Double_t log10bg, Double_t log2dx = 1.) {
00069 return m_dEdxParameterization->GetMostProbableZ(log10bg,log2dx);
00070 }
00071 Double_t GetMostProbableZM(Double_t log10bg, Double_t log2dx = 1.) {
00072 return m_dEdxParameterization->GetMostProbableZM(log10bg,log2dx);
00073 }
00074 Double_t GetAverageZ(Double_t log10bg, Double_t log2dx = 1.) {
00075 return m_dEdxParameterization->GetAverageZ(log10bg,log2dx);
00076 }
00077 Double_t GetAverageZM(Double_t log10bg, Double_t log2dx = 1.) {
00078 return m_dEdxParameterization->GetAverageZM(log10bg,log2dx);
00079 }
00080 Double_t GetRmsZ(Double_t log10bg, Double_t log2dx = 1.) {
00081 return m_dEdxParameterization->GetRmsZ(log10bg,log2dx);
00082 }
00083 Double_t GetI70(Double_t log10bg, Double_t log2dx = 1.) {
00084 return m_dEdxParameterization->GetI70(log10bg,log2dx);
00085 }
00086 Double_t GetI70M(Double_t log10bg, Double_t log2dx = 1.) {
00087 return m_dEdxParameterization->GetI70M(log10bg,log2dx);
00088 }
00089 Double_t GetI60(Double_t log10bg, Double_t log2dx = 1.) {
00090 return m_dEdxParameterization->GetI60(log10bg,log2dx);
00091 }
00092 Double_t GetMostProbabledEdx(Double_t log10bg, Double_t log2dx = 1.) {
00093 return m_dEdxParameterization->GetMostProbabledEdx(log10bg,log2dx);
00094 }
00095 Double_t GetdEdxWidth(Double_t log10bg, Double_t log2dx = 1.) {
00096 return m_dEdxParameterization->GetdEdxWidth(log10bg,log2dx);
00097 }
00098 Double_t GetProbability(Double_t log10bg, Double_t log2dx, Double_t z) {
00099 return m_dEdxParameterization->GetProbability(log10bg,log2dx,z);}
00100 #endif
00101 #if 0
00102 Double_t TofCorrection(Double_t log10bg);
00103 #endif
00104 const dEdxParameterization *Parameterization() const {return m_dEdxParameterization;}
00105 virtual void Print();
00106 const Char_t *Tag() const {return m_dEdxParameterization->Tag();}
00107 const TProfile2D *P() const {return m_dEdxParameterization->P();}
00108 const TProfile2D *A() const {return m_dEdxParameterization->A();}
00109 const TProfile2D *I70() const {return m_dEdxParameterization->I70();}
00110 const TProfile2D *I60() const {return m_dEdxParameterization->I60();}
00111 const TProfile2D *D() const {return m_dEdxParameterization->D();}
00112 const TProfile2D *Rms() const {return m_dEdxParameterization->Rms();}
00113 const TProfile2D *W() const {return m_dEdxParameterization->W();}
00114 const TH3D *Phi() const {return m_dEdxParameterization->Phi();}
00115 ClassDef(Bichsel,0)
00116 };
00117 #endif
00118