14 #include <trg/cdc/modules/trgcdct3dConverter/TRGCDCT3DConverterModule.h>
16 #include "trg/cdc/Fitter3D.h"
17 #include "trg/cdc/Fitter3DUtility.h"
18 #include "trg/cdc/JSignal.h"
19 #include "trg/cdc/JSignalData.h"
23 using namespace TRGCDCT3DCONVERTERSPACE;
28 string TRGCDCT3DConverterModule::version()
const
30 return string(
"1.00");
33 TRGCDCT3DConverterModule::TRGCDCT3DConverterModule()
37 string desc =
"TRGCDCT3DConverterModule(" +
version() +
")";
40 "Name of the input StoreArray of CDCTriggerSegmentHits.",
41 string(
"CDCTriggerSegmentHits0"));
43 "If true, adds TS to datastore",
46 "Name of the event time object.",
47 string(
"BinnedEventT00"));
49 "If true, adds event time to datastore",
52 "Name of the StoreArray holding the input tracks from the 2D finder.",
53 string(
"TRGCDC2DFinderTracks0"));
55 "If true, adds 2D Finder results to datastore",
58 "Name of the StoreArray holding the 3D output tracks.",
59 string(
"TRGCDC3DFitterTracks0"));
61 "If true, adds 3D results to datastore",
64 "0: use firmware results. 1: Fits with fast TSIM. 2: Fits with firm TSIM",
67 "Name of the StoreArray holding the firmware results.",
68 string(
"TRGCDCT3DUnpackerStores0"));
70 "If not zero, prints detail information.",
72 B2INFO(
"TRGCDCT3DConverter: Constructor done.");
111 vector<vector<vector<vector<double> > > > stTsfFirmwareInfo;
114 vector<vector<vector<double> > > stTsfInfo;
123 vector<vector<vector< double> > > t2DFirmwareInfo;
125 vector<vector<vector<vector<double> > > > t2DTsfFirmwareInfo;
128 vector<vector<double> > t2DInfo;
130 vector<vector<vector<double> > > t2DTsfInfo;
131 filter2DData(t2DFirmwareInfo, t2DTsfFirmwareInfo, t2DInfo, t2DTsfInfo);
138 bool validEventTime = 0;
142 if (result->m_t3dtrk0_evtTimeValid_delay) {
144 eventTime = result->m_t3dtrk0_evtTime_delay;
147 if (validEventTime) {
148 m_eventTime->addBinnedEventT0(eventTime, Const::CDC);
151 if (validEventTime) cout <<
"[ET] valid: 1 eventTime:" << eventTime << endl;
152 else cout <<
"[ET] valid: 0" << endl;
158 vector<vector<vector< double> > > t3DFirmwareInfo;
168 vector<vector<double> > t3DInfo;
213 vector<int> nWires = {160, 160, 192, 224, 256, 288, 320, 352, 384};
215 for (
int i = 0; i < (int)iSL; i++) {
225 int signMask = 1 << (nBits - 1);
226 if (value & signMask) {
227 int mask = (1 << nBits) - 1;
235 if (value == 0)
return 2047;
237 B2WARNING(
"Bug in 2D parser.");
240 if (isSigned)
return int(0.3 * 34 / 30 / 1.5e-4 / abs(
toSigned(value, 7)) * (pow(2, 11) - 0.5) / 2500);
241 else return int(0.3 * 34 / 30 / 1.5e-4 / abs(value) * (pow(2, 11) - 0.5) / 2500);
246 double phiReal = 45 + 90. / 80 * (1 + phi);
247 if (
toSigned(rho, 7) >= 0) phiReal -= 90;
249 if (phiReal > 180) phiReal -= 360;
250 int phiInt = phiReal * (pow(2, 12) - 0.5) / 180;
255 vector<vector<vector<double> > >& tsfInfo)
259 for (
unsigned iSL = 0; iSL < tsfFirmwareInfo.size(); iSL++) {
260 for (
unsigned iTS = 0; iTS < tsfFirmwareInfo[iSL].size(); iTS++) {
261 for (
unsigned iClk = 0; iClk < tsfFirmwareInfo[iSL][iTS].size(); iClk++) {
262 double id = tsfFirmwareInfo[iSL][iTS][iClk][0];
263 double rt = tsfFirmwareInfo[iSL][iTS][iClk][1];
264 double lr = tsfFirmwareInfo[iSL][iTS][iClk][2];
265 double pr = tsfFirmwareInfo[iSL][iTS][iClk][3];
266 double ft = tsfFirmwareInfo[iSL][iTS][iClk][4];
268 vector<double> ts = {id, rt, lr, pr, ft};
269 tsfInfo[iSL].push_back(ts);
307 std::vector<std::vector<std::vector<std::vector<double> > > >& t2DTsfFirmwareInfo, std::vector<std::vector<double> >& t2DInfo,
308 std::vector<std::vector<std::vector<double> > >& t2DTsfInfo)
310 for (
unsigned iTrack = 0; iTrack < t2DFirmwareInfo.size(); iTrack++) {
311 for (
unsigned iClk = 0; iClk < t2DFirmwareInfo[iTrack].size(); iClk++) {
312 if (t2DFirmwareInfo[iTrack][iClk][0] == 0)
continue;
314 if (t2DInfo.size() != 0 && t2DFirmwareInfo[iTrack][iClk][1] == 1)
continue;
316 vector<double> track = {t2DFirmwareInfo[iTrack][iClk][2], t2DFirmwareInfo[iTrack][iClk][3], t2DFirmwareInfo[iTrack][iClk][4]};
317 t2DInfo.push_back(track);
319 vector<vector< double> > axTSInfo(5, vector<double> (5));
320 for (
unsigned iAx = 0; iAx < t2DTsfFirmwareInfo[iTrack][iClk].size(); iAx++) {
321 double id = t2DTsfFirmwareInfo[iTrack][iClk][iAx][0];
322 double rt = t2DTsfFirmwareInfo[iTrack][iClk][iAx][1];
323 double lr = t2DTsfFirmwareInfo[iTrack][iClk][iAx][2];
324 double pr = t2DTsfFirmwareInfo[iTrack][iClk][iAx][3];
326 axTSInfo[iAx][0] = id;
327 axTSInfo[iAx][1] = rt;
328 axTSInfo[iAx][2] = lr;
329 axTSInfo[iAx][3] = pr;
330 axTSInfo[iAx][4] = -9999;
332 t2DTsfInfo.push_back(axTSInfo);
394 std::vector<std::vector<std::vector<double> > >& t2DTsfInfo)
397 for (
unsigned iTrack = 0; iTrack < t2DInfo.size(); ++iTrack) {
398 double charge = 0, phi0_i = 0, omega = 0, chi2D = 0;
401 charge = t2DInfo[iTrack][0] == 2 ? -1 : 1;
405 phi0_i = (45 + 90. / 80 * (1 + t2DInfo[iTrack][2])) / 180 * M_PI;
408 omega =
toSigned(t2DInfo[iTrack][1], 7) * 1.5e-4 * 30 / 0.3 / 34;
413 if (
m_isVerbose) cout <<
"[2D] iTrack:" << iTrack <<
" charge:" << charge <<
" phi0_i:" << phi0_i <<
" " << phi0_i * 180 / M_PI <<
414 " omega:" << omega <<
" pt:" << charge / omega * 0.3 * 1.5 * 0.01 << endl;
416 for (
unsigned iAx = 0; iAx < t2DTsfInfo[iTrack].size(); ++iAx) {
417 double rawId = t2DTsfInfo[iTrack][iAx][0];
419 if (iAx != 4)
id = rawId;
422 if (
id < 0)
id += 384;
424 double rt = t2DTsfInfo[iTrack][iAx][1];
425 double lr = t2DTsfInfo[iTrack][iAx][2];
426 double pr = t2DTsfInfo[iTrack][iAx][3];
427 double ft = t2DTsfInfo[iTrack][iAx][4];
428 if (pr == 0)
continue;
429 CDCHit prHit(rt, 0, iAx * 2, pr == 3 ? 2 : 3,
id);
430 m_hits.appendNew(prHit,
toTSID(
int(iAx * 2),
id), pr, lr, rt, 0, ft);
432 if (
m_isVerbose) cout <<
"[2D] iTrack: " << iTrack <<
" iAx:" << iAx <<
" id:" <<
id <<
" rt:" << rt <<
" lr:" << lr <<
" pr:" << pr
433 <<
" ft:" << ft << endl;
442 for (
unsigned iSL = 0; iSL < tsfInfo.size(); iSL++) {
443 for (
unsigned iTS = 0; iTS < tsfInfo[iSL].size(); iTS++) {
444 double id = tsfInfo[iSL][iTS][0];
445 double rt = tsfInfo[iSL][iTS][1];
446 double lr = tsfInfo[iSL][iTS][2];
447 double pr = tsfInfo[iSL][iTS][3];
448 double ft = tsfInfo[iSL][iTS][4];
449 if (
m_isVerbose) cout <<
"[TSF] iSL:" << iSL <<
" iTS:" << iTS <<
" id:" <<
id <<
" rt:" << rt <<
" lr:" << lr <<
" pr:" << pr <<
450 " ft:" << ft << endl;
451 CDCHit prHit(rt, 0, iSL * 2 + isSt, pr == 3 ? 2 : 3,
id);
452 m_hits.appendNew(prHit,
toTSID(
int(iSL * 2 + isSt),
id), pr, lr, rt, 0, ft);
459 tsfInfo.resize(4, vector<vector<vector<double> > > (15, vector<vector<double> > (48, vector<double> (4))));
463 tsfInfo[0][0][iClk][0] = result->m_tsf1ts0_id;
464 tsfInfo[0][0][iClk][1] = result->m_tsf1ts0_rt;
465 tsfInfo[0][0][iClk][2] = result->m_tsf1ts0_lr;
466 tsfInfo[0][0][iClk][3] = result->m_tsf1ts0_pr;
467 tsfInfo[0][0][iClk][4] = result->m_tsf1_cc;
468 tsfInfo[0][1][iClk][0] = result->m_tsf1ts1_id;
469 tsfInfo[0][1][iClk][1] = result->m_tsf1ts1_rt;
470 tsfInfo[0][1][iClk][2] = result->m_tsf1ts1_lr;
471 tsfInfo[0][1][iClk][3] = result->m_tsf1ts1_pr;
472 tsfInfo[0][1][iClk][4] = result->m_tsf1_cc;
473 tsfInfo[0][2][iClk][0] = result->m_tsf1ts2_id;
474 tsfInfo[0][2][iClk][1] = result->m_tsf1ts2_rt;
475 tsfInfo[0][2][iClk][2] = result->m_tsf1ts2_lr;
476 tsfInfo[0][2][iClk][3] = result->m_tsf1ts2_pr;
477 tsfInfo[0][2][iClk][4] = result->m_tsf1_cc;
478 tsfInfo[0][3][iClk][0] = result->m_tsf1ts3_id;
479 tsfInfo[0][3][iClk][1] = result->m_tsf1ts3_rt;
480 tsfInfo[0][3][iClk][2] = result->m_tsf1ts3_lr;
481 tsfInfo[0][3][iClk][3] = result->m_tsf1ts3_pr;
482 tsfInfo[0][3][iClk][4] = result->m_tsf1_cc;
483 tsfInfo[0][4][iClk][0] = result->m_tsf1ts4_id;
484 tsfInfo[0][4][iClk][1] = result->m_tsf1ts4_rt;
485 tsfInfo[0][4][iClk][2] = result->m_tsf1ts4_lr;
486 tsfInfo[0][4][iClk][3] = result->m_tsf1ts4_pr;
487 tsfInfo[0][4][iClk][4] = result->m_tsf1_cc;
488 tsfInfo[0][5][iClk][0] = result->m_tsf1ts5_id;
489 tsfInfo[0][5][iClk][1] = result->m_tsf1ts5_rt;
490 tsfInfo[0][5][iClk][2] = result->m_tsf1ts5_lr;
491 tsfInfo[0][5][iClk][3] = result->m_tsf1ts5_pr;
492 tsfInfo[0][5][iClk][4] = result->m_tsf1_cc;
493 tsfInfo[0][6][iClk][0] = result->m_tsf1ts6_id;
494 tsfInfo[0][6][iClk][1] = result->m_tsf1ts6_rt;
495 tsfInfo[0][6][iClk][2] = result->m_tsf1ts6_lr;
496 tsfInfo[0][6][iClk][3] = result->m_tsf1ts6_pr;
497 tsfInfo[0][6][iClk][4] = result->m_tsf1_cc;
498 tsfInfo[0][7][iClk][0] = result->m_tsf1ts7_id;
499 tsfInfo[0][7][iClk][1] = result->m_tsf1ts7_rt;
500 tsfInfo[0][7][iClk][2] = result->m_tsf1ts7_lr;
501 tsfInfo[0][7][iClk][3] = result->m_tsf1ts7_pr;
502 tsfInfo[0][7][iClk][4] = result->m_tsf1_cc;
503 tsfInfo[0][8][iClk][0] = result->m_tsf1ts8_id;
504 tsfInfo[0][8][iClk][1] = result->m_tsf1ts8_rt;
505 tsfInfo[0][8][iClk][2] = result->m_tsf1ts8_lr;
506 tsfInfo[0][8][iClk][3] = result->m_tsf1ts8_pr;
507 tsfInfo[0][8][iClk][4] = result->m_tsf1_cc;
508 tsfInfo[0][9][iClk][0] = result->m_tsf1ts9_id;
509 tsfInfo[0][9][iClk][1] = result->m_tsf1ts9_rt;
510 tsfInfo[0][9][iClk][2] = result->m_tsf1ts9_lr;
511 tsfInfo[0][9][iClk][3] = result->m_tsf1ts9_pr;
512 tsfInfo[0][9][iClk][4] = result->m_tsf1_cc;
513 tsfInfo[0][10][iClk][0] = result->m_tsf1ts10_id;
514 tsfInfo[0][10][iClk][1] = result->m_tsf1ts10_rt;
515 tsfInfo[0][10][iClk][2] = result->m_tsf1ts10_lr;
516 tsfInfo[0][10][iClk][3] = result->m_tsf1ts10_pr;
517 tsfInfo[0][10][iClk][4] = result->m_tsf1_cc;
518 tsfInfo[0][11][iClk][0] = result->m_tsf1ts11_id;
519 tsfInfo[0][11][iClk][1] = result->m_tsf1ts11_rt;
520 tsfInfo[0][11][iClk][2] = result->m_tsf1ts11_lr;
521 tsfInfo[0][11][iClk][3] = result->m_tsf1ts11_pr;
522 tsfInfo[0][11][iClk][4] = result->m_tsf1_cc;
523 tsfInfo[0][12][iClk][0] = result->m_tsf1ts12_id;
524 tsfInfo[0][12][iClk][1] = result->m_tsf1ts12_rt;
525 tsfInfo[0][12][iClk][2] = result->m_tsf1ts12_lr;
526 tsfInfo[0][12][iClk][3] = result->m_tsf1ts12_pr;
527 tsfInfo[0][12][iClk][4] = result->m_tsf1_cc;
528 tsfInfo[0][13][iClk][0] = result->m_tsf1ts13_id;
529 tsfInfo[0][13][iClk][1] = result->m_tsf1ts13_rt;
530 tsfInfo[0][13][iClk][2] = result->m_tsf1ts13_lr;
531 tsfInfo[0][13][iClk][3] = result->m_tsf1ts13_pr;
532 tsfInfo[0][13][iClk][4] = result->m_tsf1_cc;
533 tsfInfo[0][14][iClk][0] = result->m_tsf1ts14_id;
534 tsfInfo[0][14][iClk][1] = result->m_tsf1ts14_rt;
535 tsfInfo[0][14][iClk][2] = result->m_tsf1ts14_lr;
536 tsfInfo[0][14][iClk][3] = result->m_tsf1ts14_pr;
537 tsfInfo[0][14][iClk][4] = result->m_tsf1_cc;
539 tsfInfo[1][0][iClk][0] = result->m_tsf3ts0_id;
540 tsfInfo[1][0][iClk][1] = result->m_tsf3ts0_rt;
541 tsfInfo[1][0][iClk][2] = result->m_tsf3ts0_lr;
542 tsfInfo[1][0][iClk][3] = result->m_tsf3ts0_pr;
543 tsfInfo[1][0][iClk][4] = result->m_tsf3_cc;
544 tsfInfo[1][1][iClk][0] = result->m_tsf3ts1_id;
545 tsfInfo[1][1][iClk][1] = result->m_tsf3ts1_rt;
546 tsfInfo[1][1][iClk][2] = result->m_tsf3ts1_lr;
547 tsfInfo[1][1][iClk][3] = result->m_tsf3ts1_pr;
548 tsfInfo[1][1][iClk][4] = result->m_tsf3_cc;
549 tsfInfo[1][2][iClk][0] = result->m_tsf3ts2_id;
550 tsfInfo[1][2][iClk][1] = result->m_tsf3ts2_rt;
551 tsfInfo[1][2][iClk][2] = result->m_tsf3ts2_lr;
552 tsfInfo[1][2][iClk][3] = result->m_tsf3ts2_pr;
553 tsfInfo[1][2][iClk][4] = result->m_tsf3_cc;
554 tsfInfo[1][3][iClk][0] = result->m_tsf3ts3_id;
555 tsfInfo[1][3][iClk][1] = result->m_tsf3ts3_rt;
556 tsfInfo[1][3][iClk][2] = result->m_tsf3ts3_lr;
557 tsfInfo[1][3][iClk][3] = result->m_tsf3ts3_pr;
558 tsfInfo[1][3][iClk][4] = result->m_tsf3_cc;
559 tsfInfo[1][4][iClk][0] = result->m_tsf3ts4_id;
560 tsfInfo[1][4][iClk][1] = result->m_tsf3ts4_rt;
561 tsfInfo[1][4][iClk][2] = result->m_tsf3ts4_lr;
562 tsfInfo[1][4][iClk][3] = result->m_tsf3ts4_pr;
563 tsfInfo[1][4][iClk][4] = result->m_tsf3_cc;
564 tsfInfo[1][5][iClk][0] = result->m_tsf3ts5_id;
565 tsfInfo[1][5][iClk][1] = result->m_tsf3ts5_rt;
566 tsfInfo[1][5][iClk][2] = result->m_tsf3ts5_lr;
567 tsfInfo[1][5][iClk][3] = result->m_tsf3ts5_pr;
568 tsfInfo[1][5][iClk][4] = result->m_tsf3_cc;
569 tsfInfo[1][6][iClk][0] = result->m_tsf3ts6_id;
570 tsfInfo[1][6][iClk][1] = result->m_tsf3ts6_rt;
571 tsfInfo[1][6][iClk][2] = result->m_tsf3ts6_lr;
572 tsfInfo[1][6][iClk][3] = result->m_tsf3ts6_pr;
573 tsfInfo[1][6][iClk][4] = result->m_tsf3_cc;
574 tsfInfo[1][7][iClk][0] = result->m_tsf3ts7_id;
575 tsfInfo[1][7][iClk][1] = result->m_tsf3ts7_rt;
576 tsfInfo[1][7][iClk][2] = result->m_tsf3ts7_lr;
577 tsfInfo[1][7][iClk][3] = result->m_tsf3ts7_pr;
578 tsfInfo[1][7][iClk][4] = result->m_tsf3_cc;
579 tsfInfo[1][8][iClk][0] = result->m_tsf3ts8_id;
580 tsfInfo[1][8][iClk][1] = result->m_tsf3ts8_rt;
581 tsfInfo[1][8][iClk][2] = result->m_tsf3ts8_lr;
582 tsfInfo[1][8][iClk][3] = result->m_tsf3ts8_pr;
583 tsfInfo[1][8][iClk][4] = result->m_tsf3_cc;
584 tsfInfo[1][9][iClk][0] = result->m_tsf3ts9_id;
585 tsfInfo[1][9][iClk][1] = result->m_tsf3ts9_rt;
586 tsfInfo[1][9][iClk][2] = result->m_tsf3ts9_lr;
587 tsfInfo[1][9][iClk][3] = result->m_tsf3ts9_pr;
588 tsfInfo[1][9][iClk][4] = result->m_tsf3_cc;
589 tsfInfo[1][10][iClk][0] = result->m_tsf3ts10_id;
590 tsfInfo[1][10][iClk][1] = result->m_tsf3ts10_rt;
591 tsfInfo[1][10][iClk][2] = result->m_tsf3ts10_lr;
592 tsfInfo[1][10][iClk][3] = result->m_tsf3ts10_pr;
593 tsfInfo[1][10][iClk][4] = result->m_tsf3_cc;
594 tsfInfo[1][11][iClk][0] = result->m_tsf3ts11_id;
595 tsfInfo[1][11][iClk][1] = result->m_tsf3ts11_rt;
596 tsfInfo[1][11][iClk][2] = result->m_tsf3ts11_lr;
597 tsfInfo[1][11][iClk][3] = result->m_tsf3ts11_pr;
598 tsfInfo[1][11][iClk][4] = result->m_tsf3_cc;
599 tsfInfo[1][12][iClk][0] = result->m_tsf3ts12_id;
600 tsfInfo[1][12][iClk][1] = result->m_tsf3ts12_rt;
601 tsfInfo[1][12][iClk][2] = result->m_tsf3ts12_lr;
602 tsfInfo[1][12][iClk][3] = result->m_tsf3ts12_pr;
603 tsfInfo[1][12][iClk][4] = result->m_tsf3_cc;
604 tsfInfo[1][13][iClk][0] = result->m_tsf3ts13_id;
605 tsfInfo[1][13][iClk][1] = result->m_tsf3ts13_rt;
606 tsfInfo[1][13][iClk][2] = result->m_tsf3ts13_lr;
607 tsfInfo[1][13][iClk][3] = result->m_tsf3ts13_pr;
608 tsfInfo[1][13][iClk][4] = result->m_tsf3_cc;
609 tsfInfo[1][14][iClk][0] = result->m_tsf3ts14_id;
610 tsfInfo[1][14][iClk][1] = result->m_tsf3ts14_rt;
611 tsfInfo[1][14][iClk][2] = result->m_tsf3ts14_lr;
612 tsfInfo[1][14][iClk][3] = result->m_tsf3ts14_pr;
613 tsfInfo[1][14][iClk][4] = result->m_tsf3_cc;
615 tsfInfo[2][0][iClk][0] = result->m_tsf5ts0_id;
616 tsfInfo[2][0][iClk][1] = result->m_tsf5ts0_rt;
617 tsfInfo[2][0][iClk][2] = result->m_tsf5ts0_lr;
618 tsfInfo[2][0][iClk][3] = result->m_tsf5ts0_pr;
619 tsfInfo[2][0][iClk][4] = result->m_tsf5_cc;
620 tsfInfo[2][1][iClk][0] = result->m_tsf5ts1_id;
621 tsfInfo[2][1][iClk][1] = result->m_tsf5ts1_rt;
622 tsfInfo[2][1][iClk][2] = result->m_tsf5ts1_lr;
623 tsfInfo[2][1][iClk][3] = result->m_tsf5ts1_pr;
624 tsfInfo[2][1][iClk][4] = result->m_tsf5_cc;
625 tsfInfo[2][2][iClk][0] = result->m_tsf5ts2_id;
626 tsfInfo[2][2][iClk][1] = result->m_tsf5ts2_rt;
627 tsfInfo[2][2][iClk][2] = result->m_tsf5ts2_lr;
628 tsfInfo[2][2][iClk][3] = result->m_tsf5ts2_pr;
629 tsfInfo[2][2][iClk][4] = result->m_tsf5_cc;
630 tsfInfo[2][3][iClk][0] = result->m_tsf5ts3_id;
631 tsfInfo[2][3][iClk][1] = result->m_tsf5ts3_rt;
632 tsfInfo[2][3][iClk][2] = result->m_tsf5ts3_lr;
633 tsfInfo[2][3][iClk][3] = result->m_tsf5ts3_pr;
634 tsfInfo[2][3][iClk][4] = result->m_tsf5_cc;
635 tsfInfo[2][4][iClk][0] = result->m_tsf5ts4_id;
636 tsfInfo[2][4][iClk][1] = result->m_tsf5ts4_rt;
637 tsfInfo[2][4][iClk][2] = result->m_tsf5ts4_lr;
638 tsfInfo[2][4][iClk][3] = result->m_tsf5ts4_pr;
639 tsfInfo[2][4][iClk][4] = result->m_tsf5_cc;
640 tsfInfo[2][5][iClk][0] = result->m_tsf5ts5_id;
641 tsfInfo[2][5][iClk][1] = result->m_tsf5ts5_rt;
642 tsfInfo[2][5][iClk][2] = result->m_tsf5ts5_lr;
643 tsfInfo[2][5][iClk][3] = result->m_tsf5ts5_pr;
644 tsfInfo[2][5][iClk][4] = result->m_tsf5_cc;
645 tsfInfo[2][6][iClk][0] = result->m_tsf5ts6_id;
646 tsfInfo[2][6][iClk][1] = result->m_tsf5ts6_rt;
647 tsfInfo[2][6][iClk][2] = result->m_tsf5ts6_lr;
648 tsfInfo[2][6][iClk][3] = result->m_tsf5ts6_pr;
649 tsfInfo[2][6][iClk][4] = result->m_tsf5_cc;
650 tsfInfo[2][7][iClk][0] = result->m_tsf5ts7_id;
651 tsfInfo[2][7][iClk][1] = result->m_tsf5ts7_rt;
652 tsfInfo[2][7][iClk][2] = result->m_tsf5ts7_lr;
653 tsfInfo[2][7][iClk][3] = result->m_tsf5ts7_pr;
654 tsfInfo[2][7][iClk][4] = result->m_tsf5_cc;
655 tsfInfo[2][8][iClk][0] = result->m_tsf5ts8_id;
656 tsfInfo[2][8][iClk][1] = result->m_tsf5ts8_rt;
657 tsfInfo[2][8][iClk][2] = result->m_tsf5ts8_lr;
658 tsfInfo[2][8][iClk][3] = result->m_tsf5ts8_pr;
659 tsfInfo[2][8][iClk][4] = result->m_tsf5_cc;
660 tsfInfo[2][9][iClk][0] = result->m_tsf5ts9_id;
661 tsfInfo[2][9][iClk][1] = result->m_tsf5ts9_rt;
662 tsfInfo[2][9][iClk][2] = result->m_tsf5ts9_lr;
663 tsfInfo[2][9][iClk][3] = result->m_tsf5ts9_pr;
664 tsfInfo[2][9][iClk][4] = result->m_tsf5_cc;
665 tsfInfo[2][10][iClk][0] = result->m_tsf5ts10_id;
666 tsfInfo[2][10][iClk][1] = result->m_tsf5ts10_rt;
667 tsfInfo[2][10][iClk][2] = result->m_tsf5ts10_lr;
668 tsfInfo[2][10][iClk][3] = result->m_tsf5ts10_pr;
669 tsfInfo[2][10][iClk][4] = result->m_tsf5_cc;
670 tsfInfo[2][11][iClk][0] = result->m_tsf5ts11_id;
671 tsfInfo[2][11][iClk][1] = result->m_tsf5ts11_rt;
672 tsfInfo[2][11][iClk][2] = result->m_tsf5ts11_lr;
673 tsfInfo[2][11][iClk][3] = result->m_tsf5ts11_pr;
674 tsfInfo[2][11][iClk][4] = result->m_tsf5_cc;
675 tsfInfo[2][12][iClk][0] = result->m_tsf5ts12_id;
676 tsfInfo[2][12][iClk][1] = result->m_tsf5ts12_rt;
677 tsfInfo[2][12][iClk][2] = result->m_tsf5ts12_lr;
678 tsfInfo[2][12][iClk][3] = result->m_tsf5ts12_pr;
679 tsfInfo[2][12][iClk][4] = result->m_tsf5_cc;
680 tsfInfo[2][13][iClk][0] = result->m_tsf5ts13_id;
681 tsfInfo[2][13][iClk][1] = result->m_tsf5ts13_rt;
682 tsfInfo[2][13][iClk][2] = result->m_tsf5ts13_lr;
683 tsfInfo[2][13][iClk][3] = result->m_tsf5ts13_pr;
684 tsfInfo[2][13][iClk][4] = result->m_tsf5_cc;
685 tsfInfo[2][14][iClk][0] = result->m_tsf5ts14_id;
686 tsfInfo[2][14][iClk][1] = result->m_tsf5ts14_rt;
687 tsfInfo[2][14][iClk][2] = result->m_tsf5ts14_lr;
688 tsfInfo[2][14][iClk][3] = result->m_tsf5ts14_pr;
689 tsfInfo[2][14][iClk][4] = result->m_tsf5_cc;
691 tsfInfo[3][0][iClk][0] = result->m_tsf7ts0_id;
692 tsfInfo[3][0][iClk][1] = result->m_tsf7ts0_rt;
693 tsfInfo[3][0][iClk][2] = result->m_tsf7ts0_lr;
694 tsfInfo[3][0][iClk][3] = result->m_tsf7ts0_pr;
695 tsfInfo[3][0][iClk][4] = result->m_tsf7_cc;
696 tsfInfo[3][1][iClk][0] = result->m_tsf7ts1_id;
697 tsfInfo[3][1][iClk][1] = result->m_tsf7ts1_rt;
698 tsfInfo[3][1][iClk][2] = result->m_tsf7ts1_lr;
699 tsfInfo[3][1][iClk][3] = result->m_tsf7ts1_pr;
700 tsfInfo[3][1][iClk][4] = result->m_tsf7_cc;
701 tsfInfo[3][2][iClk][0] = result->m_tsf7ts2_id;
702 tsfInfo[3][2][iClk][1] = result->m_tsf7ts2_rt;
703 tsfInfo[3][2][iClk][2] = result->m_tsf7ts2_lr;
704 tsfInfo[3][2][iClk][3] = result->m_tsf7ts2_pr;
705 tsfInfo[3][2][iClk][4] = result->m_tsf7_cc;
706 tsfInfo[3][3][iClk][0] = result->m_tsf7ts3_id;
707 tsfInfo[3][3][iClk][1] = result->m_tsf7ts3_rt;
708 tsfInfo[3][3][iClk][2] = result->m_tsf7ts3_lr;
709 tsfInfo[3][3][iClk][3] = result->m_tsf7ts3_pr;
710 tsfInfo[3][3][iClk][4] = result->m_tsf7_cc;
711 tsfInfo[3][4][iClk][0] = result->m_tsf7ts4_id;
712 tsfInfo[3][4][iClk][1] = result->m_tsf7ts4_rt;
713 tsfInfo[3][4][iClk][2] = result->m_tsf7ts4_lr;
714 tsfInfo[3][4][iClk][3] = result->m_tsf7ts4_pr;
715 tsfInfo[3][4][iClk][4] = result->m_tsf7_cc;
716 tsfInfo[3][5][iClk][0] = result->m_tsf7ts5_id;
717 tsfInfo[3][5][iClk][1] = result->m_tsf7ts5_rt;
718 tsfInfo[3][5][iClk][2] = result->m_tsf7ts5_lr;
719 tsfInfo[3][5][iClk][3] = result->m_tsf7ts5_pr;
720 tsfInfo[3][5][iClk][4] = result->m_tsf7_cc;
721 tsfInfo[3][6][iClk][0] = result->m_tsf7ts6_id;
722 tsfInfo[3][6][iClk][1] = result->m_tsf7ts6_rt;
723 tsfInfo[3][6][iClk][2] = result->m_tsf7ts6_lr;
724 tsfInfo[3][6][iClk][3] = result->m_tsf7ts6_pr;
725 tsfInfo[3][6][iClk][4] = result->m_tsf7_cc;
726 tsfInfo[3][7][iClk][0] = result->m_tsf7ts7_id;
727 tsfInfo[3][7][iClk][1] = result->m_tsf7ts7_rt;
728 tsfInfo[3][7][iClk][2] = result->m_tsf7ts7_lr;
729 tsfInfo[3][7][iClk][3] = result->m_tsf7ts7_pr;
730 tsfInfo[3][7][iClk][4] = result->m_tsf7_cc;
731 tsfInfo[3][8][iClk][0] = result->m_tsf7ts8_id;
732 tsfInfo[3][8][iClk][1] = result->m_tsf7ts8_rt;
733 tsfInfo[3][8][iClk][2] = result->m_tsf7ts8_lr;
734 tsfInfo[3][8][iClk][3] = result->m_tsf7ts8_pr;
735 tsfInfo[3][8][iClk][4] = result->m_tsf7_cc;
736 tsfInfo[3][9][iClk][0] = result->m_tsf7ts9_id;
737 tsfInfo[3][9][iClk][1] = result->m_tsf7ts9_rt;
738 tsfInfo[3][9][iClk][2] = result->m_tsf7ts9_lr;
739 tsfInfo[3][9][iClk][3] = result->m_tsf7ts9_pr;
740 tsfInfo[3][9][iClk][4] = result->m_tsf7_cc;
741 tsfInfo[3][10][iClk][0] = result->m_tsf7ts10_id;
742 tsfInfo[3][10][iClk][1] = result->m_tsf7ts10_rt;
743 tsfInfo[3][10][iClk][2] = result->m_tsf7ts10_lr;
744 tsfInfo[3][10][iClk][3] = result->m_tsf7ts10_pr;
745 tsfInfo[3][10][iClk][4] = result->m_tsf7_cc;
746 tsfInfo[3][11][iClk][0] = result->m_tsf7ts11_id;
747 tsfInfo[3][11][iClk][1] = result->m_tsf7ts11_rt;
748 tsfInfo[3][11][iClk][2] = result->m_tsf7ts11_lr;
749 tsfInfo[3][11][iClk][3] = result->m_tsf7ts11_pr;
750 tsfInfo[3][11][iClk][4] = result->m_tsf7_cc;
751 tsfInfo[3][12][iClk][0] = result->m_tsf7ts12_id;
752 tsfInfo[3][12][iClk][1] = result->m_tsf7ts12_rt;
753 tsfInfo[3][12][iClk][2] = result->m_tsf7ts12_lr;
754 tsfInfo[3][12][iClk][3] = result->m_tsf7ts12_pr;
755 tsfInfo[3][12][iClk][4] = result->m_tsf7_cc;
756 tsfInfo[3][13][iClk][0] = result->m_tsf7ts13_id;
757 tsfInfo[3][13][iClk][1] = result->m_tsf7ts13_rt;
758 tsfInfo[3][13][iClk][2] = result->m_tsf7ts13_lr;
759 tsfInfo[3][13][iClk][3] = result->m_tsf7ts13_pr;
760 tsfInfo[3][13][iClk][4] = result->m_tsf7_cc;
761 tsfInfo[3][14][iClk][0] = result->m_tsf7ts14_id;
762 tsfInfo[3][14][iClk][1] = result->m_tsf7ts14_rt;
763 tsfInfo[3][14][iClk][2] = result->m_tsf7ts14_lr;
764 tsfInfo[3][14][iClk][3] = result->m_tsf7ts14_pr;
765 tsfInfo[3][14][iClk][4] = result->m_tsf7_cc;
773 vector<vector<vector<vector<double> > > >& t2DTsfFirmwareInfo)
775 t2DFirmwareInfo.resize(4, vector<vector<double> > (48, vector<double> (5)));
776 t2DTsfFirmwareInfo.resize(4, vector<vector<vector<double> > > (48, vector<vector<double> > (5, vector<double> (4))));
779 bitset<6> t2d_fnf(
int(result->m_t2d_fnf));
780 bitset<6> t2d_oldfnf(
int(result->m_t3d_2doldtrk));
784 t2DFirmwareInfo[0][iClk][0] = t2d_fnf[5];
785 t2DFirmwareInfo[0][iClk][1] = t2d_oldfnf[5];;
786 t2DFirmwareInfo[0][iClk][2] = result->m_t2d0_charge;
787 t2DFirmwareInfo[0][iClk][3] = result->m_t2d0_rho_s;
788 t2DFirmwareInfo[0][iClk][4] = result->m_t2d0_phi;
790 t2DFirmwareInfo[1][iClk][0] = t2d_fnf[4];
791 t2DFirmwareInfo[0][iClk][1] = t2d_oldfnf[4];;
792 t2DFirmwareInfo[1][iClk][2] = result->m_t2d1_charge;
793 t2DFirmwareInfo[1][iClk][3] = result->m_t2d1_rho_s;
794 t2DFirmwareInfo[1][iClk][4] = result->m_t2d1_phi;
796 t2DFirmwareInfo[2][iClk][0] = t2d_fnf[3];
797 t2DFirmwareInfo[0][iClk][1] = t2d_oldfnf[3];;
798 t2DFirmwareInfo[2][iClk][2] = result->m_t2d2_charge;
799 t2DFirmwareInfo[2][iClk][3] = result->m_t2d2_rho_s;
800 t2DFirmwareInfo[2][iClk][4] = result->m_t2d2_phi;
802 t2DFirmwareInfo[3][iClk][0] = t2d_fnf[2];
803 t2DFirmwareInfo[0][iClk][1] = t2d_oldfnf[2];;
804 t2DFirmwareInfo[3][iClk][2] = result->m_t2d3_charge;
805 t2DFirmwareInfo[3][iClk][3] = result->m_t2d3_rho_s;
806 t2DFirmwareInfo[3][iClk][4] = result->m_t2d3_phi;
808 t2DTsfFirmwareInfo[0][iClk][0][0] = result->m_t2d0ts0_id;
809 t2DTsfFirmwareInfo[0][iClk][0][1] = result->m_t2d0ts0_rt;
810 t2DTsfFirmwareInfo[0][iClk][0][2] = result->m_t2d0ts0_lr;
811 t2DTsfFirmwareInfo[0][iClk][0][3] = result->m_t2d0ts0_pr;
812 t2DTsfFirmwareInfo[0][iClk][1][0] = result->m_t2d0ts2_id;
813 t2DTsfFirmwareInfo[0][iClk][1][1] = result->m_t2d0ts2_rt;
814 t2DTsfFirmwareInfo[0][iClk][1][2] = result->m_t2d0ts2_lr;
815 t2DTsfFirmwareInfo[0][iClk][1][3] = result->m_t2d0ts2_pr;
816 t2DTsfFirmwareInfo[0][iClk][2][0] = result->m_t2d0ts4_id;
817 t2DTsfFirmwareInfo[0][iClk][2][1] = result->m_t2d0ts4_rt;
818 t2DTsfFirmwareInfo[0][iClk][2][2] = result->m_t2d0ts4_lr;
819 t2DTsfFirmwareInfo[0][iClk][2][3] = result->m_t2d0ts4_pr;
820 t2DTsfFirmwareInfo[0][iClk][3][0] = result->m_t2d0ts6_id;
821 t2DTsfFirmwareInfo[0][iClk][3][1] = result->m_t2d0ts6_rt;
822 t2DTsfFirmwareInfo[0][iClk][3][2] = result->m_t2d0ts6_lr;
823 t2DTsfFirmwareInfo[0][iClk][3][3] = result->m_t2d0ts6_pr;
824 t2DTsfFirmwareInfo[0][iClk][4][0] = result->m_t2d0ts8_id;
825 t2DTsfFirmwareInfo[0][iClk][4][1] = result->m_t2d0ts8_rt;
826 t2DTsfFirmwareInfo[0][iClk][4][2] = result->m_t2d0ts8_lr;
827 t2DTsfFirmwareInfo[0][iClk][4][3] = result->m_t2d0ts8_pr;
829 t2DTsfFirmwareInfo[1][iClk][0][0] = result->m_t2d1ts0_id;
830 t2DTsfFirmwareInfo[1][iClk][0][1] = result->m_t2d1ts0_rt;
831 t2DTsfFirmwareInfo[1][iClk][0][2] = result->m_t2d1ts0_lr;
832 t2DTsfFirmwareInfo[1][iClk][0][3] = result->m_t2d1ts0_pr;
833 t2DTsfFirmwareInfo[1][iClk][1][0] = result->m_t2d1ts2_id;
834 t2DTsfFirmwareInfo[1][iClk][1][1] = result->m_t2d1ts2_rt;
835 t2DTsfFirmwareInfo[1][iClk][1][2] = result->m_t2d1ts2_lr;
836 t2DTsfFirmwareInfo[1][iClk][1][3] = result->m_t2d1ts2_pr;
837 t2DTsfFirmwareInfo[1][iClk][2][0] = result->m_t2d1ts4_id;
838 t2DTsfFirmwareInfo[1][iClk][2][1] = result->m_t2d1ts4_rt;
839 t2DTsfFirmwareInfo[1][iClk][2][2] = result->m_t2d1ts4_lr;
840 t2DTsfFirmwareInfo[1][iClk][2][3] = result->m_t2d1ts4_pr;
841 t2DTsfFirmwareInfo[1][iClk][3][0] = result->m_t2d1ts6_id;
842 t2DTsfFirmwareInfo[1][iClk][3][1] = result->m_t2d1ts6_rt;
843 t2DTsfFirmwareInfo[1][iClk][3][2] = result->m_t2d1ts6_lr;
844 t2DTsfFirmwareInfo[1][iClk][3][3] = result->m_t2d1ts6_pr;
845 t2DTsfFirmwareInfo[1][iClk][4][0] = result->m_t2d1ts8_id;
846 t2DTsfFirmwareInfo[1][iClk][4][1] = result->m_t2d1ts8_rt;
847 t2DTsfFirmwareInfo[1][iClk][4][2] = result->m_t2d1ts8_lr;
848 t2DTsfFirmwareInfo[1][iClk][4][3] = result->m_t2d1ts8_pr;
850 t2DTsfFirmwareInfo[2][iClk][0][0] = result->m_t2d2ts0_id;
851 t2DTsfFirmwareInfo[2][iClk][0][1] = result->m_t2d2ts0_rt;
852 t2DTsfFirmwareInfo[2][iClk][0][2] = result->m_t2d2ts0_lr;
853 t2DTsfFirmwareInfo[2][iClk][0][3] = result->m_t2d2ts0_pr;
854 t2DTsfFirmwareInfo[2][iClk][1][0] = result->m_t2d2ts2_id;
855 t2DTsfFirmwareInfo[2][iClk][1][1] = result->m_t2d2ts2_rt;
856 t2DTsfFirmwareInfo[2][iClk][1][2] = result->m_t2d2ts2_lr;
857 t2DTsfFirmwareInfo[2][iClk][1][3] = result->m_t2d2ts2_pr;
858 t2DTsfFirmwareInfo[2][iClk][2][0] = result->m_t2d2ts4_id;
859 t2DTsfFirmwareInfo[2][iClk][2][1] = result->m_t2d2ts4_rt;
860 t2DTsfFirmwareInfo[2][iClk][2][2] = result->m_t2d2ts4_lr;
861 t2DTsfFirmwareInfo[2][iClk][2][3] = result->m_t2d2ts4_pr;
862 t2DTsfFirmwareInfo[2][iClk][3][0] = result->m_t2d2ts6_id;
863 t2DTsfFirmwareInfo[2][iClk][3][1] = result->m_t2d2ts6_rt;
864 t2DTsfFirmwareInfo[2][iClk][3][2] = result->m_t2d2ts6_lr;
865 t2DTsfFirmwareInfo[2][iClk][3][3] = result->m_t2d2ts6_pr;
866 t2DTsfFirmwareInfo[2][iClk][4][0] = result->m_t2d2ts8_id;
867 t2DTsfFirmwareInfo[2][iClk][4][1] = result->m_t2d2ts8_rt;
868 t2DTsfFirmwareInfo[2][iClk][4][2] = result->m_t2d2ts8_lr;
869 t2DTsfFirmwareInfo[2][iClk][4][3] = result->m_t2d2ts8_pr;
871 t2DTsfFirmwareInfo[3][iClk][0][0] = result->m_t2d3ts0_id;
872 t2DTsfFirmwareInfo[3][iClk][0][1] = result->m_t2d3ts0_rt;
873 t2DTsfFirmwareInfo[3][iClk][0][2] = result->m_t2d3ts0_lr;
874 t2DTsfFirmwareInfo[3][iClk][0][3] = result->m_t2d3ts0_pr;
875 t2DTsfFirmwareInfo[3][iClk][1][0] = result->m_t2d3ts2_id;
876 t2DTsfFirmwareInfo[3][iClk][1][1] = result->m_t2d3ts2_rt;
877 t2DTsfFirmwareInfo[3][iClk][1][2] = result->m_t2d3ts2_lr;
878 t2DTsfFirmwareInfo[3][iClk][1][3] = result->m_t2d3ts2_pr;
879 t2DTsfFirmwareInfo[3][iClk][2][0] = result->m_t2d3ts4_id;
880 t2DTsfFirmwareInfo[3][iClk][2][1] = result->m_t2d3ts4_rt;
881 t2DTsfFirmwareInfo[3][iClk][2][2] = result->m_t2d3ts4_lr;
882 t2DTsfFirmwareInfo[3][iClk][2][3] = result->m_t2d3ts4_pr;
883 t2DTsfFirmwareInfo[3][iClk][3][0] = result->m_t2d3ts6_id;
884 t2DTsfFirmwareInfo[3][iClk][3][1] = result->m_t2d3ts6_rt;
885 t2DTsfFirmwareInfo[3][iClk][3][2] = result->m_t2d3ts6_lr;
886 t2DTsfFirmwareInfo[3][iClk][3][3] = result->m_t2d3ts6_pr;
887 t2DTsfFirmwareInfo[3][iClk][4][0] = result->m_t2d3ts8_id;
899 t3DFirmwareInfo.resize(4, vector<vector<double> > (48, vector<double> (11)));
907 bitset<6> t2d_oldfnf(
int(result->m_t3d_2doldtrk));
911 t3DFirmwareInfo[0][iClk][0] = t2d_fnf[5];
912 t3DFirmwareInfo[0][iClk][1] = t2d_oldfnf[5];
913 t3DFirmwareInfo[0][iClk][2] = tsf_fnf[3];
916 t3DFirmwareInfo[0][iClk][5] = result->m_t2d0_charge;
917 t3DFirmwareInfo[0][iClk][6] = result->m_t2d0_rho_s;
918 t3DFirmwareInfo[0][iClk][7] = result->m_t2d0_phi;
948 t3DFirmwareInfo.resize(4, vector<vector<double> > (48, vector<double> (11)));
956 if (bitset<6> (result->m_t2d_fnf)[5] == 0)
continue;
961 double radius = resultDebug->
m_t3dtrk0_rho * 2500 / (pow(2, 11) - 0.5);
966 vector<vector<int> > rawStTSs(4, vector<int> (3));
981 map<string, vector<double> > stGeometry;
982 vector<vector<double> > stXts;
986 double z0 = 0, cot = 0, chi2 = 0;
987 Fitter3DUtility::fitter3D(stGeometry, stXts, eventTimeValid, eventTime, rawStTSs, charge, radius, phi_c, z0, cot, chi2);
991 bitset<6> t2d_oldfnf(
int(result->m_t3d_2doldtrk));
995 t3DFirmwareInfo[0][iClk][0] = t2d_fnf[5];
996 t3DFirmwareInfo[0][iClk][1] = t2d_oldfnf[5];
997 t3DFirmwareInfo[0][iClk][2] = tsf_fnf[3];
1001 t3DFirmwareInfo[0][iClk][5] = charge;
1002 t3DFirmwareInfo[0][iClk][6] = radius;
1003 t3DFirmwareInfo[0][iClk][7] = phi_c;
1004 t3DFirmwareInfo[0][iClk][8] = z0;
1005 t3DFirmwareInfo[0][iClk][9] = cot;
1006 t3DFirmwareInfo[0][iClk][10] = chi2;
1013 t3DFirmwareInfo.resize(4, vector<vector<double> > (48, vector<double> (11)));
1021 if (bitset<6> (result->m_t2d_fnf)[5] == 0)
continue;
1026 double radius = resultDebug->
m_t3dtrk0_rho * 2500 / (pow(2, 11) - 0.5);
1031 vector<vector<int> > rawStTSs(4, vector<int> (3));
1046 map<string, vector<double> > stGeometry;
1047 vector<vector<double> > stXts;
1052 map<string, vector<double> > mConstV;
1053 map<string, double> mConstD;
1063 bitset<6> t2d_oldfnf(
int(result->m_t3d_2doldtrk));
1067 t3DFirmwareInfo[0][iClk][0] = t2d_fnf[5];
1068 t3DFirmwareInfo[0][iClk][1] = t2d_oldfnf[5];
1069 t3DFirmwareInfo[0][iClk][2] = tsf_fnf[3];
1073 t3DFirmwareInfo[0][iClk][5] = charge;
1074 t3DFirmwareInfo[0][iClk][6] = radius;
1075 t3DFirmwareInfo[0][iClk][7] = phi_c;
1076 t3DFirmwareInfo[0][iClk][8] = z0;
1077 t3DFirmwareInfo[0][iClk][9] = cot;
1078 t3DFirmwareInfo[0][iClk][10] = chi2;
1211 if (result->m_t2d_fnf && iClk < 48 - 11 - 1 && bitset<6> (result->m_t2d_fnf)[5]) {
1218 double radius = resultDebug->
m_t3dtrk0_rho * 2500 / (pow(2, 11) - 0.5);
1223 vector<vector<int> > rawStTSs(4, vector<int> (3));
1238 map<string, vector<double> > stGeometry;
1239 vector<vector<double> > stXts;
1273 Fitter3DUtility::fitter3D(stGeometry, stXts, eventTimeValid, eventTime, rawStTSs, charge, radius, phi_c, z0, cot, chi2);
1276 map<string, vector<double> > mConstV;
1277 map<string, double> mConstD;
1325 bitset<6> t2d_oldfnf(
int(result->m_t3d_2doldtrk));
1326 cout <<
"iClk:" << iClk << endl;
1327 cout <<
" [2D] fnf:" << result->m_t2d_fnf <<
" " << bitset<6> (result->m_t2d_fnf) <<
" oldfnf: " << t2d_oldfnf << endl;
1328 cout <<
" [0] rho: " << result->m_t2d0_rho_s <<
" " <<
t2DRhoTot3DRho(result->m_t2d0_rho_s) <<
" phi0: " << result->m_t2d0_phi <<
1329 " " <<
t2DPhiTot3DPhi(result->m_t2d0_phi, result->m_t2d0_rho_s) << endl;
1330 cout <<
" [debug] MSB" << endl;
1341 cout <<
" [3D] fnf:" << result3D->
m_t3d_2dfnf <<
" " << bitset<6> (result3D->
m_t3d_2dfnf) <<
" tsValid: " <<
1361 cout <<
" [Store information]" << endl;
1362 cout <<
" charge: " << charge <<
" radius(cm): " << radius <<
" phi_c(rad): " << phi_c << endl;
1363 cout <<
" eventTime: " << eventTime <<
" valid: " << eventTimeValid << endl;
1364 cout <<
" rawStTSs[0] id:" << rawStTSs[0][0] <<
" lr: " << rawStTSs[0][1] <<
" rt: " << rawStTSs[0][2] << endl;
1365 cout <<
" rawStTSs[1] id:" << rawStTSs[1][0] <<
" lr: " << rawStTSs[1][1] <<
" rt: " << rawStTSs[1][2] << endl;
1366 cout <<
" rawStTSs[2] id:" << rawStTSs[2][0] <<
" lr: " << rawStTSs[2][1] <<
" rt: " << rawStTSs[2][2] << endl;
1367 cout <<
" rawStTSs[3] id:" << rawStTSs[3][0] <<
" lr: " << rawStTSs[3][1] <<
" rt: " << rawStTSs[3][2] << endl;
1369 cout <<
" [Calculate fast]" << endl;
1370 cout <<
" [z0] " << z0 <<
" [cot] " << cot <<
" [chi2] " << chi2 << endl;
1372 cout <<
" [Calculate firm]" << endl;
1392 bitset<6> t2d_fnf(
int(result->m_t3d_2dfnf));
1393 bitset<4> tsf_fnf(
int(result->m_t3d_validTS));
1394 bitset<6> t2d_oldfnf(
int(result->m_t3d_2doldtrk));
1395 cout <<
"iClk:" << iClk << endl;
1396 cout <<
" [2D] fnf:" << result->m_t2d_fnf <<
" " << bitset<6> (result->m_t2d_fnf) <<
" oldfnf: " << t2d_oldfnf << endl;
1397 cout <<
" [0] rho: " << result->m_t2d0_rho_s <<
" " <<
toSigned(result->m_t2d0_rho_s,
1398 7) <<
" " << int(0.3 * 34 / 30 / 1.5e-4 / abs(
toSigned(result->m_t2d0_rho_s, 7)) * (pow(2,
1399 11) - 0.5) / 2500) <<
" phi0: " << result->m_t2d0_phi << endl;
1400 cout <<
" [1] rho: " << result->m_t2d1_rho_s <<
" " <<
toSigned(result->m_t2d1_rho_s,
1401 7) <<
" " << int(0.3 * 34 / 30 / 1.5e-4 / abs(
toSigned(result->m_t2d1_rho_s, 7)) * (pow(2,
1402 11) - 0.5) / 2500) <<
" phi0: " << result->m_t2d1_phi << endl;
1403 cout <<
" [2] rho: " << result->m_t2d2_rho_s <<
" " <<
toSigned(result->m_t2d2_rho_s,
1404 7) <<
" " << int(0.3 * 34 / 30 / 1.5e-4 / abs(
toSigned(result->m_t2d2_rho_s, 7)) * (pow(2,
1405 11) - 0.5) / 2500) <<
" phi0: " << result->m_t2d2_phi << endl;
1406 cout <<
" [3] rho: " << result->m_t2d3_rho_s <<
" " <<
toSigned(result->m_t2d3_rho_s,
1407 7) <<
" " << int(0.3 * 34 / 30 / 1.5e-4 / abs(
toSigned(result->m_t2d3_rho_s, 7)) * (pow(2,
1408 11) - 0.5) / 2500) <<
" phi0: " << result->m_t2d3_phi << endl;
1409 cout <<
" [3D] fnf:" << result->m_t3d_2dfnf <<
" " << t2d_fnf <<
" " << t2d_fnf[5] <<
" tsValid: " << result->m_t3d_validTS <<
" "
1410 << tsf_fnf << endl;;
1411 cout <<
" [0] z0: " << result->m_t3dtrk0_z0_s <<
" cot: " << result->m_t3dtrk0_cot_s <<
" chi2: " << result->m_t3dtrk0_zchisq
1413 cout <<
" [1] z0: " << result->m_t3dtrk1_z0_s <<
" cot: " << result->m_t3dtrk1_cot_s <<
" chi2: " << result->m_t3dtrk1_zchisq
1415 cout <<
" [2] z0: " << result->m_t3dtrk2_z0_s <<
" cot: " << result->m_t3dtrk2_cot_s <<
" chi2: " << result->m_t3dtrk2_zchisq
1417 cout <<
" [3] z0: " << result->m_t3dtrk3_z0_s <<
" cot: " << result->m_t3dtrk3_cot_s <<
" chi2: " << result->m_t3dtrk3_zchisq
1419 cout <<
" [debug] MSB" << endl;
1420 cout <<
" evtTime: " << result->m_t3dtrk0_evtTime_delay <<
" evtTimeValid: " << result->m_t3dtrk0_evtTimeValid_delay <<
1422 cout <<
" charge: " << result->m_t3dtrk0_charge <<
" rho: " << result->m_t3dtrk0_rho <<
" phi0: " << result->m_t3dtrk0_phi0
1424 cout <<
" ts0 id: " << result->m_t3dtrk0ts0_id <<
" lr: " << result->m_t3dtrk0ts0_lr <<
" rt: " << result->m_t3dtrk0ts0_rt
1426 cout <<
" ts1 id: " << result->m_t3dtrk0ts1_id <<
" lr: " << result->m_t3dtrk0ts1_lr <<
" rt: " << result->m_t3dtrk0ts1_rt
1428 cout <<
" ts2 id: " << result->m_t3dtrk0ts2_id <<
" lr: " << result->m_t3dtrk0ts2_lr <<
" rt: " << result->m_t3dtrk0ts2_rt
1430 cout <<
" ts3 id: " << result->m_t3dtrk0ts3_id <<
" lr: " << result->m_t3dtrk0ts3_lr <<
" rt: " << result->m_t3dtrk0ts3_rt
1432 cout <<
" [debug] LSB" << endl;
1433 cout <<
" evtTime: " << result->m_t3dtrk1_evtTime_delay <<
" evtTimeValid: " << result->m_t3dtrk1_evtTimeValid_delay <<
1435 cout <<
" charge: " << result->m_t3dtrk1_charge <<
" rho: " << result->m_t3dtrk1_rho <<
" phi0: " << result->m_t3dtrk1_phi0
1437 cout <<
" ts0 id: " << result->m_t3dtrk1ts0_id <<
" lr: " << result->m_t3dtrk1ts0_lr <<
" rt: " << result->m_t3dtrk1ts0_rt
1439 cout <<
" ts1 id: " << result->m_t3dtrk1ts1_id <<
" lr: " << result->m_t3dtrk1ts1_lr <<
" rt: " << result->m_t3dtrk1ts1_rt
1441 cout <<
" ts2 id: " << result->m_t3dtrk1ts2_id <<
" lr: " << result->m_t3dtrk1ts2_lr <<
" rt: " << result->m_t3dtrk1ts2_rt
1443 cout <<
" ts3 id: " << result->m_t3dtrk1ts3_id <<
" lr: " << result->m_t3dtrk1ts3_lr <<
" rt: " << result->m_t3dtrk1ts3_rt
1453 std::vector<std::vector<double> >& t3DInfo)
1455 for (
unsigned iTrack = 0; iTrack < t3DFirmwareInfo.size(); iTrack++) {
1456 for (
unsigned iClk = 0; iClk < t3DFirmwareInfo[iTrack].size(); iClk++) {
1459 if (t3DFirmwareInfo[iTrack][iClk][0] == 0)
continue;
1462 if (t3DFirmwareInfo[iTrack][iClk][2] == 0)
continue;
1464 if (t3DFirmwareInfo[iTrack][iClk][3] == 0)
continue;
1467 if (t3DInfo.size() != 0 && t3DFirmwareInfo[iTrack][iClk][1] == 1)
continue;
1469 vector<double> track3D = {t3DFirmwareInfo[iTrack][iClk][4], t3DFirmwareInfo[iTrack][iClk][5], t3DFirmwareInfo[iTrack][iClk][6], t3DFirmwareInfo[iTrack][iClk][7], t3DFirmwareInfo[iTrack][iClk][8], t3DFirmwareInfo[iTrack][iClk][9], t3DFirmwareInfo[iTrack][iClk][10]};
1470 t3DInfo.push_back(track3D);
1478 for (
unsigned iTrack = 0; iTrack < t3DInfo.size(); ++iTrack) {
1479 double charge = 0, phi0_i = 0, omega = 0, chi2D = 0, z0 = 0, cot = 0, zchi2 = 0;
1482 charge = t3DInfo[iTrack][1] == 2 ? -1 : 1;
1483 phi0_c =
t2DPhiTot3DPhi(t3DInfo[iTrack][3], t3DInfo[iTrack][2]) / (pow(2, 12) - 0.5) * M_PI;
1484 phi0_i = phi0_c + charge * M_PI_2;
1485 omega = charge /
t2DRhoTot3DRho(t3DInfo[iTrack][2]) / (pow(2, 11) - 0.5) * 2500;
1486 z0 =
toSigned(t3DInfo[iTrack][4], 11) * 0.0382;
1487 cot =
toSigned(t3DInfo[iTrack][5], 11) * 0.00195;
1488 zchi2 = t3DInfo[iTrack][6];
1490 charge = t3DInfo[iTrack][1] == 1 ? 1 : -1;
1491 phi0_c = t3DInfo[iTrack][3];
1492 phi0_i = phi0_c + charge * M_PI_2;
1493 omega = charge / t3DInfo[iTrack][2];
1494 z0 = t3DInfo[iTrack][4];
1495 cot = t3DInfo[iTrack][5];
1496 zchi2 = t3DInfo[iTrack][6];
1498 if (phi0_i > M_PI) phi0_i -= 2 * M_PI;
1500 if (
m_isVerbose) cout <<
"[3D] iTrack:" << iTrack <<
" charge: " << charge <<
" phi0_i:" << phi0_i <<
" " << phi0_i * 180 / M_PI <<
1501 " omega:" << omega <<
" pt:" << charge / omega * 0.3 * 1.5 * 0.01 <<
" z0:" << z0 <<
" cot:" << cot <<
" zchi2:" << zchi2 << endl;
1502 m_tracks3D.appendNew(phi0_i, omega, chi2D, z0, cot, zchi2);