00001 #ifndef ParticleID_DedxPID_H
00002 #define ParticleID_DedxPID_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "ParticleID/ParticleIDBase.h"
00014
00015 class DedxPID : public ParticleIDBase {
00016
00017 public:
00018
00019 static DedxPID * instance();
00020
00021 ~DedxPID(){;}
00022
00023 void init();
00024 void calculate();
00025 bool IsPidInfoValid() const {return (m_ndof>0);}
00026 double chi(int n) const {return m_chi[n];}
00027 double prob(int n) const {return m_prob[n];}
00028 double offset(int n) const {return m_offset[n];}
00029 double sigma(int n) const {return m_sigma[n];}
00030 int ndof() const {return m_ndof;}
00031 double normPH() const { return m_normPH;}
00032 double goodHits() const {return m_goodHits;}
00033 int neuronPID() const {return -1;}
00034 int getNhitCutDx() const {return m_nhitcutdx;}
00035 void setNhitCutDx(const int nhitcuthdx = 5) {m_nhitcutdx = nhitcuthdx;}
00036
00037 protected:
00038
00039 int particleIDCalculation();
00040 int neuronPIDCalculation() {return -1;}
00041 double offsetDedx(int n, double ptrk, double cost);
00042 double sigmaDedx(int n, double ptrk, double cost);
00043 int LikelihoodCalculation() {return -1;}
00044 double mypol3(double x, double par0, double par1, double par2, double par3);
00045 double mypol5(double x, double par0, double par1, double par2, double par3, double par4,
00046 double par5);
00047 void inputpar();
00048 double CorrDedx(int n, double ptrk, double cost,double chi,int charge);
00049 double iterate(double ptrk,double *mean,double *p);
00050 double cal_par(int index1,double *m_jpsi_pip_ptrk_offset,double ptrk,double begin,double bin);
00051 private:
00052 double m_chi[5];
00053 double m_prob[5];
00054 double m_offset[5];
00055 double m_sigma[5];
00056 double m_chimin;
00057 double m_pdfmin;
00058 int m_ndof;
00059 int m_nhitcutdx;
00060 int m_readstate;
00061 double m_normPH;
00062 double m_probPH;
00063 double m_goodHits;
00064
00065 int m_runxx;
00066
00067 double m_jpsi_kap_ptrk_offset[12];
00068 double m_jpsi_kap_ptrk_sigma[12];
00069 double m_jpsi_kam_ptrk_offset[12];
00070 double m_jpsi_kam_ptrk_sigma[12];
00071 double m_jpsi_kap_theta_offset[18];
00072 double m_jpsi_kap_theta_sigma[18];
00073 double m_jpsi_kam_theta_offset[18];
00074 double m_jpsi_kam_theta_sigma[18];
00075
00076 double m_jpsi_mc_kap_ptrk_offset[12];
00077 double m_jpsi_mc_kap_ptrk_sigma[12];
00078 double m_jpsi_mc_kam_ptrk_offset[12];
00079 double m_jpsi_mc_kam_ptrk_sigma[12];
00080 double m_jpsi_mc_kap_theta_offset[18];
00081 double m_jpsi_mc_kap_theta_sigma[18];
00082 double m_jpsi_mc_kam_theta_offset[18];
00083 double m_jpsi_mc_kam_theta_sigma[18];
00084
00085
00086
00087 double m_jpsi_protonp_ptrk_offset[8];
00088 double m_jpsi_protonp_ptrk_sigma[8];
00089 double m_jpsi_protonm_ptrk_offset[8];
00090 double m_jpsi_protonm_ptrk_sigma[8];
00091 double m_jpsi_protonp_theta_offset[18];
00092 double m_jpsi_protonp_theta_sigma[18];
00093 double m_jpsi_protonm_theta_offset[18];
00094 double m_jpsi_protonm_theta_sigma[18];
00095
00096
00097 double m_jpsi_mc_protonp_ptrk_offset[8];
00098 double m_jpsi_mc_protonp_ptrk_sigma[8];
00099 double m_jpsi_mc_protonm_ptrk_offset[8];
00100 double m_jpsi_mc_protonm_ptrk_sigma[8];
00101 double m_jpsi_mc_protonp_theta_offset[18];
00102 double m_jpsi_mc_protonp_theta_sigma[18];
00103 double m_jpsi_mc_protonm_theta_offset[18];
00104 double m_jpsi_mc_protonm_theta_sigma[18];
00105
00106
00107
00108
00109 double m_psip_kap_ptrk_offset[9];
00110 double m_psip_kap_ptrk_sigma[9];
00111 double m_psip_kam_ptrk_offset[9];
00112 double m_psip_kam_ptrk_sigma[9];
00113
00114 double m_psip_mc_kap_ptrk_offset[9];
00115 double m_psip_mc_kap_ptrk_sigma[9];
00116 double m_psip_mc_kam_ptrk_offset[9];
00117 double m_psip_mc_kam_ptrk_sigma[9];
00118
00119
00120 double m_psip_protonp_ptrk_offset[9];
00121 double m_psip_protonp_ptrk_sigma[9];
00122 double m_psip_protonm_ptrk_offset[9];
00123 double m_psip_protonm_ptrk_sigma[9];
00124
00125 double m_psip_mc_protonp_ptrk_offset[9];
00126 double m_psip_mc_protonp_ptrk_sigma[9];
00127 double m_psip_mc_protonm_ptrk_offset[9];
00128 double m_psip_mc_protonm_ptrk_sigma[9];
00129
00130
00131
00132 double m_psipp_pi_ptrk_offset[18];
00133 double m_psipp_pi_ptrk_sigma[18];
00134 double m_psipp_pi_theta_offset[16];
00135 double m_psipp_pi_theta_sigma[16];
00136
00137 double m_psipp_mc_pi_ptrk_offset[18];
00138 double m_psipp_mc_pi_ptrk_sigma[18];
00139 double m_psipp_mc_pi_theta_offset[16];
00140 double m_psipp_mc_pi_theta_sigma[16];
00141
00142 double m_psipp_ka_ptrk_offset[17];
00143 double m_psipp_ka_ptrk_sigma[17];
00144 double m_psipp_ka_theta_offset[16];
00145 double m_psipp_ka_theta_sigma[16];
00146
00147 double m_psipp_mc_ka_ptrk_offset[17];
00148 double m_psipp_mc_ka_ptrk_sigma[17];
00149 double m_psipp_mc_ka_theta_offset[16];
00150 double m_psipp_mc_ka_theta_sigma[16];
00151
00152 double m_psipp_proton_ptrk_offset[18];
00153 double m_psipp_proton_ptrk_sigma[18];
00154 double m_psipp_proton_theta_offset[18];
00155 double m_psipp_proton_theta_sigma[18];
00156
00157 double m_psipp_mc_proton_ptrk_offset[9];
00158 double m_psipp_mc_proton_ptrk_sigma[9];
00159 double m_psipp_mc_proton_theta_offset[18];
00160 double m_psipp_mc_proton_theta_sigma[18];
00161
00162
00163
00164
00165
00166
00167 private:
00168 DedxPID();
00169 static DedxPID *m_pointer;
00170 };
00171
00172 #endif