CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
plotting.PlotterFolder Class Reference

Public Member Functions

def __init__ (self, name, possibleDqmFolders, dqmSubFolders, plotFolder, fallbackNames, fallbackDqmSubFolders, tableCreators)
 
def create (self, files, labels, dqmSubFolder, isPileupSample=True, requireAllHistograms=False)
 
def draw (self, args, kwargs)
 
def getDQMSubFolders (self, limitOnlyTo=None)
 
def getName (self)
 
def getPage (self)
 
def getPossibleDQMFolders (self)
 
def getPurpose (self)
 
def getSection (self)
 
def getSelectionName (self, dqmSubFolder)
 
def getSelectionNameIterator (self, dqmSubFolder)
 
def getTableCreators (self)
 
def onlyForConversion (self)
 
def onlyForElectron (self)
 
def onlyForPileup (self)
 

Private Attributes

 _dqmSubFolders
 
 _fallbackDqmSubFolders
 
 _fallbackNames
 
 _name
 
 _plotFolder
 
 _possibleDqmFolders
 
 _tableCreators
 

Detailed Description

Plotter for one DQM folder.

This class is supposed to be instantiated by the Plotter class (or
PlotterItem, to be more specific), and not used directly by the
user.

Definition at line 2505 of file plotting.py.

Constructor & Destructor Documentation

def plotting.PlotterFolder.__init__ (   self,
  name,
  possibleDqmFolders,
  dqmSubFolders,
  plotFolder,
  fallbackNames,
  fallbackDqmSubFolders,
  tableCreators 
)
Constructor

Arguments:
name               -- Name of the folder (is used in the output directory naming)
possibleDqmFolders -- List of strings for possible directories of histograms in TFiles
dqmSubFolders      -- List of lists of strings for list of subfolders per input file, or None if no subfolders
plotFolder         -- PlotFolder object
fallbackNames      -- List of names for backward compatibility (can be empty). These are used only by validation.Validation (class responsible of the release validation workflow) in case the reference file pointed by 'name' does not exist.
fallbackDqmSubFolders -- List of dicts of (string->string) for mapping the subfolder names found in the first file to another names. Use case is comparing files that have different iteration naming convention.
tableCreators      -- List of PlotterTableItem objects for tables to be created from this folder

Definition at line 2512 of file plotting.py.

2512  def __init__(self, name, possibleDqmFolders, dqmSubFolders, plotFolder, fallbackNames, fallbackDqmSubFolders, tableCreators):
2513  """
2514  Constructor
2515 
2516  Arguments:
2517  name -- Name of the folder (is used in the output directory naming)
2518  possibleDqmFolders -- List of strings for possible directories of histograms in TFiles
2519  dqmSubFolders -- List of lists of strings for list of subfolders per input file, or None if no subfolders
2520  plotFolder -- PlotFolder object
2521  fallbackNames -- List of names for backward compatibility (can be empty). These are used only by validation.Validation (class responsible of the release validation workflow) in case the reference file pointed by 'name' does not exist.
2522  fallbackDqmSubFolders -- List of dicts of (string->string) for mapping the subfolder names found in the first file to another names. Use case is comparing files that have different iteration naming convention.
2523  tableCreators -- List of PlotterTableItem objects for tables to be created from this folder
2524  """
2525  self._name = name
2526  self._possibleDqmFolders = possibleDqmFolders
2527  self._plotFolder = plotFolder
2528  #self._dqmSubFolders = [map(lambda sf: DQMSubFolder(sf, self._plotFolder.translateSubFolder(sf)), lst) for lst in dqmSubFolders]
2529  if dqmSubFolders is None:
2530  self._dqmSubFolders = None
2531  else:
2532  # Match the subfolders between files in case the lists differ
2533  # equality is by the 'translated' name
2534  subfolders = {}
2535  for sf_list in dqmSubFolders:
2536  for sf in sf_list:
2537  sf_translated = self._plotFolder.translateSubFolder(sf)
2538  if sf_translated is not None and not sf_translated in subfolders:
2539  subfolders[sf_translated] = DQMSubFolder(sf, sf_translated)
2540 
2541  self._dqmSubFolders = subfolders.values()
2542  self._dqmSubFolders.sort(key=lambda sf: sf.subfolder)
2543 
2544  self._fallbackNames = fallbackNames
2545  self._fallbackDqmSubFolders = fallbackDqmSubFolders
2546  self._tableCreators = tableCreators
2547 
def __init__(self, name, possibleDqmFolders, dqmSubFolders, plotFolder, fallbackNames, fallbackDqmSubFolders, tableCreators)
Definition: plotting.py:2512

Member Function Documentation

def plotting.PlotterFolder.create (   self,
  files,
  labels,
  dqmSubFolder,
  isPileupSample = True,
  requireAllHistograms = False 
)
Create histograms from a list of TFiles.
Arguments:
files  -- List of TFiles
labels -- List of strings for legend labels corresponding the files
dqmSubFolder -- DQMSubFolder object for a subfolder (or None for no subfolder)
isPileupSample -- Is sample pileup (some PlotGroups may limit themselves to pileup)
requireAllHistograms -- If True, a plot is produced if histograms from all files are present (default: False)

Definition at line 2599 of file plotting.py.

References plotting.PlotterFolder._fallbackDqmSubFolders, plotting._getDirectoryDetailed(), plotting._getObject(), and plotting.PlotterFolder._possibleDqmFolders.

2599  def create(self, files, labels, dqmSubFolder, isPileupSample=True, requireAllHistograms=False):
2600  """Create histograms from a list of TFiles.
2601  Arguments:
2602  files -- List of TFiles
2603  labels -- List of strings for legend labels corresponding the files
2604  dqmSubFolder -- DQMSubFolder object for a subfolder (or None for no subfolder)
2605  isPileupSample -- Is sample pileup (some PlotGroups may limit themselves to pileup)
2606  requireAllHistograms -- If True, a plot is produced if histograms from all files are present (default: False)
2607  """
2608 
2609  subfolder = dqmSubFolder.subfolder if dqmSubFolder is not None else None
2610  neventsHisto = self._plotFolder.getNumberOfEventsHistogram()
2611  dirsNEvents = []
2612 
2613  for tfile in files:
2614  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, subfolder)
2615  # If file and any of possibleDqmFolders exist but subfolder does not, try the fallbacks
2617  for fallbackFunc in self._fallbackDqmSubFolders:
2618  fallback = fallbackFunc(subfolder)
2619  if fallback is not None:
2620  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, fallback)
2621  if ret is not GetDirectoryCode.SubDirNotExist:
2622  break
2623  d = GetDirectoryCode.codesToNone(ret)
2624  nev = None
2625  if neventsHisto is not None and tfile is not None:
2626  hnev = _getObject(tfile, neventsHisto)
2627  if hnev is not None:
2628  nev = hnev.GetEntries()
2629  dirsNEvents.append( (d, nev) )
2630 
2631  self._plotFolder.create(dirsNEvents, labels, isPileupSample, requireAllHistograms)
2632 
def _getDirectoryDetailed(tfile, possibleDirs, subDir=None)
Definition: plotting.py:69
def create(self, files, labels, dqmSubFolder, isPileupSample=True, requireAllHistograms=False)
Definition: plotting.py:2599
def _getObject(tdirectory, name)
Definition: plotting.py:45
def plotting.PlotterFolder.draw (   self,
  args,
  kwargs 
)
Draw and save all plots using settings of a given algorithm.

Definition at line 2633 of file plotting.py.

2633  def draw(self, *args, **kwargs):
2634  """Draw and save all plots using settings of a given algorithm."""
2635  return self._plotFolder.draw(*args, **kwargs)
2636 
2637 
def draw(self, args, kwargs)
Definition: plotting.py:2633
def plotting.PlotterFolder.getDQMSubFolders (   self,
  limitOnlyTo = None 
)
Get list of subfolders, possibly limiting to some of them.

Keyword arguments:
limitOnlyTo -- Object depending on the PlotFolder type for limiting the set of subfolders to be processed

Definition at line 2572 of file plotting.py.

References plotting.PlotterFolder._dqmSubFolders, and ALCARECOTkAlBeamHalo_cff.filter.

2572  def getDQMSubFolders(self, limitOnlyTo=None):
2573  """Get list of subfolders, possibly limiting to some of them.
2574 
2575  Keyword arguments:
2576  limitOnlyTo -- Object depending on the PlotFolder type for limiting the set of subfolders to be processed
2577  """
2578 
2579  if self._dqmSubFolders is None:
2580  return [None]
2581 
2582  if limitOnlyTo is None:
2583  return self._dqmSubFolders
2584 
2585  return filter(lambda s: self._plotFolder.limitSubFolder(limitOnlyTo, s.translated), self._dqmSubFolders)
2586 
def getDQMSubFolders(self, limitOnlyTo=None)
Definition: plotting.py:2572
def plotting.PlotterFolder.getName (   self)
def plotting.PlotterFolder.getPage (   self)

Definition at line 2554 of file plotting.py.

2554  def getPage(self):
2555  return self._plotFolder.getPage()
2556 
def plotting.PlotterFolder.getPossibleDQMFolders (   self)

Definition at line 2569 of file plotting.py.

References plotting.PlotterFolder._possibleDqmFolders.

2570  return self._possibleDqmFolders
2571 
def getPossibleDQMFolders(self)
Definition: plotting.py:2569
def plotting.PlotterFolder.getPurpose (   self)

Definition at line 2551 of file plotting.py.

2551  def getPurpose(self):
2552  return self._plotFolder.getPurpose()
2553 
def plotting.PlotterFolder.getSection (   self)

Definition at line 2557 of file plotting.py.

2557  def getSection(self):
2558  return self._plotFolder.getSection()
2559 
def plotting.PlotterFolder.getSelectionName (   self,
  dqmSubFolder 
)

Definition at line 2596 of file plotting.py.

References plotting.PlotterFolder.getSelectionNameIterator(), and GetRecoTauVFromDQM_MC_cff.next.

2596  def getSelectionName(self, dqmSubFolder):
2597  return next(self.getSelectionNameIterator(dqmSubFolder))
2598 
def getSelectionName(self, dqmSubFolder)
Definition: plotting.py:2596
def getSelectionNameIterator(self, dqmSubFolder)
Definition: plotting.py:2590
def plotting.PlotterFolder.getSelectionNameIterator (   self,
  dqmSubFolder 
)
Get a generator for the 'selection name', looping over the name and fallbackNames

Definition at line 2590 of file plotting.py.

References plotting.PlotterFolder._fallbackNames, FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, TrackingRecHitAlgorithm._name, LikelihoodSpecies._name, L1TMuon::PtAssignmentUnit._name, L1TMuon::PtRefinementUnit._name, LikelihoodPdfProduct._name, LikelihoodPdf._name, citk::IsolationConeDefinitionBase._name, Logger._name, hcaldqm::DQModule._name, DrellYanValidation._name, WValidation._name, HistoParams< T >._name, hcaldqm::flag::Flag._name, hcaldqm::quantity::Quantity._name, CutApplicatorBase._name, ElectronMVAEstimatorRun2Phys14NonTrig._name, PhotonMVAEstimatorRun2Spring15NonTrig._name, PhotonMVAEstimatorRun2Phys14NonTrig._name, ElectronMVAEstimatorRun2Spring15Trig._name, GeometricDetExtra._name, ElectronMVAEstimatorRun2Spring15NonTrig._name, HistoParams< TH2F >._name, HistoParams< TProfile2D >._name, Vispa.Views.PropertyView.Property._name, SequenceTypes.SequencePlaceholder._name, plotting.Subtract._name, plotting.Transform._name, plotting.FakeDuplicate._name, plotting.CutEfficiency._name, plotting.AggregateBins._name, plotting.AggregateHistos._name, plotting.ROC._name, plotting.Plot._name, plotting.PlotGroup._name, and plotting.PlotterFolder._name.

Referenced by plotting.PlotterFolder.getSelectionName().

2590  def getSelectionNameIterator(self, dqmSubFolder):
2591  """Get a generator for the 'selection name', looping over the name and fallbackNames"""
2592  for name in [self._name]+self._fallbackNames:
2593  for selname in self._plotFolder.iterSelectionName(name, dqmSubFolder.translated if dqmSubFolder is not None else None):
2594  yield selname
2595 
def getSelectionNameIterator(self, dqmSubFolder)
Definition: plotting.py:2590
def plotting.PlotterFolder.getTableCreators (   self)

Definition at line 2587 of file plotting.py.

References plotting.PlotterFolder._tableCreators.

2587  def getTableCreators(self):
2588  return self._tableCreators
2589 
def getTableCreators(self)
Definition: plotting.py:2587
def plotting.PlotterFolder.onlyForConversion (   self)

Definition at line 2566 of file plotting.py.

2567  return self._plotFolder.onlyForConversion()
2568 
def onlyForConversion(self)
Definition: plotting.py:2566
def plotting.PlotterFolder.onlyForElectron (   self)

Definition at line 2563 of file plotting.py.

2563  def onlyForElectron(self):
2564  return self._plotFolder.onlyForElectron()
2565 
def onlyForElectron(self)
Definition: plotting.py:2563
def plotting.PlotterFolder.onlyForPileup (   self)

Definition at line 2560 of file plotting.py.

2560  def onlyForPileup(self):
2561  return self._plotFolder.onlyForPileup()
2562 
def onlyForPileup(self)
Definition: plotting.py:2560

Member Data Documentation

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2530 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

plotting.PlotterFolder._fallbackDqmSubFolders
private

Definition at line 2545 of file plotting.py.

Referenced by plotting.PlotterFolder.create(), and plotting.PlotterItem.readDirs().

plotting.PlotterFolder._fallbackNames
private
plotting.PlotterFolder._name
private
plotting.PlotterFolder._plotFolder
private
plotting.PlotterFolder._possibleDqmFolders
private
plotting.PlotterFolder._tableCreators
private