File indexing completed on 2023-10-25 09:32:52
0001 import copy
0002 import os
0003
0004 def Zmumu(config, validationDir):
0005
0006 jobs = []
0007 zmumuType = "single"
0008
0009
0010 IOVs = []
0011
0012
0013 if not zmumuType in config["validations"]["Zmumu"]:
0014 raise Exception("No 'single' key word in config for Zmumu")
0015
0016 for datasetName in config["validations"]["Zmumu"][zmumuType]:
0017 for IOV in config["validations"]["Zmumu"][zmumuType][datasetName]["IOV"]:
0018
0019 if not IOV in IOVs:
0020 IOVs.append(IOV)
0021
0022 for alignment in config["validations"]["Zmumu"][zmumuType][datasetName]["alignments"]:
0023
0024 workDir = "{}/Zmumu/{}/{}/{}/{}".format(validationDir, zmumuType, datasetName, alignment, IOV)
0025
0026
0027 local = {}
0028 local["output"] = "{}/{}/{}/{}/{}/{}".format(config["LFS"], config["name"], zmumuType, alignment, datasetName, IOV)
0029 local["alignment"] = copy.deepcopy(config["alignments"][alignment])
0030 local["validation"] = copy.deepcopy(config["validations"]["Zmumu"][zmumuType][datasetName])
0031 local["validation"].pop("alignments")
0032 local["validation"]["IOV"] = IOV
0033 if "goodlumi" in local["validation"]:
0034 local["validation"]["goodlumi"] = local["validation"]["goodlumi"].format(IOV)
0035
0036
0037 job = {
0038 "name": "Zmumu_{}_{}_{}_{}".format(zmumuType, alignment, datasetName, IOV),
0039 "dir": workDir,
0040 "exe": "cmsRun",
0041 "cms-config": "{}/src/Alignment/OfflineValidation/python/TkAlAllInOneTool/Zmumu_cfg.py".format(os.environ["CMSSW_BASE"]),
0042 "run-mode": "Condor",
0043 "dependencies": [],
0044 "config": local,
0045 }
0046
0047 jobs.append(job)
0048
0049
0050 if "merge" in config["validations"]["Zmumu"]:
0051
0052 mergeJobs = []
0053 zmumuType = "merge"
0054
0055
0056 for mergeName in config["validations"]["Zmumu"][zmumuType]:
0057 for IOV in IOVs:
0058
0059 workDir = "{}/Zmumu/{}/{}/{}".format(validationDir, zmumuType, mergeName, IOV)
0060
0061
0062 local = {}
0063
0064 job = {
0065 "name": "Zmumu_{}_{}_{}".format(zmumuType, mergeName, IOV),
0066 "dir": workDir,
0067 "exe": "Zmumumerge",
0068 "run-mode": "Condor",
0069 "dependencies": [],
0070 "config": local,
0071 }
0072
0073 for alignment in config["alignments"]:
0074
0075 local.setdefault("alignments", {})
0076 local["alignments"][alignment] = copy.deepcopy(config["alignments"][alignment])
0077 local["validation"] = copy.deepcopy(config["validations"]["Zmumu"][zmumuType][mergeName])
0078 local["output"] = "{}/{}/{}/{}/{}".format(config["LFS"], config["name"], zmumuType, mergeName, IOV)
0079
0080
0081 for singleJob in jobs:
0082
0083 alignment, datasetName, singleIOV = singleJob["name"].split("_")[2:]
0084
0085 if int(singleIOV) == IOV and datasetName in config["validations"]["Zmumu"][zmumuType][mergeName]["singles"]:
0086 local["alignments"][alignment]["file"] = singleJob["config"]["output"]
0087 job["dependencies"].append(singleJob["name"])
0088
0089 mergeJobs.append(job)
0090
0091 jobs.extend(mergeJobs)
0092
0093 return jobs