171 FairRootManager* ioman = FairRootManager::Instance();
172 assert(ioman != NULL);
176 if (0 == mcManager) LOG(fatal) <<
"CbmMatchRecoToMC::ReadAndCreateDataBranches() NULL MCDataManager.";
181 fMvdHits = (TClonesArray*) ioman->GetObject(
"MvdHit");
184 fStsClusters = (TClonesArray*) ioman->GetObject(
"StsCluster");
185 fStsHits = (TClonesArray*) ioman->GetObject(
"StsHit");
189 fRichHits = (TClonesArray*) ioman->GetObject(
"RichHit");
193 fMuchClusters = (TClonesArray*) ioman->GetObject(
"MuchCluster");
194 fMuchPixelHits = (TClonesArray*) ioman->GetObject(
"MuchPixelHit");
199 fTrdClusters = (TClonesArray*) ioman->GetObject(
"TrdCluster");
200 fTrdHits = (TClonesArray*) ioman->GetObject(
"TrdHit");
205 fTofHits = (TClonesArray*) ioman->GetObject(
"TofHit");
339 const TClonesArray* hitMatches,
const string& detName,
342 if (NULL ==
points || NULL ==
hits || NULL == hitMatches)
return;
343 string nameResidualX =
"hrp_" + detName +
"_ResidualX_H2";
344 string nameResidualY =
"hrp_" + detName +
"_ResidualY_H2";
345 string nameResidualT =
"hrp_" + detName +
"_ResidualT_H2";
346 string namePullX =
"hrp_" + detName +
"_PullX_H2";
347 string namePullY =
"hrp_" + detName +
"_PullY_H2";
348 string namePullT =
"hrp_" + detName +
"_PullT_H2";
349 if (!
fHM->Exists(nameResidualX) || !
fHM->Exists(nameResidualY) || !
fHM->Exists(nameResidualT)
350 || !
fHM->Exists(namePullX) || !
fHM->Exists(namePullY) || !
fHM->Exists(namePullT))
354 for (
Int_t iHit = 0; iHit < nofHits; iHit++) {
357 if (std::isnan(
static_cast<Float_t>(hit->
GetX())) || (std::isnan(
static_cast<Float_t>(hit->
GetY()))))
continue;
358 const FairMCPoint* point =
static_cast<const FairMCPoint*
>(
360 if (point == NULL)
continue;
368 residualT = point->GetTime() - hit->
GetTime();
374 fHM->H2(nameResidualX)->Fill(stationId, residualX);
375 fHM->H2(nameResidualY)->Fill(stationId, residualY);
376 fHM->H2(nameResidualT)->Fill(stationId, residualT);
377 fHM->H2(namePullX)->Fill(stationId, residualX / hit->
GetDx());
378 fHM->H2(namePullY)->Fill(stationId, residualY / hit->
GetDy());
483 if (!
fDet.GetDet(detId))
return;
486 Int_t nofBinsStation = 100;
487 Double_t minStation = -0.5;
488 Double_t maxStation = 99.5;
492 Int_t nofBinsSigma = 100;
493 Double_t minSigma = -0.5;
494 Double_t maxSigma = 9.5;
495 Int_t nofBinsResidual = 200;
496 Double_t minResidual = -10.0;
497 Double_t maxResidual = 10.0;
498 Double_t minResidualT = -100.0;
499 Double_t maxResidualT = 100.0;
500 Int_t nofBinsPull = 100;
501 Double_t minPull = -5.0;
502 Double_t maxPull = 5.0;
504 string nameH1 =
"hpa_" + detName +
"Cluster_NofDigisInCluster_H1";
505 fHM->Create1<TH1F>(nameH1, nameH1 +
";Number of digis;Yield", nofBins,
min,
max);
506 string nameH2 =
"hpa_" + detName +
"Cluster_NofDigisInCluster_H2";
507 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Number of digis;Yield", nofBinsStation, minStation,
max, nofBins,
min,
509 nameH1 =
"hpa_" + detName +
"Cluster_NofPointsInCluster_H1";
510 fHM->Create1<TH1F>(nameH1, nameH1 +
";Number of points;Yield", nofBins,
min,
max);
511 nameH2 =
"hpa_" + detName +
"Cluster_NofPointsInCluster_H2";
512 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Number of points;Yield", nofBinsStation, minStation,
max, nofBins,
min,
514 nameH1 =
"hpa_" + detName +
"Digi_NofPointsInDigi_H1";
515 fHM->Create1<TH1F>(nameH1, nameH1 +
";Number of points;Yield", nofBins,
min,
max);
516 nameH2 =
"hpa_" + detName +
"Digi_NofPointsInDigi_H2";
517 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Number of points;Yield", nofBinsStation, minStation, maxStation,
519 nameH1 =
"hpa_" + detName +
"Hit_NofPointsInHit_H1";
520 fHM->Create1<TH1F>(nameH1, nameH1 +
";Number of points;Yield", nofBins,
min,
max);
521 nameH2 =
"hpa_" + detName +
"Hit_NofPointsInHit_H2";
522 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Number of points;Yield", nofBinsStation, minStation,
max, nofBins,
min,
524 nameH1 =
"hpa_" + detName +
"Hit_SigmaX_H1";
525 fHM->Create1<TH1F>(nameH1, nameH1 +
";#sigma_{X} [cm];Yield", nofBinsSigma, minSigma, maxSigma);
526 nameH2 =
"hpa_" + detName +
"Hit_SigmaX_H2";
527 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;#sigma_{X} [cm];Yield", nofBinsStation, minStation, maxStation,
528 nofBinsSigma, minSigma, maxSigma);
529 nameH1 =
"hpa_" + detName +
"Hit_SigmaY_H1";
530 fHM->Create1<TH1F>(nameH1, nameH1 +
";#sigma_{Y} [cm];Yield", nofBinsSigma, minSigma, maxSigma);
531 nameH2 =
"hpa_" + detName +
"Hit_SigmaY_H2";
532 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;#sigma_{Y} [cm];Yield", nofBinsStation, minStation, maxStation,
533 nofBinsSigma, minSigma, maxSigma);
536 nameH2 =
"hrp_" + detName +
"_ResidualX_H2";
537 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Residual X [cm];Yield", nofBinsStation, minStation, maxStation,
538 nofBinsResidual, minResidual, maxResidual);
539 nameH2 =
"hrp_" + detName +
"_ResidualY_H2";
540 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Residual Y [cm];Yield", nofBinsStation, minStation, maxStation,
541 nofBinsResidual, minResidual, maxResidual);
542 nameH2 =
"hrp_" + detName +
"_ResidualT_H2";
543 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Residual T [ns];Yield", nofBinsStation, minStation, maxStation,
544 nofBinsResidual, minResidualT, maxResidualT);
545 nameH2 =
"hrp_" + detName +
"_PullX_H2";
546 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Pull X;Yield", nofBinsStation, minStation, maxStation, nofBinsPull,
548 nameH2 =
"hrp_" + detName +
"_PullY_H2";
549 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Pull Y;Yield", nofBinsStation, minStation, maxStation, nofBinsPull,
551 nameH2 =
"hrp_" + detName +
"_PullT_H2";
552 fHM->Create2<TH2F>(nameH2, nameH2 +
";Station;Pull T;Yield", nofBinsStation, minStation, maxStation, nofBinsPull,