62 {
63 int irc = -1;
67
68 double ptrk = mdcTrk->
p();
69
71
73
74#ifndef BEAN
75 SmartRefVector<RecTofTrack> tofTrk = recTrk->
tofTrack();
76 SmartRefVector<RecTofTrack>::iterator it;
77#else
78 const std::vector<TTofTrack* >& tofTrk = recTrk->
tofTrack();
79 std::vector<TTofTrack* >::const_iterator it;
80#endif
81
83 std::vector<int> tof2count;
84 int goodtof2trk=0;
85 for(it = tofTrk.begin(); it!=tofTrk.end(); it++,goodtof2trk++) {
86 unsigned int st = (*it)->status();
88
91 if( hitst->
layer()==2 ) tof2count.push_back(goodtof2trk);
92 }
93 delete hitst;
94
95 if(tof2count.size()!=1) return irc;
96 it = tofTrk.begin()+tof2count[0];
97 double tof = (*it)->tof();
98 m_tof2 = tof;
99
100 if(tof <=0 ) return irc;
101
102
103 int cntr = (*it)->tofID();
104 double path = ((*it)->path())*10.0;
105
107
108
109
110
111 m_ph2 = (*it)->ph();
112 m_zhit2 = ((*it)->zrhit())*10;
113
115 m_mass2 = ptrk * ptrk * (1/beta2 -1);
116 if ((m_mass2>20)||(m_mass2<-1)) return irc;
117
118 double chitemp = 99.;
119 double pdftemp = 0;
120 double sig_tmp = (*it)->sigma(0);
121 for(int i = 0; i < 5; i++) {
122 m_offset[i] = tof - (*it)->texp(i)-(*it)->toffset(i);
123 if(sig_tmp!=0) {
124 m_sigma[i] = 1.2*sig_tmp;
125 if(i<2) m_sigma[i]=sig_tmp;
126 }
128 m_chi[i] = m_offset[i]/m_sigma[i];
129 if(fabs(m_chi[i]) < chitemp) chitemp = fabs(m_chi[i]);
131 if(fabs(ppp) > pdftemp) pdftemp = fabs(ppp);
132 }
133
134 m_chimin = chitemp;
135 m_pdfmin = pdftemp;
137 if(fabs(m_chimin) >
chiMinCut())
return irc;
138
139
140
141 for(int i = 0; i < 5; i++) {
143 }
144 irc = 0;
145 return irc;
146}
SmartRefVector< RecTofTrack > tofTrack()
EvtRecTrack * PidTrk() const
double probCalculate(double chi2, int n)
double pdfCalculate(double offset, double sigma)
double pdfMinSigmaCut() const
double sigmaTof2(int n, int cntr, double ptrk, double ztof, double m_ph2, double charge)
unsigned int layer() const
void setStatus(unsigned int status)