Called event by event.
185{
186
187
188
189
190
191 StoreArray<TRGECLTrg> trgArray;
192
201 StoreObjPtr<BinnedEventT0> m_eventTime;
203
204
205
207 double EventTiming = -9999.;
208 if (ntrgArray > 0) {EventTiming = trgArray[0]->getEventTiming();}
209 std::vector<int> selTC;
210 std::vector<int> selTheta;
211 std::vector<float> selE;
212 for (int ic = 0; ic < eclTrgClusterArray.getEntries(); ic++) {
213 double tcT = abs(eclTrgClusterArray[ic]->getTimeAve() - EventTiming);
214 if (tcT < 100.) {
215 int TC = eclTrgClusterArray[ic]->getMaxTCId();
216 selTC.push_back(TC);
217 selTheta.push_back(TCThetaID[TC - 1]);
218 selE.push_back(eclTrgClusterArray[ic]->getEnergyDep());
219 }
220 }
221
222
223
224
225 int nTrk2D = cdc2DTrkArray.getEntries();
226 int nTrk3D = cdc3DTrkArray.getEntries();
227 int nTrkZ10 = 0;
228 int nTrkZ25 = 0;
229 int nTrkZ35 = 0;
230 for (int itrk = 0; itrk < nTrk3D; itrk++) {
231 double z0 = cdc3DTrkArray[itrk]->getZ0();
232 if (abs(z0) < 10.) {nTrkZ10++;}
233 if (abs(z0) < 25.) {nTrkZ25++;}
234 if (abs(z0) < 35.) {nTrkZ35++;}
235 }
236 int nTrkNN = cdcNNTrkArray.getEntries();
237 int nTrkNNSTT = 0;
238 int nTrkNNSTT6 = 0;
239 int nTrkNNSTT5 = 0;
240 int nTrkNNSTT4 = 0;
241 int nTrkNN20 = 0;
242 int nTrkNN40 = 0;
243 for (int itrk = 0; itrk < nTrkNN; itrk++) {
244 double z0 = cdcNNTrkArray[itrk]->getZ0();
245
246 double omega = 100 * cdcNNTrkArray[itrk]->getOmega();
247 int omega_bin = omega / 0.044;
248 omega = omega_bin * 0.044;
249
250 double cottheta = cdcNNTrkArray[itrk]->getCotTheta();
251 double theta = 0;
252 if (cottheta != 0)theta =
atan(1. / cottheta);
253 int theta_bin = theta / 0.098125;
254 theta = theta_bin * 0.098125;
255 int p = abs(10 * 0.3 * 1.5 / omega / sin(theta));
256
257 double pt = cdcNNTrkArray[itrk]->getPt();
258 double p_abs = cdcNNTrkArray[itrk]->getPt() / sin(theta);
259 B2DEBUG(20, "NN momentum " << omega << " " << theta * 180 / 3.14 << " " << p * 0.1 << " " << p_abs << " " << pt);
260
261 if (abs(z0) < 15. && p > 7) {nTrkNNSTT++;}
262 if (abs(z0) < 15. && p > 6) {nTrkNNSTT6++;}
263 if (abs(z0) < 15. && p > 5) {nTrkNNSTT5++;}
264 if (abs(z0) < 15. && p > 4) {nTrkNNSTT4++;}
265 if (abs(z0) < 20.) {nTrkNN20++;}
266 if (abs(z0) < 40.) {nTrkNN40++;}
267 }
268
269 trgInfo->setN3Dfittertrk(nTrk3D);
270 trgInfo->setN3DfittertrkZ10(nTrkZ10);
271 trgInfo->setN3DfittertrkZ25(nTrkZ25);
272 trgInfo->setN3DfittertrkZ35(nTrkZ35);
273 trgInfo->setNNNtrk(nTrkNN);
274 trgInfo->setNNNtrkZ20(nTrkNN20);
275 trgInfo->setNNNtrkZ40(nTrkNN40);
276 trgInfo->setNNNtrkSTT(nTrkNNSTT);
277
278
279
280 int nClust = selTC.size();
281 int n300MeV = 0;
282 int n2GeV = 0;
283 int n2GeV414 = 0;
284 int n2GeV231516 = 0;
285 int n2GeV117 = 0;
286 int n1GeV415 = 0;
287 int n1GeV2316 = 0;
288 int n1GeV117 = 0;
289 for (int ic = 0; ic < nClust; ic++) {
290 if (selE[ic] > 0.3) {n300MeV++;}
291 float thresh = TC1GeV[selTC[ic] - 1];
292 if (selE[ic] > (thresh + thresh)) {
293 n2GeV++;
294 if (selTheta[ic] >= 4 && selTheta[ic] <= 14) {n2GeV414++;}
295 if (selTheta[ic] == 2 || selTheta[ic] == 3 || selTheta[ic] == 15 || selTheta[ic] == 16) {n2GeV231516++;}
296 if (selTheta[ic] == 1 || selTheta[ic] == 17) {n2GeV117++;}
297 }
298 if (selE[ic] > thresh) {
299 if (selTheta[ic] >= 4 && selTheta[ic] <= 15) {n1GeV415++;}
300 if (selTheta[ic] == 2 || selTheta[ic] == 3 || selTheta[ic] == 16) {n1GeV2316++;}
301 if (selTheta[ic] == 1 || selTheta[ic] == 17) {n1GeV117++;}
302 }
303 }
304 trgInfo->setNcluster(nClust);
305 trgInfo->setNhigh300cluster(n300MeV);
306 trgInfo->setNhigh1GeVcluster415(n1GeV415);
307 trgInfo->setNhigh1GeVcluster2316(n1GeV2316);
308 trgInfo->setNhigh1GeVcluster117(n1GeV117);
309 trgInfo->setNhigh2GeVcluster(n2GeV);
310 trgInfo->setNhigh2GeVcluster414(n2GeV414);
311 trgInfo->setNhigh2GeVcluster231516(n2GeV231516);
312 trgInfo->setNhigh2GeVcluster117(n2GeV117);
313
314
315
316
317 int nPhiPairHigh = 0;
318 int nPhiPairLow = 0;
319 int n3DPair = 0;
320 int nECLBhabha = 0;
321 int nTrkBhabha = 0;
322 for (int i0 = 0; i0 < nClust - 1; i0++) {
323 for (int i1 = i0 + 1; i1 < nClust; i1++) {
324
325
326 float dphi = abs(TCPhiCOM[selTC[i1] - 1] - TCPhiCOM[selTC[i0] - 1]);
327 if (dphi > 180.) {dphi = 360 - dphi;}
328 if (dphi > 170. && selE[i0] > 0.25 && selE[i1] > 0.25) {nPhiPairHigh++;}
329 if (dphi > 170. && (selE[i0] < 0.25 || selE[i1] < 0.25)) {nPhiPairLow++;}
330
331
332 float thetaSum = TCThetaCOM[selTC[i0] - 1] + TCThetaCOM[selTC[i1] - 1];
333 if (dphi > 160. && thetaSum > 160. && thetaSum < 200.) {n3DPair++;}
334
335
336 if (dphi > 160. && thetaSum > 165. && thetaSum < 190. && selE[i0] > 3.*TC1GeV[selTC[i0] - 1] && selE[i1] > 3.*TC1GeV[selTC[i1] - 1]
337 && (selE[i0] > 4.5 * TC1GeV[selTC[i0] - 1] || selE[i1] > 4.5 * TC1GeV[selTC[i1] - 1])) {
338 nECLBhabha++;
339
340
341 bool c0matched = false;
342 bool c1matched = false;
343 for (int itrk = 0; itrk < nTrk3D; itrk++) {
344 double phiTrk = cdc3DTrkArray[itrk]->getPhi0() * radtodeg;
345 double ptTrk = cdc3DTrkArray[itrk]->getTransverseMomentum(1.5);
346 float dphi0 = abs(phiTrk - TCPhiLab[selTC[i0] - 1]);
347 if (dphi0 > 180.) {dphi0 = 360. - dphi0;}
348 float dphi1 = abs(phiTrk - TCPhiLab[selTC[i1] - 1]);
349 if (dphi1 > 180.) {dphi1 = 360. - dphi1;}
350 if (ptTrk > 1. && dphi0 < 15.) {c0matched = true;}
351 if (ptTrk > 1. && dphi1 < 15.) {c1matched = true;}
352 }
353 if (c0matched && c1matched) {nTrkBhabha++;}
354 }
355 }
356 }
357
358 trgInfo->setBhabhaVeto(nTrkBhabha);
359 trgInfo->seteclBhabhaVeto(nECLBhabha);
360 trgInfo->setPairHigh(nPhiPairHigh);
361 trgInfo->setPairLow(nPhiPairLow);
362 trgInfo->set3DPair(n3DPair);
363
364
365
366
367
368 int nSameHem1Trk = 0;
369 int nOppHem1Trk = 0;
370 if (nTrk3D == 1) {
371 double phiTrk = cdc3DTrkArray[0]->getPhi0() * radtodeg;
372 double cotTrk = cdc3DTrkArray[0]->getCotTheta();
373 for (int i0 = 0; i0 < nClust; i0++) {
374 float dphi = abs(phiTrk - TCPhiLab[selTC[i0] - 1]);
375 if (dphi > 180.) {dphi = 360. - dphi;}
376 float dCot = cotTrk - TCcotThetaLab[selTC[i0] - 1];
377 if (dphi > 80.) {nOppHem1Trk++;}
378 if (dphi < 80. && (dCot < -0.8 || dCot > 0.6)) {nSameHem1Trk++;}
379 }
380 }
381
382 trgInfo->setNSameHem1Trk(nSameHem1Trk);
383 trgInfo->setNOppHem1Trk(nOppHem1Trk);
384
385
386
387 int Trk_b2b_1to3 = 0;
388 int Trk_b2b_1to5 = 0;
389 int Trk_b2b_1to7 = 0;
390 int Trk_b2b_1to9 = 0;
391 int Trk_open90 = 0;
392 int Trk_open30 = 0;
393 for (int itrk = 0; itrk < cdc2DTrkArray.getEntries(); itrk++) {
394
395 int phi_i_itrk = (int)((cdc2DTrkArray[itrk]->getPhi0()) * (180 / M_PI) / 10);
396
397 for (int jtrk = 0; jtrk < cdc2DTrkArray.getEntries(); jtrk++) {
398 if (itrk <= jtrk) continue;
399
400 int phi_i_jtrk = (int)((cdc2DTrkArray[jtrk]->getPhi0()) * (180 / M_PI) / 10);
401 if (abs(phi_i_itrk - phi_i_jtrk) >= 17 && abs(phi_i_itrk - phi_i_jtrk) <= 19) {Trk_b2b_1to3 = 1;}
402 if (abs(phi_i_itrk - phi_i_jtrk) >= 16 && abs(phi_i_itrk - phi_i_jtrk) <= 20) {Trk_b2b_1to5 = 1;}
403 if (abs(phi_i_itrk - phi_i_jtrk) >= 15 && abs(phi_i_itrk - phi_i_jtrk) <= 21) {Trk_b2b_1to7 = 1;}
404 if (abs(phi_i_itrk - phi_i_jtrk) >= 14 && abs(phi_i_itrk - phi_i_jtrk) <= 22) {Trk_b2b_1to9 = 1;}
405 if (abs(phi_i_itrk - phi_i_jtrk) >= 9 && abs(phi_i_itrk - phi_i_jtrk) <= 27) {Trk_open90 = 1;}
406 if (abs(phi_i_itrk - phi_i_jtrk) >= 3 && abs(phi_i_itrk - phi_i_jtrk) <= 33) {Trk_open30 = 1;}
407 }
408 }
409 trgInfo->setTrk_b2b_1to3(Trk_b2b_1to3);
410 trgInfo->setTrk_b2b_1to5(Trk_b2b_1to5);
411 trgInfo->setTrk_b2b_1to7(Trk_b2b_1to7);
412 trgInfo->setTrk_b2b_1to9(Trk_b2b_1to9);
413 trgInfo->setTrk_open90(Trk_open90);
414 trgInfo->setTrk_open30(Trk_open30);
415
416
417
418 int cluster_b2b_1to3 = 0;
419 int cluster_b2b_1to5 = 0;
420 int cluster_b2b_1to7 = 0;
421 int cluster_b2b_1to9 = 0;
422 for (int iclu = 0; iclu < eclTrgClusterArray.getEntries(); iclu++) {
423
424 double x_iclu = eclTrgClusterArray[iclu]->getPositionX();
425 double y_iclu = eclTrgClusterArray[iclu]->getPositionY();
426
427 int phi_iclu = 0;
428 if (x_iclu >= 0 && y_iclu >= 0) {phi_iclu = (int)(
atan(y_iclu / x_iclu) * (180.0 / M_PI) / 10);}
429 else if (x_iclu < 0 && y_iclu >= 0) {phi_iclu = (int)((
atan(y_iclu / x_iclu) * (180.0 / M_PI) + 180.0) / 10);}
430 else if (x_iclu < 0 && y_iclu < 0) {phi_iclu = (int)((
atan(y_iclu / x_iclu) * (180.0 / M_PI) + 180.0) / 10);}
431 else if (x_iclu >= 0 && y_iclu < 0) {phi_iclu = (int)((
atan(y_iclu / x_iclu) * (180.0 / M_PI) + 360.0) / 10);}
432
433 for (int jclu = 0; jclu < eclTrgClusterArray.getEntries(); jclu++) {
434 if (iclu <= jclu) continue;
435
436 double x_jclu = eclTrgClusterArray[jclu]->getPositionX();
437 double y_jclu = eclTrgClusterArray[jclu]->getPositionY();
438
439 int phi_jclu = 0;
440 if (x_jclu >= 0 && y_jclu >= 0) {phi_jclu = (int)(
atan(y_jclu / x_jclu) * (180.0 / M_PI) / 10);}
441 else if (x_jclu < 0 && y_jclu >= 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
442 else if (x_jclu < 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
443 else if (x_jclu >= 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 360.0) / 10);}
444
445 if (abs(phi_iclu - phi_jclu) >= 17 && abs(phi_iclu - phi_jclu) <= 19) {cluster_b2b_1to3 = 1;}
446 if (abs(phi_iclu - phi_jclu) >= 16 && abs(phi_iclu - phi_jclu) <= 20) {cluster_b2b_1to5 = 1;}
447 if (abs(phi_iclu - phi_jclu) >= 15 && abs(phi_iclu - phi_jclu) <= 21) {cluster_b2b_1to7 = 1;}
448 if (abs(phi_iclu - phi_jclu) >= 14 && abs(phi_iclu - phi_jclu) <= 22) {cluster_b2b_1to9 = 1;}
449 }
450 }
451 trgInfo->setcluster_b2b_1to3(cluster_b2b_1to3);
452 trgInfo->setcluster_b2b_1to5(cluster_b2b_1to5);
453 trgInfo->setcluster_b2b_1to7(cluster_b2b_1to7);
454 trgInfo->setcluster_b2b_1to9(cluster_b2b_1to9);
455
456
457
458
459
460 int eed = 0, fed = 0;
461 if (cdc2DTrkArray.getEntries() == 2 && trackphimatch.getEntries() == 2 && cluster_b2b_1to5 == 1) {eed = 1;}
462 if (cdc2DTrkArray.getEntries() == 1 && trackphimatch.getEntries() == 1 && cluster_b2b_1to5 == 1) {fed = 1;}
463 trgInfo->seteed(eed);
464 trgInfo->setfed(fed);
465
466
467
468 int Trkcluster_b2b_1to3 = 0;
469 int Trkcluster_b2b_1to5 = 0;
470 int Trkcluster_b2b_1to7 = 0;
471 int Trkcluster_b2b_1to9 = 0;
472 for (int itrk = 0; itrk < cdc2DTrkArray.getEntries(); itrk++) {
473 double _r = 1.0 / cdc2DTrkArray[itrk]->getOmega() ;
474 double _phi = cdc2DTrkArray[itrk]->getPhi0() ;
475 double phi_p = acos(126.0 / (2 * fabs(_r)));
478 else if (_r < 0) {
charge = -1;}
480
481 double phi_CDC = 0.0;
482 if (charge == 1) {
483 phi_CDC = _phi + phi_p - 0.5 * M_PI;
484 } else if (charge == -1) {
485 phi_CDC = _phi - phi_p + 0.5 * M_PI;
486 } else {
487 phi_CDC = _phi;
488 }
489
490 if (phi_CDC > 2 * M_PI) {phi_CDC = phi_CDC - 2 * M_PI;}
491 else if (phi_CDC < 0) {phi_CDC = phi_CDC + 2 * M_PI;}
492 int phi_itrk = (int)(phi_CDC * (180.0 / M_PI) / 10);
493
494 for (int jclu = 0; jclu < eclTrgClusterArray.getEntries(); jclu++) {
495
496 double x_jclu = eclTrgClusterArray[jclu]->getPositionX();
497 double y_jclu = eclTrgClusterArray[jclu]->getPositionY();
498
499 int phi_jclu = 0;
500 if (x_jclu >= 0 && y_jclu >= 0) {phi_jclu = (int)(
atan(y_jclu / x_jclu) * (180.0 / M_PI) / 10);}
501 else if (x_jclu < 0 && y_jclu >= 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
502 else if (x_jclu < 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
503 else if (x_jclu >= 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 360.0) / 10);}
504
505 if (abs(phi_itrk - phi_jclu) >= 17 && abs(phi_itrk - phi_jclu) <= 19) {Trkcluster_b2b_1to3 = 1;}
506 if (abs(phi_itrk - phi_jclu) >= 16 && abs(phi_itrk - phi_jclu) <= 20) {Trkcluster_b2b_1to5 = 1;}
507 if (abs(phi_itrk - phi_jclu) >= 15 && abs(phi_itrk - phi_jclu) <= 21) {Trkcluster_b2b_1to7 = 1;}
508 if (abs(phi_itrk - phi_jclu) >= 14 && abs(phi_itrk - phi_jclu) <= 22) {Trkcluster_b2b_1to9 = 1;}
509 }
510 }
511
512 trgInfo->setTrkcluster_b2b_1to3(Trkcluster_b2b_1to3);
513 trgInfo->setTrkcluster_b2b_1to5(Trkcluster_b2b_1to5);
514 trgInfo->setTrkcluster_b2b_1to7(Trkcluster_b2b_1to7);
515 trgInfo->setTrkcluster_b2b_1to9(Trkcluster_b2b_1to9);
516
517
518
519
520 int fp = 0;
521 if (cdc2DTrkArray.getEntries() == 1 && Trkcluster_b2b_1to5 == 1) {fp = 1;}
522 trgInfo->setfp(fp);
523
524 int eeb = 0;
525 if (trackphimatch.getEntries() == 2 && Trk_b2b_1to5 == 1) {eeb = 1;}
526 trgInfo->seteeb(eeb);
527
528 int fep = 0;
529 if (cdc2DTrkArray.getEntries() == 1 && trackphimatch.getEntries() == 1 && Trkcluster_b2b_1to5 == 1) {fep = 1;}
530 trgInfo->setfep(fep);
531
532
533
534
535
536
537 int ECLtoGDL[4] = {0, 0, 0, 0};
538 if (ntrgArray > 0) {
539 ECLtoGDL[0] = trgArray[0]->getECLtoGDL(0);
540 ECLtoGDL[1] = trgArray[0]->getECLtoGDL(1);
541 ECLtoGDL[2] = trgArray[0]->getECLtoGDL(2);
542 ECLtoGDL[3] = trgArray[0]->getECLtoGDL(3);
543 }
544
545
546 bool elow = (ECLtoGDL[1] & (1 << (47 - 32 * 1))) != 0;
547
548 bool ehigh = (ECLtoGDL[1] & (1 << (48 - 32 * 1))) != 0;
549
550 bool elum = (ECLtoGDL[1] & (1 << (49 - 32 * 1))) != 0;
551
552 bool ecl_bha = (ECLtoGDL[0] & (1 << (19 - 32 * 0))) != 0;
553
554 bool bha_type0 = (ECLtoGDL[0] & (1 << (20 - 32 * 0))) != 0;
555
556 bool bha_type1 = (ECLtoGDL[0] & (1 << (21 - 32 * 0))) != 0;
557
558 bool bha_type2 = (ECLtoGDL[0] & (1 << (22 - 32 * 0))) != 0;
559
560 bool bha_type3 = (ECLtoGDL[0] & (1 << (23 - 32 * 0))) != 0;
561
562 bool bha_type4 = (ECLtoGDL[0] & (1 << (24 - 32 * 0))) != 0;
563
564 bool bha_type5 = (ECLtoGDL[0] & (1 << (25 - 32 * 0))) != 0;
565
566 bool bha_type6 = (ECLtoGDL[0] & (1 << (26 - 32 * 0))) != 0;
567
568 bool bha_type7 = (ECLtoGDL[0] & (1 << (27 - 32 * 0))) != 0;
569
570 bool bha_type8 = (ECLtoGDL[0] & (1 << (28 - 32 * 0))) != 0;
571
572 bool bha_type9 = (ECLtoGDL[0] & (1 << (29 - 32 * 0))) != 0;
573
574 bool bha_type10 = (ECLtoGDL[0] & (1 << (30 - 32 * 0))) != 0;
575
576 bool bha_type11 = (ECLtoGDL[0] & (1u << (31 - 32 * 0))) != 0;
577
578 bool bha_type12 = (ECLtoGDL[1] & (1 << (32 - 32 * 1))) != 0;
579
580 bool bha_type13 = (ECLtoGDL[1] & (1 << (33 - 32 * 1))) != 0;
581
582 unsigned int icn = (ECLtoGDL[1] >> (50 - 32 * 1)) & 0x7F;
583 if (icn > 14)
584 icn = 15;
585 bool nclst_0 = (icn >> 0) & 0x1;
586 bool nclst_1 = (icn >> 1) & 0x1;
587 bool nclst_2 = (icn >> 2) & 0x1;
588 bool nclst_3 = (icn >> 3) & 0x1;
589
590
591 bool ecl_bg_0 = (ECLtoGDL[1] & (1 << (57 - 32 * 1))) != 0;
592
593 bool ecl_bg_1 = (ECLtoGDL[1] & (1 << (58 - 32 * 1))) != 0;
594
595 bool ecl_bg_2 = (ECLtoGDL[1] & (1 << (59 - 32 * 1))) != 0;
596
597 bool ecl_active = ntrgArray > 0;
598
599
600 bool ecl_timing_fwd = (ECLtoGDL[0] & (1 << (15 - 32 * 0))) != 0;
601
602 bool ecl_timing_brl = (ECLtoGDL[0] & (1 << (16 - 32 * 0))) != 0;
603
604 bool ecl_timing_bwd = (ECLtoGDL[0] & (1 << (17 - 32 * 0))) != 0;
605
606 bool ecl_phys = (ECLtoGDL[0] & (1 << (18 - 32 * 0))) != 0;
607
608 bool ecl_oflo = (ECLtoGDL[1] & (1 << (60 - 32 * 1))) != 0;
609
610 bool ecl_3dbha = (ECLtoGDL[1] & (1 << (61 - 32 * 1))) != 0;
611
612 bool ecl_lml_0 = (ECLtoGDL[1] & (1 << (62 - 32 * 1))) != 0;
613
614 bool ecl_lml_1 = (ECLtoGDL[1] & (1u << (63 - 32 * 1))) != 0;
615
616 bool ecl_lml_2 = (ECLtoGDL[2] & (1 << (64 - 32 * 2))) != 0;
617
618 bool ecl_lml_3 = (ECLtoGDL[2] & (1 << (65 - 32 * 2))) != 0;
619
620 bool ecl_lml_4 = (ECLtoGDL[2] & (1 << (66 - 32 * 2))) != 0;
621
622 bool ecl_lml_5 = (ECLtoGDL[2] & (1 << (67 - 32 * 2))) != 0;
623
624 bool ecl_lml_6 = (ECLtoGDL[2] & (1 << (68 - 32 * 2))) != 0;
625
626 bool ecl_lml_7 = (ECLtoGDL[2] & (1 << (69 - 32 * 2))) != 0;
627
628 bool ecl_lml_8 = (ECLtoGDL[2] & (1 << (70 - 32 * 2))) != 0;
629
630 bool ecl_lml_9 = (ECLtoGDL[2] & (1 << (71 - 32 * 2))) != 0;
631
632 bool ecl_lml_10 = (ECLtoGDL[2] & (1 << (72 - 32 * 2))) != 0;
633
634 bool ecl_lml_11 = (ECLtoGDL[2] & (1 << (73 - 32 * 2))) != 0;
635
636 bool ecl_lml_12 = (ECLtoGDL[2] & (1 << (78 - 32 * 2))) != 0;
637
638 bool ecl_lml_13 = (ECLtoGDL[2] & (1 << (79 - 32 * 2))) != 0;
639
640 bool ecl_mumu = (ECLtoGDL[2] & (1 << (75 - 32 * 2))) != 0;
641
642 bool ecl_bst = (ECLtoGDL[2] & (1 << (77 - 32 * 2))) != 0;
643
644 bool ecl_bhapur = (ECLtoGDL[2] & (1 << (74 - 32 * 2))) != 0;
645
646 bool bha_intrk = (ECLtoGDL[2] & (1 << (86 - 32 * 2))) != 0;
647
648 bool bha_theta_0 = (ECLtoGDL[2] & (1 << (87 - 32 * 2))) != 0;
649 bool bha_theta_1 = (ECLtoGDL[2] & (1 << (88 - 32 * 2))) != 0;
650
651 bool ecltaub2b = (ECLtoGDL[2] & (1 << (89 - 32 * 2))) != 0;
652 bool ecltaub2b2 = (ECLtoGDL[2] & (1 << (93 - 32 * 2))) != 0;
653 bool ecltaub2b3 = (ECLtoGDL[2] & (1 << (94 - 32 * 2))) != 0;
654
655 bool ehigh1 = (ECLtoGDL[2] & (1 << (90 - 32 * 2))) != 0;
656 bool ehigh2 = (ECLtoGDL[2] & (1 << (91 - 32 * 2))) != 0;
657 bool ehigh3 = (ECLtoGDL[2] & (1 << (92 - 32 * 2))) != 0;
658 bool ehigh4 = (ECLtoGDL[2] & (1u << (95 - 32 * 2))) != 0;
659
660
661
662
663 bool cdc_active = false;
664 if (m_eventTime->hasBinnedEventT0(Const::CDC)) {
665 if (m_eventTime->getBinnedEventT0(Const::CDC) != 0) { cdc_active = true; }
666 }
667
668
669 int n_klm_barrel = klmtrgsummary->getBKLM_n_trg_sectors();
670 bool klm_hit = n_klm_barrel > 0;
671 bool klm_0 = (n_klm_barrel & (1 << 0)) != 0;
672 bool klm_1 = (n_klm_barrel & (1 << 1)) != 0;
673 bool klm_2 = (n_klm_barrel & (1 << 2)) != 0;
674 int n_eklm_barrel = klmtrgsummary->getEKLM_n_trg_sectors();
675 bool eklm_hit = n_eklm_barrel > 0;
676 bool eklm_0 = (n_eklm_barrel & (1 << 0)) != 0;
677 bool eklm_1 = (n_eklm_barrel & (1 << 1)) != 0;
678 bool eklm_2 = (n_eklm_barrel & (1 << 2)) != 0;
679 int klmb2b = klmtrgsummary->getBKLM_back_to_back_flag();
680 int eklmb2b = klmtrgsummary->getEKLM_back_to_back_flag();
681
682
683 bool cdcklm_0 = (trackKLMmatch.getEntries() == 1);
684 bool cdcklm_1 = (trackKLMmatch.getEntries() > 1);
685 bool cdcklm_2 = (trackKLMmatch.getEntries() == 3);
686 bool cdcklm_3 = (trackKLMmatch.getEntries() > 3);
687 int n_seklm = trgInfo->getNsklm();
688
689
690 int n_ieklm = trgInfo->getNiklm();
691 bool ecleklm = (trgInfo->getNeecleklm() > 0);
692
693 bool cdcecl_0 = (trackphimatch.getEntries() == 1);
694 bool cdcecl_1 = (trackphimatch.getEntries() == 2);
695 bool cdcecl_2 = (trackphimatch.getEntries() == 3);
696 bool cdcecl_3 = (trackphimatch.getEntries() > 3);
697 bool trkbha1 = ecl_3dbha && (trackphimatch.getEntries() == 1);
698 bool trkbha2 = ecl_3dbha && (trackphimatch.getEntries() == 2);
699
700
701
702 int n_c2gev = 0;
703 for (int i = 0; i < trackphimatch.getEntries(); i++) {
704 if (trackphimatch[i]->get_e() >= 2.0) {n_c2gev++;}
705 }
706
707 bool c2gev_0 = (n_c2gev == 1);
708 bool c2gev_1 = (n_c2gev == 2);
709 bool c2gev_2 = (n_c2gev == 3);
710 bool c2gev_3 = (n_c2gev > 3);
711
712 int N_clst1 = 0, N_clst2 = 0;
713 for (int i = 0 ; i < grlphoton.getEntries() ; i++) {
714 if (grlphoton[i]->get_e() > 1.0) { N_clst1++; }
715 if (grlphoton[i]->get_e() > 2.0) { N_clst2++; }
716 }
717
718 bool nclst1_0 = (N_clst1 == 1);
719 bool nclst1_1 = (N_clst1 == 2);
720 bool nclst1_2 = (N_clst1 == 3);
721 bool nclst1_3 = (N_clst1 > 3);
722
723 bool nclst2_0 = (N_clst2 == 1);
724 bool nclst2_1 = (N_clst2 == 2);
725 bool nclst2_2 = (N_clst2 == 3);
726 bool nclst2_3 = (N_clst2 > 3);
727
728 int N_ST = trgInfo->getNshorttrk();
729 int N_ST_fwd = trgInfo->getNshorttrk_fwd();
730 int N_ST_bwd = trgInfo->getNshorttrk_bwd();
731 int s2s3 = trgInfo->gets2s3();
732 int s2s5 = trgInfo->gets2s5();
733 int s2so = trgInfo->gets2so();
734 int s2f3 = trgInfo->gets2f3();
735 int s2f5 = trgInfo->gets2f5();
736 int s2fo = trgInfo->gets2fo();
737 int s2f30 = trgInfo->gets2f30();
738 int s2s30 = trgInfo->gets2s30();
739 int bwdsb = trgInfo->getbwdsb();
740 int bwdnb = trgInfo->getbwdnb();
741 int fwdsb = trgInfo->getfwdsb();
742 int fwdnb = trgInfo->getfwdnb();
743 int brlfb = trgInfo->getbrlfb();
744 int brlnb = trgInfo->getbrlnb();
745 int N_IT = trgInfo->getNinnertrk();
746 int i2fo = trgInfo->geti2fo();
747 int i2io = trgInfo->geti2io();
748 int n_secl = trgInfo->getNsecl();
749 int n_iecl = trgInfo->getNiecl();
750
751 bool ecltaunn = trgInfo->getTauNN();
752
753
754
755
756
757
758
759
760
761
762
763
764
765
767
769
770 for (int i = 0; i < N_InputBits; i++) {
772
773 bool bit = false;
774 if (bitname == "t3_0") {bit = nTrkZ35 == 1;}
775 else if (bitname == "t3_1") {bit = nTrkZ35 == 2;}
776 else if (bitname == "t3_2") {bit = nTrkZ35 == 3;}
777 else if (bitname == "t3_3") {bit = nTrkZ35 > 3;}
778 else if (bitname == "ty_0") {bit = nTrkNN20 == 1;}
779 else if (bitname == "ty_1") {bit = nTrkNN20 == 2;}
780 else if (bitname == "ty_2") {bit = nTrkNN20 == 3;}
781 else if (bitname == "ty_3") {bit = nTrkNN20 > 3;}
782 else if (bitname == "typ") {bit = nTrkNNSTT > 0;}
783 else if (bitname == "typ6") {bit = nTrkNNSTT6 > 0;}
784 else if (bitname == "typ5") {bit = nTrkNNSTT5 > 0;}
785 else if (bitname == "typ4") {bit = nTrkNNSTT4 > 0;}
786 else if (bitname == "t2_0") {bit = nTrk2D == 1;}
787 else if (bitname == "t2_1") {bit = nTrk2D == 2;}
788 else if (bitname == "t2_2") {bit = nTrk2D == 3;}
789 else if (bitname == "t2_3") {bit = nTrk2D > 3;}
790 else if (bitname == "ts_0") {bit = N_ST == 1;}
791 else if (bitname == "ts_1") {bit = N_ST == 2;}
792 else if (bitname == "ts_2") {bit = N_ST == 3;}
793 else if (bitname == "ts_3") {bit = N_ST > 3;}
794 else if (bitname == "fwd_s") {bit = N_ST_fwd > 0;}
795 else if (bitname == "bwd_s") {bit = N_ST_bwd > 0;}
796 else if (bitname == "cdc_open90") {bit = Trk_open90 == 1;}
797 else if (bitname == "f2f30") {bit = Trk_open30 == 1;}
798 else if (bitname == "cdc_active") {bit = cdc_active;}
799 else if (bitname == "cdc_b2b3") {bit = Trk_b2b_1to3;}
800 else if (bitname == "cdc_b2b5") {bit = Trk_b2b_1to5;}
801 else if (bitname == "cdc_b2b7") {bit = Trk_b2b_1to7;}
802 else if (bitname == "cdc_b2b9") {bit = Trk_b2b_1to9;}
803 else if (bitname == "s2s3") {bit = s2s3 > 0;}
804 else if (bitname == "s2s5") {bit = s2s5 > 0;}
805 else if (bitname == "s2so") {bit = s2so > 0;}
806 else if (bitname == "s2f3") {bit = s2f3 > 0;}
807 else if (bitname == "s2f5") {bit = s2f5 > 0;}
808 else if (bitname == "s2fo") {bit = s2fo > 0;}
809 else if (bitname == "s2f30") {bit = s2f30;}
810 else if (bitname == "s2s30") {bit = s2s30;}
811 else if (bitname == "bwdsb") {bit = bwdsb > 0;}
812 else if (bitname == "bwdnb") {bit = bwdnb > 0;}
813 else if (bitname == "fwdsb") {bit = fwdsb > 0;}
814 else if (bitname == "fwdnb") {bit = fwdnb > 0;}
815 else if (bitname == "brlfb1") {bit = brlfb == 1;}
816 else if (bitname == "brlfb2") {bit = brlfb == 2;}
817 else if (bitname == "brlnb1") {bit = brlnb == 1;}
818 else if (bitname == "brlnb2") {bit = brlnb == 2;}
819 else if (bitname == "seklm_0") {bit = n_seklm == 1;}
820 else if (bitname == "seklm_1") {bit = n_seklm > 1;}
821 else if (bitname == "ieklm") {bit = n_ieklm > 0;}
822 else if (bitname == "secl") {bit = n_secl > 0;}
823 else if (bitname == "iecl") {bit = n_iecl > 0;}
824 else if (bitname == "iecl_0") {bit = n_iecl == 1;}
825 else if (bitname == "iecl_1") {bit = n_iecl > 1;}
826 else if (bitname == "ti") {bit = N_IT > 0;}
827 else if (bitname == "i2fo") {bit = i2fo > 0;}
828 else if (bitname == "i2io") {bit = i2io > 0;}
829 else if (bitname == "ehigh") {bit = ehigh;}
830 else if (bitname == "elow") {bit = elow;}
831 else if (bitname == "elum") {bit = elum;}
832 else if (bitname == "ecl_bha") {bit = ecl_bha;}
833 else if (bitname == "bha_type_0") {bit = bha_type0;}
834 else if (bitname == "bha_type_1") {bit = bha_type1;}
835 else if (bitname == "bha_type_2") {bit = bha_type2;}
836 else if (bitname == "bha_type_3") {bit = bha_type3;}
837 else if (bitname == "bha_type_4") {bit = bha_type4;}
838 else if (bitname == "bha_type_5") {bit = bha_type5;}
839 else if (bitname == "bha_type_6") {bit = bha_type6;}
840 else if (bitname == "bha_type_7") {bit = bha_type7;}
841 else if (bitname == "bha_type_8") {bit = bha_type8;}
842 else if (bitname == "bha_type_9") {bit = bha_type9;}
843 else if (bitname == "bha_type_10") {bit = bha_type10;}
844 else if (bitname == "bha_type_11") {bit = bha_type11;}
845 else if (bitname == "bha_type_12") {bit = bha_type12;}
846 else if (bitname == "bha_type_13") {bit = bha_type13;}
847 else if (bitname == "clst_0") {bit = nclst_0;}
848 else if (bitname == "clst_1") {bit = nclst_1;}
849 else if (bitname == "clst_2") {bit = nclst_2;}
850 else if (bitname == "clst_3") {bit = nclst_3;}
851 else if (bitname == "ecl_bg_0") {bit = ecl_bg_0;}
852 else if (bitname == "ecl_bg_1") {bit = ecl_bg_1;}
853 else if (bitname == "ecl_bg_2") {bit = ecl_bg_2;}
854 else if (bitname == "ecl_active") {bit = ecl_active;}
855 else if (bitname == "ecl_timing_fwd") {bit = ecl_timing_fwd;}
856 else if (bitname == "ecl_timing_brl") {bit = ecl_timing_brl;}
857 else if (bitname == "ecl_timing_bwd") {bit = ecl_timing_bwd;}
858 else if (bitname == "ecl_phys") {bit = ecl_phys;}
859 else if (bitname == "ecl_oflo") {bit = ecl_oflo;}
860 else if (bitname == "ecl_3dbha") {bit = ecl_3dbha;}
861 else if (bitname == "bha_veto") {bit = ecl_3dbha;}
862 else if (bitname == "ecl_lml_0") {bit = ecl_lml_0;}
863 else if (bitname == "ecl_lml_1") {bit = ecl_lml_1;}
864 else if (bitname == "ecl_lml_2") {bit = ecl_lml_2;}
865 else if (bitname == "ecl_lml_3") {bit = ecl_lml_3;}
866 else if (bitname == "ecl_lml_4") {bit = ecl_lml_4;}
867 else if (bitname == "ecl_lml_5") {bit = ecl_lml_5;}
868 else if (bitname == "ecl_lml_6") {bit = ecl_lml_6;}
869 else if (bitname == "ecl_lml_7") {bit = ecl_lml_7;}
870 else if (bitname == "ecl_lml_8") {bit = ecl_lml_8;}
871 else if (bitname == "ecl_lml_9") {bit = ecl_lml_9;}
872 else if (bitname == "ecl_lml_10") {bit = ecl_lml_10;}
873 else if (bitname == "ecl_lml_11") {bit = ecl_lml_11;}
874 else if (bitname == "ecl_lml_12") {bit = ecl_lml_12;}
875 else if (bitname == "ecl_lml_13") {bit = ecl_lml_13;}
876 else if (bitname == "ecl_mumu") {bit = ecl_mumu;}
877 else if (bitname == "ecl_bst") {bit = ecl_bst;}
878 else if (bitname == "ecl_taub2b") {bit = ecltaub2b;}
879 else if (bitname == "ecl_taub2b2") {bit = ecltaub2b2;}
880 else if (bitname == "ecl_taub2b3") {bit = ecltaub2b3;}
881 else if (bitname == "ehigh1") {bit = ehigh1;}
882 else if (bitname == "ehigh2") {bit = ehigh2;}
883 else if (bitname == "ehigh3") {bit = ehigh3;}
884 else if (bitname == "ehigh4") {bit = ehigh4;}
885
886 else if (bitname == "klm_hit") {bit = klm_hit;}
887 else if (bitname == "klm_0") {bit = klm_0;}
888 else if (bitname == "klm_1") {bit = klm_1;}
889 else if (bitname == "klm_2") {bit = klm_2;}
890 else if (bitname == "klmb2b") {bit = klmb2b;}
891 else if (bitname == "eklm_hit") {bit = eklm_hit;}
892 else if (bitname == "eklm_0") {bit = eklm_0;}
893 else if (bitname == "eklm_1") {bit = eklm_1;}
894 else if (bitname == "eklm_2") {bit = eklm_2;}
895 else if (bitname == "eklmb2b") {bit = eklmb2b;}
896 else if (bitname == "ecleklm") {bit = ecleklm;}
897 else if (bitname == "revo") {bit = false;}
898 else if (bitname == "her_kick") {bit = false;}
899 else if (bitname == "ler_kick") {bit = false;}
900 else if (bitname == "bha_delay") {bit = false;}
901 else if (bitname == "pseud_rand") {bit = false;}
902 else if (bitname == "plsin") {bit = false;}
903 else if (bitname == "poissonin") {bit = false;}
904 else if (bitname == "periodin") {bit = false;}
905 else if (bitname == "veto") {bit = false;}
906 else if (bitname == "samhem") {bit = nSameHem1Trk > 0;}
907 else if (bitname == "opohem") {bit = nOppHem1Trk > 0;}
908 else if (bitname == "n1gev_0") {bit = nclst1_0;}
909 else if (bitname == "n1gev_1") {bit = nclst1_1;}
910 else if (bitname == "n1gev_2") {bit = nclst1_2;}
911 else if (bitname == "n1gev_3") {bit = nclst1_3;}
912 else if (bitname == "n2gev_0") {bit = nclst2_0;}
913 else if (bitname == "n2gev_1") {bit = nclst2_1;}
914 else if (bitname == "n2gev_2") {bit = nclst2_2;}
915 else if (bitname == "n2gev_3") {bit = nclst2_3;}
916 else if (bitname == "cdcecl_0") {bit = cdcecl_0;}
917 else if (bitname == "cdcecl_1") {bit = cdcecl_1;}
918 else if (bitname == "cdcecl_2") {bit = cdcecl_2;}
919 else if (bitname == "cdcecl_3") {bit = cdcecl_3;}
920 else if (bitname == "c2gev_0") {bit = c2gev_0;}
921 else if (bitname == "c2gev_1") {bit = c2gev_1;}
922 else if (bitname == "c2gev_2") {bit = c2gev_2;}
923 else if (bitname == "c2gev_3") {bit = c2gev_3;}
924 else if (bitname == "cdcklm_0") {bit = cdcklm_0;}
925 else if (bitname == "cdcklm_1") {bit = cdcklm_1;}
926 else if (bitname == "cdcklm_2") {bit = cdcklm_2;}
927 else if (bitname == "cdcklm_3") {bit = cdcklm_3;}
928 else if (bitname == "d3") {bit = cluster_b2b_1to3 > 0;}
929 else if (bitname == "d5") {bit = cluster_b2b_1to5 > 0;}
930 else if (bitname == "d7") {bit = cluster_b2b_1to7 > 0;}
931 else if (bitname == "d9") {bit = cluster_b2b_1to9 > 0;}
932 else if (bitname == "p3") {bit = Trkcluster_b2b_1to3 > 0;}
933 else if (bitname == "p5") {bit = Trkcluster_b2b_1to5 > 0;}
934 else if (bitname == "p7") {bit = Trkcluster_b2b_1to7 > 0;}
935 else if (bitname == "p9") {bit = Trkcluster_b2b_1to9 > 0;}
936 else if (bitname == "trkfit") {bit = false;}
937 else if (bitname == "injv") {bit = false;}
938 else if (bitname == "nimin0") {bit = false;}
939 else if (bitname == "nimin1") {bit = false;}
940 else if (bitname == "track") {bit = nTrk2D > 0;}
941 else if (bitname == "bha_intrk") {bit = bha_intrk;}
942 else if (bitname == "bha_theta_0") {bit = bha_theta_0;}
943 else if (bitname == "bha_theta_1") {bit = bha_theta_1;}
944 else if (bitname == "ecl_bhapur") {bit = ecl_bhapur;}
945
946
947 else if (bitname == "trkbha1") {bit = trkbha1;}
948 else if (bitname == "trkbha2") {bit = trkbha2;}
949
950
951 else if (bitname == "ta_0") {bit = false;}
952 else if (bitname == "ta_1") {bit = false;}
953 else if (bitname == "ta_2") {bit = false;}
954 else if (bitname == "ta_3") {bit = false;}
955 else if (bitname == "trkflt") {bit = false;}
956 else if (bitname == "tsf0b2b") {bit = false;}
957 else if (bitname == "tsf1b2b") {bit = false;}
958 else if (bitname == "tsf2b2b") {bit = false;}
959 else if (bitname == "grlgg1") {bit = false;}
960 else if (bitname == "grlgg2") {bit = false;}
961
962
963 else if (bitname == "ecl_bhauni") {bit = false;}
964 else if (bitname == "cdctop_0") {bit = false;}
965 else if (bitname == "cdctop_1") {bit = false;}
966 else if (bitname == "cdctop_2") {bit = false;}
967 else if (bitname == "cdctop_3") {bit = false;}
968 else if (bitname == "top_0") {bit = false;}
969 else if (bitname == "top_1") {bit = false;}
970 else if (bitname == "top_2") {bit = false;}
971 else if (bitname == "top_bb") {bit = false;}
972 else if (bitname == "top_active") {bit = false;}
973
974
975 else if (bitname == "itsfb2b") {bit = false;}
976 else if (bitname == "inp156") {bit = false;}
977 else if (bitname == "inp157") {bit = false;}
978 else if (bitname == "inp158") {bit = false;}
979 else if (bitname == "inp159") {bit = false;}
980
981
982 else if (bitname == "ecl_taunn") {bit = ecltaunn;}
983
984
985
986
987 else {
988 bit = false;
991 }
992
993 trgInfo->setInputBits(i, bit);
994 }
995
996}
int getEntries() const
Get the number of objects in the array.
DBObjPtr< TRGGDLDBInputBits > m_InputBitsDB
Data base of GDL input bits.
double atan(double a)
atan for double
double charge(int pdgCode)
Returns electric charge of a particle with given pdg code.