From 55f77137ceeea18d32443428939df2002bc9d08e Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Mon, 2 Jan 2023 16:14:04 -0300 Subject: [PATCH 1/2] add delta with MC for PV position study --- PWGLF/Tasks/QC/straRecoStudy.cxx | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/PWGLF/Tasks/QC/straRecoStudy.cxx b/PWGLF/Tasks/QC/straRecoStudy.cxx index f5f5fbb3c81..a0a81dbcf9c 100644 --- a/PWGLF/Tasks/QC/straRecoStudy.cxx +++ b/PWGLF/Tasks/QC/straRecoStudy.cxx @@ -87,6 +87,9 @@ struct preProcessMCcollisions { float nContribsWithTOF = 0; float nContribsWithITS = 0; float covTrace = 0; + float deltaXY = -999; // positive def + float deltaZ = -999; + float deltaT = -999; }; template @@ -107,6 +110,11 @@ struct preProcessMCcollisions { const AxisSpec axisCovariance{(int)400, 0.0f, +0.1f, ""}; const AxisSpec axisCovarianceTest{(int)400, -0.05f, +0.05f, ""}; const AxisSpec axisTwenty{(int)20, -0.5f, +19.5f, ""}; + + const AxisSpec axisPVResolutionXY{(int)400, 0.0f, +0.05f, ""}; + const AxisSpec axisPVResolutionZ{(int)400, -0.1f, +0.1f, ""}; + const AxisSpec axisPVResolutionT{(int)400, -50000.0f, +0.0f, ""}; + histos.add("hNTimesCollRecoed", "hNTimesCollRecoed", kTH1F, {axisNTimesCollRecoed}); histos.add("hNTimesCollWithXiRecoed", "hNTimesCollWithXiRecoed", kTH1F, {axisNTimesCollRecoed}); @@ -123,6 +131,14 @@ struct preProcessMCcollisions { histos.add("h2dCovarianceTrace", "h2dCovarianceTrace", kTH2D, {axisCovariance, axisTwenty}); histos.add("h2dCovarianceTraceWithXi", "h2dCovarianceTraceWithXi", kTH2D, {axisCovariance, axisTwenty}); + //PV true error: from reco vs MC + histos.add("h2dPVResolutionXY", "h2dPVResolutionXY", kTH2D, {axisPVResolutionXY, axisTwenty}); + histos.add("h2dPVResolutionZ", "h2dPVResolutionZ", kTH2D, {axisPVResolutionZ, axisTwenty}); + histos.add("h2dPVResolutionT", "h2dPVResolutionT", kTH2D, {axisPVResolutionT, axisTwenty}); + histos.add("h2dPVResolutionXYWithXi", "h2dPVResolutionXYWithXi", kTH2D, {axisPVResolutionXY, axisTwenty}); + histos.add("h2dPVResolutionZWithXi", "h2dPVResolutionZWithXi", kTH2D, {axisPVResolutionZ, axisTwenty}); + histos.add("h2dPVResolutionTWithXi", "h2dPVResolutionTWithXi", kTH2D, {axisPVResolutionT, axisTwenty}); + // Helper to decipher this histogram histos.get(HIST("h2dNContributors"))->GetYaxis()->SetBinLabel(1, "Recoed 1 time, 1st PV"); // size 1 = 0 histos.get(HIST("h2dNContributors"))->GetYaxis()->SetBinLabel(2, "Recoed 2 times, Biggest PV"); // size 2 = 1 @@ -164,10 +180,14 @@ struct preProcessMCcollisions { histos.fill(HIST("hNTimesCollWithXiRecoed"), collisions.size()); int lCollisionIndex = 0; for (auto& collision : collisions) { - float cyy = TMath::Sign(1, collision.covYY()) * TMath::Sqrt(TMath::Abs(collision.covYY())); - histos.fill(HIST("hCyyTest"), cyy); // check for bug + float cyy = TMath::Sign(1,collision.covYY())*TMath::Sqrt( TMath::Abs( collision.covYY() ) ); + histos.fill(HIST("hCyyTest"), cyy); //check for bug collisionNContribs.emplace_back(collision.numContrib()); collisionStatAggregator[lCollisionIndex].covTrace = TMath::Sqrt(TMath::Abs(collision.covXX()) + TMath::Abs(collision.covYY()) + TMath::Abs(collision.covZZ())); + collisionStatAggregator[lCollisionIndex].deltaXY = TMath::Sqrt( TMath::Power(collision.posX() - mcCollision.posX(), 2) + TMath::Power(collision.posY() - mcCollision.posY(), 2) ); + collisionStatAggregator[lCollisionIndex].deltaZ = collision.posZ() - mcCollision.posZ(); + collisionStatAggregator[lCollisionIndex].deltaT = (collision.collisionTime() - mcCollision.t())/1000; + auto groupedTracks = tracks.sliceBy(perCollision, collision.globalIndex()); for (auto& track : groupedTracks) { if (track.isPVContributor()) { @@ -198,6 +218,9 @@ struct preProcessMCcollisions { histos.fill(HIST("h2dTrackCounter"), lIndexBin + 5, collisions.size(), collisionStatAggregator[ic].nContribsWithTOF); histos.fill(HIST("h2dNContributors"), collisionNContribs[ic], lYAxisOffset + lCollisionIndex); histos.fill(HIST("h2dCovarianceTrace"), collisionStatAggregator[ic].covTrace, lYAxisOffset + lCollisionIndex); + histos.fill(HIST("h2dPVResolutionXY"), collisionStatAggregator[ic].deltaXY, lYAxisOffset + lCollisionIndex); + histos.fill(HIST("h2dPVResolutionZ"), collisionStatAggregator[ic].deltaZ, lYAxisOffset + lCollisionIndex); + histos.fill(HIST("h2dPVResolutionT"), collisionStatAggregator[ic].deltaT, lYAxisOffset + lCollisionIndex); if (lNumberOfXi > 0) { histos.fill(HIST("h2dTrackCounterWithXi"), lIndexBin + 0, collisions.size()); histos.fill(HIST("h2dTrackCounterWithXi"), lIndexBin + 1, collisions.size(), collisionNContribs[ic]); @@ -207,6 +230,9 @@ struct preProcessMCcollisions { histos.fill(HIST("h2dTrackCounterWithXi"), lIndexBin + 5, collisions.size(), collisionStatAggregator[ic].nContribsWithTOF); histos.fill(HIST("h2dNContributorsWithXi"), collisionNContribs[ic], lYAxisOffset + lCollisionIndex); histos.fill(HIST("h2dCovarianceTraceWithXi"), collisionStatAggregator[ic].covTrace, lYAxisOffset + lCollisionIndex); + histos.fill(HIST("h2dPVResolutionXYWithXi"), collisionStatAggregator[ic].deltaXY, lYAxisOffset + lCollisionIndex); + histos.fill(HIST("h2dPVResolutionZWithXi"), collisionStatAggregator[ic].deltaZ, lYAxisOffset + lCollisionIndex); + histos.fill(HIST("h2dPVResolutionTWithXi"), collisionStatAggregator[ic].deltaT, lYAxisOffset + lCollisionIndex); } lCollisionIndex++; } From 42d5303c8088a05e706af7672b3b7be4318a2055 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Mon, 2 Jan 2023 19:14:39 +0000 Subject: [PATCH 2/2] Please consider the following formatting changes --- PWGLF/Tasks/QC/straRecoStudy.cxx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/PWGLF/Tasks/QC/straRecoStudy.cxx b/PWGLF/Tasks/QC/straRecoStudy.cxx index a0a81dbcf9c..d7f0a19c780 100644 --- a/PWGLF/Tasks/QC/straRecoStudy.cxx +++ b/PWGLF/Tasks/QC/straRecoStudy.cxx @@ -110,11 +110,11 @@ struct preProcessMCcollisions { const AxisSpec axisCovariance{(int)400, 0.0f, +0.1f, ""}; const AxisSpec axisCovarianceTest{(int)400, -0.05f, +0.05f, ""}; const AxisSpec axisTwenty{(int)20, -0.5f, +19.5f, ""}; - + const AxisSpec axisPVResolutionXY{(int)400, 0.0f, +0.05f, ""}; const AxisSpec axisPVResolutionZ{(int)400, -0.1f, +0.1f, ""}; const AxisSpec axisPVResolutionT{(int)400, -50000.0f, +0.0f, ""}; - + histos.add("hNTimesCollRecoed", "hNTimesCollRecoed", kTH1F, {axisNTimesCollRecoed}); histos.add("hNTimesCollWithXiRecoed", "hNTimesCollWithXiRecoed", kTH1F, {axisNTimesCollRecoed}); @@ -131,14 +131,14 @@ struct preProcessMCcollisions { histos.add("h2dCovarianceTrace", "h2dCovarianceTrace", kTH2D, {axisCovariance, axisTwenty}); histos.add("h2dCovarianceTraceWithXi", "h2dCovarianceTraceWithXi", kTH2D, {axisCovariance, axisTwenty}); - //PV true error: from reco vs MC + // PV true error: from reco vs MC histos.add("h2dPVResolutionXY", "h2dPVResolutionXY", kTH2D, {axisPVResolutionXY, axisTwenty}); histos.add("h2dPVResolutionZ", "h2dPVResolutionZ", kTH2D, {axisPVResolutionZ, axisTwenty}); histos.add("h2dPVResolutionT", "h2dPVResolutionT", kTH2D, {axisPVResolutionT, axisTwenty}); histos.add("h2dPVResolutionXYWithXi", "h2dPVResolutionXYWithXi", kTH2D, {axisPVResolutionXY, axisTwenty}); histos.add("h2dPVResolutionZWithXi", "h2dPVResolutionZWithXi", kTH2D, {axisPVResolutionZ, axisTwenty}); histos.add("h2dPVResolutionTWithXi", "h2dPVResolutionTWithXi", kTH2D, {axisPVResolutionT, axisTwenty}); - + // Helper to decipher this histogram histos.get(HIST("h2dNContributors"))->GetYaxis()->SetBinLabel(1, "Recoed 1 time, 1st PV"); // size 1 = 0 histos.get(HIST("h2dNContributors"))->GetYaxis()->SetBinLabel(2, "Recoed 2 times, Biggest PV"); // size 2 = 1 @@ -180,14 +180,14 @@ struct preProcessMCcollisions { histos.fill(HIST("hNTimesCollWithXiRecoed"), collisions.size()); int lCollisionIndex = 0; for (auto& collision : collisions) { - float cyy = TMath::Sign(1,collision.covYY())*TMath::Sqrt( TMath::Abs( collision.covYY() ) ); - histos.fill(HIST("hCyyTest"), cyy); //check for bug + float cyy = TMath::Sign(1, collision.covYY()) * TMath::Sqrt(TMath::Abs(collision.covYY())); + histos.fill(HIST("hCyyTest"), cyy); // check for bug collisionNContribs.emplace_back(collision.numContrib()); collisionStatAggregator[lCollisionIndex].covTrace = TMath::Sqrt(TMath::Abs(collision.covXX()) + TMath::Abs(collision.covYY()) + TMath::Abs(collision.covZZ())); - collisionStatAggregator[lCollisionIndex].deltaXY = TMath::Sqrt( TMath::Power(collision.posX() - mcCollision.posX(), 2) + TMath::Power(collision.posY() - mcCollision.posY(), 2) ); + collisionStatAggregator[lCollisionIndex].deltaXY = TMath::Sqrt(TMath::Power(collision.posX() - mcCollision.posX(), 2) + TMath::Power(collision.posY() - mcCollision.posY(), 2)); collisionStatAggregator[lCollisionIndex].deltaZ = collision.posZ() - mcCollision.posZ(); - collisionStatAggregator[lCollisionIndex].deltaT = (collision.collisionTime() - mcCollision.t())/1000; - + collisionStatAggregator[lCollisionIndex].deltaT = (collision.collisionTime() - mcCollision.t()) / 1000; + auto groupedTracks = tracks.sliceBy(perCollision, collision.globalIndex()); for (auto& track : groupedTracks) { if (track.isPVContributor()) {