@@ -87,6 +87,9 @@ struct preProcessMCcollisions {
8787 float nContribsWithTOF = 0 ;
8888 float nContribsWithITS = 0 ;
8989 float covTrace = 0 ;
90+ float deltaXY = -999 ; // positive def
91+ float deltaZ = -999 ;
92+ float deltaT = -999 ;
9093 };
9194
9295 template <typename T>
@@ -107,6 +110,11 @@ struct preProcessMCcollisions {
107110 const AxisSpec axisCovariance{(int )400 , 0 .0f , +0 .1f , " " };
108111 const AxisSpec axisCovarianceTest{(int )400 , -0 .05f , +0 .05f , " " };
109112 const AxisSpec axisTwenty{(int )20 , -0 .5f , +19 .5f , " " };
113+
114+ const AxisSpec axisPVResolutionXY{(int )400 , 0 .0f , +0 .05f , " " };
115+ const AxisSpec axisPVResolutionZ{(int )400 , -0 .1f , +0 .1f , " " };
116+ const AxisSpec axisPVResolutionT{(int )400 , -50000 .0f , +0 .0f , " " };
117+
110118 histos.add (" hNTimesCollRecoed" , " hNTimesCollRecoed" , kTH1F , {axisNTimesCollRecoed});
111119 histos.add (" hNTimesCollWithXiRecoed" , " hNTimesCollWithXiRecoed" , kTH1F , {axisNTimesCollRecoed});
112120
@@ -123,6 +131,14 @@ struct preProcessMCcollisions {
123131 histos.add (" h2dCovarianceTrace" , " h2dCovarianceTrace" , kTH2D , {axisCovariance, axisTwenty});
124132 histos.add (" h2dCovarianceTraceWithXi" , " h2dCovarianceTraceWithXi" , kTH2D , {axisCovariance, axisTwenty});
125133
134+ // PV true error: from reco vs MC
135+ histos.add (" h2dPVResolutionXY" , " h2dPVResolutionXY" , kTH2D , {axisPVResolutionXY, axisTwenty});
136+ histos.add (" h2dPVResolutionZ" , " h2dPVResolutionZ" , kTH2D , {axisPVResolutionZ, axisTwenty});
137+ histos.add (" h2dPVResolutionT" , " h2dPVResolutionT" , kTH2D , {axisPVResolutionT, axisTwenty});
138+ histos.add (" h2dPVResolutionXYWithXi" , " h2dPVResolutionXYWithXi" , kTH2D , {axisPVResolutionXY, axisTwenty});
139+ histos.add (" h2dPVResolutionZWithXi" , " h2dPVResolutionZWithXi" , kTH2D , {axisPVResolutionZ, axisTwenty});
140+ histos.add (" h2dPVResolutionTWithXi" , " h2dPVResolutionTWithXi" , kTH2D , {axisPVResolutionT, axisTwenty});
141+
126142 // Helper to decipher this histogram
127143 histos.get <TH2 >(HIST (" h2dNContributors" ))->GetYaxis ()->SetBinLabel (1 , " Recoed 1 time, 1st PV" ); // size 1 = 0
128144 histos.get <TH2 >(HIST (" h2dNContributors" ))->GetYaxis ()->SetBinLabel (2 , " Recoed 2 times, Biggest PV" ); // size 2 = 1
@@ -168,6 +184,10 @@ struct preProcessMCcollisions {
168184 histos.fill (HIST (" hCyyTest" ), cyy); // check for bug
169185 collisionNContribs.emplace_back (collision.numContrib ());
170186 collisionStatAggregator[lCollisionIndex].covTrace = TMath::Sqrt (TMath::Abs (collision.covXX ()) + TMath::Abs (collision.covYY ()) + TMath::Abs (collision.covZZ ()));
187+ collisionStatAggregator[lCollisionIndex].deltaXY = TMath::Sqrt (TMath::Power (collision.posX () - mcCollision.posX (), 2 ) + TMath::Power (collision.posY () - mcCollision.posY (), 2 ));
188+ collisionStatAggregator[lCollisionIndex].deltaZ = collision.posZ () - mcCollision.posZ ();
189+ collisionStatAggregator[lCollisionIndex].deltaT = (collision.collisionTime () - mcCollision.t ()) / 1000 ;
190+
171191 auto groupedTracks = tracks.sliceBy (perCollision, collision.globalIndex ());
172192 for (auto & track : groupedTracks) {
173193 if (track.isPVContributor ()) {
@@ -198,6 +218,9 @@ struct preProcessMCcollisions {
198218 histos.fill (HIST (" h2dTrackCounter" ), lIndexBin + 5 , collisions.size (), collisionStatAggregator[ic].nContribsWithTOF );
199219 histos.fill (HIST (" h2dNContributors" ), collisionNContribs[ic], lYAxisOffset + lCollisionIndex);
200220 histos.fill (HIST (" h2dCovarianceTrace" ), collisionStatAggregator[ic].covTrace , lYAxisOffset + lCollisionIndex);
221+ histos.fill (HIST (" h2dPVResolutionXY" ), collisionStatAggregator[ic].deltaXY , lYAxisOffset + lCollisionIndex);
222+ histos.fill (HIST (" h2dPVResolutionZ" ), collisionStatAggregator[ic].deltaZ , lYAxisOffset + lCollisionIndex);
223+ histos.fill (HIST (" h2dPVResolutionT" ), collisionStatAggregator[ic].deltaT , lYAxisOffset + lCollisionIndex);
201224 if (lNumberOfXi > 0 ) {
202225 histos.fill (HIST (" h2dTrackCounterWithXi" ), lIndexBin + 0 , collisions.size ());
203226 histos.fill (HIST (" h2dTrackCounterWithXi" ), lIndexBin + 1 , collisions.size (), collisionNContribs[ic]);
@@ -207,6 +230,9 @@ struct preProcessMCcollisions {
207230 histos.fill (HIST (" h2dTrackCounterWithXi" ), lIndexBin + 5 , collisions.size (), collisionStatAggregator[ic].nContribsWithTOF );
208231 histos.fill (HIST (" h2dNContributorsWithXi" ), collisionNContribs[ic], lYAxisOffset + lCollisionIndex);
209232 histos.fill (HIST (" h2dCovarianceTraceWithXi" ), collisionStatAggregator[ic].covTrace , lYAxisOffset + lCollisionIndex);
233+ histos.fill (HIST (" h2dPVResolutionXYWithXi" ), collisionStatAggregator[ic].deltaXY , lYAxisOffset + lCollisionIndex);
234+ histos.fill (HIST (" h2dPVResolutionZWithXi" ), collisionStatAggregator[ic].deltaZ , lYAxisOffset + lCollisionIndex);
235+ histos.fill (HIST (" h2dPVResolutionTWithXi" ), collisionStatAggregator[ic].deltaT , lYAxisOffset + lCollisionIndex);
210236 }
211237 lCollisionIndex++;
212238 }
0 commit comments