79 MsgStream log(
msgSvc(), name());
81 log << MSG::INFO <<
"in initialize()" << endmsg;
83 Ncut0=Ncut1=Ncut2=Ncut3=Ncut4=Ncut5=Ncut6=Ncut7=Ncut8=Ncut9=Ncut10=0;
87 NTuplePtr nt4(
ntupleSvc(),
"DQAFILE/Rhopi");
88 if ( nt4 ) m_tuple4 = nt4;
90 m_tuple4 =
ntupleSvc()->book (
"DQAFILE/Rhopi", CLID_ColumnWiseTuple,
"ks N-Tuple example");
92 status = m_tuple4->addItem (
"run", m_run);
93 status = m_tuple4->addItem (
"rec", m_rec);
94 status = m_tuple4->addItem (
"nch", m_nch);
95 status = m_tuple4->addItem (
"nneu", m_nneu);
96 status = m_tuple4->addItem (
"chi1", m_chi1);
97 status = m_tuple4->addItem (
"mpi0", m_mpi0);
98 status = m_tuple4->addItem (
"mprho0", m_prho0);
99 status = m_tuple4->addItem (
"mprhop", m_prhop);
100 status = m_tuple4->addItem (
"mprhom", m_prhom);
101 status = m_tuple4->addItem (
"mgood", m_good);
102 status = m_tuple4->addItem (
"mgam", m_gam);
103 status = m_tuple4->addItem (
"mpip", m_pip);
104 status = m_tuple4->addItem (
"mpim", m_pim);
105 status = m_tuple4->addItem (
"m2gam", m_2gam);
106 status = m_tuple4->addItem (
"ngch", m_ngch, 0, 10);
107 status = m_tuple4->addItem (
"nggneu", m_nggneu,0, 10);
108 status = m_tuple4->addItem (
"moutpi0",m_outpi0);
109 status = m_tuple4->addItem (
"cosang", m_cosang);
110 status = m_tuple4->addItem (
"moutpip",m_outpip);
111 status = m_tuple4->addItem (
"moutpim",m_outpim);
112 status = m_tuple4->addItem (
"menpip", m_enpip);
113 status = m_tuple4->addItem (
"mdcpip", m_dcpip );
114 status = m_tuple4->addItem (
"menpim", m_enpim );
115 status = m_tuple4->addItem (
"mdcpim", m_dcpim );
116 status = m_tuple4->addItem (
"mpipf", m_pipf);
117 status = m_tuple4->addItem (
"mpimf", m_pimf);
118 status = m_tuple4->addItem (
"mpi0f", m_pi0f);
120 status = m_tuple4->addItem (
"mpmax", m_pmax);
121 status = m_tuple4->addItem (
"mppx", m_ppx);
122 status = m_tuple4->addItem (
"mppy", m_ppy);
123 status = m_tuple4->addItem (
"mppz", m_ppz);
124 status = m_tuple4->addItem (
"mcosthep",m_costhep);
125 status = m_tuple4->addItem (
"mppxkal", m_ppxkal);
126 status = m_tuple4->addItem (
"mppykal", m_ppykal);
127 status = m_tuple4->addItem (
"mppzkal", m_ppzkal);
128 status = m_tuple4->addItem (
"mmpx", m_mpx);
129 status = m_tuple4->addItem (
"mmpy", m_mpy);
130 status = m_tuple4->addItem (
"mmpz", m_mpz);
131 status = m_tuple4->addItem (
"mcosthem",m_costhem);
132 status = m_tuple4->addItem (
"mmpxkal", m_mpxkal);
133 status = m_tuple4->addItem (
"mmpykal", m_mpykal);
134 status = m_tuple4->addItem (
"mmpzkal", m_mpzkal);
136 status = m_tuple4->addItem (
"mvxpin", m_vxpin);
137 status = m_tuple4->addItem (
"mvypin", m_vypin);
138 status = m_tuple4->addItem (
"mvzpin", m_vzpin);
139 status = m_tuple4->addItem (
"mvrpin", m_vrpin);
140 status = m_tuple4->addItem (
"mcosthepin",m_costhepin);
141 status = m_tuple4->addItem (
"mvxmin", m_vxmin);
142 status = m_tuple4->addItem (
"mvymin", m_vymin);
143 status = m_tuple4->addItem (
"mvzmin", m_vzmin);
144 status = m_tuple4->addItem (
"mvrmin", m_vrmin);
145 status = m_tuple4->addItem (
"mcosthemin",m_costhemin);
146 status = m_tuple4->addItem (
"mvxp", m_vxp);
147 status = m_tuple4->addItem (
"mvyp", m_vyp);
148 status = m_tuple4->addItem (
"mvzp", m_vzp);
149 status = m_tuple4->addItem (
"mvrp", m_vrp);
150 status = m_tuple4->addItem (
"mvxm", m_vxm);
151 status = m_tuple4->addItem (
"mvym", m_vym);
152 status = m_tuple4->addItem (
"mvzm", m_vzm);
153 status = m_tuple4->addItem (
"mvrm", m_vrm);
154 status = m_tuple4->addItem (
"nangecc",m_nangecc,0,10);
155 status = m_tuple4->addIndexedItem (
"mdthec", m_nangecc, m_dthec);
156 status = m_tuple4->addIndexedItem (
"mdphic", m_nangecc, m_dphic);
157 status = m_tuple4->addIndexedItem (
"mdangc", m_nangecc, m_dangc);
158 status = m_tuple4->addIndexedItem (
"mspippim", m_nangecc, m_mspippim);
160 status = m_tuple4->addItem (
"angsg", dangsg);
161 status = m_tuple4->addItem (
"thesg", dthesg);
162 status = m_tuple4->addItem (
"phisg", dphisg);
163 status = m_tuple4->addItem (
"cosgth1", cosgth1);
164 status = m_tuple4->addItem (
"cosgth2", cosgth2);
166 status = m_tuple4->addItem (
"mchi5", m_chi5);
167 status = m_tuple4->addItem (
"mkpi0", m_kpi0);
168 status = m_tuple4->addItem (
"mkpkm", m_kpkm);
169 status = m_tuple4->addItem (
"mkpp0", m_kpp0);
170 status = m_tuple4->addItem (
"mkmp0", m_kmp0);
171 status = m_tuple4->addItem (
"mpgam2pi1",m_pgam2pi1);
172 status = m_tuple4->addItem (
"mpgam2pi2",m_pgam2pi2);
173 status = m_tuple4->addItem (
"cosva1", cosva1);
174 status = m_tuple4->addItem (
"cosva2", cosva2);
175 status = m_tuple4->addItem (
"laypi1", m_laypi1);
176 status = m_tuple4->addItem (
"hit1", m_hit1);
177 status = m_tuple4->addItem (
"laypi2", m_laypi2);
178 status = m_tuple4->addItem (
"hit2", m_hit2);
179 status = m_tuple4->addItem (
"anglepm", m_anglepm);
181 status = m_tuple4->addIndexedItem (
"mptrk", m_ngch, m_ptrk);
182 status = m_tuple4->addIndexedItem (
"chie", m_ngch, m_chie);
183 status = m_tuple4->addIndexedItem (
"chimu", m_ngch,m_chimu);
184 status = m_tuple4->addIndexedItem (
"chipi", m_ngch,m_chipi);
185 status = m_tuple4->addIndexedItem (
"chik", m_ngch,m_chik);
186 status = m_tuple4->addIndexedItem (
"chip", m_ngch,m_chip);
187 status = m_tuple4->addIndexedItem (
"probPH", m_ngch,m_probPH);
188 status = m_tuple4->addIndexedItem (
"normPH", m_ngch,m_normPH);
189 status = m_tuple4->addIndexedItem (
"ghit", m_ngch,m_ghit);
190 status = m_tuple4->addIndexedItem (
"thit", m_ngch,m_thit);
192 status = m_tuple4->addIndexedItem (
"ptot_etof", m_ngch,m_ptot_etof);
193 status = m_tuple4->addIndexedItem (
"cntr_etof", m_ngch,m_cntr_etof);
194 status = m_tuple4->addIndexedItem (
"te_etof", m_ngch,m_te_etof);
195 status = m_tuple4->addIndexedItem (
"tmu_etof", m_ngch,m_tmu_etof);
196 status = m_tuple4->addIndexedItem (
"tpi_etof", m_ngch,m_tpi_etof);
197 status = m_tuple4->addIndexedItem (
"tk_etof", m_ngch,m_tk_etof);
198 status = m_tuple4->addIndexedItem (
"tp_etof", m_ngch,m_tp_etof);
199 status = m_tuple4->addIndexedItem (
"ph_etof", m_ngch,m_ph_etof);
200 status = m_tuple4->addIndexedItem (
"rhit_etof", m_ngch,m_rhit_etof);
201 status = m_tuple4->addIndexedItem (
"qual_etof", m_ngch,m_qual_etof);
202 status = m_tuple4->addIndexedItem (
"ec_toff_e", m_ngch,m_ec_toff_e);
203 status = m_tuple4->addIndexedItem (
"ec_toff_mu",m_ngch,m_ec_toff_mu);
204 status = m_tuple4->addIndexedItem (
"ec_toff_pi",m_ngch,m_ec_toff_pi);
205 status = m_tuple4->addIndexedItem (
"ec_toff_k", m_ngch,m_ec_toff_k);
206 status = m_tuple4->addIndexedItem (
"ec_toff_p", m_ngch,m_ec_toff_p);
207 status = m_tuple4->addIndexedItem (
"ec_tsig_e", m_ngch,m_ec_tsig_e);
208 status = m_tuple4->addIndexedItem (
"ec_tsig_mu",m_ngch,m_ec_tsig_mu);
209 status = m_tuple4->addIndexedItem (
"ec_tsig_pi",m_ngch,m_ec_tsig_pi);
210 status = m_tuple4->addIndexedItem (
"ec_tsig_k", m_ngch,m_ec_tsig_k);
211 status = m_tuple4->addIndexedItem (
"ec_tsig_p", m_ngch,m_ec_tsig_p);
212 status = m_tuple4->addIndexedItem (
"ec_tof", m_ngch,m_ec_tof);
213 status = m_tuple4->addIndexedItem (
"ptot_btof1",m_ngch,m_ptot_btof1);
214 status = m_tuple4->addIndexedItem (
"cntr_btof1",m_ngch,m_cntr_btof1);
215 status = m_tuple4->addIndexedItem (
"te_btof1", m_ngch,m_te_btof1);
216 status = m_tuple4->addIndexedItem (
"tmu_btof1", m_ngch,m_tmu_btof1);
217 status = m_tuple4->addIndexedItem (
"tpi_btof1", m_ngch,m_tpi_btof1);
218 status = m_tuple4->addIndexedItem (
"tk_btof1", m_ngch,m_tk_btof1);
219 status = m_tuple4->addIndexedItem (
"tp_btof1", m_ngch,m_tp_btof1);
220 status = m_tuple4->addIndexedItem (
"ph_btof1", m_ngch,m_ph_btof1);
221 status = m_tuple4->addIndexedItem (
"zhit_btof1",m_ngch,m_zhit_btof1);
222 status = m_tuple4->addIndexedItem (
"qual_btof1",m_ngch,m_qual_btof1);
223 status = m_tuple4->addIndexedItem (
"b1_toff_e", m_ngch,m_b1_toff_e);
224 status = m_tuple4->addIndexedItem (
"b1_toff_mu",m_ngch,m_b1_toff_mu);
225 status = m_tuple4->addIndexedItem (
"b1_toff_pi",m_ngch,m_b1_toff_pi);
226 status = m_tuple4->addIndexedItem (
"b1_toff_k", m_ngch,m_b1_toff_k);
227 status = m_tuple4->addIndexedItem (
"b1_toff_p", m_ngch,m_b1_toff_p);
228 status = m_tuple4->addIndexedItem (
"b1_tsig_e", m_ngch,m_b1_tsig_e);
229 status = m_tuple4->addIndexedItem (
"b1_tsig_mu",m_ngch,m_b1_tsig_mu);
230 status = m_tuple4->addIndexedItem (
"b1_tsig_pi",m_ngch,m_b1_tsig_pi);
231 status = m_tuple4->addIndexedItem (
"b1_tsig_k", m_ngch,m_b1_tsig_k);
232 status = m_tuple4->addIndexedItem (
"b1_tsig_p", m_ngch,m_b1_tsig_p);
233 status = m_tuple4->addIndexedItem (
"b1_tof", m_ngch,m_b1_tof);
235 status = m_tuple4->addIndexedItem (
"mdedx_pid", m_ngch,m_dedx_pid);
236 status = m_tuple4->addIndexedItem (
"mtof1_pid", m_ngch,m_tof1_pid);
237 status = m_tuple4->addIndexedItem (
"mtof2_pid", m_ngch,m_tof2_pid);
238 status = m_tuple4->addIndexedItem (
"mprob_pid", m_ngch,m_prob_pid);
239 status = m_tuple4->addIndexedItem (
"mptrk_pid", m_ngch,m_ptrk_pid);
240 status = m_tuple4->addIndexedItem (
"mcost_pid", m_ngch,m_cost_pid);
241 status = m_tuple4->addItem (
"mpnp", m_pnp);
242 status = m_tuple4->addItem (
"mpnm", m_pnm);
244 status = m_tuple4->addIndexedItem (
"numHits", m_nggneu,m_numHits);
245 status = m_tuple4->addIndexedItem (
"secondmoment", m_nggneu,m_secondmoment);
246 status = m_tuple4->addIndexedItem (
"mx", m_nggneu,m_x);
247 status = m_tuple4->addIndexedItem (
"my", m_nggneu,m_y);
248 status = m_tuple4->addIndexedItem (
"mz", m_nggneu,m_z);
249 status = m_tuple4->addIndexedItem (
"cosemc", m_nggneu,m_cosemc);
250 status = m_tuple4->addIndexedItem (
"phiemc", m_nggneu,m_phiemc);
251 status = m_tuple4->addIndexedItem (
"energy", m_nggneu,m_energy);
252 status = m_tuple4->addIndexedItem (
"eseed", m_nggneu,m_eSeed);
253 status = m_tuple4->addIndexedItem (
"me9", m_nggneu,m_e3x3);
254 status = m_tuple4->addIndexedItem (
"me25", m_nggneu,m_e5x5);
255 status = m_tuple4->addIndexedItem (
"mlat", m_nggneu,m_lat);
256 status = m_tuple4->addIndexedItem (
"ma20", m_nggneu,m_a20);
257 status = m_tuple4->addIndexedItem (
"ma42", m_nggneu,m_a42);
261 log << MSG::ERROR <<
" Cannot book N-tuple:" << long(m_tuple4) << endmsg;
262 return StatusCode::FAILURE;
266 if(service(
"THistSvc", m_thsvc).isFailure()) {
267 log << MSG::ERROR <<
"Couldn't get THistSvc" << endreq;
268 return StatusCode::FAILURE;
274 TH1F* mrho0 =
new TH1F(
"mrho0",
"mass for #rho^{0}->#pi^{+}#pi^{-}", 160, 0.0, 3.2);
275 if(m_thsvc->regHist(
"/DQAHist/Rhopi/mrho0", mrho0).isFailure()) {
276 log << MSG::ERROR <<
"Couldn't register mrho0" << endreq;
279 TH1F* mrhop =
new TH1F(
"mrhop",
"mass for #rho^{+}->#pi^{+}#pi^{0}", 160, 0.0,3.2);
280 if(m_thsvc->regHist(
"/DQAHist/Rhopi/mrhop", mrhop).isFailure()) {
281 log << MSG::ERROR <<
"Couldn't register mrhop" << endreq;
284 TH1F* mrhom =
new TH1F(
"mrhom",
"mass for #rho^{-}->#pi^{-}#pi^{0}", 160, 0.0, 3.2);
285 if(m_thsvc->regHist(
"/DQAHist/Rhopi/mrhom", mrhom).isFailure()) {
286 log << MSG::ERROR <<
"Couldn't register mrhom" << endreq;
290 TH1F*
mpi0 =
new TH1F(
"mpi0",
"mass for #pi^{0}->#gamma #gamma", 50,0.08, 0.18);
291 if(m_thsvc->regHist(
"/DQAHist/Rhopi/mpi0",
mpi0).isFailure()) {
292 log << MSG::ERROR <<
"Couldn't register mpi0" << endreq;
299 log << MSG::INFO <<
"successfully return from initialize()" <<endmsg;
300 return StatusCode::SUCCESS;
309 MsgStream log(
msgSvc(), name());
310 log << MSG::INFO <<
"in execute()" << endreq;
312 setFilterPassed(
false);
314 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),
"/Event/EventHeader");
315 int run=eventHeader->runNumber();
316 int event=eventHeader->eventNumber();
317 log << MSG::DEBUG <<
"run, evtnum = "
321 m_run = eventHeader->runNumber();
322 m_rec = eventHeader->eventNumber();
327 log << MSG::INFO <<
"get event tag OK" << endreq;
328 log << MSG::DEBUG <<
"ncharg, nneu, tottks = "
329 << evtRecEvent->totalCharged() <<
" , "
330 << evtRecEvent->totalNeutral() <<
" , "
331 << evtRecEvent->totalTracks() <<endreq;
333 m_nch = evtRecEvent->totalCharged();
334 m_nneu = evtRecEvent->totalNeutral();
342 Vint iGood, ipip, ipim, ipnp,ipnm;
348 Vp4 ppip, ppim , ppnp, ppnm;
354 Hep3Vector xorigin(0,0,0);
359 Gaudi::svcLocator()->service(
"VertexDbSvc", vtxsvc);
363 xorigin.setX(dbv[0]);
364 xorigin.setY(dbv[1]);
365 xorigin.setZ(dbv[2]);
369 for(
int i = 0; i < evtRecEvent->totalCharged(); i++){
371 if(!(*itTrk)->isMdcTrackValid())
continue;
372 if (!(*itTrk)->isMdcKalTrackValid())
continue;
376 double pch =mdcTrk->
p();
377 double x0 =mdcTrk->
x();
378 double y0 =mdcTrk->
y();
379 double z0 =mdcTrk->
z();
380 double phi0=mdcTrk->
helix(1);
381 double xv=xorigin.x();
382 double yv=xorigin.y();
383 double Rxy=fabs((x0-xv)*
cos(phi0)+(y0-yv)*
sin(phi0));
386 double m_vz0 = z0-xorigin.z();
390 if(fabs(m_vz0) >= m_vz0cut)
continue;
391 if(m_vr0 >= m_vr0cut)
continue;
392 if(fabs(m_Vct)>=m_cthcut)
continue;
394 iGood.push_back((*itTrk)->trackId());
395 nCharge += mdcTrk->
charge();
402 int nGood = iGood.size();
403 log << MSG::DEBUG <<
"ngood, totcharge = " << nGood <<
" , " << nCharge << endreq;
404 if((nGood != 2)||(nCharge!=0)){
405 return StatusCode::SUCCESS;
411 for(
int i = evtRecEvent->totalCharged(); i< evtRecEvent->totalTracks(); i++) {
413 if(!(*itTrk)->isEmcShowerValid())
continue;
415 Hep3Vector emcpos(emcTrk->
x(), emcTrk->
y(), emcTrk->
z());
420 for(
int j = 0; j < evtRecEvent->totalCharged(); j++) {
422 if(!(*jtTrk)->isExtTrackValid())
continue;
427 double angd = extpos.angle(emcpos);
428 double thed = extpos.theta() - emcpos.theta();
429 double phid = extpos.deltaPhi(emcpos);
430 thed = fmod(thed+CLHEP::twopi+CLHEP::twopi+
pi, CLHEP::twopi) - CLHEP::pi;
431 phid = fmod(phid+CLHEP::twopi+CLHEP::twopi+
pi, CLHEP::twopi) - CLHEP::pi;
433 if(fabs(thed) < fabs(dthe)) dthe = thed;
434 if(fabs(phid) < fabs(dphi)) dphi = phid;
435 if(angd < dang) dang = angd;
437 if(dang>=200)
continue;
438 double eraw = emcTrk->
energy();
441 dthe = dthe * 180 / (CLHEP::pi);
442 dphi = dphi * 180 / (CLHEP::pi);
443 dang = dang * 180 / (CLHEP::pi);
444 double m_dthe = dthe;
445 double m_dphi = dphi;
446 double m_dang = dang;
447 double m_eraw = eraw;
450 if ( fc_theta < 0.80) {
451 if (eraw <= m_energyThreshold/2)
continue;
453 else if ( fc_theta >0.86 && fc_theta < 0.92 ) {
454 if (eraw <= m_energyThreshold)
continue;
459 if(dang < m_gammaAngCut)
continue;
463 iGam.push_back((*itTrk)->trackId());
469 int nGam = iGam.size();
471 log << MSG::DEBUG <<
"num Good Photon " << nGam <<
" , " <<evtRecEvent->totalNeutral()<<endreq;
473 return StatusCode::SUCCESS;
484 for(
int i = 0; i < nGam; i++) {
487 double eraw = emcTrk->
energy();
488 double phi = emcTrk->
phi();
489 double the = emcTrk->
theta();
490 HepLorentzVector
ptrk;
498 pGam.push_back(
ptrk);
501 log << MSG::DEBUG <<
"liuf1 Good Photon " <<endreq;
504 for(
int i = 0; i < nGood; i++) {
506 if(!(*itTrk)->isMdcTrackValid())
continue;
507 if (!(*itTrk)->isMdcKalTrackValid())
continue;
513 ipip.push_back(iGood[i]);
514 HepLorentzVector
ptrk;
515 ptrk.setPx(mdcKalTrk->
px());
516 ptrk.setPy(mdcKalTrk->
py());
517 ptrk.setPz(mdcKalTrk->
pz());
520 ppip.push_back(
ptrk);
522 ipim.push_back(iGood[i]);
523 HepLorentzVector
ptrk;
524 ptrk.setPx(mdcKalTrk->
px());
525 ptrk.setPy(mdcKalTrk->
py());
526 ptrk.setPz(mdcKalTrk->
pz());
529 ppim.push_back(
ptrk);
533 int npip = ipip.size();
534 int npim = ipim.size();
535 log << MSG::DEBUG <<
"num of pion "<< ipip.size()<<
","<<ipim.size()<<endreq;
548 for(
int i=0; i < npip; i++) {
552 Hep3Vector emcpos(ppip[i].px(), ppip[i].py(), ppip[i].pz());
554 for(
int j = 0; j < npim; j++) {
559 HepLorentzVector pippim=ppip[i]+ppim[j];
561 Hep3Vector extpos(ppim[j].px(), ppim[j].py(), ppim[j].pz());
563 double angd = extpos.angle(emcpos);
564 double thed = extpos.theta() - emcpos.theta();
565 double phid = extpos.deltaPhi(emcpos);
566 thed = fmod(thed+CLHEP::twopi+CLHEP::twopi+
pi, CLHEP::twopi) - CLHEP::pi;
567 phid = fmod(phid+CLHEP::twopi+CLHEP::twopi+
pi, CLHEP::twopi) - CLHEP::pi;
569 m_dthec[langcc] = thed * 180 / (CLHEP::pi);
570 m_dphic[langcc] = phid * 180 / (CLHEP::pi);
571 m_dangc[langcc] = angd * 180 / (CLHEP::pi);
572 m_mspippim[langcc] =pippim.m();
582 double m_m2gg,m_momentpi0;
583 HepLorentzVector pTot,p2g;
585 log << MSG::DEBUG <<
"liuf2 Good Photon " <<langcc<<endreq;
590 double m_momentpip,m_momentpim,extmot1,extmot2;
603 double phi01=mdcTrk11->
helix(1);
610 double phi02=mdcTrk12->
helix(1);
612 m_vxpin = mdcTrk11->
x();
613 m_vypin = mdcTrk11->
y();
614 m_vzpin = mdcTrk11->
z()-xorigin.z();
615 m_vrpin = fabs((mdcTrk11->
x()-xorigin.x())*
cos(phi01)+(mdcTrk11->
y()-xorigin.y())*
sin(phi01));
616 m_costhepin =
cos(mdcTrk11->
theta());
618 m_momentpip=mdcTrk11->
p();
619 m_ppx =mdcTrk11->
px();
620 m_ppy =mdcTrk11->
py();
621 m_ppz =mdcTrk11->
pz();
623 m_vxp = mdcKalTrk11->
x();
624 m_vyp = mdcKalTrk11->
y();
625 m_vzp = mdcKalTrk11->
z()-xorigin.z();
626 m_vrp = fabs((mdcKalTrk11->
x()-xorigin.x())*
cos(phi01)+(mdcKalTrk11->
y()-xorigin.y())*
sin(phi01));
627 m_costhep =
cos(mdcKalTrk11->
theta());
630 m_ppxkal =mdcKalTrk11->
px();
631 m_ppykal =mdcKalTrk11->
py();
632 m_ppzkal =mdcKalTrk11->
pz();
633 extmot1 = sqrt(m_ppxkal*m_ppxkal + m_ppykal*m_ppykal + m_ppzkal*m_ppzkal);
635 m_vxmin = mdcTrk12->
x();
636 m_vymin = mdcTrk12->
y();
637 m_vzmin = mdcTrk12->
z();
638 m_vrmin = fabs((mdcTrk12->
x()-xorigin.x())*
cos(phi02)+(mdcTrk12->
y()-xorigin.y())*
sin(phi02));
639 m_costhemin =
cos(mdcTrk12->
theta());
641 m_momentpim=mdcTrk12->
p();
642 m_mpx =mdcTrk12->
px();
643 m_mpy =mdcTrk12->
py();
644 m_mpz =mdcTrk12->
pz();
646 m_vxm = mdcKalTrk12->
x();
647 m_vym = mdcKalTrk12->
y();
648 m_vzm = mdcKalTrk12->
z();
649 m_vrm = fabs((mdcKalTrk12->
x()-xorigin.x())*
cos(phi02)+(mdcKalTrk12->
y()-xorigin.y())*
sin(phi02));
650 m_costhem =
cos(mdcKalTrk12->
theta());
653 m_mpxkal =mdcKalTrk12->
px();
654 m_mpykal =mdcKalTrk12->
py();
655 m_mpzkal =mdcKalTrk12->
pz();
656 extmot2 = sqrt(m_mpxkal*m_mpxkal + m_mpykal*m_mpykal + m_mpzkal*m_mpzkal);
658 if((*itTrk11)->isEmcShowerValid()){
659 emcTg1 = emcTrk11->
energy();
661 if((*itTrk12)->isEmcShowerValid()){
662 emcTg2 = emcTrk12->
energy();
664 if((*itTrk11)->isMucTrackValid()){
668 if((*itTrk12)->isMucTrackValid()){
678 log << MSG::DEBUG <<
"liuf3 Good Photon " << ipim[0] <<endreq;
680 RecMdcKalTrack *pipTrk = (*(evtRecTrkCol->begin()+ipip[0]))->mdcKalTrack();
681 RecMdcKalTrack *pimTrk = (*(evtRecTrkCol->begin()+ipim[0]))->mdcKalTrack();
683 log << MSG::DEBUG <<
"liuf4 Good Photon " <<endreq;
703 HepSymMatrix Evx(3, 0);
744 double chisq = 9999.;
745 for(
int i = 0; i < nGam-1; i++) {
746 RecEmcShower *g1Trk = (*(evtRecTrkCol->begin()+iGam[i]))->emcShower();
747 for(
int j = i+1; j < nGam; j++) {
748 RecEmcShower *g2Trk = (*(evtRecTrkCol->begin()+iGam[j]))->emcShower();
756 bool oksq = kmfit->
Fit();
759 double chi2 = kmfit->
chisq();
761 HepLorentzVector kpi0 = kmfit->
pfit(2) + kmfit->
pfit(3);
762 HepLorentzVector kpkm = kmfit->
pfit(0) + kmfit->
pfit(1);
763 HepLorentzVector kpp0 = kmfit->
pfit(0) + kpi0;
764 HepLorentzVector kmp0 = kmfit->
pfit(1) + kpi0;
765 chi5 = kmfit->
chisq();
785 if(!vtxfit->
Fit(0))
return SUCCESS;
791 log << MSG::DEBUG <<
"liuf5 Good Photon " <<endreq;
799 double chisq = 9999.;
802 HepLorentzVector gg1,gg2;
803 for(
int i = 0; i < nGam-1; i++) {
804 RecEmcShower *g1Trk = (*(evtRecTrkCol->begin()+iGam[i]))->emcShower();
805 for(
int j = i+1; j < nGam; j++) {
806 RecEmcShower *g2Trk = (*(evtRecTrkCol->begin()+iGam[j]))->emcShower();
814 bool oksq = kmfit->
Fit();
816 double chi2 = kmfit->
chisq();
829 m_pmax=gg1.e()>gg2.e()?gg1.e():gg2.e();
831 m_cosang=(gg1.e()-gg2.e())/p2g.rho();
832 m_momentpi0=sqrt(p2g.px()*p2g.px()+p2g.py()*p2g.py()+p2g.pz()*p2g.pz());
833 log << MSG::DEBUG <<
" chisq for 4c " << chisq <<endreq;
835 return StatusCode::SUCCESS;
841 jGood.push_back(ipip[0]);
842 jGood.push_back(ipim[0]);
843 m_ngch = jGood.size();
847 jGgam.push_back(ig1);
848 jGgam.push_back(ig2);
849 m_nggneu=jGgam.size();
851 HepLorentzVector ppip1=ppip[0];
852 HepLorentzVector ppim1=ppim[0];
854 HepLorentzVector Ppipboost = ppip1.boost(
u_cms);
855 HepLorentzVector Ppimboost = ppim1.boost(
u_cms);
856 Hep3Vector p3pi1 = Ppipboost.vect();
857 Hep3Vector p3pi2 = Ppimboost.vect();
858 m_anglepm = (p3pi1.angle(p3pi2))* 180 / (CLHEP::pi);
862 RecEmcShower *g1Trk = (*(evtRecTrkCol->begin()+ig1))->emcShower();
863 RecEmcShower *g2Trk = (*(evtRecTrkCol->begin()+ig2))->emcShower();
871 bool oksq = kmfit->
Fit();
872 if(!oksq)
return SUCCESS;
874 HepLorentzVector ppi0 = kmfit->
pfit(2) + kmfit->
pfit(3);
875 HepLorentzVector prho0 = kmfit->
pfit(0) + kmfit->
pfit(1);
876 HepLorentzVector prhop = kmfit->
pfit(0) + ppi0;
877 HepLorentzVector prhom = kmfit->
pfit(1) + ppi0;
878 HepLorentzVector pgam2pi1 = prho0 + kmfit->
pfit(2);
879 HepLorentzVector pgam2pi2 = prho0 + kmfit->
pfit(3);
880 HepLorentzVector pgam11 =kmfit->
pfit(2);
881 HepLorentzVector pgam12 =kmfit->
pfit(3);
892 m_chi1 = kmfit->
chisq();
903 m_outpi0=m_momentpi0;
904 m_outpip=m_momentpip;
905 m_outpim=m_momentpim;
910 m_pipf=kmfit->
pfit(0).rho();
911 m_pimf=kmfit->
pfit(1).rho();
919 m_pgam2pi1=pgam2pi1.m();
920 m_pgam2pi2=pgam2pi2.m();
921 cosva1=kmfit->
pfit(2).rho();
922 cosva2=kmfit->
pfit(3).rho();
934 for(
int ii = 0; ii < m_ngch; ii++) {
938 m_chimu[ii] = 9999.0;
939 m_chipi[ii] = 9999.0;
944 m_probPH[ii] = 9999.0;
945 m_normPH[ii] = 9999.0;
948 m_cntr_etof[ii] = 9999.0;
949 m_ptot_etof[ii] = 9999.0;
950 m_ph_etof[ii] = 9999.0;
951 m_rhit_etof[ii] = 9999.0;
952 m_qual_etof[ii] = 9999.0;
953 m_te_etof[ii] = 9999.0;
954 m_tmu_etof[ii] = 9999.0;
955 m_tpi_etof[ii] = 9999.0;
956 m_tk_etof[ii] = 9999.0;
957 m_tp_etof[ii] = 9999.0;
958 m_ec_tof[ii] = 9999.0;
959 m_ec_toff_e[ii] = 9999.0;
960 m_ec_toff_mu[ii] = 9999.0;
961 m_ec_toff_pi[ii] = 9999.0;
962 m_ec_toff_k[ii] = 9999.0;
963 m_ec_toff_p[ii] = 9999.0;
964 m_ec_tsig_e[ii] = 9999.0;
965 m_ec_tsig_mu[ii] = 9999.0;
966 m_ec_tsig_pi[ii] = 9999.0;
967 m_ec_tsig_k[ii] = 9999.0;
968 m_ec_tsig_p[ii] = 9999.0;
971 m_cntr_btof1[ii] = 9999.0;
972 m_ptot_btof1[ii] = 9999.0;
973 m_ph_btof1[ii] = 9999.0;
974 m_zhit_btof1[ii] = 9999.0;
975 m_qual_btof1[ii] = 9999.0;
976 m_te_btof1[ii] = 9999.0;
977 m_tmu_btof1[ii] = 9999.0;
978 m_tpi_btof1[ii] = 9999.0;
979 m_tk_btof1[ii] = 9999.0;
980 m_tp_btof1[ii] = 9999.0;
981 m_b1_tof[ii] = 9999.0;
982 m_b1_toff_e[ii] = 9999.0;
983 m_b1_toff_mu[ii] = 9999.0;
984 m_b1_toff_pi[ii] = 9999.0;
985 m_b1_toff_k[ii] = 9999.0;
986 m_b1_toff_p[ii] = 9999.0;
987 m_b1_tsig_e[ii] = 9999.0;
988 m_b1_tsig_mu[ii] = 9999.0;
989 m_b1_tsig_pi[ii] = 9999.0;
990 m_b1_tsig_k[ii] = 9999.0;
991 m_b1_tsig_p[ii] = 9999.0;
993 m_dedx_pid[ii] = 9999.0;
994 m_tof1_pid[ii] = 9999.0;
995 m_tof2_pid[ii] = 9999.0;
996 m_prob_pid[ii] = 9999.0;
997 m_ptrk_pid[ii] = 9999.0;
998 m_cost_pid[ii] = 9999.0;
1003 for(
int i = 0; i < m_ngch; i++) {
1005 if(!(*itTrk)->isMdcTrackValid())
continue;
1006 if(!(*itTrk)->isMdcDedxValid())
continue;
1009 m_ptrk[indx0] = mdcTrk->
p();
1011 m_chie[indx0] = dedxTrk->
chiE();
1012 m_chimu[indx0] = dedxTrk->
chiMu();
1013 m_chipi[indx0] = dedxTrk->
chiPi();
1014 m_chik[indx0] = dedxTrk->
chiK();
1015 m_chip[indx0] = dedxTrk->
chiP();
1018 m_probPH[indx0] = dedxTrk->
probPH();
1019 m_normPH[indx0] = dedxTrk->
normPH();
1030 for(
int i = 0; i < m_ngch; i++) {
1032 if(!(*itTrk)->isMdcTrackValid())
continue;
1033 if(!(*itTrk)->isTofTrackValid())
continue;
1036 SmartRefVector<RecTofTrack> tofTrkCol = (*itTrk)->tofTrack();
1038 double ptrk = mdcTrk->
p();
1039 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
1040 for(;iter_tof != tofTrkCol.end(); iter_tof++ ) {
1042 status->
setStatus((*iter_tof)->status());
1045 if( status->
layer()!=1 )
continue;
1046 double path=(*iter_tof)->path();
1047 double tof = (*iter_tof)->tof();
1048 double ph = (*iter_tof)->ph();
1049 double rhit = (*iter_tof)->zrhit();
1050 double qual = 0.0 + (*iter_tof)->quality();
1051 double cntr = 0.0 + (*iter_tof)->tofID();
1054 for(
int j = 0; j < 5; j++) {
1055 texp[j] = (*iter_tof)->texp(j);
1059 m_cntr_etof[indx1] = cntr;
1060 m_ptot_etof[indx1] =
ptrk;
1061 m_ph_etof[indx1] = ph;
1062 m_rhit_etof[indx1] = rhit;
1063 m_qual_etof[indx1] = qual;
1064 m_te_etof[indx1] = tof - texp[0];
1065 m_tmu_etof[indx1] = tof - texp[1];
1066 m_tpi_etof[indx1] = tof - texp[2];
1067 m_tk_etof[indx1] = tof - texp[3];
1068 m_tp_etof[indx1] = tof - texp[4];
1070 m_ec_tof[indx1] = tof;
1072 m_ec_toff_e[indx1] = (*iter_tof)->toffset(0);
1073 m_ec_toff_mu[indx1] = (*iter_tof)->toffset(1);
1074 m_ec_toff_pi[indx1] = (*iter_tof)->toffset(2);
1075 m_ec_toff_k[indx1] = (*iter_tof)->toffset(3);
1076 m_ec_toff_p[indx1] = (*iter_tof)->toffset(4);
1078 m_ec_tsig_e[indx1] = (*iter_tof)->sigma(0);
1079 m_ec_tsig_mu[indx1] = (*iter_tof)->sigma(1);
1080 m_ec_tsig_pi[indx1] = (*iter_tof)->sigma(2);
1081 m_ec_tsig_k[indx1] = (*iter_tof)->sigma(3);
1082 m_ec_tsig_p[indx1] = (*iter_tof)->sigma(4);
1087 double path=(*iter_tof)->path();
1088 double tof = (*iter_tof)->tof();
1089 double ph = (*iter_tof)->ph();
1090 double rhit = (*iter_tof)->zrhit();
1091 double qual = 0.0 + (*iter_tof)->quality();
1092 double cntr = 0.0 + (*iter_tof)->tofID();
1094 for(
int j = 0; j < 5; j++) {
1095 texp[j] = (*iter_tof)->texp(j);
1097 m_cntr_btof1[indx1] = cntr;
1098 m_ptot_btof1[indx1] =
ptrk;
1099 m_ph_btof1[indx1] = ph;
1100 m_zhit_btof1[indx1] = rhit;
1101 m_qual_btof1[indx1] = qual;
1102 m_te_btof1[indx1] = tof - texp[0];
1103 m_tmu_btof1[indx1] = tof - texp[1];
1104 m_tpi_btof1[indx1] = tof - texp[2];
1105 m_tk_btof1[indx1] = tof - texp[3];
1106 m_tp_btof1[indx1] = tof - texp[4];
1108 m_b1_tof[indx1] = tof;
1110 m_b1_toff_e[indx1] = (*iter_tof)->toffset(0);
1111 m_b1_toff_mu[indx1] = (*iter_tof)->toffset(1);
1112 m_b1_toff_pi[indx1] = (*iter_tof)->toffset(2);
1113 m_b1_toff_k[indx1] = (*iter_tof)->toffset(3);
1114 m_b1_toff_p[indx1] = (*iter_tof)->toffset(4);
1116 m_b1_tsig_e[indx1] = (*iter_tof)->sigma(0);
1117 m_b1_tsig_mu[indx1] = (*iter_tof)->sigma(1);
1118 m_b1_tsig_pi[indx1] = (*iter_tof)->sigma(2);
1119 m_b1_tsig_k[indx1] = (*iter_tof)->sigma(3);
1120 m_b1_tsig_p[indx1] = (*iter_tof)->sigma(4);
1133 for(
int i = 0; i < m_ngch; i++) {
1150 m_dedx_pid[indx2] = pid->
chiDedx(2);
1151 m_tof1_pid[indx2] = pid->
chiTof1(2);
1152 m_tof2_pid[indx2] = pid->
chiTof2(2);
1153 m_prob_pid[indx2] = pid->
probPion();
1163 m_cost_pid[indx2] =
cos(mdcTrk->
theta());
1165 HepLorentzVector
ptrk;
1166 ptrk.setPx(mdcKalTrk->
px());
1167 ptrk.setPy(mdcKalTrk->
py());
1168 ptrk.setPz(mdcKalTrk->
pz());
1172 m_ptrk_pid[indx2] =
p3;
1175 ipnp.push_back(jGood[i]);
1176 ppnp.push_back(
ptrk);
1179 ipnm.push_back(jGood[i]);
1180 ppnm.push_back(
ptrk);
1183 int npnp = ipnp.size();
1184 int npnm = ipnm.size();
1190 for (
int i=0; i<m_nggneu; i++)
1193 if (!(*itTrk)->isEmcShowerValid())
continue;
1195 m_numHits[iphoton] = emcTrk->
numHits();
1197 m_x[iphoton] = emcTrk->
x();
1198 m_y[iphoton]= emcTrk->
y();
1199 m_z[iphoton]= emcTrk->
z();
1200 m_cosemc[iphoton] =
cos(emcTrk->
theta());
1201 m_phiemc[iphoton] = emcTrk->
phi();
1202 m_energy[iphoton] = emcTrk->
energy();
1203 m_eSeed[iphoton] = emcTrk->
eSeed();
1204 m_e3x3[iphoton] = emcTrk->
e3x3();
1205 m_e5x5[iphoton] = emcTrk->
e5x5();
1214 if(kmfit->
chisq()>=chi5)
return SUCCESS;
1215 if(pgam2pi2.m()<=1.0)
return SUCCESS;
1216 if(pgam2pi1.m()<=1.0)
return SUCCESS;
1217 if(nGam!=2)
return SUCCESS;
1218 if(emcTg1/extmot1>=0.8)
return SUCCESS;
1219 if(emcTg2/extmot2>=0.8)
return SUCCESS;
1224 if (m_thsvc->getHist(
"/DQAHist/Rhopi/mpi0", h).isSuccess()) {
1227 log << MSG::ERROR <<
"Couldn't retrieve mpi0" << endreq;
1230 if(fabs(ppi0.m()-0.135)>=0.015)
return SUCCESS;
1233 if (m_thsvc->getHist(
"/DQAHist/Rhopi/mrho0", h).isSuccess()) {
1236 log << MSG::ERROR <<
"Couldn't retrieve mrho0" << endreq;
1240 if (m_thsvc->getHist(
"/DQAHist/Rhopi/mrhop", h).isSuccess()) {
1243 log << MSG::ERROR <<
"Couldn't retrieve mrhop" << endreq;
1246 if (m_thsvc->getHist(
"/DQAHist/Rhopi/mrhom", h).isSuccess()) {
1249 log << MSG::ERROR <<
"Couldn't retrieve mrhom" << endreq;
1255 (*(evtRecTrkCol->begin()+ipip[0]))->setPartId(3);
1256 (*(evtRecTrkCol->begin()+ipim[0]))->setPartId(3);
1264 (*(evtRecTrkCol->begin()+ipip[0]))->setQuality(0);
1265 (*(evtRecTrkCol->begin()+ipim[0]))->setQuality(0);
1267 setFilterPassed(
true);
1269 return StatusCode::SUCCESS;