99 for (UInt_t uDetA = 0; uDetA <
fvsDetectors.size(); ++uDetA) {
100 for (UInt_t uDetB = uDetA; uDetB <
fvsDetectors.size(); ++uDetB) {
102 std::string sTitle = Form(
"Time diff to Bmon for %s VS for %s; Dt %s [ns]; "
103 "dT %s [ns]; Possible pairs []",
113 FairRunOnline* run = FairRunOnline::Instance();
115 THttpServer* server = run->GetHttpServer();
116 if (
nullptr != server) {
117 for (UInt_t uPair = 0; uPair <
fhDtADtB.size(); ++uPair) {
118 server->Register(
"/PairTiming",
fhDtADtB[uPair]);
129 LOG(debug) <<
"executing TS " <<
fNrTs;
131 if (0 <
fNrTs && 0 ==
fNrTs % 1000) LOG(info) << Form(
"Processing TS %6d",
fNrTs);
134 UInt_t uNbBmonDigis = 0;
149 for (UInt_t uBmonDigi = 0; uBmonDigi < uNbBmonDigis; ++uBmonDigi) {
157 Double_t dTimeBmon = pDigiBmon->
GetTime();
165 for (UInt_t uIndexDet = 0; uIndexDet <
fvsDetectors.size(); ++uIndexDet) {
193 LOG(fatal) <<
"CbmMcbm2019CheckTimingPairs => Unknown detector";
213 for (UInt_t uIndexBmon = 0; uIndexBmon <
fvDigisBmon.size(); ++uIndexBmon) {
214 UInt_t uHistoIdx = 0;
215 for (UInt_t uIndexDetA = 0; uIndexDetA <
fvsDetectors.size(); ++uIndexDetA) {
216 for (UInt_t uIndexDetB = uIndexDetA; uIndexDetB <
fvsDetectors.size(); ++uIndexDetB) {
236 LOG(fatal) <<
"CbmMcbm2019CheckTimingPairs => Unknown detector";
266 Double_t dWinStopTime, std::vector<std::vector<Digi>>& vDigi,
271 UInt_t uFirstDigiInWin = uIndexStart;
273 for (UInt_t iDigi = uIndexStart; iDigi < nrDigis; ++iDigi) {
276 Double_t dTimeDet = digi->GetTime();
277 Double_t dTimeDiff = dTimeDet - dTimeBmon;
279 if (dTimeDiff < dWinStartTime) {
280 uFirstDigiInWin = iDigi;
283 else if (dWinStopTime < dTimeDiff) {
292 stsDigi = boost::any_cast<const CbmStsDigi*>(digi);
295 LOG(fatal) <<
"Failed boost any_cast in "
296 "CbmMcbm2019CheckPulser::FillSystemOffsetHistos for a "
298 << Digi::GetClassName();
319 muchDigi = boost::any_cast<const CbmMuchBeamTimeDigi*>(digi);
322 LOG(fatal) <<
"Failed boost any_cast in "
323 "CbmMcbm2019CheckPulser::FillSystemOffsetHistos for a "
325 << Digi::GetClassName();
328 UInt_t uAsic = muchDigi->GetNxId();
351 if( fuMinChargePulserTrd < digi->GetCharge() && digi->GetCharge() < fuMaxChargePulserTrd )
390 UInt_t uAddr = digi->GetAddress();
411 return uFirstDigiInWin;
416 std::vector<DigiA>& vCorrDigA, UInt_t uHistoIdx)
438 LOG(fatal) <<
"CbmMcbm2019CheckTimingPairs => Unknown detector";
442 std::vector<DigiA>& vCorrDigA, std::vector<DigiB>& vCorrDigB,
445 Double_t dTimeBmon =
fvDigisBmon[uIndexBmon].GetTime();
451 if( "STS" == fvsDetectors[ uIndexDetA ] )
453 vCorrDigA = fvDigisSts[ uIndexBmon ];
454 } // if( "STS" == fvsDetectors[ uIndexDetA ] )
455 else if( "MUCH" == fvsDetectors[ uIndexDetA ] )
457 vCorrDigA = fvDigisMuch[ uIndexBmon ];
458 } // else if( "MUCH" == fvsDetectors[ uIndexDetA ] )
459 else if( "TRD" == fvsDetectors[ uIndexDetA ] )
461 vCorrDigA = fvDigisTrd[ uIndexBmon ];
462 } // else if( "TRD" == fvsDetectors[ uIndexDetA ] )
463 else if( "TOF" == fvsDetectors[ uIndexDetA ] )
465 vCorrDigA = fvDigisTof[ uIndexBmon ];
466 } // else if( "TOF" == fvsDetectors[ uIndexDetA ] )
467 else if( "RICH" == fvsDetectors[ uIndexDetA ] )
469 vCorrDigA = fvDigisRich[ uIndexBmon ];
470 } // else if( "RICH" == fvsDetectors[ uIndexDetA ] )
471 else if( "PSD" == fvsDetectors[ uIndexDetA ] )
473 vCorrDigA = fvDigisPsd[ uIndexBmon ];
474 } // else if( "PSD" == fvsDetectors[ uIndexDetA ] )
475 else LOG( fatal ) << "CbmMcbm2019CheckTimingPairs => Unknown detector";
477 if( "STS" == fvsDetectors[ uIndexDetB ] )
479 vCorrDigB = fvDigisSts[ uIndexBmon ];
480 } // if( "STS" == fvsDetectors[ uIndexDetB ] )
481 else if( "MUCH" == fvsDetectors[ uIndexDetB ] )
483 vCorrDigB = fvDigisMuch[ uIndexBmon ];
484 } // else if( "MUCH" == fvsDetectors[ uIndexDetB ] )
485 else if( "TRD" == fvsDetectors[ uIndexDetB ] )
487 vCorrDigB = fvDigisTrd[ uIndexBmon ];
488 } // else if( "TRD" == fvsDetectors[ uIndexDetB ] )
489 else if( "TOF" == fvsDetectors[ uIndexDetB ] )
491 vCorrDigB = fvDigisTof[ uIndexBmon ];
492 } // else if( "TOF" == fvsDetectors[ uIndexDetB ] )
493 else if( "RICH" == fvsDetectors[ uIndexDetB ] )
495 vCorrDigB = fvDigisRich[ uIndexBmon ];
496 } // else if( "RICH" == fvsDetectors[ uIndexDetB ] )
497 else if( "PSD" == fvsDetectors[ uIndexDetB ] )
499 vCorrDigB = fvDigisPsd[ uIndexBmon ];
500 } // else if( "PSD" == fvsDetectors[ uIndexDetB ] )
501 else LOG( fatal ) << "CbmMcbm2019CheckTimingPairs => Unknown detector";
503 for (UInt_t uIdxDetA = 0; uIdxDetA < vCorrDigA.size(); ++uIdxDetA) {
504 Double_t dTimeDetA = vCorrDigA[uIdxDetA].GetTime();
505 Double_t dDtDetA = dTimeDetA - dTimeBmon;
507 for (UInt_t uIdxDetB = 0; uIdxDetB < vCorrDigB.size(); ++uIdxDetB) {
508 Double_t dTimeDetB = vCorrDigB[uIdxDetB].GetTime();
509 Double_t dDtDetB = dTimeDetB - dTimeBmon;
511 fhDtADtB[uHistoIdx]->Fill(dDtDetA, dDtDetB);