/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Analysis/ParticleID/ParticleID-00-04-61/src/TofPID.cxx

Go to the documentation of this file.
00001 #include <cmath>
00002 
00003 #include "ParticleID/TofPID.h"
00004 #include "ParticleID/Tof1PID.h"
00005 #include "ParticleID/Tof2PID.h"
00006 
00007 #ifndef BEAN
00008 #include "EvtRecEvent/EvtRecTrack.h"
00009 #include "MdcRecEvent/RecMdcTrack.h"
00010 #include "TofRecEvent/RecTofTrack.h"
00011 #endif
00012 
00013 
00014 TofPID * TofPID::m_pointer = 0;
00015 TofPID * TofPID::instance() {
00016    if(!m_pointer) m_pointer = new TofPID();
00017    return m_pointer;
00018 }
00019 
00020 TofPID::TofPID():ParticleIDBase() {
00021    ;
00022 }
00023 
00024 void TofPID::init() {
00025    for(int i = 0; i < 5; i++) {
00026       m_chi[i] = 99.0;
00027       m_prob[i] = -1.0;
00028       m_sigma[i] = 1;
00029       m_offset[i] = 99.0;
00030    }
00031    m_chimin = 99.;
00032    m_pdfmin = 99.;
00033    m_ndof = 0;
00034 }
00035 
00036 double TofPID :: chilayer1(int n) const {
00037    double chi = 99;
00038    if(val_tof1) chi = m_tof1pid->chi(n);
00039    return chi;
00040 }
00041 
00042 double TofPID :: chilayer2(int n) const {
00043    double chi = 99;
00044    if(val_tof2) chi = m_tof2pid->chi(n);
00045    return chi;
00046 }
00047 
00048 void TofPID::calculate() {
00049    if(particleIDCalculation() == 0) m_ndof=1;
00050 }
00051 
00052 
00053 
00054 int TofPID::particleIDCalculation() {
00055    int irc=-1;
00056    EvtRecTrack* recTrk = PidTrk();
00057    m_tof1pid = Tof1PID::instance();
00058    m_tof1pid->init();
00059    m_tof1pid->setRecTrack(recTrk);
00060    m_tof1pid->setChiMinCut(chiMinCut());
00061    m_tof1pid->setPdfMinSigmaCut(pdfMinSigmaCut());
00062    m_tof1pid->calculate();
00063    val_tof1 = m_tof1pid->IsPidInfoValid();
00064    m_tof2pid = Tof2PID::instance();
00065    m_tof2pid->init();
00066    m_tof2pid->setRecTrack(recTrk);
00067    m_tof2pid->setChiMinCut(chiMinCut());
00068    m_tof2pid->setPdfMinSigmaCut(pdfMinSigmaCut());
00069    m_tof2pid->calculate();
00070    val_tof2 = m_tof2pid->IsPidInfoValid();
00071    double chitemp = 99.;
00072    double pdftemp = 0;
00073    for(int i=0; i<5; i++) {
00074       double t_tof1 = m_tof1pid->offset(i);
00075       double t_tof2 = m_tof2pid->offset(i);
00076       double m_sigma1 = m_tof1pid->sigma(i);
00077       double m_sigma2 = m_tof2pid->sigma(i);
00078       //  double weight1,weight2;
00079       if(val_tof1==1&&val_tof2==1) {
00080          weight1 =  (m_sigma2*m_sigma2-0.041*0.041)/(m_sigma1*m_sigma1+m_sigma2*m_sigma2-2*0.041*0.041);
00081          weight2 = (m_sigma1*m_sigma1-0.041*0.041)/(m_sigma1*m_sigma1+m_sigma2*m_sigma2-2*0.041*0.041);
00082          m_sigma[i] = sqrt((m_sigma1*m_sigma1*m_sigma2*m_sigma2 - 0.041*0.041*0.041*0.041)/(m_sigma1*m_sigma1+m_sigma2*m_sigma2-2*0.041*0.041));
00083          m_offset[i] = weight1*t_tof1+weight2*t_tof2;
00084          m_chi[i] = m_offset[i]/m_sigma[i];
00085       }
00086       if(val_tof1==1&&val_tof2==0) {
00087          weight1=1;
00088          weight2=0;
00089          m_sigma[i] =  m_tof1pid->sigma(i);
00090          m_offset[i] = t_tof1;
00091          m_chi[i] = m_tof1pid->chi(i);
00092       }
00093 
00094       if(val_tof1==0&&val_tof2==1) {
00095          weight1=0;
00096          weight2=1;
00097          m_sigma[i] =  m_tof2pid->sigma(i);
00098          m_offset[i] = t_tof2;
00099          m_chi[i] = m_tof2pid->chi(i);
00100       }
00101 
00102       if(val_tof1==0&&val_tof2==0) return irc;
00103       if(fabs(m_chi[i]) < chitemp) chitemp = fabs(m_chi[i]);
00104       double ppp = pdfCalculate(m_chi[i],1);
00105       if(fabs(ppp) > pdftemp) pdftemp = fabs(ppp);
00106    }
00107 
00108    m_chimin = chitemp;
00109    m_pdfmin = pdftemp;
00110    if(pdftemp < pdfCalculate(pdfMinSigmaCut(),1)) return irc;
00111    if(m_chimin > chiMinCut()) return irc;
00112    for(int i = 0; i < 5; i++)
00113       m_prob[i] = probCalculate(m_chi[i]*m_chi[i], 1);
00114    irc = 0;
00115    return irc;
00116 }
00117 
00118 
00119 

Generated on Tue Nov 29 22:57:34 2016 for BOSS_7.0.2 by  doxygen 1.4.7