Commit f6d7ea69 authored by Simon Spannagel's avatar Simon Spannagel
Browse files

Merge branch 'v1.0.3_cherrypicking_2' into 'v1.0-stable'

v1.0.3 cherrypicking part 2

See merge request !283
parents 52b416a3 6b261d7f
Pipeline #1552035 passed with stages
in 22 minutes and 12 seconds
......@@ -2,7 +2,7 @@
#Get the line for the CVMFS status and chech if server is transaction
clicdp_status=`cvmfs_server list | grep clicdp`
if [[ $clicdp_status == *"(stratum0 / local)"* ]]; then
if [[ $clicdp_status == *"(stratum0 / S3)"* ]]; then
echo "No ongoing CVMFS transaction detected, initializing new transaction."
# Start transaction
cvmfs_server transaction clicdp.cern.ch
......
FROM gitlab-registry.cern.ch/corryvreckan/corryvreckan/corryvreckan-base:latest
MAINTAINER Simon Spannagel <simon.spannagel@cern.ch>
ENV ROOT6_VERSION 6.10.08
ENV ROOT6_VERSION 6.20.04
# Add layer for ROOT6
ENV ROOTSYS="/opt/root6"
......@@ -33,7 +33,7 @@ RUN source scl_source enable devtoolset-7 && \
rm -rf ${ROOTSYS}/{src,build}
ENV PEARY_VERSION v0.9.12
ENV PEARY_VERSION v0.9.13
# Add layer for Caribou Peary
ENV PEARYPATH="/opt/peary"
......
......@@ -45,8 +45,8 @@ AnalysisTimingATLASpix::AnalysisTimingATLASpix(Configuration config, std::shared
m_clusterSizeCut = m_config.get<size_t>("cluster_size_cut");
}
m_highTotCut = m_config.get<int>("high_tot_cut", 40);
m_highChargeCut = m_config.get<double>("high_charge_cut", static_cast<double>(m_highTotCut));
m_leftTailCut = m_config.get<double>("left_tail_cut", static_cast<double>(Units::convert(-10, "ns")));
m_lowTotCut = m_config.get<int>("low_tot_cut", 40);
m_timingTailCut = m_config.get<double>("timing_tail_cut", static_cast<double>(Units::convert(20, "ns")));
if(m_config.has("correction_file_row")) {
m_correctionFile_row = m_config.get<std::string>("correction_file_row");
......@@ -66,6 +66,10 @@ AnalysisTimingATLASpix::AnalysisTimingATLASpix(Configuration config, std::shared
m_calcCorrections = m_config.get<bool>("calc_corrections", false);
m_totBinExample = m_config.get<int>("tot_bin_example", 3);
m_inpixelBinSize = m_config.get<XYVector>(
"inpixel_bin_size",
{static_cast<double>(Units::convert(1.0, "um")), static_cast<double>(Units::convert(1.0, "um"))});
total_tracks_uncut = 0;
tracks_afterChi2Cut = 0;
tracks_hasIntercept = 0;
......@@ -85,60 +89,61 @@ void AnalysisTimingATLASpix::initialise() {
std::string name = "hTrackCorrelationTime";
hTrackCorrelationTime =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime->GetXaxis()->SetTitle("Track time stamp - cluster time stamp [ns]");
hTrackCorrelationTime->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
hTrackCorrelationTime->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTimeAssoc";
hTrackCorrelationTimeAssoc =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTimeAssoc->GetXaxis()->SetTitle("track time stamp - cluster time stamp [ns]");
hTrackCorrelationTimeAssoc->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
hTrackCorrelationTimeAssoc->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTimeAssocVsTime";
hTrackCorrelationTimeAssocVsTime = new TH2F(name.c_str(), name.c_str(), 3e3, 0, 3e3, 1e3, -5, 5);
hTrackCorrelationTimeAssocVsTime->GetYaxis()->SetTitle("track time stamp - cluster time stamp [us]");
hTrackCorrelationTimeAssocVsTime->GetYaxis()->SetTitle("ts_{track} - ts_{cluster} [us]");
hTrackCorrelationTimeAssocVsTime->GetXaxis()->SetTitle("time [s]");
hTrackCorrelationTimeAssocVsTime->GetZaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowCorr";
std::string title = "hTrackCorrelationTime_rowCorr: row-by-row correction";
hTrackCorrelationTime_rowCorr =
new TH1F(name.c_str(), title.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowCorr->GetXaxis()->SetTitle("track time stamp - cluster time stamp [ns]");
hTrackCorrelationTime_rowCorr->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowAndTimeWalkCorr";
hTrackCorrelationTime_rowAndTimeWalkCorr =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTimeWalkCorr->GetXaxis()->SetTitle("track time stamp - cluster time stamp [ns]");
hTrackCorrelationTime_rowAndTimeWalkCorr->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowAndTimeWalkCorr_l25";
hTrackCorrelationTime_rowAndTimeWalkCorr_l25 =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTimeWalkCorr_l25->GetXaxis()->SetTitle(
"track time stamp - cluster time stamp [ns] (if seed tot < 25lsb)");
hTrackCorrelationTime_rowAndTimeWalkCorr_l25->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowAndTimeWalkCorr_l40";
hTrackCorrelationTime_rowAndTimeWalkCorr_l40 =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTimeWalkCorr_l40->GetXaxis()->SetTitle(
"track time stamp - cluster time stamp [ns] (if seed tot < 40lsb)");
hTrackCorrelationTime_rowAndTimeWalkCorr_l40->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowAndTimeWalkCorr_g40";
hTrackCorrelationTime_rowAndTimeWalkCorr_g40 =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTimeWalkCorr_g40->GetXaxis()->SetTitle(
"track time stamp - cluster time stamp [ns] (if seed tot > 40lsb)");
hTrackCorrelationTime_rowAndTimeWalkCorr_g40->GetYaxis()->SetTitle("# events");
if(m_pointwise_correction_row) {
name = "hTrackCorrelationTime_rowCorr";
std::string title = "hTrackCorrelationTime_rowCorr: row-by-row correction";
hTrackCorrelationTime_rowCorr =
new TH1F(name.c_str(), title.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowCorr->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
hTrackCorrelationTime_rowCorr->GetYaxis()->SetTitle("# events");
}
name = "hTrackCorrelationTime_totBin_" + std::to_string(m_totBinExample);
hTrackCorrelationTime_example = new TH1D(name.c_str(), name.c_str(), 20000, -5000, 5000);
hTrackCorrelationTime_example->GetXaxis()->SetTitle(
"track time stamp - pixel time stamp [ns] (all pixels from cluster)");
hTrackCorrelationTime_example->GetYaxis()->SetTitle("# events");
if(m_pointwise_correction_timewalk) {
name = "hTrackCorrelationTime_rowAndTWCorr";
hTrackCorrelationTime_rowAndTWCorr =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTWCorr->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
hTrackCorrelationTime_rowAndTWCorr->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowAndTWCorr_l25";
hTrackCorrelationTime_rowAndTWCorr_l25 =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTWCorr_l25->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns] (if seed tot < 25lsb)");
hTrackCorrelationTime_rowAndTWCorr_l25->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowAndTWCorr_l40";
hTrackCorrelationTime_rowAndTWCorr_l40 =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTWCorr_l40->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns] (if seed tot < 40lsb)");
hTrackCorrelationTime_rowAndTWCorr_l40->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_rowAndTWCorr_g40";
hTrackCorrelationTime_rowAndTWCorr_g40 =
new TH1F(name.c_str(), name.c_str(), static_cast<int>(2. * m_timeCut), -1 * m_timeCut, m_timeCut);
hTrackCorrelationTime_rowAndTWCorr_g40->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns] (if seed tot > 40lsb)");
hTrackCorrelationTime_rowAndTWCorr_g40->GetYaxis()->SetTitle("# events");
name = "hTrackCorrelationTime_totBin_" + std::to_string(m_totBinExample);
hTrackCorrelationTime_example = new TH1D(name.c_str(), name.c_str(), 20000, -5000, 5000);
hTrackCorrelationTime_example->GetXaxis()->SetTitle(
"track time stamp - pixel time stamp [ns] (all pixels from cluster)");
hTrackCorrelationTime_example->GetYaxis()->SetTitle("# events");
}
// 2D histograms:
// column dependence
......@@ -146,103 +151,144 @@ void AnalysisTimingATLASpix::initialise() {
hTrackCorrelationTimeVsCol = new TH2F(
name.c_str(), name.c_str(), 20000, -5000, 5000, m_detector->nPixels().X(), -0.5, m_detector->nPixels().X() - 0.5);
hTrackCorrelationTimeVsCol->GetYaxis()->SetTitle("pixel column");
hTrackCorrelationTimeVsCol->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
hTrackCorrelationTimeVsCol->GetXaxis()->SetTitle("ts_{track} - ts_{seed pixel} [ns]");
// row dependence
name = "hTrackCorrelationTimeVsRow";
hTrackCorrelationTimeVsRow = new TH2F(
name.c_str(), name.c_str(), 20000, -5000, 5000, m_detector->nPixels().Y(), -0.5, m_detector->nPixels().Y() - 0.5);
hTrackCorrelationTimeVsRow->GetYaxis()->SetTitle("pixel row");
hTrackCorrelationTimeVsRow->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
hTrackCorrelationTimeVsRow->GetXaxis()->SetTitle("ts_{track} - ts_{seed pixel} [ns]");
name = "hTrackCorrelationTimeVsRow_1px";
hTrackCorrelationTimeVsRow_1px = new TH2F(
name.c_str(), name.c_str(), 20000, -5000, 5000, m_detector->nPixels().Y(), -0.5, m_detector->nPixels().Y() - 0.5);
hTrackCorrelationTimeVsRow_1px->GetYaxis()->SetTitle("pixel row");
hTrackCorrelationTimeVsRow_1px->GetXaxis()->SetTitle(
"track time stamp - seed pixel time stamp [ns] (single-pixel clusters)");
hTrackCorrelationTimeVsRow_1px->GetXaxis()->SetTitle("ts_{track} - ts_{seed pixel} [ns] (single-pixel clusters)");
name = "hTrackCorrelationTimeVsRow_npx";
hTrackCorrelationTimeVsRow_npx = new TH2F(
name.c_str(), name.c_str(), 20000, -5000, 5000, m_detector->nPixels().Y(), -0.5, m_detector->nPixels().Y() - 0.5);
hTrackCorrelationTimeVsRow_npx->GetYaxis()->SetTitle("pixel row");
hTrackCorrelationTimeVsRow_npx->GetXaxis()->SetTitle(
"track time stamp - seed pixel time stamp [ns] (multi-pixel clusters)");
hTrackCorrelationTimeVsRow_npx->GetXaxis()->SetTitle("ts_{track} - ts_{seed pixel} [ns] (multi-pixel clusters)");
// control plot: row dependence after row correction
name = "hTrackCorrelationTimeVsRow_rowCorr";
hTrackCorrelationTimeVsRow_rowCorr = new TH2F(
name.c_str(), name.c_str(), 20000, -5000, 5000, m_detector->nPixels().Y(), -0.5, m_detector->nPixels().Y() - 0.5);
hTrackCorrelationTimeVsRow_rowCorr->GetYaxis()->SetTitle("pixel row");
hTrackCorrelationTimeVsRow_rowCorr->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
if(m_pointwise_correction_row) {
name = "hTrackCorrelationTimeVsRow_rowCorr";
hTrackCorrelationTimeVsRow_rowCorr = new TH2F(name.c_str(),
name.c_str(),
20000,
-5000,
5000,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hTrackCorrelationTimeVsRow_rowCorr->GetYaxis()->SetTitle("pixel row");
hTrackCorrelationTimeVsRow_rowCorr->GetXaxis()->SetTitle("ts_{track} - ts_{seed pixel} [ns]");
}
// control plot: time walk dependence, not row corrected
name = "hTrackCorrelationTimeVsTot";
hTrackCorrelationTimeVsTot = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 512, 0, 512);
hTrackCorrelationTimeVsTot->GetYaxis()->SetTitle("pixel ToT [ns]");
hTrackCorrelationTimeVsTot->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
hTrackCorrelationTimeVsTot = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot->GetYaxis()->SetTitle("seed pixel tot [lsb]");
hTrackCorrelationTimeVsTot->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
name = "hTrackCorrelationTimeVsTot_1px";
hTrackCorrelationTimeVsTot_1px = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 512, 0, 512);
hTrackCorrelationTimeVsTot_1px->GetYaxis()->SetTitle("seed pixel ToT [ns] (if clustersize = 1)");
hTrackCorrelationTimeVsTot_1px->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
hTrackCorrelationTimeVsTot_1px = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot_1px->GetYaxis()->SetTitle("seed pixel tot [lsb] (if clustersize = 1)");
hTrackCorrelationTimeVsTot_1px->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
name = "hTrackCorrelationTimeVsTot_npx";
hTrackCorrelationTimeVsTot_npx = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 512, 0, 512);
hTrackCorrelationTimeVsTot_npx->GetYaxis()->SetTitle("seed pixel ToT [ns] (if clustersize > 1)");
hTrackCorrelationTimeVsTot_npx->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
hTrackCorrelationTimeVsTot_npx = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot_npx->GetYaxis()->SetTitle("seed pixel tot [lsb] (if clustersize > 1)");
hTrackCorrelationTimeVsTot_npx->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
name = "hTrackCorrelationTimeVsTot_px";
hTrackCorrelationTimeVsTot_px = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot_px->GetYaxis()->SetTitle("pixel tot [lsb]");
hTrackCorrelationTimeVsTot_px->GetXaxis()->SetTitle("ts_{track} - ts_{pixel} (all pixels from cluster) [ns]");
name = "hClusterTimeMinusPixelTime";
hClusterTimeMinusPixelTime = new TH1F(name.c_str(), name.c_str(), 2000, -1000, 1000);
hClusterTimeMinusPixelTime->GetXaxis()->SetTitle(
"cluster timestamp - pixel timestamp [ns] (all pixels from cluster (if clusterSize>1))");
"ts_{cluster} - ts_{pixel} [ns] (all pixels from cluster (if clusterSize>1))");
// timewalk after row correction
name = "hTrackCorrelationTimeVsTot_rowCorr";
hTrackCorrelationTimeVsTot_rowCorr = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 512, 0, 512);
hTrackCorrelationTimeVsTot_rowCorr->GetYaxis()->SetTitle("pixel ToT [ns]");
hTrackCorrelationTimeVsTot_rowCorr->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
name = "hTrackCorrelationTimeVsTot_rowCorr_1px";
hTrackCorrelationTimeVsTot_rowCorr_1px = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 512, 0, 512);
hTrackCorrelationTimeVsTot_rowCorr_1px->GetYaxis()->SetTitle("pixel ToT [ns] (single-pixel clusters)");
hTrackCorrelationTimeVsTot_rowCorr_1px->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
name = "hTrackCorrelationTimeVsTot_rowCorr_npx";
hTrackCorrelationTimeVsTot_rowCorr_npx = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 512, 0, 512);
hTrackCorrelationTimeVsTot_rowCorr_npx->GetYaxis()->SetTitle("pixel ToT [ns] (multi-pixel clusters)");
hTrackCorrelationTimeVsTot_rowCorr_npx->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
if(m_pointwise_correction_row) {
name = "hTrackCorrelationTimeVsTot_rowCorr";
hTrackCorrelationTimeVsTot_rowCorr = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot_rowCorr->GetYaxis()->SetTitle("seed pixel tot [lsb]");
hTrackCorrelationTimeVsTot_rowCorr->GetXaxis()->SetTitle("ts_{track} - ts_{seed pixel} [ns]");
name = "hTrackCorrelationTimeVsTot_rowCorr_1px";
hTrackCorrelationTimeVsTot_rowCorr_1px = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot_rowCorr_1px->GetYaxis()->SetTitle("seed pixel tot [lsb] (single-pixel clusters)");
hTrackCorrelationTimeVsTot_rowCorr_1px->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
name = "hTrackCorrelationTimeVsTot_rowCorr_npx";
hTrackCorrelationTimeVsTot_rowCorr_npx = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot_rowCorr_npx->GetYaxis()->SetTitle("seed pixel tot [lsb] (multi-pixel clusters)");
hTrackCorrelationTimeVsTot_rowCorr_npx->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
}
// final plots with both row and timewalk correction:
name = "hTrackCorrelationTimeVsRow_rowAndTimeWalkCorr";
hTrackCorrelationTimeVsRow_rowAndTimeWalkCorr = new TH2F(
name.c_str(), name.c_str(), 20000, -5000, 5000, m_detector->nPixels().Y(), -0.5, m_detector->nPixels().Y() - 0.5);
hTrackCorrelationTimeVsRow_rowAndTimeWalkCorr->GetYaxis()->SetTitle("row");
hTrackCorrelationTimeVsRow_rowAndTimeWalkCorr->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
if(m_pointwise_correction_timewalk) {
name = "hTrackCorrelationTimeVsRow_rowAndTWCorr";
hTrackCorrelationTimeVsRow_rowAndTWCorr = new TH2F(name.c_str(),
name.c_str(),
20000,
-5000,
5000,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hTrackCorrelationTimeVsRow_rowAndTWCorr->GetYaxis()->SetTitle("row");
hTrackCorrelationTimeVsRow_rowAndTWCorr->GetXaxis()->SetTitle("ts_{track} - ts_{seed pixel} [ns]");
name = "hTrackCorrelationTimeVsTot_rowAndTWCorr";
hTrackCorrelationTimeVsTot_rowAndTWCorr = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 64, 0, 64);
hTrackCorrelationTimeVsTot_rowAndTWCorr->GetYaxis()->SetTitle("seed pixel tot [lsb]");
hTrackCorrelationTimeVsTot_rowAndTWCorr->GetXaxis()->SetTitle("ts_{track} - ts_{cluster} [ns]");
}
// in-pixel time resolution plots:
auto nbins_x = static_cast<int>(std::ceil(m_detector->pitch().X() / m_inpixelBinSize.X()));
auto nbins_y = static_cast<int>(std::ceil(m_detector->pitch().Y() / m_inpixelBinSize.Y()));
if(nbins_x > 1e4 || nbins_y > 1e4) {
throw InvalidValueError(m_config, "inpixel_bin_size", "Too many bins for in-pixel histograms.");
}
name = "hTrackCorrelationTimeVsTot_rowAndTimeWalkCorr";
hTrackCorrelationTimeVsTot_rowAndTimeWalkCorr = new TH2F(name.c_str(), name.c_str(), 20000, -5000, 5000, 512, 0, 512);
hTrackCorrelationTimeVsTot_rowAndTimeWalkCorr->GetYaxis()->SetTitle("pixel ToT [ns]");
hTrackCorrelationTimeVsTot_rowAndTimeWalkCorr->GetXaxis()->SetTitle("track time stamp - seed pixel time stamp [ns]");
std::string title =
"in-pixel time resolution map;in-pixel x_{track} [#mum];in-pixel y_{track} [#mum];ts_{track} - ts_{cluster} [ns]";
hPixelTrackCorrelationTimeMap = new TProfile2D("pixelTrackCorrelationTimeMap",
title.c_str(),
nbins_x,
-pitch_x / 2.,
pitch_x / 2.,
nbins_y,
-pitch_y / 2.,
pitch_y / 2.,
-1 * m_timeCut,
m_timeCut);
name = "hClusterSizeVsTot_Assoc";
hClusterSizeVsTot_Assoc = new TH2F(name.c_str(), name.c_str(), 20, 0, 20, 512, 0, 512);
hClusterSizeVsTot_Assoc->GetYaxis()->SetTitle("pixel ToT [ns] (all pixels from cluster)");
hClusterSizeVsTot_Assoc = new TH2F(name.c_str(), name.c_str(), 20, 0, 20, 64, 0, 64);
hClusterSizeVsTot_Assoc->GetYaxis()->SetTitle("pixel ToT [lsb] (all pixels from cluster)");
hClusterSizeVsTot_Assoc->GetXaxis()->SetTitle("clusterSize");
hHitMapAssoc = new TH2F("hitMapAssoc",
"hitMapAssoc; x_{track} [px]; x_{track} [px]; # entries",
"hitMapAssoc; x_{track} [px]; y_{track} [px];# entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hHitMapAssoc_highCharge = new TH2F("hitMapAssoc_highCharge",
"hitMapAssoc_highCharge; x_{track} [px]; x_{track} [px]; # entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
0,
m_detector->nPixels().Y());
hHitMapAssoc_highToT = new TH2F("hitMapAssoc_highToT",
"hitMapAssoc_highToT; x_{track} [px]; y_{track} [px];# entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hHitMapAssoc_inPixel = new TH2F("hitMapAssoc_inPixel",
"hitMapAssoc_inPixel; in-pixel x_{track} [#mum]; in-pixel y_{track} [#mum]",
static_cast<int>(pitch_x),
......@@ -251,17 +297,19 @@ void AnalysisTimingATLASpix::initialise() {
static_cast<int>(pitch_y),
-pitch_y / 2.,
pitch_y / 2.);
hHitMapAssoc_inPixel_highCharge =
new TH2F("hitMapAssoc_inPixel_highCharge",
"hitMapAssoc_inPixel_highCharge; in-pixel x_{track} [#mum]; in-pixel y_{track} [#mum]",
static_cast<int>(pitch_x),
-pitch_x / 2.,
pitch_x / 2.,
static_cast<int>(pitch_y),
-pitch_y / 2.,
pitch_y / 2.);
if(m_config.has("high_tot_cut")) {
hHitMapAssoc_inPixel_highToT =
new TH2F("hitMapAssoc_inPixel_highToT",
"hitMapAssoc_inPixel_highToT;in-pixel x_{track} [#mum];in-pixel y_{track} [#mum]",
static_cast<int>(pitch_x),
-pitch_x / 2.,
pitch_x / 2.,
static_cast<int>(pitch_y),
-pitch_y / 2.,
pitch_y / 2.);
}
hClusterMapAssoc = new TH2F("hClusterMapAssoc",
"hClusterMapAssoc; x_{cluster} [px]; x_{cluster} [px]; # entries",
"hClusterMapAssoc; x_{cluster} [px]; y_{cluster} [px];# entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
......@@ -269,72 +317,163 @@ void AnalysisTimingATLASpix::initialise() {
-0.5,
m_detector->nPixels().Y() - 0.5);
hTotVsRow = new TH2F("hTotVsRow",
"hTotVsRow;seed-pixel row;seed-pixel ToT [lsb]",
m_detector->nPixels().Y(),
0,
m_detector->nPixels().Y(),
64,
0,
64);
hTotVsTime = new TH2F("hTotVsTime", "hTotVsTime", 64, 0, 64, 1e6, 0, 100);
hTotVsTime->GetXaxis()->SetTitle("pixel ToT [lsb]");
hTotVsTime->GetYaxis()->SetTitle("time [s]");
hTotVsTime_high = new TH2F("hTotVsTime_high", "hTotVsTime_high", 64, 0, 64, 1e6, 0, 100);
hTotVsTime_high->GetXaxis()->SetTitle("pixel ToT [lsb] if > high_tot_cut");
hTotVsTime_high->GetYaxis()->SetTitle("time [s]");
if(m_config.has("high_tot_cut")) {
hTotVsTime_highToT = new TH2F("hTotVsTime_highToT", "hTotVsTime_highToT", 64, 0, 64, 1e6, 0, 100);
hTotVsTime_highToT->GetXaxis()->SetTitle("pixel ToT [lsb] if > high_tot_cut");
hTotVsTime_highToT->GetYaxis()->SetTitle("time [s]");
}
// control plots for "left tail" and "main peak" of time correlation
hClusterMap_leftTail = new TH2F("hClusterMap_leftTail",
"hClusterMap_leftTail; x_{cluster} [px]; x_{cluster} [px]; # entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hClusterMap_mainPeak = new TH2F("hClusterMap_mainPeak",
"hClusterMap_mainPeak; x_{cluster} [px]; x_{cluster} [px]; # entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hClusterSize_leftTail = new TH1F("clusterSize_leftTail", "clusterSize_leftTail; cluster size; # entries", 100, 0, 100);
hClusterSize_mainPeak = new TH1F("clusterSize_mainPeak", "clusterSize_mainPeak; cluster size; # entries", 100, 0, 100);
hTot_leftTail = new TH1F("hTot_leftTail", "hTot_leftTail; pixel ToT [lsb]; # events", 2 * 64, -64, 64);
hTot_mainPeak = new TH1F("hTot_mainPeak", "hTot_mainPeak; pixel ToT [lsb]; # events", 2 * 64, -64, 64);
hPixelTimestamp_leftTail =
new TH1F("pixelTimestamp_leftTail", "pixelTimestamp_leftTail; pixel timestamp [ns]; # entries", 2050, 0, 2050);
hPixelTimestamp_mainPeak =
new TH1F("pixelTimestamp_mainPeak", "pixelTimestamp_mainPeak; pixel timestamp [ns]; # entries", 2050, 0, 2050);
// control plots for "left/right tail" and "main peak" of the track time correlation
if(m_config.has("timing_tail_cut") && m_pointwise_correction_timewalk) {
hInPixelMap_leftTail = new TH2F("hPixelMap_leftTail",
"in-pixel track position (left tail of time residual);in-pixel x_{track} "
"[#mum];in-pixel y_{track} [#mum];# entries",
nbins_x,
-pitch_x / 2.,
pitch_x / 2.,
nbins_y,
-pitch_y / 2.,
pitch_y / 2.);
hInPixelMap_rightTail = new TH2F("hPixelMap_rightTail",
"in-pixel track position (right tail of time residual);in-pixel x_{track} "
"[#mum];in-pixel y_{track} [#mum];# entries",
nbins_x,
-pitch_x / 2.,
pitch_x / 2.,
nbins_y,
-pitch_y / 2.,
pitch_y / 2.);
hInPixelMap_mainPeak = new TH2F("hPixelMap_mainPeak",
"in-pixel track position (main peak of time residual);in-pixel x_{track} "
"[#mum];in-pixel y_{track} [#mum];# entries",
nbins_x,
-pitch_x / 2.,
pitch_x / 2.,
nbins_y,
-pitch_y / 2.,
pitch_y / 2.);
hClusterMap_leftTail =
new TH2F("hClusterMap_leftTail",
"hClusterMap (left tail of time residual); x_{cluster} [px]; x_{cluster} [px];# entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hClusterMap_rightTail =
new TH2F("hClusterMap_rightTail",
"hClusterMap (right tail of time residual); x_{cluster} [px]; x_{cluster} [px];# entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hClusterMap_mainPeak =
new TH2F("hClusterMap_mainPeak",
"hClusterMap (main peak of time residual); x_{cluster} [px]; x_{cluster} [px];# entries",
m_detector->nPixels().X(),
-0.5,
m_detector->nPixels().X() - 0.5,
m_detector->nPixels().Y(),
-0.5,
m_detector->nPixels().Y() - 0.5);
hClusterSize_leftTail =
new TH1F("clusterSize_leftTail", "clusterSize (left tail of time residual);cluster size;# entries", 100, 0, 100);
hClusterSize_rightTail = new TH1F(
"clusterSize_rightTail", "clusterSize (right tail of time residual);cluster size;# entries", 100, 0, 100);
hClusterSize_mainPeak =
new TH1F("clusterSize_mainPeak", "clusterSize (main peak of time residual);cluster size;# entries", 100, 0, 100);
hTot_leftTail =
new TH1F("hTot_leftTail", "ToT (left tail of time residual);seed pixel ToT [lsb];# events", 2 * 64, -64, 64);
hTot_rightTail =
new TH1F("hTot_rightTail", "ToT (right tail of time residual);seed pixel ToT [lsb];# events", 2 * 64, -64, 64);
hTot_mainPeak = new TH1F("hTot_mainPeak",
"ToT (main peak of time residual, 1px clusters);seed pixel ToT [lsb];# events",
2 * 64,
-64,
64);
hTot_leftTail_1px = new TH1F("hTot_leftTail_1px",
"ToT (left tail of time residual, 1px clusters);seed pixel ToT [lsb];# events",
2 * 64,
-64,
64);
hTot_rightTail_1px = new TH1F("hTot_rightTail_1px",
"ToT (right tail of time residual, 1px clusters);seed pixel ToT [lsb];# events",
2 * 64,
-64,
64);
hTot_mainPeak_1px = new TH1F("hTot_mainPeak_1px",
"ToT (main peak of time residual, 1px clusters);seed pixel ToT [lsb];# events",
2 * 64,
-64,
64);
hPixelTimestamp_leftTail = new TH1F("pixelTimestamp_leftTail",
"pixelTimestamp (left tail of time residual);pixel timestamp [ms];# events",
3e6,
0,
3e3);
hPixelTimestamp_rightTail = new TH1F("pixelTimestamp_rightTail",
"pixelTimestamp (left tail of time residual);pixel timestamp [ms];# events",
3e6,
0,
3e3);
hPixelTimestamp_mainPeak = new TH1F("pixelTimestamp_mainPeak",
"pixelTimestamp (left tail of time residual);pixel timestamp [ms];# events",
3e6,
0,
3e3);
}
// /////////////////////////////////////////// //
// TGraphErrors for Timewalk & Row Correction: //
// /////////////////////////////////////////// //
gTimeCorrelationVsRow = new TGraphErrors();
gTimeCorrelationVsRow->SetName("gTimeCorrelationVsRow");
gTimeCorrelationVsRow->SetTitle("gTimeCorrelationVsRow");
gTimeCorrelationVsRow->GetXaxis()->SetTitle("row");
gTimeCorrelationVsRow->GetYaxis()->SetTitle("time correlation peak [ns]");
// !!!!also fix these:!!!!
int nBinsToT = hTrackCorrelationTimeVsTot_rowCorr->GetNbinsY();
gTimeCorrelationVsTot_rowCorr = new TGraphErrors(nBinsToT);
gTimeCorrelationVsTot_rowCorr->SetName("gTimeCorrelationVsTot");
gTimeCorrelationVsTot_rowCorr->SetTitle("gTimeCorrelationVsTot");