Skip to content

[QEE] EW y23v5: PassThrough + Improved MCDT + EventTuple

Luke Grazette requested to merge lugrazet-ewAP-2023-ZVeto into master

Tupling over the Spruced Coll23 data + exp23 MC + act23 MC.
Coll2023 data corresponds to [~47 fb-1] data. Both Turbo and Full QEE streams.
MC needs processing through Hlt1->Hlt2->Spruce ourselves before we can tuple.

(Part of the Run3 ew-analyses framework development: see Wiki ).

Changes from previous version [AP!y23v4]

BugFix: isActualMC now filling correctly (all were 0 due to a condition that was never passing)
5915a9d2

BugFix: Isolation Candidates needs ~F.SHARE_TRACKS() to remove signal candidate.
In AP!y23v3 this was done implicitly due to being done in Moore, but this was removed in EoYSpruce_23 when we moved to Persistreco instead, so we now need to re-add this cut explicitly in our isolation candidates.
098a40b9

Enhancement: MCDecayTree improvements
Decay descriptors now more accurate:

  • uses => instead of -> and potential for Final State Radiation in the form of e+ and e- pairs.
  • Explanation as to why: !1041 (comment 7810237) Trees are filled with all necessary information for the Fiducial cuts.
    see: !1041 (diffs)
    ea382cfa

New Feature: PassThrough Triggers ('flagging mode') now being performed.
This is required for MCDecayTrees and EventTuples to make sense.
Flagging mode required:

  • moving to releases based off of the 2023-hlt{X=1, 2}pp-patches. See: !1041 (comment 7810239) for how I chose this.
  • updating the Hlt1/Hlt2/Spruce configuration files.
  • Results in: Slightly closer to the central productions that will be ran to produce filtered SIM files.
  • See: !1041 (comment 7810860) for more information on this.
    fc2ed9b6

New Feature: EventTuple
Filled an EventTuple with basic information about the input. I.e. isMC, magpol etc.
80ca6cf2

Enhancement: Mild aesthetic improvements.
Use a class, dicts and enums to store/evaluate the 'specification' of the tupling call. [I.e. input_type=(ActualMC, ExpectedMC, Comm23, Coll23) etc.]
This allows us to prevent string literal comparisons appearing and allowing more robust, scalable and efficient code.
(Prevents issues such as BugFix: 'isActualMC'... from appearing in the future.)
2a98a3cf + 6b704ed7

DecayTree and MCDecayTree specifics

DecayTree

Attempts to build the following decaytrees dependent on stream.

TurboPass = { # Name : Input Line
    "Jpsi_Detached": "Hlt2QEE_JpsiToMuMu_Detached",
    "Jpsi_Prompt": "Hlt2QEE_JpsiToMuMu_Prompt",
    "U1S": "Hlt2QEE_Upsilon1SToMuMu"
}
Full_stream = {
    "Z": "SpruceQEE_ZToMuMu",
    "ZMuID": "SpruceQEE_ZToMuMu_SingleNoMuID",
    "Wp": "SpruceQEE_SingleHighPtMuon",
    "Wm": "SpruceQEE_SingleHighPtMuon",
    "WpNoMuID": "SpruceQEE_SingleHighPtMuonNoMuID",
    "WmNoMuID": "SpruceQEE_SingleHighPtMuonNoMuID",
    "ZSS": "SpruceQEE_DiMuonSameSign",
    "ZTrkEff_VeloMuon": "SpruceQEE_ZToMuMu_TrackEff_VeloMuon_Tag"
}
MCDecayTrees
FSR_electron_descriptor = ' {e+} {e-} {e+} {e-} '
"Z": {
    "Z": f"^(Z0 => mu- mu+ {FSR_electron_descriptor})",
    "mum": f"Z0 => ^mu- mu+ {FSR_electron_descriptor}",
    "mup": f"Z0 => mu- ^mu+ {FSR_electron_descriptor}",
},
"W": {
    "W": f"^[W+ => mu+ nu_mu {FSR_electron_descriptor}]CC",
    "mu": f"[W+ => ^mu+ nu_mu {FSR_electron_descriptor}]CC",
},
"Wtau": {
    "W":
        f"^[W+ =>  (tau+ =>  mu+ nu_mu nu_tau~ {FSR_electron_descriptor})  nu_tau]CC",
    "tau":
        f"[W+ =>  ^(tau+ =>  mu+ nu_mu nu_tau~ {FSR_electron_descriptor})  nu_tau]CC",
    "mu":
        f"[W+ =>  (tau+ => ^mu+ nu_mu nu_tau~ {FSR_electron_descriptor})  nu_tau]CC",
}

Regressions (act23 Z sample):

DV Tuple changes (isAct bugfix, ISO bugfix, MCDT improved descriptors/variable, EventTuples)

Moore Processing Changes (Use 2023-hlt{1,2}pp-patches to get flagging mode, some bind changes).

Aesthetic changes (expect no regression)

Several questions related to the regressions was asked and answered:

ToDo:

Supersedes previous Coll23 Data tuples + Actual23/Expected23 MC tuples from [AP!845]

Edited by Luke Grazette

Merge request reports