00001 #ifndef ParticleID_TofCorrPID_H
00002 #define ParticleID_TofCorrPID_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "ParticleID/ParticleIDBase.h"
00013
00014 class TofCorrPID : public ParticleIDBase {
00015
00016 public:
00017
00018 static TofCorrPID * instance();
00019 ~TofCorrPID(){;}
00020
00021 void init();
00022 void calculate();
00023 bool IsPidInfoValid() const { return (m_ndof > 0); }
00024 double chi(int n) const { return m_chi[n]; }
00025 double prob(int n) const { return m_prob[n]; }
00026 double offset(int n) const { return m_offset[n]; }
00027 double sigma(int n) const { return m_sigma[n]; }
00028 int ndof() const { return m_ndof; }
00029
00030 int ipmt() const { return m_ipmt; }
00031 double dt(int ipar, int ipmt) const { return m_dt[ipar][ipmt]; }
00032 double dtCorr(int ipar, int ipmt) const { return m_dtCorr[ipar][ipmt]; }
00033 double sigCorr(int ipar, int ipmt) const { return m_sigCorr[ipar][ipmt]; }
00034 double chiCorr(int ipar, int ipmt) const { return m_chiCorr[ipar][ipmt]; }
00035
00036 protected:
00037
00038 int particleIDCalculation();
00039 int neuronPIDCalculation() { return -1;}
00040 int LikelihoodCalculation() {return -1;}
00041
00042 void inputParameter( int run );
00043 double offsetTof( unsigned int ispecies, bool barrel, unsigned int ipmt, double betaGamma, int charge, double zrhit, double dt );
00044 double offsetTof( unsigned int ispecies, int tofid, double zrhit, double betaGamma, int charge, double dt );
00045 double offsetTof( unsigned int ispecies, int tofid1, int tofid2, double zrhit1, double zrhit2, double betaGamma, int charge, double dt );
00046 double sigmaTof( unsigned int ispecies, int charge, bool barrel, unsigned int ipmt, int tofid[2], double zrhit[2], double betaGamma );
00047 double sigmaTof( unsigned int ispecies, int charge, bool barrel, unsigned int ipmt, double zrhit, double betaGamma );
00048
00049 double qCurveFunc( unsigned int layer, double betaGamma );
00050 double bSigma( unsigned int end, int tofid, double zrhit );
00051 double bSigma( int tofid[2], double zrhit[2] );
00052 double eSigma( int tofid, double zrhit );
00053
00054 bool correlationCheck( unsigned int ipmt );
00055
00056 private:
00057 double m_chi[5];
00058 double m_offset[5], m_sigma[5];
00059 double m_prob[5];
00060 double m_chimin, m_chimax;
00061 double m_pdfmin;
00062 int m_ndof;
00063
00064 private:
00065 int m_ipmt;
00066 double m_dt[5][7], m_dtCorr[5][7], m_sigCorr[5][7], m_chiCorr[5][7];
00067
00068 private:
00069 int m_runBegin, m_runEnd;
00070 double m_p_weight[176][3][5], m_p_common, m_ec_sigma[96][3];
00071 double m_q0_bg[3][5], m_par_ab[5][2][5], m_par_pbar_ab[5][2][5];
00072 double m_par_sigma[4][8][12], m_par_sig_mom[3][7][3];
00073 double m_p_offset[2][4][10][20], m_p_sigma[2][7][10][20];
00074 double m_p_offset_12[2][7][20][46], m_p_sigma_12[2][7][20][46];
00075 double m_p_offset_ec12[2][20][7], m_p_sigma_ec12[2][20][7];
00076
00077 double m_par_ab_12[2][5][2][2][11];
00078
00079 private:
00080 TofCorrPID();
00081 static TofCorrPID *m_pointer;
00082 };
00083
00084 #endif