Spaces:
Sleeping
Sleeping
| import argparse | |
| import os | |
| # This file generates cmsRun commands that saves the datasets in the appropriate folders for further processing. | |
| # --input <input_dir_to_miniaod> | |
| # --output <where to store the root files> | |
| parser = argparse.ArgumentParser(description='Generate ntuples from MiniAOD') | |
| parser.add_argument('--input', type=str, help='Input directory with MiniAOD files') # /pnfs/psi.ch/cms/trivcat/store/user/gkrzmanc/jetclustering/sim/Feb26_2025_E1000_N500/MINIAOD | |
| parser.add_argument("--local-prefix", type=str, default="/pnfs/psi.ch/cms/trivcat", help="Local prefix for the input files") | |
| parser.add_argument("--prod-prefix", type=str, default="/work/gkrzmanc/jetclustering", help="Prefix to use when running the script on CMS connect") # /work/gkrzmanc/jetclustering # root://t3se01.psi.ch:1094 | |
| parser.add_argument('--output', type=str, default="data/26022025_E1000_N500", help='Output directory for root files') # data/26022025_E1000_N500 | |
| parser.add_argument("--filelist", "-fl", action="store_true") | |
| args = parser.parse_args() | |
| filelists = {} | |
| # cmd example: cmsRun SVJScouting/test/ScoutingNanoAOD_fromMiniAOD_cfg.py inputFiles=file:root://t3se01.psi.ch:1094/store/user/gkrzmanc/jetclustering/sim/26feb/MINIAOD/step_MINIAOD_s-channel_mMed-700_mDark-20_rinv-0.7_alpha-peak_13TeV-pythia8_n-10_part-9.root outputFile=out_26Feb_1.root maxEvents=-1 isMC=true era=2018 signal=True | |
| #print("------------------------------------------------------------------------------------------------") | |
| for file in os.listdir(args.local_prefix+args.input): | |
| # filename looks like this. "step_MINIAOD_s-channel_mMed-1200_mDark-20_rinv-0.7_alpha-peak_13TeV-pythia8_n-1000_part-440.root" extract the part with s-channel....n-1000 | |
| # and use it as the output folder name | |
| parts = file.split("_") | |
| output_folder = "_".join(parts[2:-1]) | |
| if output_folder not in filelists: | |
| filelists[output_folder] = set() | |
| output_filename = "PFNano_"+"_".join(parts[2:]) | |
| out_dir = args.prod_prefix+"/"+args.output+"/"+output_folder | |
| if args.filelist: | |
| #print("file:root://t3se01.psi.ch:1094"+args.local_prefix+args.input+"/"+file) | |
| fname = os.path.join(args.local_prefix+ args.input, file) | |
| #print(args.local_prefix) | |
| print(fname) | |
| filelists[output_folder].add(fname) | |
| else: | |
| if not os.path.exists(out_dir): | |
| os.makedirs(out_dir) | |
| print("cmsRun PhysicsTools/SVJScouting/test/ScoutingNanoAOD_fromMiniAOD_cfg.py inputFiles=" + args.input+"/"+file+" outputFile=" + args.prod_prefix + "/" + args.output + "/" + output_folder + "/" + output_filename + " maxEvents=-1 isMC=true era=2018 signal=True") | |
| if args.filelist: | |
| import pickle | |
| pickle.dump(filelists, open("filelist.pkl", "wb")) | |