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 onlyForBHadron (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 2689 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 2696 of file plotting.py.

2696  def __init__(self, name, possibleDqmFolders, dqmSubFolders, plotFolder, fallbackNames, fallbackDqmSubFolders, tableCreators):
2697  """
2698  Constructor
2699 
2700  Arguments:
2701  name -- Name of the folder (is used in the output directory naming)
2702  possibleDqmFolders -- List of strings for possible directories of histograms in TFiles
2703  dqmSubFolders -- List of lists of strings for list of subfolders per input file, or None if no subfolders
2704  plotFolder -- PlotFolder object
2705  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.
2706  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.
2707  tableCreators -- List of PlotterTableItem objects for tables to be created from this folder
2708  """
2709  self._name = name
2710  self._possibleDqmFolders = possibleDqmFolders
2711  self._plotFolder = plotFolder
2712  #self._dqmSubFolders = [map(lambda sf: DQMSubFolder(sf, self._plotFolder.translateSubFolder(sf)), lst) for lst in dqmSubFolders]
2713  if dqmSubFolders is None:
2714  self._dqmSubFolders = None
2715  else:
2716  # Match the subfolders between files in case the lists differ
2717  # equality is by the 'translated' name
2718  subfolders = {}
2719  for sf_list in dqmSubFolders:
2720  for sf in sf_list:
2721  sf_translated = self._plotFolder.translateSubFolder(sf)
2722  if sf_translated is not None and not sf_translated in subfolders:
2723  subfolders[sf_translated] = DQMSubFolder(sf, sf_translated)
2724 
2725  self._dqmSubFolders = subfolders.values()
2726  self._dqmSubFolders.sort(key=lambda sf: sf.subfolder)
2727 
2728  self._fallbackNames = fallbackNames
2729  self._fallbackDqmSubFolders = fallbackDqmSubFolders
2730  self._tableCreators = tableCreators
2731 
def __init__(self, name, possibleDqmFolders, dqmSubFolders, plotFolder, fallbackNames, fallbackDqmSubFolders, tableCreators)
Definition: plotting.py:2696

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 2786 of file plotting.py.

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

2786  def create(self, files, labels, dqmSubFolder, isPileupSample=True, requireAllHistograms=False):
2787  """Create histograms from a list of TFiles.
2788  Arguments:
2789  files -- List of TFiles
2790  labels -- List of strings for legend labels corresponding the files
2791  dqmSubFolder -- DQMSubFolder object for a subfolder (or None for no subfolder)
2792  isPileupSample -- Is sample pileup (some PlotGroups may limit themselves to pileup)
2793  requireAllHistograms -- If True, a plot is produced if histograms from all files are present (default: False)
2794  """
2795 
2796  subfolder = dqmSubFolder.subfolder if dqmSubFolder is not None else None
2797  neventsHisto = self._plotFolder.getNumberOfEventsHistogram()
2798  dirsNEvents = []
2799 
2800  for tfile in files:
2801  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, subfolder)
2802  # If file and any of possibleDqmFolders exist but subfolder does not, try the fallbacks
2804  for fallbackFunc in self._fallbackDqmSubFolders:
2805  fallback = fallbackFunc(subfolder)
2806  if fallback is not None:
2807  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, fallback)
2808  if ret is not GetDirectoryCode.SubDirNotExist:
2809  break
2810  d = GetDirectoryCode.codesToNone(ret)
2811  nev = None
2812  if neventsHisto is not None and tfile is not None:
2813  hnev = _getObject(tfile, neventsHisto)
2814  if hnev is not None:
2815  nev = hnev.GetEntries()
2816  dirsNEvents.append( (d, nev) )
2817 
2818  self._plotFolder.create(dirsNEvents, labels, isPileupSample, requireAllHistograms)
2819 
def _getDirectoryDetailed(tfile, possibleDirs, subDir=None)
Definition: plotting.py:72
def create(self, files, labels, dqmSubFolder, isPileupSample=True, requireAllHistograms=False)
Definition: plotting.py:2786
def _getObject(tdirectory, name)
Definition: plotting.py:48
def plotting.PlotterFolder.draw (   self,
  args,
  kwargs 
)
Draw and save all plots using settings of a given algorithm.

Definition at line 2820 of file plotting.py.

2820  def draw(self, *args, **kwargs):
2821  """Draw and save all plots using settings of a given algorithm."""
2822  return self._plotFolder.draw(*args, **kwargs)
2823 
2824 
def draw(self, args, kwargs)
Definition: plotting.py:2820
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 2759 of file plotting.py.

References plotting.PlotterFolder._dqmSubFolders.

2759  def getDQMSubFolders(self, limitOnlyTo=None):
2760  """Get list of subfolders, possibly limiting to some of them.
2761 
2762  Keyword arguments:
2763  limitOnlyTo -- Object depending on the PlotFolder type for limiting the set of subfolders to be processed
2764  """
2765 
2766  if self._dqmSubFolders is None:
2767  return [None]
2768 
2769  if limitOnlyTo is None:
2770  return self._dqmSubFolders
2771 
2772  return [s for s in self._dqmSubFolders if self._plotFolder.limitSubFolder(limitOnlyTo, s.translated)]
2773 
def getDQMSubFolders(self, limitOnlyTo=None)
Definition: plotting.py:2759
def plotting.PlotterFolder.getName (   self)
def plotting.PlotterFolder.getPage (   self)

Definition at line 2738 of file plotting.py.

2738  def getPage(self):
2739  return self._plotFolder.getPage()
2740 
def plotting.PlotterFolder.getPossibleDQMFolders (   self)

Definition at line 2756 of file plotting.py.

References plotting.PlotterFolder._possibleDqmFolders.

2757  return self._possibleDqmFolders
2758 
def getPossibleDQMFolders(self)
Definition: plotting.py:2756
def plotting.PlotterFolder.getPurpose (   self)

Definition at line 2735 of file plotting.py.

2735  def getPurpose(self):
2736  return self._plotFolder.getPurpose()
2737 
def plotting.PlotterFolder.getSection (   self)

Definition at line 2741 of file plotting.py.

2741  def getSection(self):
2742  return self._plotFolder.getSection()
2743 
def plotting.PlotterFolder.getSelectionName (   self,
  dqmSubFolder 
)

Definition at line 2783 of file plotting.py.

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

2783  def getSelectionName(self, dqmSubFolder):
2784  return next(self.getSelectionNameIterator(dqmSubFolder))
2785 
def getSelectionName(self, dqmSubFolder)
Definition: plotting.py:2783
def getSelectionNameIterator(self, dqmSubFolder)
Definition: plotting.py:2777
def plotting.PlotterFolder.getSelectionNameIterator (   self,
  dqmSubFolder 
)
Get a generator for the 'selection name', looping over the name and fallbackNames

Definition at line 2777 of file plotting.py.

References plotting.PlotterFolder._fallbackNames, FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, LikelihoodSpecies._name, TrackingRecHitAlgorithm._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, GeometricTimingDetExtra._name, CutApplicatorBase._name, GeometricDetExtra._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, SequenceTypes.TaskPlaceholder._name, plotting.Plot._name, plotting.PlotGroup._name, and plotting.PlotterFolder._name.

Referenced by plotting.PlotterFolder.getSelectionName().

2777  def getSelectionNameIterator(self, dqmSubFolder):
2778  """Get a generator for the 'selection name', looping over the name and fallbackNames"""
2779  for name in [self._name]+self._fallbackNames:
2780  for selname in self._plotFolder.iterSelectionName(name, dqmSubFolder.translated if dqmSubFolder is not None else None):
2781  yield selname
2782 
def getSelectionNameIterator(self, dqmSubFolder)
Definition: plotting.py:2777
def plotting.PlotterFolder.getTableCreators (   self)

Definition at line 2774 of file plotting.py.

References plotting.PlotterFolder._tableCreators.

2774  def getTableCreators(self):
2775  return self._tableCreators
2776 
def getTableCreators(self)
Definition: plotting.py:2774
def plotting.PlotterFolder.onlyForBHadron (   self)

Definition at line 2753 of file plotting.py.

2753  def onlyForBHadron(self):
2754  return self._plotFolder.onlyForBHadron()
2755 
def onlyForBHadron(self)
Definition: plotting.py:2753
def plotting.PlotterFolder.onlyForConversion (   self)

Definition at line 2750 of file plotting.py.

2751  return self._plotFolder.onlyForConversion()
2752 
def onlyForConversion(self)
Definition: plotting.py:2750
def plotting.PlotterFolder.onlyForElectron (   self)

Definition at line 2747 of file plotting.py.

2747  def onlyForElectron(self):
2748  return self._plotFolder.onlyForElectron()
2749 
def onlyForElectron(self)
Definition: plotting.py:2747
def plotting.PlotterFolder.onlyForPileup (   self)

Definition at line 2744 of file plotting.py.

2744  def onlyForPileup(self):
2745  return self._plotFolder.onlyForPileup()
2746 
def onlyForPileup(self)
Definition: plotting.py:2744

Member Data Documentation

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2714 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

plotting.PlotterFolder._fallbackDqmSubFolders
private

Definition at line 2729 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