From 1d91b28ba32f8a2f81f687dcffee903dcc995f10 Mon Sep 17 00:00:00 2001 From: Lennart Huth <lennart.huth@desy.de> Date: Thu, 30 Mar 2023 11:52:17 +0200 Subject: [PATCH] added seperate folders for inpixelROI and time dependent track correlations --- .../AnalysisEfficiency/AnalysisEfficiency.cpp | 76 +++++++++++++------ .../AnalysisEfficiency/AnalysisEfficiency.h | 2 + 2 files changed, 54 insertions(+), 24 deletions(-) diff --git a/src/modules/AnalysisEfficiency/AnalysisEfficiency.cpp b/src/modules/AnalysisEfficiency/AnalysisEfficiency.cpp index 52f010281..6c98997b6 100644 --- a/src/modules/AnalysisEfficiency/AnalysisEfficiency.cpp +++ b/src/modules/AnalysisEfficiency/AnalysisEfficiency.cpp @@ -85,19 +85,6 @@ void AnalysisEfficiency::initialize() { pitch_y / 2.); hPixelEfficiencyMap_trackPos->SetDirectory(this->getROOTDirectory()); - title = m_detector->getName() + - " Pixel efficiency map (in-pixel ROI);in-pixel x_{track} [#mum];in-pixel y_{track} #mum;#epsilon"; - hPixelEfficiencyMap_inPixelROI_trackPos_TProfile = new TProfile2D("pixelEfficiencyMap_inPixelROI_trackPos_TProfile", - title.c_str(), - nbins_x, - -pitch_x / 2., - pitch_x / 2., - nbins_y, - -pitch_y / 2., - pitch_y / 2., - 0, - 1); - title = m_detector->getName() + " Chip efficiency map;x [px];y [px];#epsilon"; hChipEfficiencyMap_trackPos_TProfile = new TProfile2D("chipEfficiencyMap_trackPos_TProfile", title.c_str(), @@ -206,9 +193,7 @@ void AnalysisEfficiency::initialize() { 1.5 * m_detector->getPitch().y()); eTotalEfficiency = new TEfficiency("eTotalEfficiency", "totalEfficiency;;#epsilon", 1, 0, 1); eTotalEfficiency->SetDirectory(this->getROOTDirectory()); - eTotalEfficiency_inPixelROI = new TEfficiency( - "eTotalEfficiency_inPixelROI", "eTotalEfficiency_inPixelROI;;#epsilon (within in-pixel ROI)", 1, 0, 1); - eTotalEfficiency_inPixelROI->SetDirectory(this->getROOTDirectory()); + efficiencyColumns = new TEfficiency("efficiencyColumns", "Efficiency vs. column number; column; #epsilon", m_detector->nPixels().X(), @@ -226,12 +211,62 @@ void AnalysisEfficiency::initialize() { efficiencyVsTimeLong = new TEfficiency("efficiencyVsTimeLong", "Efficiency vs. time; time [s]; #epsilon", 3000, 0, 30000); efficiencyVsTimeLong->SetDirectory(this->getROOTDirectory()); + + // initialize matrix with hit timestamps to all 0: + auto nRows = static_cast<size_t>(m_detector->nPixels().Y()); + auto nCols = static_cast<size_t>(m_detector->nPixels().X()); + std::vector<double> v_row(nRows, 0.); // create vector will zeros of length <nRows> + prev_hit_ts.assign(nCols, v_row); // use vector v_row to construct matrix + + createInPixelRoiPlots(); + createFakeRatePlots(); + createTrackTimePlots(); +} + +void AnalysisEfficiency::createInPixelRoiPlots() { + TDirectory* directory = getROOTDirectory(); + TDirectory* in_pixel_roi = directory->mkdir("inpixelROI"); + if(in_pixel_roi == nullptr) { + throw RuntimeError("Cannot create or access fake rate ROOT directory for module " + this->getUniqueName()); + } + in_pixel_roi->cd(); + auto pitch_x = static_cast<double>(Units::convert(m_detector->getPitch().X(), "um")); + auto pitch_y = static_cast<double>(Units::convert(m_detector->getPitch().Y(), "um")); + + auto nbins_x = static_cast<int>(std::ceil(m_detector->getPitch().X() / m_inpixelBinSize)); + auto nbins_y = static_cast<int>(std::ceil(m_detector->getPitch().Y() / m_inpixelBinSize)); + + std::string title = m_detector->getName() + + " Pixel efficiency map (in-pixel ROI);in-pixel x_{track} [#mum];in-pixel y_{track} #mum;#epsilon"; + hPixelEfficiencyMap_inPixelROI_trackPos_TProfile = new TProfile2D("pixelEfficiencyMap_inPixelROI_trackPos_TProfile", + title.c_str(), + nbins_x, + -pitch_x / 2., + pitch_x / 2., + nbins_y, + -pitch_y / 2., + pitch_y / 2., + 0, + 1); + eTotalEfficiency_inPixelROI = new TEfficiency( + "eTotalEfficiency_inPixelROI", "eTotalEfficiency_inPixelROI;;#epsilon (within in-pixel ROI)", 1, 0, 1); + eTotalEfficiency_inPixelROI->SetDirectory(this->getROOTDirectory()->GetDirectory("inpixelROI")); +} + +void AnalysisEfficiency::createTrackTimePlots() { + TDirectory* directory = getROOTDirectory(); + TDirectory* correlationsToPrevTrack = directory->mkdir("correlationsToPrevTrack"); + if(correlationsToPrevTrack == nullptr) { + throw RuntimeError("Cannot create or access fake rate ROOT directory for module " + this->getUniqueName()); + } + correlationsToPrevTrack->cd(); + hTrackTimeToPrevHit_matched = new TH1D("trackTimeToPrevHit_matched", "trackTimeToPrevHit_matched;time to prev hit [us];# events", 1e6, 0, 1e6); hTrackTimeToPrevHit_notmatched = new TH1D( "trackTimeToPrevHit_notmatched", "trackTimeToPrevHit_notmatched;time to prev hit [us];# events", 1e6, 0, 1e6); - title = m_detector->getName() + "time difference to previous track (if this has assoc cluster)"; + std::string title = m_detector->getName() + "time difference to previous track (if this has assoc cluster)"; hTimeDiffPrevTrack_assocCluster = new TH1D("timeDiffPrevTrack_assocCluster", title.c_str(), 11000, -1000, 10000); hTimeDiffPrevTrack_assocCluster->GetXaxis()->SetTitle("time diff [#mus]"); hTimeDiffPrevTrack_assocCluster->GetYaxis()->SetTitle("events"); @@ -297,13 +332,6 @@ void AnalysisEfficiency::initialize() { 6, -.5, 5.5); - // initialize matrix with hit timestamps to all 0: - auto nRows = static_cast<size_t>(m_detector->nPixels().Y()); - auto nCols = static_cast<size_t>(m_detector->nPixels().X()); - std::vector<double> v_row(nRows, 0.); // create vector will zeros of length <nRows> - prev_hit_ts.assign(nCols, v_row); // use vector v_row to construct matrix - - createFakeRatePlots(); } void AnalysisEfficiency::createFakeRatePlots() { diff --git a/src/modules/AnalysisEfficiency/AnalysisEfficiency.h b/src/modules/AnalysisEfficiency/AnalysisEfficiency.h index 5617709cb..826258239 100644 --- a/src/modules/AnalysisEfficiency/AnalysisEfficiency.h +++ b/src/modules/AnalysisEfficiency/AnalysisEfficiency.h @@ -118,6 +118,8 @@ namespace corryvreckan { Matrix<double> prev_hit_ts; // matrix containing previous hit timestamp for every pixel void createFakeRatePlots(); + void createInPixelRoiPlots(); + void createTrackTimePlots(); }; } // namespace corryvreckan -- GitLab