[QEE] EW Tupling y24v2 : Include Sprucing24c2
Tupling over the Spruced Comm24 data + exp24 MC.
Will supersede all of !1288 (merged)
https://gitlab.cern.ch/groups/LHCb-QEE/ew/-/milestones/8
Changes:
!1288 (merged)
Starting fromSelection Dependent Filtering
Two commits, a preparatory commit and the actual commit.
First: !1448 (e5d83968).
Instead of calling `get_particles("/Event/.../Particles") many times in many functions, we just call it once and pass it around.
No effect on tupling.
!1448 (143391dd) Addresses partially https://gitlab.cern.ch/LHCb-QEE/ew/ew-analyses/-/issues/960, specifically https://gitlab.cern.ch/LHCb-QEE/ew/ew-analyses/-/issues/960#cuts short version: unify PIDmu cut pre and postTS by requiring it at the DV level. Should reduce significant amounts of background ending up in our tuple.
@rjhunter from inform list
Remove!1448 (54d6cbd2).
I assume this was left over from when he stepped in while I was gone, no point us both getting 100s of emails
Allow for multiple sprucing campaigns, 24c1 and 24c2
We can expect 3 bookkeeping paths for this year, Excl-UT__24c1, 24c2, Excl-UT__24c2.
For now:
- Excl-UT__24c2 doesn't exist in bkk.
- 24c2 only has MagDown
We restructure info.yaml to account for multiple campaigns : !1448 (32b2c804)
Provide the mc.{24c1, 24c2}.{hlt1, hlt2, spruce} option files in a separate commit for readability !1448 (6434172a)
extra_args
, a suggestion from Chris
Some simplification of the calling structure is possible via
Another aesthetic difference but makes the dv script much cleaner to configure : https://mattermost.web.cern.ch/lhcb/pl/uqpitq1tft837ykgwd3ritxxxy conversation.
The benefit is that we don't have to define wrapper functions around main
, each configuring multiple arguments to hand in. Instead now we use lbexec to provide the appropriate extra arguments.
Overall I think this makes it easier to maintain, i.e. by removing the chance of a mistake when editing the wrapper functions like these
def Turbo_exp24_MagUp(options: Options):
return main(options=options, spec=Spec(Turbo_exp24_MagUp))
The only downside is I couldn't find a way to pass kwargs (rather than args), without creating an argument parser, because as far as I can tell lbexec only allows passing args. So we'd have to pass args as '--stream=STREAM' and then in the python function decompose that to {'stream': STREAM}. I didn't do this as of yet.
Instead I just passed them as positional arguments, and then because each of these arguments are being used in ENUMs we will get runtime errors if they're in the wrong position immediately when initialising the Spec
.
def main(options: Options, stream: str, campaign: str, polarity: str,
sample: str):
spec = Spec(stream, campaign, polarity, sample)
No effect on tuples.
More Info about the AP
Selection to Linename Map
selection_linename_map
# Stream : { selection : linename }
Stream.Turbo: {
"Jpsi_Detached": "Hlt2QEE_JpsiToMuMu_Detached",
"Jpsi_Prompt": "Hlt2QEE_JpsiToMuMu_Prompt",
"U1S": "Hlt2QEE_Upsilon1SToMuMu",
},
Stream.Full: {
"Z": "SpruceQEE_ZToMuMu",
"ZMuID": "SpruceQEE_ZToMuMu_SingleNoMuID",
"Wp": "SpruceQEE_SingleHighPtMuon",
"Wm": "SpruceQEE_SingleHighPtMuon",
"WpNoMuID": "SpruceQEE_SingleHighPtMuonNoMuID",
"WmNoMuID": "SpruceQEE_SingleHighPtMuonNoMuID",
"ZSS": "SpruceQEE_DiMuonSameSign",
},
Stream.TurCal:{
"ZTrkEff_VeloMuon_mum": "SpruceTurCalTrackEff_ZToMuMu_VeloMuon_mum_Tag",
"ZTrkEff_VeloMuon_mup": "SpruceTurCalTrackEff_ZToMuMu_VeloMuon_mup_Tag",
"ZTrkEff_SeedMuon_mum": "SpruceTurCalTrackEff_ZToMuMu_SeedMuon_mum_Tag",
"ZTrkEff_SeedMuon_mup": "SpruceTurCalTrackEff_ZToMuMu_SeedMuon_mup_Tag"
},
MC Samples per Stream
{
'Turbo': [
('Jpsi', '24142001'),
('U1S' , '18112001'),
],
'Full': [
('Z' , '42112001'),
('Ztau' , '42100004'),
('Wtau' , '42300001'),
('W' , '42311003'),
('DY' , '42112015'),
('QcdBgd', '49000011'),
('ccbar' , '49011014'),
('bbbar' , '49011015')
],
'TurCal': [
('Z' , '42112001'),
]
}
ToDo
-
Pass Pipeline -
Review