You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b854d16
Browse filesBrowse the repository at this point in the historyBrowse files
// reconstruction efficiency, Nch^gen vs Nch^reco and
338
338
// Nch^reco vs FT0M (percentile and amplitude) responses,
339
339
// see runEventRecoEfficiencyStudy
340
+
// doPVQualityStudy PairLossK0/PVQuality: best-collision PV position and
341
+
// reco - MC residuals vs multNTracksPVeta1, and the
342
+
// MC-collision reconstruction and selection stages vs
343
+
// Nch^gen, split by the truth h-K0 content of the event,
344
+
// see runPVQualityStudy
340
345
Configurable<bool> doStageDiagnostics{"doStageDiagnostics", true, "part 1: fill the PairLossK0 truth-pair reconstruction ladder and its diagnostics"};
341
346
Configurable<bool> doRecComparison{"doRecComparison", false, "part 2: fill the PairLossK0/Comparison cumulative Rec/Truth/Gen/Final ladder (runs the exact reconstructed path internally)"};
342
347
Configurable<bool> recComparisonBestCollisionOnly{"recComparisonBestCollisionOnly", false, "part 2: run the Rec path of PairLossK0/Comparison only in the best reconstructed collision (most PV contributors) of each MC collision, the one the Gen, Truth and Final stages are selected on. Set false to run it in every reconstructed collision, as the data path does"};
343
348
Configurable<bool> doGenLevelStudy{"doGenLevelStudy", false, "part 3: fill the PairLossK0/GenStudy generated-vs-reconstructed split, using generator-level event selection only"};
344
349
Configurable<bool> doEventRecoEfficiencyStudy{"doEventRecoEfficiencyStudy", false, "fill PairLossK0/EventRecoEfficiency: Nch^gen (charged primaries, |eta| < 1) of all, reconstructed and selected MC collisions, Nch^gen vs multNTracksPVeta1 and multNTracksPVeta1 vs FT0M percentile and amplitude"};
345
350
Configurable<bool> nchGenResponseBestCollisionOnly{"nchGenResponseBestCollisionOnly", false, "fill PairLossK0/EventRecoEfficiency/hNchGenVsNTracksPVeta1 with the best reconstructed collision (most PV contributors) of each MC collision only, instead of with every reconstructed collision; the multNTracksPVeta1 vs FT0M responses stay per reconstructed collision"};
351
+
Configurable<bool> doPVQualityStudy{"doPVQualityStudy", false, "fill PairLossK0/PVQuality: best-collision PV x, y and reco - MC residuals vs multNTracksPVeta1, and the MC-collision reconstruction and selection stages vs Nch^gen, split by the truth h-K0 content of the event"};
352
+
// Coarse on purpose: the PV histograms are dense THnF with a fine position axis
ConfigurableAxis axisPVPosition{"axisPVPosition", {400, -0.2f, 0.2f}, "reconstructed PV x and y (cm) of PairLossK0/PVQuality"};
355
+
ConfigurableAxis axisPVResidual{"axisPVResidual", {200, -0.1f, 0.1f}, "reconstructed minus generated PV x, y and z (cm) of PairLossK0/PVQuality"};
346
356
Configurable<bool> applyINELSelectionAtGenLevel{"applyINELSelectionAtGenLevel", false, "part 2 (pp only): replace the reconstructed INEL cuts by Nch^gen >= 1 of the MC collision in the Rec, Gen, Truth and Final stages (selectINELgtN is ignored) and fill only PairLossK0/Comparison/NchGen (Rec and Gen vs Nch^gen, integrated over vertex z and multiplicity); requires doRecComparison and applyNewMCSelection"};
347
357
ConfigurableAxis axisComparisonNchGen{"axisComparisonNchGen", {VARIABLE_WIDTH, 0.5f, 4.5f, 9.5f, 19.5f, 1000.5f}, "Nch^gen classes (charged primaries in |eta| < 1) of PairLossK0/Comparison/NchGen"};
348
358
// MC-only event quality cut on the Nch^gen vs multNTracksPVeta1 response
@@ -670,6 +680,45 @@ struct HStrangeCorrelation {
670
680
"pT truth outside trigger axis",
671
681
"Truth charge"};
672
682
683
+
// Truth content of an MC collision for PairLossK0/PVQuality. Trigger and K0 follow
684
+
// the acceptance, primary and leading-trigger requirements of PairLossK0/Comparison/Truth,
685
+
// and a pair excludes a trigger that is one of the K0 daughters. An MC collision enters
686
+
// every class it belongs to, so the classes overlap and must not be summed:
687
+
// HasTrigger, HasPair and K0DaughterPVContributor are subsets of All, NearPair and
688
+
// AwayPair subsets of HasPair, and one MC collision can be both NearPair and AwayPair.
689
+
// K0DaughterPVContributor needs the best reconstructed collision, so it is empty at the
if (doprocessPairLossK0MC && pairLossK0Configurations.doPVQualityStudy) {
3013
+
// One entry per MC collision with |vz_gen| <= zVertexCut, in every truth-content
3014
+
// class it belongs to (PairLossPVQualityClass): the classes overlap.
3015
+
// hEventStage: stages nested as in PairLossK0/EventRecoEfficiency, so
3016
+
// HasRecoColl/All and Selected/HasRecoColl per class give whether events with a
3017
+
// trigger and a K0 lose their PV, or have it rejected, more often.
3018
+
// hPos*: the data-like check -- the beam spot is common to all collisions, so a
3019
+
// broadening or tail of the best-collision x and y towards low multNTracksPVeta1
3020
+
// is a reconstruction effect. hRes*: the same with the generated vertex
3021
+
// subtracted. Selection bin 0 holds every best collision, bin 1 only those passing
3022
+
// the event selection of PairLossK0/Comparison, so bin 1 is a subset of bin 0.
3023
+
const AxisSpec axisPVQualityClass{PairLossPVQualityNClasses, -0.5, static_cast<double>(PairLossPVQualityNClasses) - 0.5, "truth content of the MC collision"};
histos.add("PairLossK0/PVQuality/hEventStage", "MC collisions by truth content and stage", kTH3D, {axisPVQualityClass, axisPVQualityStage, axisPVQualityNchGen});
0 commit comments