|
12 | 12 | from typing import List, Tuple |
13 | 13 |
|
14 | 14 | from coffea.analysis_tools import PackedSelection |
15 | | -from utils.schema import WorkerEval |
16 | | -from .cuts import lumi_mask |
| 15 | +from coffea.lumi_tools import LumiMask |
| 16 | +from intccms.schema import WorkerEval |
| 17 | +#from .cuts import lumi_mask |
17 | 18 |
|
| 19 | +import awkward as ak |
| 20 | + |
| 21 | +lumifile16 = Path("./example_cms/corrections/Cert_271036-284044_13TeV_Legacy2016_Collisions16_JSON.txt").resolve() |
| 22 | +lumifile17 = Path("./example_cms/corrections/Cert_294927-306462_13TeV_UL2017_Collisions17_GoldenJSON.txt").resolve() |
| 23 | +lumifile18 = Path("./example_cms/corrections/Cert_314472-325175_13TeV_Legacy2018_Collisions18_JSON.txt").resolve() |
| 24 | +lmobj16 = LumiMask(lumifile16) |
| 25 | +lmobj17 = LumiMask(lumifile17) |
| 26 | +lmobj18 = LumiMask(lumifile18) |
| 27 | + |
| 28 | +lm16 = lambda run, lb, obj=lmobj16: obj(run, lb) |
| 29 | +lm17 = lambda run, lb, obj=lmobj17: obj(run, lb) |
| 30 | +lm18 = lambda run, lb, obj=lmobj18: obj(run, lb) |
| 31 | + |
| 32 | + |
| 33 | +# Build configuration |
| 34 | +year_run_config = [ |
| 35 | + ("2016", ["B", "C", "D", "E", "F"], lm16), |
| 36 | + ("2017", ["B", "C", "D", "E", "F"], lm17), |
| 37 | + ("2018", ["A", "B", "C", "D"], lm18), |
| 38 | +] |
18 | 39 |
|
19 | 40 | def get_cross_sections_for_datasets( |
20 | 41 | years: List[str], |
@@ -57,6 +78,15 @@ def get_cross_sections_for_datasets( |
57 | 78 |
|
58 | 79 | return tuple(cross_sections) |
59 | 80 |
|
| 81 | +# Pre-build the lumi_mask configs |
| 82 | +lumi_mask_configs = [] |
| 83 | +for year, runs, lm_func in year_run_config: |
| 84 | + for _ in runs: |
| 85 | + lumi_mask_configs.append({ |
| 86 | + "function": lm_func, |
| 87 | + "use": [("event", "run"), ("event", "luminosityBlock")], |
| 88 | + }) |
| 89 | + |
60 | 90 |
|
61 | 91 | # ============================================================================== |
62 | 92 | # Dataset Configuration |
@@ -207,25 +237,19 @@ def get_cross_sections_for_datasets( |
207 | 237 | }, |
208 | 238 | # Data: Single muon (different run periods per year) |
209 | 239 | { |
210 | | - "name": "data", |
211 | | - "directories": tuple( |
212 | | - f"example_cms/datasets/{year}/SingleMuonRun{run}/" |
213 | | - for year, runs in [("2016", ["B", "C", "D", "E", "F"]), |
214 | | - ("2017", ["B", "C", "D", "E", "F"]), |
215 | | - ("2018", ["A", "B", "C", "D"])] |
216 | | - for run in runs |
217 | | - ), |
218 | | - "cross_sections": 1.0, |
219 | | - "file_pattern": "*.txt", |
220 | | - "tree_name": "Events", |
221 | | - "weight_branch": None, |
222 | | - "redirector": REDIRECTOR, |
223 | | - "is_data": True, |
224 | | - "lumi_mask": { |
225 | | - "function": lumi_mask, |
226 | | - "use": [("event", "run"), ("event", "luminosityBlock")], |
227 | | - "static_kwargs": {"lumifile": "./example_cms/corrections/Cert_271036-284044_13TeV_Legacy2016_Collisions16_JSON.txt"}, |
228 | | - }, |
| 240 | + "name": "data", |
| 241 | + "directories": tuple( |
| 242 | + f"example_cms/datasets/{year}/SingleMuonRun{run}/" |
| 243 | + for year, runs, _ in year_run_config |
| 244 | + for run in runs |
| 245 | + ), |
| 246 | + "cross_sections": 1.0, |
| 247 | + "file_pattern": "*.txt", |
| 248 | + "tree_name": "Events", |
| 249 | + "weight_branch": None, |
| 250 | + "redirector": REDIRECTOR, |
| 251 | + "is_data": True, |
| 252 | + "lumi_mask": tuple(lumi_mask_configs), |
229 | 253 | } |
230 | 254 | ] |
231 | 255 |
|
@@ -266,7 +290,7 @@ def default_skim_selection(puppimet, hlt): |
266 | 290 | skimming_config = { |
267 | 291 | "function": default_skim_selection, |
268 | 292 | "use": [("PuppiMET", None), ("HLT", None)], |
269 | | - "chunk_size": 100_000, |
| 293 | + "chunk_size": 200_000, |
270 | 294 | "tree_name": "Events", |
271 | 295 | # "output": { |
272 | 296 | # "format": "parquet", |
|
0 commit comments