51 SmartRefVector<RecTofTrack> tofTrackCol = recTrk->
tofTrack();
52 SmartRefVector<RecTofTrack>::iterator it;
54 const std::vector<TTofTrack*>& tofTrackCol = recTrk->
tofTrack();
55 std::vector<TTofTrack*>::const_iterator it;
59 if ( tofTrackCol.size() != 1 && tofTrackCol.size() != 3 ) {
return irc; }
63 if ( tofTrackCol.size() == 1 )
65 it = tofTrackCol.begin();
67 bool isRaw = hitst->
is_raw();
68 if ( isRaw ) {
return irc; }
73 if ( !isReadout || !isCounter || !isCluster ) {
return irc; }
75 else if ( tofTrackCol.size() == 3 )
77 unsigned int icounter = -1;
78 unsigned int inumber = 0;
79 for ( it = tofTrackCol.begin(); it != tofTrackCol.end(); it++, inumber++ )
82 bool isRaw = hitst->
is_raw();
83 if ( isRaw )
continue;
85 if ( !isMRPC ) {
return irc; }
89 if ( !isReadout && isCounter && isCluster ) { icounter = inumber; }
91 if ( icounter == -1 ) {
return irc; }
92 it = tofTrackCol.begin() + icounter;
96 double tof = ( *it )->tof();
97 if ( tof <= 0 ) {
return irc; }
98 double path = ( *it )->path();
99 m_rhit = ( *it )->zrhit();
101 double beta2 = beta * beta;
103 double ptrk = mdcTrk->
p();
104 m_mass2 = ptrk * ptrk * ( 1.0 / beta2 - 1.0 );
106 double chitemp = 99.;
108 for (
unsigned int i = 0; i < 5; i++ )
110 double texp = ( *it )->texp( i );
111 m_offset[i] = tof - texp - ( *it )->toffset( i );
112 double sigma_tmp = ( *it )->sigma( 0 );
117 if ( i < 2 ) { m_sigma[i] = sigma_tmp; }
118 else { m_sigma[i] = 1.2 * sigma_tmp; }
120 else { m_sigma[i] = 0.12; }
125 int strip = ( *it )->strip();
126 if ( strip < 0 || strip > 11 ) { m_sigma[i] = 0.065; }
135 else if ( strip == 1 )
140 else if ( strip == 2 )
145 else if ( strip == 3 )
150 else if ( strip == 4 )
155 else if ( strip == 5 )
160 else if ( strip == 6 )
165 else if ( strip == 7 )
170 else if ( strip == 8 )
175 else if ( strip == 9 )
180 else if ( strip == 10 )
185 else if ( strip == 11 )
190 if ( ptrk < 0.05 ) { m_sigma[i] = p0 +
p1 / 0.05; }
191 else { m_sigma[i] = p0 +
p1 / ptrk; }
194 m_chi[i] = m_offset[i] / m_sigma[i];
196 if ( fabs( m_chi[i] ) < chitemp ) { chitemp = fabs( m_chi[i] ); }
198 if ( fabs( ppp ) > pdftemp ) { pdftemp = fabs( ppp ); }
204 for (
unsigned int i = 0; i < 5; i++ )
223 if ( ptrk < 0.2 ) ptemp = 0.2;
224 if ( ptrk > 2.1 ) ptemp = 2.1;
225 double plog = log( ptemp );
226 offset = 0.001 * ( -28.8481 + 138.159 * plog - 249.334 * plog * plog );
232 if ( ptrk < 0.2 ) ptemp = 0.2;
233 if ( ptrk > 2.1 ) ptemp = 2.1;
234 double plog = log( ptemp );
235 offset = 0.001 * ( -33.6966 + 1.91915 * plog - 0.592320 * plog * plog );
240 if ( ptrk < 0.2 ) ptemp = 0.2;
241 if ( ptrk > 2.1 ) ptemp = 2.1;
242 double plog = log( ptemp );
243 offset = 0.001 * ( -27.9965 + 1.213 * plog - 2.02740 * plog * plog );
248 if ( ptrk < 0.3 ) ptemp = 0.3;
249 if ( ptrk > 2.1 ) ptemp = 2.1;
250 double plog = log( ptemp );
251 offset = 0.001 * ( -23.4842 - 28.7569 * plog + 78.21 * plog * plog );
257 if ( ptrk < 0.4 ) ptemp = 0.4;
258 if ( ptrk > 2.1 ) ptemp = 2.1;
259 double plog = log( ptemp );
260 if (
charge > 0 )
offset = 0.001 * ( -4.854 - 110.540 * plog + 99.8732 * plog * plog );
261 if (
charge < 0 )
offset = 0.001 * ( 27.047 - 145.120 * plog + 167.014 * plog * plog );
265 default:
offset = 0.0;
break;
281 if ( ptrk < 0.2 ) ptemp = 0.2;
282 if ( ptrk > 2.1 ) ptemp = 2.1;
283 double plog = log( ptemp );
284 sigma = 0.001 * ( 109.974 + 15.2457 * plog + 36.8139 * plog * plog );
291 if ( ptrk < 0.2 ) ptemp = 0.2;
292 if ( ptrk > 2.1 ) ptemp = 2.1;
293 double plog = log( ptemp );
294 sigma = 0.001 * ( 96.5077 - 2.96232 * plog + 3.12910 * plog * plog );
300 if ( ptrk < 0.2 ) ptemp = 0.2;
301 if ( ptrk > 2.1 ) ptemp = 2.1;
302 double plog = log( ptemp );
303 sigma = 0.001 * ( 105.447 - 2.08044 * plog + 3.44846 * plog * plog );
309 if ( ptrk < 0.3 ) ptemp = 0.3;
310 if ( ptrk > 2.1 ) ptemp = 2.1;
311 double plog = log( ptemp );
312 sigma = 0.001 * ( 88.8806 - 26.8464 * plog + 113.672 * plog * plog );
317 if ( ptrk < 0.5 ) ptemp = 0.5;
318 if ( ptrk > 2.1 ) ptemp = 2.1;
319 double plog = log( ptemp );
320 if (
charge > 0 )
sigma = 0.001 * ( 96.3534 - 44.1139 * plog + 53.9805 * plog * plog );
321 if (
charge < 0 )
sigma = 0.001 * ( 157.345 - 98.7357 * plog + 55.1145 * plog * plog );
325 default:
sigma = 0.100;
break;
EvtRecTrack * PidTrk() const
double probCalculate(double chi2, int n)
double pdfCalculate(double offset, double sigma)