File indexing completed on 2023-03-17 10:39:30
0001
0002
0003
0004
0005
0006
0007
0008 import configparser as ConfigParser
0009 import logging
0010 import os
0011
0012 from Alignment.MillePedeAlignmentAlgorithm.alignmentsetup.helper \
0013 import checked_out_MPS
0014
0015
0016 class ConfigData:
0017 """ stores the config data of the ini files or the console parameters
0018 """
0019
0020 def __init__(self):
0021
0022 self.mpspath = os.path.join(os.environ["CMSSW_BASE"]
0023 if checked_out_MPS()[0]
0024 else os.environ["CMSSW_RELEASE_BASE"], "src",
0025 "Alignment", "MillePedeAlignmentAlgorithm")
0026
0027
0028
0029 self.jobNumber = -1
0030
0031 self.jobTime = -1
0032
0033 self.jobDataPath = ""
0034
0035 self.outputPath = ""
0036
0037 self.latexfile = ""
0038
0039 self.message = ""
0040
0041
0042 self.limit = {}
0043
0044 self.statboxsize = -1
0045
0046 self.globalTag = None
0047
0048 self.firstRun = None
0049
0050
0051 self.showmonitor = False
0052 self.showadditional = False
0053 self.showdump = False
0054 self.showtime = False
0055 self.showhighlevel = False
0056 self.showmodule = False
0057 self.showsubmodule = False
0058 self.showtex = False
0059 self.showbeamer = False
0060 self.showhtml = False
0061
0062
0063
0064 self.numberofbins = -1
0065
0066 self.defpeak = -1
0067
0068 self.widthstddev = -1
0069
0070 self.samerange = False
0071
0072
0073 self.rangemode = -1
0074
0075 self.rangexyzM = []
0076 self.rangerotM = []
0077 self.rangedistM = []
0078
0079
0080
0081 self.rangexyzHL = []
0082 self.rangerotHL = []
0083
0084 self.samerangeHL = False
0085
0086 self.rangemodeHL = -1
0087
0088
0089 self.firsttree = -1
0090
0091
0092 self.outputList = []
0093
0094 def parseConfig(self, path):
0095 logger = logging.getLogger("mpsvalidate")
0096
0097
0098 parser = ConfigParser.ConfigParser()
0099
0100
0101 if (parser.read(path) == []):
0102 logger.error("Could not open ini-file: {0}".format(path))
0103
0104
0105 try:
0106 self.jobNumber = parser.getint("GENERAL", "job")
0107 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0108 pass
0109
0110 try:
0111 self.jobDataPath = parser.get("GENERAL", "jobdatapath")
0112 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0113 pass
0114
0115
0116 if self.jobDataPath != "":
0117 self.outputPath = "validation_output"
0118
0119
0120 if self.jobNumber != -1 and self.jobDataPath == "":
0121 if self.jobNumber == 0:
0122 self.jobDataPath = "jobData/jobm"
0123 else:
0124 self.jobDataPath = "jobData/jobm{0}".format(self.jobNumber)
0125 self.outputPath = os.path.join(self.jobDataPath, "validation_output")
0126
0127
0128 try:
0129 if parser.get("GENERAL", "outputpath"):
0130 self.outputPath = parser.get("GENERAL", "outputpath")
0131 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0132 pass
0133
0134
0135
0136 try:
0137 self.jobTime = parser.getint("GENERAL", "time")
0138 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0139 pass
0140
0141 try:
0142 self.latexfile = parser.get("GENERAL", "latexfile")
0143 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0144 pass
0145
0146 try:
0147 self.limit = parser.get("GENERAL", "limit")
0148 self.limit = map(float, "".join(self.limit.split()).split(","))
0149
0150 self.limit = dict(zip(["xyz", "rot", "dist"], self.limit))
0151 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0152 pass
0153
0154 try:
0155 self.statboxsize = parser.getfloat("GENERAL", "statboxsize")
0156 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0157 pass
0158
0159
0160
0161
0162
0163 for par in ("numberofbins", "defpeak", "widthstddev"):
0164 try:
0165 setattr(self, par, parser.getint("MODULEPLOTS", par))
0166 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0167 pass
0168
0169
0170 try:
0171 self.samerange = parser.getboolean("MODULEPLOTS", "samerange")
0172 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0173 pass
0174
0175
0176 try:
0177 self.rangemode = parser.get("MODULEPLOTS", "rangemode")
0178 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0179 pass
0180
0181
0182 for r in ("rangexyz", "rangerot", "rangedist"):
0183 try:
0184 setattr(self, r+"M", parser.get("MODULEPLOTS", r))
0185 setattr(self, r+"M",
0186 sorted(map(float, "".join(getattr(self, r+"M").split()).split(","))))
0187 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0188 pass
0189
0190
0191
0192
0193
0194 try:
0195 self.samerangeHL = parser.getboolean("HIGHLEVELPLOTS", "samerange")
0196 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0197 pass
0198
0199
0200 try:
0201 self.rangemodeHL = parser.get("HIGHLEVELPLOTS", "rangemode")
0202 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0203 pass
0204
0205
0206 for r in ("rangexyz", "rangerot"):
0207 try:
0208 setattr(self, r+"HL", parser.get("HIGHLEVELPLOTS", r))
0209 setattr(self, r+"HL",
0210 sorted(map(float, "".join(getattr(self, r+"HL").split()).split(","))))
0211 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0212 pass
0213
0214
0215
0216
0217 try:
0218 self.firsttree = parser.getint("TIMEPLOTS", "firsttree")
0219 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0220 pass
0221
0222
0223 for boolean in ("showmonitor", "showadditional", "showdump", "showtime",
0224 "showhighlevel", "showmodule", "showsubmodule",
0225 "showtex", "showbeamer", "showhtml"):
0226 try:
0227 setattr(self, boolean, parser.getboolean("SHOW", boolean))
0228 except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
0229 pass
0230
0231
0232 def parseParameter(self, args):
0233 logger = logging.getLogger("mpsvalidate")
0234
0235
0236 if args.time != -1:
0237 self.jobTime = args.time
0238
0239 if args.job != -1:
0240 self.jobNumber = args.job
0241
0242
0243 if self.jobNumber == 0:
0244 self.jobDataPath = "jobData/jobm"
0245 else:
0246 self.jobDataPath = "jobData/jobm{0}".format(self.jobNumber)
0247 self.outputPath = os.path.join(self.jobDataPath, "validation_output")
0248
0249 if args.jobdatapath != "":
0250 self.jobDataPath = args.jobdatapath
0251
0252 if args.message != "":
0253 self.message = args.message
0254
0255
0256 if args.jobdatapath:
0257 self.outputPath = "validation_output"
0258
0259 if args.outputpath:
0260 self.outputPath = args.outputpath
0261