CMS 3D CMS Logo

Classes | Functions | Variables
validation Namespace Reference

Classes

class  Sample
 
class  SeparateValidation
 
class  SimpleSample
 
class  SimpleValidation
 
class  Validation
 

Functions

def _copyDir (src, dst)
 
def _copySubDir (oldfile, newfile, basenames, dirname)
 
def _findDuplicates (lst)
 
def _getGlobalTag (sample, release)
 
def _getRelValUrl (release)
 
def _processPlotsForSample (plotterFolder, sample)
 
def _stripRelease (release)
 

Variables

 _doBHadronSamples
 
 _doConversionSamples
 
 _doElectronSamples
 
 _globalTags
 
 _releasePostfixes
 
 _relvalUrls
 
 IgnoreCommandLineOptions
 

Function Documentation

◆ _copyDir()

def validation._copyDir (   src,
  dst 
)
private
Copy non-TTree objects from src TDirectory to dst TDirectory.

Definition at line 1161 of file validation.py.

1161 def _copyDir(src, dst):
1162  """Copy non-TTree objects from src TDirectory to dst TDirectory."""
1163  keys = src.GetListOfKeys()
1164  for key in keys:
1165  classname = key.GetClassName()
1166  cl = ROOT.TClass.GetClass(classname)
1167  if not cl:
1168  continue
1169  if not (cl.InheritsFrom("TTree") and cl.InheritsFrom("TDirectory")):
1170  dst.cd()
1171  obj = key.ReadObj()
1172  obj.Write()
1173  obj.Delete()
1174 

Referenced by _copySubDir().

◆ _copySubDir()

def validation._copySubDir (   oldfile,
  newfile,
  basenames,
  dirname 
)
private
Copy a subdirectory from oldfile to newfile.

Arguments:
oldfile   -- String for source TFile
newfile   -- String for destination TFile
basenames -- List of strings for base directories, first existing one is picked
dirname   -- String for directory name under the base directory

Definition at line 1126 of file validation.py.

1126 def _copySubDir(oldfile, newfile, basenames, dirname):
1127  """Copy a subdirectory from oldfile to newfile.
1128 
1129  Arguments:
1130  oldfile -- String for source TFile
1131  newfile -- String for destination TFile
1132  basenames -- List of strings for base directories, first existing one is picked
1133  dirname -- String for directory name under the base directory
1134  """
1135  oldf = ROOT.TFile.Open(oldfile)
1136 
1137  dirold = None
1138  for basename in basenames:
1139  dirold = oldf.GetDirectory(basename)
1140  if dirold:
1141  break
1142  if not dirold:
1143  raise Exception("Did not find any of %s directories from file %s" % (",".join(basenames), oldfile))
1144  if dirname:
1145  d = dirold.Get(dirname)
1146  if not d:
1147  raise Exception("Did not find directory %s under %s" % (dirname, dirold.GetPath()))
1148  dirold = d
1149 
1150  newf = ROOT.TFile.Open(newfile, "RECREATE")
1151  dirnew = newf
1152  for d in basenames[0].split("/"):
1153  dirnew = dirnew.mkdir(d)
1154  if dirname:
1155  dirnew = dirnew.mkdir(dirname)
1156  _copyDir(dirold, dirnew)
1157 
1158  oldf.Close()
1159  return newf
1160 

References _copyDir(), join(), and submitPVValidationJobs.split().

Referenced by validation.Validation._doPlots().

◆ _findDuplicates()

def validation._findDuplicates (   lst)
private

Definition at line 1175 of file validation.py.

1175 def _findDuplicates(lst):
1176  found = set()
1177  found2 = set()
1178  for x in lst:
1179  if x in found:
1180  found2.add(x)
1181  else:
1182  found.add(x)
1183  return list(found2)
1184 

Referenced by validation.Validation._doPlots(), validation.SimpleValidation._doPlots(), validation.SeparateValidation._doPlots(), validation.Validation._doPlotsFastFull(), and validation.Validation._doPlotsPileup().

◆ _getGlobalTag()

def validation._getGlobalTag (   sample,
  release 
)
private
Get a GlobalTag.

Arguments:
sample  -- Sample object
release -- CMSSW release string

Definition at line 359 of file validation.py.

359 def _getGlobalTag(sample, release):
360  """Get a GlobalTag.
361 
362  Arguments:
363  sample -- Sample object
364  release -- CMSSW release string
365  """
366  if not release in _globalTags:
367  print("Release %s not found from globaltag map in validation.py" % release)
368  sys.exit(1)
369  gtmap = _globalTags[release]
370  selectedGT = None
371  if sample.hasOverrideGlobalTag():
372  ogt = sample.overrideGlobalTag()
373  if release in ogt:
374  gtmap = _globalTags[ogt[release]]
375  scenario = ""
376  if sample.hasScenario():
377  scenario = sample.scenario()
378  sims = []
379  if sample.fullsim():
380  if sample.pileupEnabled():
381  sim = "fullsim_"+sample.pileupType()
382  sims.extend([
383  sim+"_PU%d"%sample.pileupNumber(),
384  sim
385  ])
386  elif sample.fastsim():
387  sim = "fastsim"
388  if sample.pileupEnabled():
389  sim += "_"+sample.pileupType()
390  sims.append(sim+"_PU%d"%sample.pileupNumber())
391  sims.append(sim)
392 
393  selectedGT = None
394  # First try with scenario+simulation
395  if scenario != "":
396  for sim in sims:
397  selectedGT = gtmap.get(scenario+"_"+sim, None)
398  if selectedGT is not None:
399  break
400  # Then with scenario (but only if sample specifies a scenario)
401  if selectedGT is None:
402  selectedGT = gtmap.get(scenario, None)
403  # Then with simulation
404  if selectedGT is None:
405  for sim in sims:
406  selectedGT = gtmap.get(sim, None)
407  if selectedGT is not None:
408  break
409  # Finally default
410  if selectedGT is None:
411  selectedGT = gtmap["default"]
412 
413  if isinstance(selectedGT, dict):
414  return selectedGT.get(sample.name(), selectedGT["default"])
415  else:
416  return selectedGT
417 
418 # Mapping from release series to RelVal download URLs

References print().

Referenced by validation.Validation._doPlots(), validation.Validation._doPlotsFastFull(), validation.Validation._doPlotsPileup(), validation.Validation._getRefFileAndSelection(), validation.Sample.datasetpattern(), and validation.Sample.filename().

◆ _getRelValUrl()

def validation._getRelValUrl (   release)
private
Get RelVal download URL for a given release.

Definition at line 451 of file validation.py.

451 def _getRelValUrl(release):
452  """Get RelVal download URL for a given release."""
453  version_re = re.compile("CMSSW_(?P<X>\d+)_(?P<Y>\d+)")
454  m = version_re.search(release)
455  if not m:
456  raise Exception("Regex %s does not match to release version %s" % (version_re.pattern, release))
457  version = "%s_%s_X" % (m.group("X"), m.group("Y"))
458  if not version in _relvalUrls:
459  print("No RelVal URL for version %s, please update _relvalUrls" % version)
460  sys.exit(1)
461  return _relvalUrls[version]
462 

References print().

Referenced by validation.Validation.download().

◆ _processPlotsForSample()

def validation._processPlotsForSample (   plotterFolder,
  sample 
)
private

Definition at line 463 of file validation.py.

463 def _processPlotsForSample(plotterFolder, sample):
464  if plotterFolder.onlyForPileup() and not sample.pileupEnabled():
465  return False
466  if plotterFolder.onlyForElectron() and not sample.doElectron():
467  return False
468  if plotterFolder.onlyForConversion() and not sample.doConversion():
469  return False
470  if plotterFolder.onlyForBHadron() and not sample.doBHadron():
471  return False
472  return True
473 

Referenced by validation.Validation._doFastsimFastVsFullPlots(), validation.Validation._doPhase2PileupPlots(), validation.SimpleValidation._doPlotsForPlotter(), and validation.SeparateValidation._doPlotsForPlotter().

◆ _stripRelease()

def validation._stripRelease (   release)
private

Definition at line 352 of file validation.py.

352 def _stripRelease(release):
353  for pf in _releasePostfixes:
354  if pf in release:
355  return _stripRelease(release.replace(pf, ""))
356  return release
357 
358 

Referenced by validation.Validation._doPlots(), validation.Validation._doPlotsFastFull(), validation.Validation._doPlotsPileup(), and validation.Sample.filename().

Variable Documentation

◆ _doBHadronSamples

validation._doBHadronSamples
private

Definition at line 447 of file validation.py.

◆ _doConversionSamples

validation._doConversionSamples
private

Definition at line 443 of file validation.py.

◆ _doElectronSamples

validation._doElectronSamples
private

Definition at line 438 of file validation.py.

◆ _globalTags

validation._globalTags
private

Definition at line 18 of file validation.py.

◆ _releasePostfixes

validation._releasePostfixes
private

Definition at line 350 of file validation.py.

◆ _relvalUrls

validation._relvalUrls
private

Definition at line 419 of file validation.py.

◆ IgnoreCommandLineOptions

validation.IgnoreCommandLineOptions

Definition at line 12 of file validation.py.

validation._findDuplicates
def _findDuplicates(lst)
Definition: validation.py:1175
validation._copyDir
def _copyDir(src, dst)
Definition: validation.py:1161
validation._stripRelease
def _stripRelease(release)
Definition: validation.py:352
join
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
submitPVValidationJobs.split
def split(sequence, size)
Definition: submitPVValidationJobs.py:352
validation._copySubDir
def _copySubDir(oldfile, newfile, basenames, dirname)
Definition: validation.py:1126
print
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:46
Exception
validation._getRelValUrl
def _getRelValUrl(release)
Definition: validation.py:451
validation._processPlotsForSample
def _processPlotsForSample(plotterFolder, sample)
Definition: validation.py:463
validation._getGlobalTag
def _getGlobalTag(sample, release)
Definition: validation.py:359