68 MsgStream log(
msgSvc(), name() );
70 log << MSG::INFO <<
"in initialize()" << endmsg;
73 NTuplePtr nt1(
ntupleSvc(),
"FILE1/mdctrack" );
74 if ( nt1 ) m_tuple1 = nt1;
78 ntupleSvc()->book(
"FILE1/mdctrack", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
81 status = m_tuple1->addItem(
"mdc_vx0", m_vx0 );
82 status = m_tuple1->addItem(
"mdc_vy0", m_vy0 );
83 status = m_tuple1->addItem(
"mdc_vz0", m_vz0 );
84 status = m_tuple1->addItem(
"mdc_pch", m_pch );
85 status = m_tuple1->addItem(
"mdc_trackid", m_trackid );
86 status = m_tuple1->addItem(
"mdc_charge", m_charge );
87 status = m_tuple1->addItem(
"mdc_pxy0", m_pxy0 );
88 status = m_tuple1->addItem(
"mdc_px0", m_px0 );
89 status = m_tuple1->addItem(
"mdc_py0", m_py0 );
90 status = m_tuple1->addItem(
"mdc_pz0", m_pz0 );
91 status = m_tuple1->addItem(
"mdc_r0", m_r0 );
92 status = m_tuple1->addItem(
"mdc_phi", m_phi );
93 status = m_tuple1->addItem(
"mdc_theta", m_theta );
94 status = m_tuple1->addItem(
"mdc_ndof", m_ndof );
95 status = m_tuple1->addItem(
"mdc_nster", m_nster );
96 status = m_tuple1->addItem(
"mdc_stat", m_stat );
97 status = m_tuple1->addItem(
"mdc_angd", m_angd );
98 status = m_tuple1->addItem(
"mdc_rvxy0", m_rvxy0 );
99 status = m_tuple1->addItem(
"mdc_rvz0", m_rvz0 );
100 status = m_tuple1->addItem(
"mdc_d0", m_d0 );
101 status = m_tuple1->addItem(
"mdc_phi0", m_phi0 );
102 status = m_tuple1->addItem(
"mdc_kappa", m_kappa );
103 status = m_tuple1->addItem(
"mdc_dz", m_dzhelix );
104 status = m_tuple1->addItem(
"mdc_tanlamda", m_tanlamda );
105 status = m_tuple1->addItem(
"mdc_err11", m_err11 );
106 status = m_tuple1->addItem(
"mdc_err21", m_err21 );
107 status = m_tuple1->addItem(
"mdc_err22", m_err22 );
108 status = m_tuple1->addItem(
"mdc_err31", m_err31 );
109 status = m_tuple1->addItem(
"mdc_err32", m_err32 );
110 status = m_tuple1->addItem(
"mdc_err33", m_err33 );
111 status = m_tuple1->addItem(
"mdc_err41", m_err41 );
112 status = m_tuple1->addItem(
"mdc_err42", m_err42 );
113 status = m_tuple1->addItem(
"mdc_err43", m_err43 );
114 status = m_tuple1->addItem(
"mdc_err44", m_err44 );
115 status = m_tuple1->addItem(
"mdc_err51", m_err51 );
116 status = m_tuple1->addItem(
"mdc_err52", m_err52 );
117 status = m_tuple1->addItem(
"mdc_err53", m_err53 );
118 status = m_tuple1->addItem(
"mdc_err54", m_err54 );
119 status = m_tuple1->addItem(
"mdc_err55", m_err55 );
121 status = m_tuple1->addItem(
"mdc_kal_px", m_mdc_kal_px );
122 status = m_tuple1->addItem(
"mdc_kal_py", m_mdc_kal_py );
123 status = m_tuple1->addItem(
"mdc_kal_pz", m_mdc_kal_pz );
124 status = m_tuple1->addItem(
"mdc_kal_p", m_mdc_kal_p );
125 status = m_tuple1->addItem(
"mdc_kal_pxy", m_mdc_kal_pxy );
126 status = m_tuple1->addItem(
"mdc_kal_costheta", m_mdc_kal_costheta );
128 status = m_tuple1->addItem(
"NGch", m_ngch );
132 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple1 ) << endmsg;
133 return StatusCode::FAILURE;
139 if ( m_checkDedx == 1 )
141 NTuplePtr nt2(
ntupleSvc(),
"FILE1/dedx" );
142 if ( nt2 ) m_tuple2 = nt2;
145 m_tuple2 =
ntupleSvc()->book(
"FILE1/dedx", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
148 status = m_tuple2->addItem(
"dedx_ptrk", m_ptrk );
149 status = m_tuple2->addItem(
"dedx_chie", m_chie );
150 status = m_tuple2->addItem(
"dedx_chimu", m_chimu );
151 status = m_tuple2->addItem(
"dedx_chipi", m_chipi );
152 status = m_tuple2->addItem(
"dedx_chik", m_chik );
153 status = m_tuple2->addItem(
"dedx_chip", m_chip );
154 status = m_tuple2->addItem(
"dedx_probPH", m_probPH );
155 status = m_tuple2->addItem(
"dedx_normPH", m_normPH );
156 status = m_tuple2->addItem(
"dedx_ghit", m_ghit );
157 status = m_tuple2->addItem(
"dedx_thit", m_thit );
161 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple2 ) << endmsg;
162 return StatusCode::FAILURE;
168 if ( m_checkExt == 1 )
170 NTuplePtr nt3(
ntupleSvc(),
"FILE1/ext" );
171 if ( nt3 ) m_tuple3 = nt3;
174 m_tuple3 =
ntupleSvc()->book(
"FILE1/ext", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
178 status = m_tuple3->addItem(
"ext_tof1", m_tof1 );
179 status = m_tuple3->addItem(
"ext_tof1path", m_tof1path );
180 status = m_tuple3->addItem(
"ext_tof1z", m_tof1z );
181 status = m_tuple3->addItem(
"ext_tof1t", m_tof1t );
182 status = m_tuple3->addItem(
"ext_tof1x", m_tof1x );
183 status = m_tuple3->addItem(
"ext_tof1y", m_tof1y );
185 status = m_tuple3->addItem(
"ext_tof2", m_tof2 );
186 status = m_tuple3->addItem(
"ext_tof2path", m_tof2path );
187 status = m_tuple3->addItem(
"ext_tof2z", m_tof2z );
188 status = m_tuple3->addItem(
"ext_tof2t", m_tof2t );
189 status = m_tuple3->addItem(
"ext_tof2x", m_tof2x );
190 status = m_tuple3->addItem(
"ext_tof2y", m_tof2y );
192 status = m_tuple3->addItem(
"ext_emctheta", m_emctheta );
193 status = m_tuple3->addItem(
"ext_emcphi", m_emcphi );
194 status = m_tuple3->addItem(
"ext_emcpath", m_emcpath );
196 status = m_tuple3->addItem(
"ext_mucz", m_mucz );
197 status = m_tuple3->addItem(
"ext_muct", m_muct );
198 status = m_tuple3->addItem(
"ext_mucx", m_mucx );
199 status = m_tuple3->addItem(
"ext_mucy", m_mucy );
203 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple3 ) << endmsg;
204 return StatusCode::FAILURE;
210 if ( m_checkTof == 1 )
212 NTuplePtr nt4(
ntupleSvc(),
"FILE1/tof" );
213 if ( nt4 ) m_tuple4 = nt4;
216 m_tuple4 =
ntupleSvc()->book(
"FILE1/tof", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
219 status = m_tuple4->addItem(
"tof_path", m_path );
220 status = m_tuple4->addItem(
"tof_zrhit", m_zrhit );
221 status = m_tuple4->addItem(
"tof_ph", m_ph );
222 status = m_tuple4->addItem(
"tof_tof", m_tof );
223 status = m_tuple4->addItem(
"tof_errtof", m_errtof );
224 status = m_tuple4->addItem(
"tof_beta", m_beta );
225 status = m_tuple4->addItem(
"tof_texpe", m_texpe );
226 status = m_tuple4->addItem(
"tof_texpmu", m_texpmu );
227 status = m_tuple4->addItem(
"tof_texppi", m_texppi );
228 status = m_tuple4->addItem(
"tof_texpka", m_texpka );
229 status = m_tuple4->addItem(
"tof_texppro", m_texppro );
230 status = m_tuple4->addItem(
"tof_toffsete", m_toffsete );
231 status = m_tuple4->addItem(
"tof_toffsetmu", m_toffsetmu );
232 status = m_tuple4->addItem(
"tof_toffsetpi", m_toffsetpi );
233 status = m_tuple4->addItem(
"tof_toffsetka", m_toffsetka );
234 status = m_tuple4->addItem(
"tof_toffsetpro", m_toffsetpro );
235 status = m_tuple4->addItem(
"tof_toffsetatpr", m_toffsetatpr );
236 status = m_tuple4->addItem(
"tof_sigmae", m_sigmae );
237 status = m_tuple4->addItem(
"tof_sigmamu", m_sigmamu );
238 status = m_tuple4->addItem(
"tof_sigmapi", m_sigmapi );
239 status = m_tuple4->addItem(
"tof_sigmaka", m_sigmaka );
240 status = m_tuple4->addItem(
"tof_sigmapro", m_sigmapro );
241 status = m_tuple4->addItem(
"tof_sigmaatpr", m_sigmaatpr );
242 status = m_tuple4->addItem(
"tof_quality", m_quality );
243 status = m_tuple4->addItem(
"tof_t0", m_t0 );
244 status = m_tuple4->addItem(
"tof_errt0", m_errt0 );
245 status = m_tuple4->addItem(
"tof_errz", m_errz );
246 status = m_tuple4->addItem(
"tof_phi", m_phitof );
247 status = m_tuple4->addItem(
"tof_errphi", m_errphi );
248 status = m_tuple4->addItem(
"tof_energy", m_energy );
249 status = m_tuple4->addItem(
"tof_errenergy", m_errenergy );
253 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple4 ) << endmsg;
254 return StatusCode::FAILURE;
260 if ( m_checkEmc == 1 )
262 NTuplePtr nt5(
ntupleSvc(),
"FILE1/emc" );
263 if ( nt5 ) m_tuple5 = nt5;
266 m_tuple5 =
ntupleSvc()->book(
"FILE1/emc", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
270 status = m_tuple5->addItem(
"emc_x", m_x );
271 status = m_tuple5->addItem(
"emc_y", m_y );
272 status = m_tuple5->addItem(
"emc_z", m_z );
273 status = m_tuple5->addItem(
"emc_theta", m_thetaemc );
274 status = m_tuple5->addItem(
"emc_phi", m_phiemc );
275 status = m_tuple5->addItem(
"emc_dx", m_dx );
276 status = m_tuple5->addItem(
"emc_dy", m_dy );
277 status = m_tuple5->addItem(
"emc_dz", m_dz );
278 status = m_tuple5->addItem(
"emc_dtheta", m_dtheta );
279 status = m_tuple5->addItem(
"emc_dphi", m_dphi );
280 status = m_tuple5->addItem(
"emc_energy", m_energyemc );
281 status = m_tuple5->addItem(
"emc_dE", m_de );
282 status = m_tuple5->addItem(
"emc_eseed", m_eseed );
283 status = m_tuple5->addItem(
"emc_e3x3", m_e3x3 );
284 status = m_tuple5->addItem(
"emc_e5x5", m_e5x5 );
285 status = m_tuple5->addItem(
"emc_secp", m_secp );
286 status = m_tuple5->addItem(
"emc_latp", m_latp );
290 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple5 ) << endmsg;
291 return StatusCode::FAILURE;
297 if ( m_checkMuc == 1 )
299 NTuplePtr nt6(
ntupleSvc(),
"FILE1/muc" );
300 if ( nt6 ) m_tuple6 = nt6;
303 m_tuple6 =
ntupleSvc()->book(
"FILE1/muc", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
307 status = m_tuple6->addItem(
"muc_depth", m_depth );
308 status = m_tuple6->addItem(
"muc_chi2", m_chi2 );
309 status = m_tuple6->addItem(
"muc_rms", m_rms );
310 status = m_tuple6->addItem(
"muc_xpos", m_xpos );
311 status = m_tuple6->addItem(
"muc_ypos", m_ypos );
312 status = m_tuple6->addItem(
"muc_zpos", m_zpos );
313 status = m_tuple6->addItem(
"muc_xsigma", m_xpossigma );
314 status = m_tuple6->addItem(
"muc_ysigma", m_ypossigma );
315 status = m_tuple6->addItem(
"muc_zsigma", m_zpossigma );
316 status = m_tuple6->addItem(
"muc_px", m_px );
317 status = m_tuple6->addItem(
"muc_py", m_py );
318 status = m_tuple6->addItem(
"muc_pz", m_pz );
319 status = m_tuple6->addItem(
"muc_distance", m_distance );
320 status = m_tuple6->addItem(
"muc_deltaphi", m_deltaphi );
324 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple6 ) << endmsg;
325 return StatusCode::FAILURE;
331 NTuplePtr nt7(
ntupleSvc(),
"FILE1/runinfo" );
332 if ( nt7 ) m_tuple7 = nt7;
336 ntupleSvc()->book(
"FILE1/runinfo", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
340 status = m_tuple7->addItem(
"runinfo_runNo", m_runNo );
341 status = m_tuple7->addItem(
"runinfo_event", m_event );
342 status = m_tuple7->addItem(
"runinfo_totcharged", m_totcharged );
343 status = m_tuple7->addItem(
"runinfo_totneutral", m_totneutral );
344 status = m_tuple7->addItem(
"runinfo_tottracks", m_tottracks );
345 status = m_tuple7->addItem(
"runinfo_ngood", m_ngood );
346 status = m_tuple7->addItem(
"runinfo_ncharge", m_ncharge );
347 status = m_tuple7->addItem(
"kal_n", m_kaln );
348 status = m_tuple7->addItem(
"costheta_n", m_costhetan );
349 status = m_tuple7->addItem(
"p_n", m_pn );
350 status = m_tuple7->addItem(
"charge", m_mat_charge );
351 status = m_tuple7->addItem(
"diff_pxy", m_diff_pxy );
352 status = m_tuple7->addItem(
"diff_p", m_diff_pch );
353 status = m_tuple7->addItem(
"diff_costheta", m_diff_costheta );
357 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple7 ) << endmsg;
358 return StatusCode::FAILURE;
363 NTuplePtr nt8(
ntupleSvc(),
"FILE1/mcpart" );
364 if ( nt8 ) m_tuple8 = nt8;
367 m_tuple8 =
ntupleSvc()->book(
"FILE1/mcpart", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
370 status = m_tuple8->addItem(
"mcpart_vx", m_vx );
371 status = m_tuple8->addItem(
"mcpart_vy", m_vy );
372 status = m_tuple8->addItem(
"mcpart_vz", m_vz );
373 status = m_tuple8->addItem(
"mcpart_vr0", m_vr0 );
374 status = m_tuple8->addItem(
"mcpart_px", m_pxmc );
375 status = m_tuple8->addItem(
"mcpart_py", m_pymc );
376 status = m_tuple8->addItem(
"mcpart_pz", m_pzmc );
377 status = m_tuple8->addItem(
"mcpart_e", m_e );
378 status = m_tuple8->addItem(
"mcpart_p", m_p );
379 status = m_tuple8->addItem(
"mcpart_pxy", m_pxymc );
380 status = m_tuple8->addItem(
"mcpart_theta", m_thetamc );
381 status = m_tuple8->addItem(
"mcpart_costheta", m_costhetamc );
383 status = m_tuple8->addItem(
"mcpart_phi", m_phimc );
384 status = m_tuple8->addItem(
"mcpart_m", m_m );
385 status = m_tuple8->addItem(
"mcpart_pro", m_pro );
386 status = m_tuple8->addItem(
"mcpart_index", m_index );
387 status = m_tuple8->addItem(
"totalcharged", m_mctotcharged );
391 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple8 ) << endmsg;
392 return StatusCode::FAILURE;
397 NTuplePtr nt9(
ntupleSvc(),
"FILE1/pid_kal" );
398 if ( nt9 ) m_tuple9 = nt9;
402 ntupleSvc()->book(
"FILE1/pid_kal", CLID_ColumnWiseTuple,
"ks N-Tuple example" );
405 status = m_tuple9->addItem(
"pid_ptrk", m_ptrk_pid );
406 status = m_tuple9->addItem(
"pid_cost", m_cost_pid );
407 status = m_tuple9->addItem(
"pid_dedx", m_dedx_pid );
408 status = m_tuple9->addItem(
"pid_tof1", m_tof1_pid );
409 status = m_tuple9->addItem(
"pid_tof2", m_tof2_pid );
410 status = m_tuple9->addItem(
"prob_pion", m_prob_pid_pion );
411 status = m_tuple9->addItem(
"prob_kaon", m_prob_pid_kaon );
412 status = m_tuple9->addItem(
"prob_proton", m_prob_pid_proton );
414 status = m_tuple9->addItem(
"kal_px", m_kalpx );
415 status = m_tuple9->addItem(
"kal_py", m_kalpy );
416 status = m_tuple9->addItem(
"kal_pz", m_kalpz );
417 status = m_tuple9->addItem(
"kal_p", m_kalp );
418 status = m_tuple9->addItem(
"kal_pxy", m_kalpxy );
420 status = m_tuple9->addItem(
"kal_costheta", m_kalcostheta );
422 status = m_tuple9->addItem(
"kal_d0", m_d0kal );
423 status = m_tuple9->addItem(
"kal_phi0", m_phi0kal );
424 status = m_tuple9->addItem(
"kal_kappa", m_kappakal );
425 status = m_tuple9->addItem(
"kal_dz", m_dzhelixkal );
426 status = m_tuple9->addItem(
"kal_tanlamda", m_tanlamdakal );
427 status = m_tuple9->addItem(
"kal_err11", m_err11kal );
428 status = m_tuple9->addItem(
"kal_err21", m_err21kal );
429 status = m_tuple9->addItem(
"kal_err22", m_err22kal );
430 status = m_tuple9->addItem(
"kal_err31", m_err31kal );
431 status = m_tuple9->addItem(
"kal_err32", m_err32kal );
432 status = m_tuple9->addItem(
"kal_err33", m_err33kal );
433 status = m_tuple9->addItem(
"kal_err41", m_err41kal );
434 status = m_tuple9->addItem(
"kal_err42", m_err42kal );
435 status = m_tuple9->addItem(
"kal_err43", m_err43kal );
436 status = m_tuple9->addItem(
"kal_err44", m_err44kal );
437 status = m_tuple9->addItem(
"kal_err51", m_err51kal );
438 status = m_tuple9->addItem(
"kal_err52", m_err52kal );
439 status = m_tuple9->addItem(
"kal_err53", m_err53kal );
440 status = m_tuple9->addItem(
"kal_err54", m_err54kal );
441 status = m_tuple9->addItem(
"kal_err55", m_err55kal );
442 status = m_tuple9->addItem(
"kal_nn", m_kalnn );
443 status = m_tuple9->addItem(
"costheta_nn", m_costhetann );
444 status = m_tuple9->addItem(
"p_nn", m_pnn );
446 status = m_tuple9->addItem(
"comp_costheta", m_comp_costheta );
450 log << MSG::ERROR <<
" Cannot book N-tuple:" << long( m_tuple9 ) << endmsg;
451 return StatusCode::FAILURE;
460 log << MSG::INFO <<
"successfully return from initialize()" << endmsg;
461 return StatusCode::SUCCESS;
466 setFilterPassed(
false );
469 MsgStream log(
msgSvc(), name() );
470 log << MSG::INFO <<
"in execute()" << endmsg;
473 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
474 int runNo = eventHeader->runNumber();
475 int event = eventHeader->eventNumber();
476 log << MSG::DEBUG <<
"run, evtnum = " <<
runNo <<
" , " <<
event << endmsg;
486 log << MSG::DEBUG <<
"ncharg, nneu, tottks = " << evtRecEvent->totalCharged() <<
" , "
487 << evtRecEvent->totalNeutral() <<
" , " << evtRecEvent->totalTracks() << endmsg;
496 Hep3Vector xorigin( 0, 0, 0 );
498 Gaudi::svcLocator()->service(
"VertexDbSvc", vtxsvc );
504 xorigin.setX( dbv[0] );
505 xorigin.setY( dbv[1] );
506 xorigin.setZ( dbv[2] );
513 SmartDataPtr<Event::McParticleCol> mcParticleCol( eventSvc(),
"/Event/MC/McParticleCol" );
514 if ( !mcParticleCol )
516 std::cout <<
"could not retrieve McParticleCol" << std::endl;
517 return StatusCode::FAILURE;
520 double costhetamc = -9.;
521 Event::McParticleCol::iterator iter_mc = mcParticleCol->begin();
522 HepLorentzVector initialFourMomentum;
523 for ( ; iter_mc != mcParticleCol->end(); iter_mc++ )
525 if (
abs( ( *iter_mc )->particleProperty() ) !=
abs( m_particleID ) )
continue;
526 HepLorentzVector initialPosition = ( *iter_mc )->initialPosition();
527 m_vx = initialPosition.x();
528 m_vy = initialPosition.y();
529 m_vz = initialPosition.z();
530 m_vr0 = sqrt( m_vx * m_vx + m_vy * m_vy );
532 initialFourMomentum = ( *iter_mc )->initialFourMomentum();
533 m_pxmc = initialFourMomentum.px();
534 m_pymc = initialFourMomentum.py();
535 m_pzmc = initialFourMomentum.pz();
536 m_e = initialFourMomentum.e();
537 m_p = sqrt( m_pxmc * m_pxmc + m_pymc * m_pymc + m_pzmc * m_pzmc );
538 m_pxymc = sqrt( m_pxmc * m_pxmc + m_pymc * m_pymc );
539 m_thetamc = initialFourMomentum.theta() * 180 / ( CLHEP::pi );
540 m_phimc = initialFourMomentum.phi() * 180 / ( CLHEP::pi );
541 m_m = initialFourMomentum.m();
542 m_costhetamc = initialFourMomentum.cosTheta();
544 costhetamc = m_costhetamc;
546 m_pro = ( *iter_mc )->particleProperty();
547 m_index = ( *iter_mc )->trackIndex();
549 m_mctotcharged = evtRecEvent->totalCharged();
552 if ( m_costhetamc > -0.7 && m_costhetamc < 0.7 && m_pxymc > 0.2 && m_pxymc < 0.3 ) mm = 1;
554 double pxymc = m_pxymc;
568 double Rz_comp = 30.;
569 double Rxy_comp = 10.;
570 double Rang_comp = 50.;
572 for (
int i = 0; i < evtRecEvent->totalCharged(); i++ )
575 if ( !( *itTrk )->isMdcTrackValid() )
continue;
576 if ( !( *itTrk )->isMdcKalTrackValid() )
continue;
579 double pch = mdcTrk->
p();
580 double x0 = mdcTrk->
x();
581 double y0 = mdcTrk->
y();
582 double z0 = mdcTrk->
z();
583 int trackid = mdcTrk->
trackId();
584 int charge = mdcTrk->
charge();
585 double pxy0 = mdcTrk->
pxy();
586 double px0 = mdcTrk->
px();
587 double py0 = mdcTrk->
py();
588 double pz0 = mdcTrk->
pz();
589 double r0 = mdcTrk->
r();
590 double phi = mdcTrk->
phi() * 180 / ( CLHEP::pi );
591 double theta = mdcTrk->
theta() * 180 / ( CLHEP::pi );
592 int ndof = mdcTrk->
ndof();
593 int nster = mdcTrk->
nster();
594 int stat = mdcTrk->
stat();
596 double phi0 = mdcTrk->
helix( 1 );
597 double xv = xorigin.x();
598 double yv = xorigin.y();
599 double Rxy = ( x0 - xv ) *
cos( phi0 ) + ( y0 - yv ) *
sin( phi0 );
619 HepVector a = mdcTrk->
helix();
626 HepSymMatrix Ea = mdcTrk->
err();
645 HepPoint3D IP( xorigin[0], xorigin[1], xorigin[2] );
646 VFHelix helixip( point0, a, Ea );
648 HepVector vecipa = helixip.
a();
649 double Rvxy0 = fabs( vecipa[0] );
650 double Rvz0 = vecipa[3];
651 double Rvphi0 = vecipa[1];
656 HepLorentzVector mdcpos( m_px0, m_py0, m_pz0, m_e );
657 m_angd = initialFourMomentum.angle( mdcpos ) * 180 / ( CLHEP::pi );
659 if ( fabs( Rvz0 ) >= m_vz0cut )
continue;
660 if ( fabs( Rvxy0 ) >= m_vxy0cut )
continue;
663 if ( m_angd < Rang_comp )
674 iGood.push_back( i );
675 nCharge += mdcTrk->
charge();
684 int nGood = iGood.size();
685 log << MSG::DEBUG <<
"nGood, totcharge = " << nGood <<
" , " << nCharge << endmsg;
687 if ( mm == 1 && nGood == 0 ) setFilterPassed(
true );
691 for (
int i = 0; i < nGood; i++ )
702 m_mdc_kal_px = mdcKalTrk->
px();
703 m_mdc_kal_py = mdcKalTrk->
py();
704 m_mdc_kal_pz = mdcKalTrk->
pz();
705 m_mdc_kal_p = sqrt( m_mdc_kal_px * m_mdc_kal_px + m_mdc_kal_py * m_mdc_kal_py +
706 m_mdc_kal_pz * m_mdc_kal_pz );
707 m_mdc_kal_pxy = sqrt( m_mdc_kal_px * m_mdc_kal_px + m_mdc_kal_py * m_mdc_kal_py );
709 m_mdc_kal_costheta =
cos( mdcKalTrk->
theta() );
712 double mdc_pxy0 = m_pxy0;
713 double mdc_pch = m_pch;
714 double mdc_costheta =
cos( m_theta );
722 m_totcharged = evtRecEvent->totalCharged();
723 m_totneutral = evtRecEvent->totalNeutral();
724 m_tottracks = evtRecEvent->totalTracks();
735 m_costhetan = costhetamc;
741 m_diff_costheta = -2;
743 for (
int i = 0; i < nGood; i++ )
745 if ( i != itrack )
continue;
748 m_mat_charge = mdcTrk->
charge();
749 m_diff_pxy = fabs( m_kaln - mdc_pxy0 );
750 m_diff_pch = fabs( m_pn - mdc_pch );
751 m_diff_costheta = fabs( m_costhetan - mdc_costheta );
763 if ( m_checkDedx == 1 )
765 for (
int i = 0; i < nGood; i++ )
767 if ( m_itrack == 1 && i != itrack )
continue;
769 if ( !( *itTrk )->isMdcTrackValid() )
continue;
770 if ( !( *itTrk )->isMdcDedxValid() )
continue;
773 m_ptrk = mdcTrk->
p();
775 m_chie = dedxTrk->
chiE();
776 m_chimu = dedxTrk->
chiMu();
777 m_chipi = dedxTrk->
chiPi();
778 m_chik = dedxTrk->
chiK();
779 m_chip = dedxTrk->
chiP();
782 m_probPH = dedxTrk->
probPH();
783 m_normPH = dedxTrk->
normPH();
793 if ( m_checkExt == 1 )
795 for (
int i = 0; i < nGood; i++ )
797 if ( m_itrack == 1 && i != itrack )
continue;
799 if ( !( *itTrk )->isExtTrackValid() )
continue;
802 m_tof1 = extTrk->
tof1();
809 m_tof2 = extTrk->
tof2();
834 if ( m_checkTof == 1 )
836 for (
int i = 0; i < nGood; i++ )
838 if ( m_itrack == 1 && i != itrack )
continue;
840 if ( !( *itTrk )->isTofTrackValid() )
continue;
842 SmartRefVector<RecTofTrack> tofTrkCol = ( *itTrk )->tofTrack();
843 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
845 m_path = ( *iter_tof )->path();
846 m_zrhit = ( *iter_tof )->zrhit();
847 m_ph = ( *iter_tof )->ph();
848 m_tof = ( *iter_tof )->tof();
849 m_errtof = ( *iter_tof )->errtof();
850 m_beta = ( *iter_tof )->beta();
851 m_texpe = ( *iter_tof )->texpElectron();
852 m_texpmu = ( *iter_tof )->texpMuon();
853 m_texppi = ( *iter_tof )->texpPion();
854 m_texpka = ( *iter_tof )->texpKaon();
855 m_texppro = ( *iter_tof )->texpProton();
856 m_toffsete = ( *iter_tof )->toffsetElectron();
857 m_toffsetmu = ( *iter_tof )->toffsetMuon();
858 m_toffsetpi = ( *iter_tof )->toffsetPion();
859 m_toffsetka = ( *iter_tof )->toffsetKaon();
860 m_toffsetpro = ( *iter_tof )->toffsetProton();
861 m_toffsetatpr = ( *iter_tof )->toffsetAntiProton();
862 m_sigmae = ( *iter_tof )->sigmaElectron();
863 m_sigmamu = ( *iter_tof )->sigmaMuon();
864 m_sigmapi = ( *iter_tof )->sigmaPion();
865 m_sigmaka = ( *iter_tof )->sigmaKaon();
866 m_sigmapro = ( *iter_tof )->sigmaProton();
867 m_sigmaatpr = ( *iter_tof )->sigmaAntiProton();
868 m_quality = ( *iter_tof )->quality();
869 m_t0 = ( *iter_tof )->t0();
870 m_errt0 = ( *iter_tof )->errt0();
871 m_errz = ( *iter_tof )->errz();
872 m_phitof = ( *iter_tof )->phi() * 180 / ( CLHEP::pi );
873 m_errphi = ( *iter_tof )->errphi() * 180 / ( CLHEP::pi );
874 m_energy = ( *iter_tof )->energy();
875 m_errenergy = ( *iter_tof )->errenergy();
886 if ( m_checkEmc == 1 )
888 for (
int i = 0; i < nGood; i++ )
890 if ( m_itrack == 1 && i != itrack )
continue;
892 if ( !( *itTrk )->isEmcShowerValid() )
continue;
898 m_thetaemc = emcTrk->
theta() * 180 / ( CLHEP::pi );
899 m_phiemc = emcTrk->
phi() * 180 / ( CLHEP::pi );
903 m_dtheta = emcTrk->
dtheta() * 180 / ( CLHEP::pi );
904 m_dphi = emcTrk->
dphi() * 180 / ( CLHEP::pi );
905 m_energyemc = emcTrk->
energy();
907 m_eseed = emcTrk->
eSeed();
908 m_e3x3 = emcTrk->
e3x3();
909 m_e5x5 = emcTrk->
e5x5();
921 for (
int i = 0; i < nGood; i++ )
923 if ( nGood != 1 )
continue;
924 if ( m_itrack == 1 && i != itrack )
continue;
934 if ( m_pid_mode == 0 )
950 m_ptrk_pid = mdcTrk->
p();
951 m_cost_pid =
cos( mdcTrk->
theta() );
952 m_dedx_pid = pid->
chiDedx( 2 );
953 m_tof1_pid = pid->
chiTof1( 2 );
954 m_tof2_pid = pid->
chiTof2( 2 );
972 m_kalpx = mdcKalTrk->
px();
973 m_kalpy = mdcKalTrk->
py();
974 m_kalpz = mdcKalTrk->
pz();
975 m_kalp = sqrt( m_kalpx * m_kalpx + m_kalpy * m_kalpy + m_kalpz * m_kalpz );
976 m_kalpxy = sqrt( m_kalpx * m_kalpx + m_kalpy * m_kalpy );
978 HepLorentzVector ptr;
980 ptr = mdcKalTrk->
p4( 0.000511 * 0.000511 );
981 m_kalcostheta = ptr.cosTheta();
983 double kalcostheta = m_kalcostheta;
984 m_comp_costheta = costhetamc - kalcostheta;
986 HepVector k = mdcKalTrk->
helix();
987 HepSymMatrix Ek = mdcKalTrk->
err();
993 m_tanlamdakal = k[4];
995 m_err11kal = Ek[0][0];
996 m_err21kal = Ek[1][0];
997 m_err22kal = Ek[1][1];
999 m_err31kal = Ek[2][0];
1000 m_err32kal = Ek[2][1];
1001 m_err33kal = Ek[2][2];
1002 m_err41kal = Ek[3][0];
1003 m_err42kal = Ek[3][1];
1004 m_err43kal = Ek[3][2];
1005 m_err44kal = Ek[3][3];
1006 m_err51kal = Ek[4][0];
1007 m_err52kal = Ek[4][1];
1008 m_err53kal = Ek[4][2];
1009 m_err54kal = Ek[4][3];
1010 m_err55kal = Ek[4][4];
1013 m_costhetann = costhetamc;
1026 if ( m_checkMuc == 1 )
1028 for (
int i = 0; i < nGood; i++ )
1030 if ( m_itrack == 1 && i != itrack )
continue;
1032 if ( !( *itTrk )->isMucTrackValid() )
continue;
1035 m_depth = mucTrk->
depth();
1036 m_chi2 = mucTrk->
chi2();
1037 m_rms = mucTrk->
rms();
1038 m_xpos = mucTrk->
xPos();
1039 m_ypos = mucTrk->
yPos();
1040 m_zpos = mucTrk->
zPos();
1044 m_px = mucTrk->
px();
1045 m_py = mucTrk->
py();
1046 m_pz = mucTrk->
pz();
1048 m_deltaphi = mucTrk->
deltaPhi() * 180 / ( CLHEP::pi );
1054 return StatusCode::SUCCESS;