519 std::string sFolder =
"eTofMoni";
521 LOG(info) <<
"create Histos for eTOF monitoring ";
524 // Number of log bins =
525 // 9 for the sub-unit decade
526 // + 9 for each unit of each decade * 10 for the subdecade range
527 // + 1 for the closing bin top edge
528 const Int_t iNbDecadesLog = 4;
529 const Int_t iNbStepsDecade = 9;
530 const Int_t iNbSubStepsInStep = 1;
531 const Int_t iNbBinsLog = iNbStepsDecade
532 + iNbStepsDecade * iNbSubStepsInStep * iNbDecadesLog
534 Double_t dBinsLog[iNbBinsLog];
535 // First fill sub-unit decade
536 for( Int_t iSubU = 0; iSubU < iNbStepsDecade; iSubU ++ )
537 dBinsLog[ iSubU ] = 0.1 * ( 1 + iSubU );
538 std::cout << std::endl;
539 // Then fill the main decades
540 Double_t dSubstepSize = 1.0 / iNbSubStepsInStep;
541 for( Int_t iDecade = 0; iDecade < iNbDecadesLog; iDecade ++)
543 Double_t dBase = std::pow( 10, iDecade );
544 Int_t iDecadeIdx = iNbStepsDecade
545 + iDecade * iNbStepsDecade * iNbSubStepsInStep;
546 for( Int_t iStep = 0; iStep < iNbStepsDecade; iStep++ )
548 Int_t iStepIdx = iDecadeIdx + iStep * iNbSubStepsInStep;
549 for( Int_t iSubStep = 0; iSubStep < iNbSubStepsInStep; iSubStep++ )
551 dBinsLog[ iStepIdx + iSubStep ] = dBase * (1 + iStep)
552 + dBase * dSubstepSize * iSubStep;
553 } // for( Int_t iSubStep = 0; iSubStep < iNbSubStepsInStep; iSubStep++ )
554 } // for( Int_t iStep = 0; iStep < iNbStepsDecade; iStep++ )
555 } // for( Int_t iDecade = 0; iDecade < iNbDecadesLog; iDecade ++)
556 dBinsLog[ iNbBinsLog - 1 ] = std::pow( 10, iNbDecadesLog );
572 UInt_t uSectorA = uGdpbA +
fUnpackPar->GetGdpbToSectorOffset();
575 UInt_t uFeeIndexA = uFeeA;
577 uFeeIndexA = 3 * (uFeeA / 5) + (uFeeA % 5);
580 UInt_t uFeeIdA = uFeeIndexA - (3 * 6 * uGdpbA);
585 if (uFeeA < uFeeB && (!
fbEtofFeeIndexing || ((uFeeA % 5) < 3 && (uFeeB % 5) < 3))) {
587 UInt_t uFeeIndexB = uFeeB;
592 UInt_t uSectorB = uGdpbB +
fUnpackPar->GetGdpbToSectorOffset();
595 UInt_t uFeeIdB = uFeeIndexB - (3 * 6 * uGdpbB);
597 new TH1I(Form(
"hFeePairPulserTimeDiff_s%02u_f%1u_s%02u_f%1u", uSectorA, uFeeIdA, uSectorB, uFeeIdB),
598 Form(
"Time difference for pulser on sector %02u FEE %1u and "
599 "sector %02u FEE %1u; DeltaT [ps]; Counts",
600 uSectorA, uFeeIdA, uSectorB, uFeeIdB),
620 new TH2D(
"hPulserTimeDiffMean",
"Time difference Mean for each FEE pairs; FEE A; FEE B ; Mean [ps]",
621 uTotalNbFee - 1, -0.5, uTotalNbFee - 1.5, uTotalNbFee - 1, 0.5, uTotalNbFee - 0.5);
624 new TH2D(
"hPulserTimeDiffRms",
"Time difference RMS for each FEE pairs; FEE A; FEE B ; RMS [ps]", uTotalNbFee - 1,
625 -0.5, uTotalNbFee - 1.5, uTotalNbFee - 1, 0.5, uTotalNbFee - 0.5);
628 "Time difference RMS for each FEE pairs after zoom on peak; FEE "
629 "A; FEE B ; RMS [ps]",
630 uTotalNbFee - 1, -0.5, uTotalNbFee - 1.5, uTotalNbFee - 1, 0.5, uTotalNbFee - 0.5);
634 new TH2D(
"hPulserRmsGdpbToRefEvo",
635 "Evo. of Time difference RMS for selected FEE of each sector to "
636 "the 1st; Time in run [s] A; Sector ; RMS [ps]",
641 new TH2D(
"hPulserTimeDiffRmsZoom",
642 "Evo. of Time difference RMS for selected FEE pairs of each GBTx to the "
643 "1st in same sector; Time in run [s] A; FEE ; RMS [ps]",
648 new TH2D(
"hPulserRmsGdpbToRefEvo",
649 "Evo. of Time difference RMS for selected FEE of each gDPb to "
650 "the 1st; Time in run [s] A; gDPB ; RMS [ps]",
654 new TH2D(
"hPulserTimeDiffRmsZoom",
655 "Evo. of Time difference RMS for selected FEE pairs of each GBTx to the "
656 "1st in same gDPB; Time in run [s] A; FEE ; RMS [ps]",
669 fcSummary =
new TCanvas(
"cSummary",
"Pulser Monitoring Summary");
725 UInt_t uFeeIndexA = uFeeA;
726 UInt_t uFeeIndexB = uFeeB;
729 uFeeIndexA = 3 * (uFeeA / 5) + (uFeeA % 5);
730 uFeeIndexB = 3 * (uFeeB / 5) + (uFeeB % 5);
748 if ((dZoomCounts / dNbCounts) < 0.8) {
790 UInt_t uFeeIndexA = uFeeA;
791 UInt_t uFeeIndexB = uFeeB;
794 uFeeIndexA = 3 * (uFeeA / 5) + (uFeeA % 5);
795 uFeeIndexB = 3 * (uFeeB / 5) + (uFeeB % 5);
813 if ((dZoomCounts / dNbCounts) < 0.8) {
815 LOG(warning) <<
"CbmStar2019MonitorPulserAlgo::FillHistograms => Zoom too strong, "
816 <<
"more than 20% loss for FEE pair " << uFeeA <<
" and " << uFeeB <<
" !!! ";
826 LOG(info) <<
"Stats FEE A " << std::setw(3) << uFeeIndexA <<
" FEE B " << std::setw(3) << uFeeIndexB