From 944e9686ce8adf6930afa95692447e15f40d1bf6 Mon Sep 17 00:00:00 2001 From: "se.gorbunov" <se.gorbunov@gsi.de> Date: Tue, 10 Sep 2024 21:05:56 +0200 Subject: [PATCH] Ca: more qa plots for clone tracks --- reco/L1/qa/CbmCaTrackTypeQa.cxx | 52 ++++++++++++++++++++++++++++++++- reco/L1/qa/CbmCaTrackTypeQa.h | 17 ++++++++++- 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/reco/L1/qa/CbmCaTrackTypeQa.cxx b/reco/L1/qa/CbmCaTrackTypeQa.cxx index 5bb106d8ba..8d152adb88 100644 --- a/reco/L1/qa/CbmCaTrackTypeQa.cxx +++ b/reco/L1/qa/CbmCaTrackTypeQa.cxx @@ -148,6 +148,20 @@ void TrackTypeQa::Init() fph_eff_txMC = MakeQaObject<TProfile>("eff_txMC", "", kBinsTX, kLoTX, kUpTX, 0., 1.); fph_eff_tyMC = MakeQaObject<TProfile>("eff_tyMC", "", kBinsTY, kLoTY, kUpTX, 0., 1.); + // clones + + fph_clone_pMC = MakeQaObject<TProfile>("clone_pMC", "", kBinsP, kLoP, kUpP, 0., 1.); + fph_clone_yMC = MakeQaObject<TProfile>("clone_yMC", "", kBinsY, kLoY, kUpY, 0., 1.); + fph_clone_ptMC = MakeQaObject<TProfile>("clone_ptMC", "", kBinsPT, kLoPT, kUpPT, 0., 1.); + fph_clone_thetaMC = MakeQaObject<TProfile>("clone_thetaMC", "", kBinsTHETA, kLoTHETA, kUpTHETA, 0., 1.); + fph_clone_etaMC = MakeQaObject<TProfile>("clone_etaMC", "", kBinsTHETA, kLoTHETA, kUpTHETA, 0., 1.); + fph_clone_phiMC = MakeQaObject<TProfile>("clone_phiMC", "", kBinsPHI, kLoPHI, kUpPHI, 0., 1.); + fph_clone_nhitsMC = MakeQaObject<TProfile>("clone_nhitsMC", "", kBinsNSTA, kLoNSTA, kUpNSTA, 0., 1.); + fph_clone_txMC = MakeQaObject<TProfile>("clone_txMC", "", kBinsTX, kLoTX, kUpTX, 0., 1.); + fph_clone_tyMC = MakeQaObject<TProfile>("clone_tyMC", "", kBinsTY, kLoTY, kUpTX, 0., 1.); + + // + fph_rate_reco = MakeQaObject<TProfile>("rate_reco", "", 1, -0.5, 0.5, 0., 1.); fph_rate_killed = MakeQaObject<TProfile>("rate_killed", "", 1, -0.5, 0.5, 0., 1.); fph_rate_clones = MakeQaObject<TProfile>("rate_clones", "", 1, -0.5, 0.5, 0., 1.); @@ -177,9 +191,31 @@ void TrackTypeQa::Init() MakeQaObject<TProfile2D>("eff_theta_phi", "", kBinsPHI, kLoPHI, kUpPHI, kBinsTHETA, kLoTHETA, kUpTHETA, 0., 1.); fph_eff_ptMC_yMC->SetTitle( - "Efficiency vs. MC transverse momentum and MC rapidity;y^{MC};#epsilon_{CA};p_{T}^{MC} [GeV/c]"); + "Efficiency vs. MC transverse momentum and MC rapidity;y^{MC};p_{T}^{MC} [GeV/c];#epsilon_{CA}"); fph_eff_thetaMC_phiMC->SetTitle( "Efficiency vs. MC polar and MC azimuthal angles;#phi^{MC} [rad];#theta^{MC} [rad];#epsilon_{CA}"); + + fph_clone_pMC->SetTitle("Clone rate vs. MC total momentum;p_{MC} [GeV/c];clone rate_{CA}"); + fph_clone_yMC->SetTitle("Clone vs. MC rapidity;y_{MC};clone rate_{CA}"); + fph_clone_ptMC->SetTitle("Clone vs. MC transverse momentum;p_{T}^{MC} [GeV/c];clone rate_{CA}"); + fph_clone_thetaMC->SetTitle("Clone vs. MC polar angle;#theta^{MC};clone rate_{CA}"); + fph_clone_etaMC->SetTitle("Clone vs. MC pseudorapidity;#eta^{MC};clone rate_{CA}"); + fph_clone_phiMC->SetTitle("Clone vs. MC azimuthal angle;#phi^{MC};clone rate_{CA}"); + fph_clone_nhitsMC->SetTitle("Clone vs. number of hits;N_{hit}^{MC};clone rate_{CA}"); + fph_clone_txMC->SetTitle("Clone vs. MC slope along x-axis;t_{x}^{MC};clone rate_{CA}"); + fph_clone_tyMC->SetTitle("Clone vs. MC slope along y-axis;t_{y}^{MC};clone rate_{CA}"); + + fph_clone_ptMC_yMC = + MakeQaObject<TProfile2D>("clone_ptMC_yMC", "", kBinsY, kLoY, kUpY, kBinsPT, kLoPT, kUpPT, 0., 1.); + fph_clone_thetaMC_phiMC = + MakeQaObject<TProfile2D>("clone_theta_phi", "", kBinsPHI, kLoPHI, kUpPHI, kBinsTHETA, kLoTHETA, kUpTHETA, 0., 1.); + + fph_clone_ptMC_yMC->SetTitle( + "Clone vs. MC transverse momentum and MC rapidity;y^{MC};p_{T}^{MC} [GeV/c];clone rate_{CA}"); + fph_clone_thetaMC_phiMC->SetTitle( + "Clone vs. MC polar and MC azimuthal angles;#phi^{MC} [rad];#theta^{MC} [rad];clone rate_{CA}"); + + // // ** Track fit parameter properties (residuals and pulls) ** // @@ -374,6 +410,20 @@ void TrackTypeQa::FillMCTrack(int iTrkMC, double weight) fph_eff_ptMC_yMC->Fill(mcTrack.GetRapidity(), mcTrack.GetPt(), bReco); fph_eff_thetaMC_phiMC->Fill(mcTrack.GetPhi(), mcTrack.GetTheta(), bReco); + + if (bReco) { // clone rate is normalised to the number of reconstructed tracks + fph_clone_pMC->Fill(mcTrack.GetP(), nClones); + fph_clone_etaMC->Fill(mcTrack.GetEta(), nClones); + fph_clone_yMC->Fill(mcTrack.GetRapidity(), nClones); + fph_clone_ptMC->Fill(mcTrack.GetPt(), nClones); + fph_clone_thetaMC->Fill(mcTrack.GetTheta(), nClones); + fph_clone_phiMC->Fill(mcTrack.GetPhi(), nClones); + fph_clone_nhitsMC->Fill(mcTrack.GetTotNofStationsWithHit(), nClones); + fph_clone_txMC->Fill(mcTrack.GetTx(), nClones); + fph_clone_tyMC->Fill(mcTrack.GetTy(), nClones); + fph_clone_ptMC_yMC->Fill(mcTrack.GetRapidity(), mcTrack.GetPt(), nClones); + fph_clone_thetaMC_phiMC->Fill(mcTrack.GetPhi(), mcTrack.GetTheta(), nClones); + } } // --------------------------------------------------------------------------------------------------------------------- diff --git a/reco/L1/qa/CbmCaTrackTypeQa.h b/reco/L1/qa/CbmCaTrackTypeQa.h index 393bbcae55..0c6945e3e5 100644 --- a/reco/L1/qa/CbmCaTrackTypeQa.h +++ b/reco/L1/qa/CbmCaTrackTypeQa.h @@ -253,11 +253,26 @@ namespace cbm::ca TProfile* fph_eff_txMC = nullptr; ///< Efficiency vs. MC slope along x-axis TProfile* fph_eff_tyMC = nullptr; ///< Efficiency vs. MC slope along y-axis - TProfile2D* fph_eff_thetaMC_phiMC = nullptr; ///< Efficiency vs. MC theta and MC phi TProfile2D* fph_eff_ptMC_yMC = nullptr; ///< Efficiency vs. MC transverse momentum and MC rapidity TProfile2D* fph_eff_tyMC_txMC = nullptr; ///< Efficiency vs. MC slopes + // ** Clone rate ** + + TProfile* fph_clone_pMC = nullptr; ///< Clone rate vs. MC momentum + TProfile* fph_clone_yMC = nullptr; ///< Efficiency vs. MC rapidity + TProfile* fph_clone_ptMC = nullptr; ///< Efficiency vs. MC transverse momentum + TProfile* fph_clone_thetaMC = nullptr; ///< Efficiency vs. MC polar angle + TProfile* fph_clone_etaMC = nullptr; ///< Efficiency vs. MC pseudorapidity + TProfile* fph_clone_phiMC = nullptr; ///< Efficiency vs. MC azimuthal angle + TProfile* fph_clone_nhitsMC = nullptr; ///< Efficiency vs. MC number of hits (total number of stations with a) + TProfile* fph_clone_txMC = nullptr; ///< Efficiency vs. MC slope along x-axis + TProfile* fph_clone_tyMC = nullptr; ///< Efficiency vs. MC slope along y-axis + + TProfile2D* fph_clone_thetaMC_phiMC = nullptr; ///< Efficiency vs. MC theta and MC phi + TProfile2D* fph_clone_ptMC_yMC = nullptr; ///< Efficiency vs. MC transverse momentum and MC rapidity + TProfile2D* fph_clone_tyMC_txMC = nullptr; ///< Efficiency vs. MC slopes + // ** Fit QA ** std::unique_ptr<TrackFitQa> fpFitQaFirstMCpoint = nullptr; std::unique_ptr<TrackFitQa> fpFitQaFirstHit = nullptr; -- GitLab