From 477be2c21db154521a51189481b4ad9f253b8c88 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 22 Aug 2023 06:33:31 -0400 Subject: [PATCH 1/2] Fixing None padding order, adding otherjets in Wc electron WF --- .../workflows/ctag_eWc_valid_sf.py | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py index 4ef977b4..7f5d38eb 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py @@ -122,6 +122,9 @@ def process_shift(self, events, shift_name): (events.Electron.pt > 34) & ele_mvatightid(events, self._campaign) ] req_ele = ak.count(iso_ele.pt, axis=1) == 1 + jet_sel = jet_id(events, self._campaign) & ( + ak.all(events.Jet.metric_table(iso_ele) > 0.5, axis=2) + ) iso_ele = ak.pad_none(iso_ele, 1, axis=1) iso_ele = iso_ele[:, 0] iso_eindx = ak.mask( @@ -132,9 +135,7 @@ def process_shift(self, events, shift_name): iso_eindx = iso_eindx[:, 0] ## Jet cuts - jet_sel = jet_id(events, self._campaign) & ( - ak.all(events.Jet.metric_table(iso_ele) > 0.5, axis=2, mask_identity=True) - ) + if "DeepJet_nsv" in events.Jet.fields: jet_sel = jet_sel & (events.Jet.DeepJet_nsv > 0) event_jet = events.Jet[jet_sel] @@ -143,17 +144,17 @@ def process_shift(self, events, shift_name): ## Soft Muon cuts soft_muon = events.Muon[softmu_mask(events, self._campaign)] req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 - soft_muon = ak.pad_none(soft_muon, 1, axis=1) - - ## Muon-jet cuts - mu_jet = event_jet[ - ( + mujetsel = (( ak.all( - event_jet.metric_table(soft_muon) <= 0.4, axis=2, mask_identity=True + event_jet.metric_table(soft_muon) <= 0.4, axis=2 ) ) - & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)) - ] + & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1))) + soft_muon = ak.pad_none(soft_muon, 1, axis=1) + + ## Muon-jet cuts + mu_jet = event_jet[mujetsel] + otherjets = event_jet[~mujetsel] req_mujet = ak.num(mu_jet.pt, axis=1) >= 1 mu_jet = ak.pad_none(mu_jet, 1, axis=1) @@ -162,7 +163,7 @@ def process_shift(self, events, shift_name): jet_id(events, self._campaign) & ( ak.all( - events.Jet.metric_table(iso_ele) > 0.5, axis=2, mask_identity=True + events.Jet.metric_table(iso_ele) > 0.5, axis=2 ) ) & ( @@ -255,6 +256,7 @@ def process_shift(self, events, shift_name): ssmu = soft_muon[event_level] smet = MET[event_level] smuon_jet = mu_jet[event_level] + sotherjets = otherjets[event_level] nsoftmu = ak.count(ssmu.pt, axis=1) nmujet = ak.count(smuon_jet.pt, axis=1) smuon_jet = smuon_jet[:, 0] @@ -484,9 +486,10 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Muon = shmu + pruned_ev["Jet"] = sjets + pruned_ev["Muon"] = shmu pruned_ev["MuonJet"] = smuon_jet + pruned_ev["OtherJets"] = sotherjets pruned_ev["SoftMuon"] = ssmu pruned_ev["osss"] = osss if "PFCands" in events.fields: @@ -513,7 +516,7 @@ def process_shift(self, events, shift_name): out_branch, np.where( (out_branch == "SoftMuon") - | (out_branch == "MuonJet") + # | (out_branch == "MuonJet") | (out_branch == "dilep") ), ) @@ -523,7 +526,7 @@ def process_shift(self, events, shift_name): "Muon", "Jet", "SoftMuon", - "MuonJet", + # "MuonJet", "dilep", "charge", "MET", @@ -539,6 +542,7 @@ def process_shift(self, events, shift_name): out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*", "SV_*"] ) # write to root files + print("Branches to write:",out_branch) with uproot.recreate( f"tmp/{dataset}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" ) as fout: From f8a527d441941934a60d00f07de7ad1d65174ef4 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 22 Aug 2023 06:54:31 -0400 Subject: [PATCH 2/2] Fixing None padding order, adding otherjets in Wc muon WF --- .../workflows/ctag_Wc_valid_sf.py | 54 +++++++++---------- .../workflows/ctag_eWc_valid_sf.py | 34 ++++-------- 2 files changed, 36 insertions(+), 52 deletions(-) diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index 333a97ef..5c6cd285 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -119,6 +119,9 @@ def process_shift(self, events, shift_name): # muon twiki: https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideMuonIdRun2 iso_muon = events.Muon[(events.Muon.pt > 30) & mu_idiso(events, self._campaign)] req_muon = ak.count(iso_muon.pt, axis=1) == 1 + jet_sel = jet_id(events, self._campaign) & ( + ak.all(events.Jet.metric_table(iso_muon) > 0.5, axis=2) + ) iso_muon = ak.pad_none(iso_muon, 1, axis=1) iso_muon = iso_muon[:, 0] iso_muindx = ak.mask( @@ -129,9 +132,6 @@ def process_shift(self, events, shift_name): iso_muindx = iso_muindx[:, 0] ## Jet cuts - jet_sel = jet_id(events, self._campaign) & ( - ak.all(events.Jet.metric_table(iso_muon) > 0.5, axis=2, mask_identity=True) - ) if "DeepJet_nsv" in events.Jet.fields: jet_sel = jet_sel & (events.Jet.DeepJet_nsv > 0) event_jet = events.Jet[jet_sel] @@ -140,30 +140,13 @@ def process_shift(self, events, shift_name): ## Soft Muon cuts soft_muon = events.Muon[softmu_mask(events, self._campaign)] req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 - soft_muon = ak.pad_none(soft_muon, 1, axis=1) - - ## Muon-jet cuts - mu_jet = event_jet[ - ( - ak.all( - event_jet.metric_table(soft_muon) <= 0.4, axis=2, mask_identity=True - ) - ) + mujetsel = ( + (ak.all(event_jet.metric_table(soft_muon) <= 0.4, axis=2)) & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)) & ((event_jet.muEF + event_jet.neEmEF) < 0.7) - ] - req_mujet = ak.num(mu_jet.pt, axis=1) >= 1 - mu_jet = ak.pad_none(mu_jet, 1, axis=1) - - ## store jet index for PFCands, create mask on the jet index - jet_selpf = ( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(iso_muon) > 0.5, axis=2, mask_identity=True - ) - ) - & ((events.Jet.muEF + events.Jet.neEmEF) < 0.7) + ) + mujetsel2 = ( + ((events.Jet.muEF + events.Jet.neEmEF) < 0.7) & ( ak.all( events.Jet.metric_table(soft_muon) <= 0.4, @@ -173,6 +156,16 @@ def process_shift(self, events, shift_name): ) & ((events.Jet.muonIdx1 != -1) | (events.Jet.muonIdx2 != -1)) ) + soft_muon = ak.pad_none(soft_muon, 1, axis=1) + + ## Muon-jet cuts + mu_jet = event_jet[mujetsel] + otherjets = event_jet[~mujetsel] + req_mujet = ak.num(mu_jet.pt, axis=1) >= 1 + mu_jet = ak.pad_none(mu_jet, 1, axis=1) + + ## store jet index for PFCands, create mask on the jet index + jet_selpf = (jet_sel) & (mujetsel2) if "DeepJet_nsv" in events.Jet.fields: jet_selpf = jet_selpf & (events.Jet.DeepJet_nsv > 0) jetindx = ak.mask(ak.local_index(events.Jet.pt), jet_selpf == True) @@ -260,6 +253,7 @@ def process_shift(self, events, shift_name): ssmu = soft_muon[event_level] smet = MET[event_level] smuon_jet = mu_jet[event_level] + sotherjets = otherjets[event_level] nsoftmu = ak.count(ssmu.pt, axis=1) nmujet = ak.count(smuon_jet.pt, axis=1) smuon_jet = smuon_jet[:, 0] @@ -489,10 +483,11 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Muon = shmu + pruned_ev["Jet"] = sjets + pruned_ev["Muon"] = shmu pruned_ev["MuonJet"] = smuon_jet pruned_ev["SoftMuon"] = ssmu + pruned_ev["OtherJets"] = sotherjets pruned_ev["osss"] = osss if "PFCands" in events.fields: pruned_ev.PFCands = spfcands @@ -518,7 +513,7 @@ def process_shift(self, events, shift_name): out_branch, np.where( (out_branch == "SoftMuon") - | (out_branch == "MuonJet") + # | (out_branch == "MuonJet") | (out_branch == "dilep") ), ) @@ -528,7 +523,7 @@ def process_shift(self, events, shift_name): "Muon", "Jet", "SoftMuon", - "MuonJet", + # "MuonJet", "dilep", "charge", "MET", @@ -544,6 +539,7 @@ def process_shift(self, events, shift_name): out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*", "SV_*"] ) # write to root files + print("Branches to write:", out_branch) with uproot.recreate( f"tmp/{dataset}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" ) as fout: diff --git a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py index 7f5d38eb..4aecdeac 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py @@ -135,7 +135,7 @@ def process_shift(self, events, shift_name): iso_eindx = iso_eindx[:, 0] ## Jet cuts - + if "DeepJet_nsv" in events.Jet.fields: jet_sel = jet_sel & (events.Jet.DeepJet_nsv > 0) event_jet = events.Jet[jet_sel] @@ -144,12 +144,15 @@ def process_shift(self, events, shift_name): ## Soft Muon cuts soft_muon = events.Muon[softmu_mask(events, self._campaign)] req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 - mujetsel = (( - ak.all( - event_jet.metric_table(soft_muon) <= 0.4, axis=2 - ) + mujetsel = (ak.all(event_jet.metric_table(soft_muon) <= 0.4, axis=2)) & ( + (event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1) + ) + mujetsel2 = ( + ak.all( + events.Jet.metric_table(soft_muon) <= 0.4, + axis=2, ) - & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1))) + ) & ((events.Jet.muonIdx1 != -1) | (events.Jet.muonIdx2 != -1)) soft_muon = ak.pad_none(soft_muon, 1, axis=1) ## Muon-jet cuts @@ -159,22 +162,7 @@ def process_shift(self, events, shift_name): mu_jet = ak.pad_none(mu_jet, 1, axis=1) ## store jet index for PFCands, create mask on the jet index - jet_selpf = ( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(iso_ele) > 0.5, axis=2 - ) - ) - & ( - ak.all( - events.Jet.metric_table(soft_muon) <= 0.4, - axis=2, - mask_identity=True, - ) - ) - & ((events.Jet.muonIdx1 != -1) | (events.Jet.muonIdx2 != -1)) - ) + jet_selpf = (jet_sel) & (mujetsel2) if "DeepJet_nsv" in events.Jet.fields: jet_selpf = jet_selpf & (events.Jet.DeepJet_nsv > 0) jetindx = ak.mask(ak.local_index(events.Jet.pt), jet_selpf == True) @@ -542,7 +530,7 @@ def process_shift(self, events, shift_name): out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*", "SV_*"] ) # write to root files - print("Branches to write:",out_branch) + print("Branches to write:", out_branch) with uproot.recreate( f"tmp/{dataset}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" ) as fout: