CMS 3D CMS Logo

trackSplittingValidation.py
Go to the documentation of this file.
1 import os
2 import configTemplates
3 from genericValidation import GenericValidationData
4 from helperFunctions import replaceByMap
5 from TkAlExceptions import AllInOneError
6 
7 
9  def __init__(self, valName, alignment, config,
10  configBaseName = "TkAlTrackSplitting", scriptBaseName = "TkAlTrackSplitting", crabCfgBaseName = "TkAlTrackSplitting",
11  resultBaseName = "TrackSplitting", outputBaseName = "TrackSplitting"):
12  mandatories = ["trackcollection"]
13  defaults = {}
14  self.configBaseName = configBaseName
15  self.scriptBaseName = scriptBaseName
16  self.crabCfgBaseName = crabCfgBaseName
17  self.resultBaseName = resultBaseName
18  self.outputBaseName = outputBaseName
19  self.needParentFiles = False
20  GenericValidationData.__init__(self, valName, alignment, config,
21  "split", addMandatories = mandatories, addDefaults = defaults)
22 
23  def createConfiguration(self, path ):
24  cfgName = "%s.%s.%s_cfg.py"%(self.configBaseName, self.name,
25  self.alignmentToValidate.name)
26  repMap = self.getRepMap()
27  cfgs = {cfgName: configTemplates.TrackSplittingTemplate}
28  self.filesToCompare[GenericValidationData.defaultReferenceName] = \
29  repMap["finalResultFile"]
30  GenericValidationData.createConfiguration(self, cfgs, path, repMap = repMap)
31 
32  def createScript(self, path):
33  return GenericValidationData.createScript(self, path)
34 
35  def createCrabCfg(self, path):
36  return GenericValidationData.createCrabCfg(self, path, self.crabCfgBaseName)
37 
38  def getRepMap( self, alignment = None ):
39  repMap = GenericValidationData.getRepMap(self)
40  if repMap["subdetector"] == "none":
41  subdetselection = ""
42  else:
43  subdetselection = "process.AlignmentTrackSelector.minHitsPerSubDet.in.oO[subdetector]Oo. = 2"
44  repMap.update({
45  "nEvents": self.general["maxevents"],
46  "TrackCollection": self.general["trackcollection"],
47  "subdetselection": subdetselection,
48  })
49  # repMap["outputFile"] = os.path.abspath( repMap["outputFile"] )
50  # if self.jobmode.split( ',' )[0] == "crab":
51  # repMap["outputFile"] = os.path.basename( repMap["outputFile"] )
52  return repMap
53 
54 
55  def appendToExtendedValidation( self, validationsSoFar = "" ):
56  """
57  if no argument or "" is passed a string with an instantiation is
58  returned, else the validation is appended to the list
59  """
60  repMap = self.getRepMap()
61  comparestring = self.getCompareStrings("TrackSplittingValidation")
62  if validationsSoFar != "":
63  validationsSoFar += ',"\n "'
64  validationsSoFar += comparestring
65  return validationsSoFar
66 
67  def appendToMerge( self, validationsSoFar = "" ):
68  """
69  if no argument or "" is passed a string with an instantiation is returned,
70  else the validation is appended to the list
71  """
72  repMap = self.getRepMap()
73 
74  parameters = " ".join(os.path.join("root://eoscms//eos/cms", file.lstrip("/")) for file in repMap["resultFiles"])
75 
76  mergedoutputfile = os.path.join("root://eoscms//eos/cms", repMap["finalResultFile"].lstrip("/"))
77  validationsSoFar += "hadd -f %s %s\n" % (mergedoutputfile, parameters)
78  return validationsSoFar
79 
80  def validsubdets(self):
81  filename = os.path.join(self.cmssw, "src/Alignment/CommonAlignmentProducer/python/AlignmentTrackSelector_cfi.py")
82  if not os.path.isfile(filename):
83  filename = os.path.join(self.cmsswreleasebase, "src/Alignment/CommonAlignmentProducer/python/AlignmentTrackSelector_cfi.py")
84  with open(filename) as f:
85  trackselector = f.read()
86 
87  minhitspersubdet = trackselector.split("minHitsPerSubDet")[1].split("(",1)[1]
88 
89  parenthesesdepth = 0
90  i = 0
91  for character in minhitspersubdet:
92  if character == "(":
93  parenthesesdepth += 1
94  if character == ")":
95  parenthesesdepth -= 1
96  if parenthesesdepth < 0:
97  break
98  i += 1
99  minhitspersubdet = minhitspersubdet[0:i]
100 
101  results = minhitspersubdet.split(",")
102  empty = []
103  for i in range(len(results)):
104  results[i] = results[i].split("=")[0].strip().replace("in", "", 1)
105 
106  results.append("none")
107 
108  return [a for a in results if a]
def __init__(self, valName, alignment, config, configBaseName="TkAlTrackSplitting", scriptBaseName="TkAlTrackSplitting", crabCfgBaseName="TkAlTrackSplitting", resultBaseName="TrackSplitting", outputBaseName="TrackSplitting")
def replace(string, replacements)
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def getRepMap(self, alignment=None)
def getCompareStrings(self, requestId=None, plain=False)
double split
Definition: MVATrainer.cc:139