CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Attributes
plotting.PlotterFolder Class Reference

Public Member Functions

def __init__
 
def create
 
def draw
 
def getDQMSubFolders
 
def getName
 
def getPage
 
def getPossibleDQMFolders
 
def getPurpose
 
def getSection
 
def getSelectionName
 
def getSelectionNameIterator
 
def getTableCreators
 
def onlyForBHadron
 
def onlyForConversion
 
def onlyForElectron
 
def onlyForPileup
 

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

2712  def __init__(self, name, possibleDqmFolders, dqmSubFolders, plotFolder, fallbackNames, fallbackDqmSubFolders, tableCreators):
2713  """
2714  Constructor
2715 
2716  Arguments:
2717  name -- Name of the folder (is used in the output directory naming)
2718  possibleDqmFolders -- List of strings for possible directories of histograms in TFiles
2719  dqmSubFolders -- List of lists of strings for list of subfolders per input file, or None if no subfolders
2720  plotFolder -- PlotFolder object
2721  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.
2722  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.
2723  tableCreators -- List of PlotterTableItem objects for tables to be created from this folder
2724  """
2725  self._name = name
2726  self._possibleDqmFolders = possibleDqmFolders
2727  self._plotFolder = plotFolder
2728  #self._dqmSubFolders = [map(lambda sf: DQMSubFolder(sf, self._plotFolder.translateSubFolder(sf)), lst) for lst in dqmSubFolders]
2729  if dqmSubFolders is None:
2730  self._dqmSubFolders = None
2731  else:
2732  # Match the subfolders between files in case the lists differ
2733  # equality is by the 'translated' name
2734  subfolders = {}
2735  for sf_list in dqmSubFolders:
2736  for sf in sf_list:
2737  sf_translated = self._plotFolder.translateSubFolder(sf)
2738  if sf_translated is not None and not sf_translated in subfolders:
2739  subfolders[sf_translated] = DQMSubFolder(sf, sf_translated)
2740 
2741  self._dqmSubFolders = sorted(subfolders.values(), key=lambda sf: sf.subfolder)
2743  self._fallbackNames = fallbackNames
2744  self._fallbackDqmSubFolders = fallbackDqmSubFolders
2745  self._tableCreators = tableCreators

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

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

2801  def create(self, files, labels, dqmSubFolder, isPileupSample=True, requireAllHistograms=False):
2802  """Create histograms from a list of TFiles.
2803  Arguments:
2804  files -- List of TFiles
2805  labels -- List of strings for legend labels corresponding the files
2806  dqmSubFolder -- DQMSubFolder object for a subfolder (or None for no subfolder)
2807  isPileupSample -- Is sample pileup (some PlotGroups may limit themselves to pileup)
2808  requireAllHistograms -- If True, a plot is produced if histograms from all files are present (default: False)
2809  """
2810 
2811  subfolder = dqmSubFolder.subfolder if dqmSubFolder is not None else None
2812  neventsHisto = self._plotFolder.getNumberOfEventsHistogram()
2813  dirsNEvents = []
2814 
2815  for tfile in files:
2816  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, subfolder)
2817  # If file and any of possibleDqmFolders exist but subfolder does not, try the fallbacks
2819  for fallbackFunc in self._fallbackDqmSubFolders:
2820  fallback = fallbackFunc(subfolder)
2821  if fallback is not None:
2822  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, fallback)
2823  if ret is not GetDirectoryCode.SubDirNotExist:
2824  break
2825  d = GetDirectoryCode.codesToNone(ret)
2826  nev = None
2827  if neventsHisto is not None and tfile is not None:
2828  hnev = _getObject(tfile, neventsHisto)
2829  if hnev is not None:
2830  nev = hnev.GetEntries()
2831  dirsNEvents.append( (d, nev) )
2832 
2833  self._plotFolder.create(dirsNEvents, labels, isPileupSample, requireAllHistograms)
def _getObject
Definition: plotting.py:49
def _getDirectoryDetailed
Definition: plotting.py:73
def plotting.PlotterFolder.draw (   self,
  args,
  kwargs 
)
Draw and save all plots using settings of a given algorithm.

Definition at line 2834 of file plotting.py.

2835  def draw(self, *args, **kwargs):
2836  """Draw and save all plots using settings of a given algorithm."""
2837  return self._plotFolder.draw(*args, **kwargs)
2838 
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 2773 of file plotting.py.

References plotting.PlotterFolder._dqmSubFolders.

2774  def getDQMSubFolders(self, limitOnlyTo=None):
2775  """Get list of subfolders, possibly limiting to some of them.
2776 
2777  Keyword arguments:
2778  limitOnlyTo -- Object depending on the PlotFolder type for limiting the set of subfolders to be processed
2779  """
2780 
2781  if self._dqmSubFolders is None:
2782  return [None]
2783 
2784  if limitOnlyTo is None:
2785  return self._dqmSubFolders
2786 
2787  return [s for s in self._dqmSubFolders if self._plotFolder.limitSubFolder(limitOnlyTo, s.translated)]
def plotting.PlotterFolder.getName (   self)

Definition at line 2746 of file plotting.py.

References FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, TrackingRecHitAlgorithm._name, Logger._name, hcaldqm::DQModule._name, citk::IsolationConeDefinitionBase._name, WValidation._name, DrellYanValidation._name, hcaldqm::flag::Flag._name, hcaldqm::quantity::Quantity._name, HistoParams< T >._name, CutApplicatorBase._name, HistoParams< TH2F >._name, HistoParams< TProfile2D >._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.

2747  def getName(self):
2748  return self._name
def plotting.PlotterFolder.getPage (   self)

Definition at line 2752 of file plotting.py.

2753  def getPage(self):
2754  return self._plotFolder.getPage()
def plotting.PlotterFolder.getPossibleDQMFolders (   self)

Definition at line 2770 of file plotting.py.

References plotting.PlotterFolder._possibleDqmFolders.

2771  def getPossibleDQMFolders(self):
2772  return self._possibleDqmFolders
def plotting.PlotterFolder.getPurpose (   self)

Definition at line 2749 of file plotting.py.

2750  def getPurpose(self):
2751  return self._plotFolder.getPurpose()
def plotting.PlotterFolder.getSection (   self)

Definition at line 2755 of file plotting.py.

2756  def getSection(self):
2757  return self._plotFolder.getSection()
def plotting.PlotterFolder.getSelectionName (   self,
  dqmSubFolder 
)

Definition at line 2797 of file plotting.py.

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

2798  def getSelectionName(self, dqmSubFolder):
2799  return next(self.getSelectionNameIterator(dqmSubFolder))
def plotting.PlotterFolder.getSelectionNameIterator (   self,
  dqmSubFolder 
)
Get a generator for the 'selection name', looping over the name and fallbackNames

Definition at line 2791 of file plotting.py.

References plotting.PlotterFolder._fallbackNames, FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, TrackingRecHitAlgorithm._name, Logger._name, hcaldqm::DQModule._name, citk::IsolationConeDefinitionBase._name, WValidation._name, DrellYanValidation._name, hcaldqm::flag::Flag._name, hcaldqm::quantity::Quantity._name, HistoParams< T >._name, CutApplicatorBase._name, HistoParams< TH2F >._name, HistoParams< TProfile2D >._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().

2792  def getSelectionNameIterator(self, dqmSubFolder):
2793  """Get a generator for the 'selection name', looping over the name and fallbackNames"""
2794  for name in [self._name]+self._fallbackNames:
2795  for selname in self._plotFolder.iterSelectionName(name, dqmSubFolder.translated if dqmSubFolder is not None else None):
2796  yield selname
def plotting.PlotterFolder.getTableCreators (   self)

Definition at line 2788 of file plotting.py.

References plotting.PlotterFolder._tableCreators.

2789  def getTableCreators(self):
2790  return self._tableCreators
def plotting.PlotterFolder.onlyForBHadron (   self)

Definition at line 2767 of file plotting.py.

2768  def onlyForBHadron(self):
2769  return self._plotFolder.onlyForBHadron()
def plotting.PlotterFolder.onlyForConversion (   self)

Definition at line 2764 of file plotting.py.

2765  def onlyForConversion(self):
2766  return self._plotFolder.onlyForConversion()
def plotting.PlotterFolder.onlyForElectron (   self)

Definition at line 2761 of file plotting.py.

2762  def onlyForElectron(self):
2763  return self._plotFolder.onlyForElectron()
def plotting.PlotterFolder.onlyForPileup (   self)

Definition at line 2758 of file plotting.py.

2759  def onlyForPileup(self):
2760  return self._plotFolder.onlyForPileup()

Member Data Documentation

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2729 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

plotting.PlotterFolder._fallbackDqmSubFolders
private

Definition at line 2743 of file plotting.py.

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

plotting.PlotterFolder._fallbackNames
private

Definition at line 2742 of file plotting.py.

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

plotting.PlotterFolder._name
private

Definition at line 2724 of file plotting.py.

Referenced by trackingPlots.TimePerEventPlot.__str__(), trackingPlots.TimePerTrackPlot.__str__(), trackingPlots.TimePerEventPlot._create(), trackingPlots.TimePerTrackPlot.create(), plotting.PlotterFolder.getName(), plotting.PlotterItem.getName(), plotting.PlotterFolder.getSelectionNameIterator(), validation.SimpleSample.name(), trackingPlots.Iteration.name(), and plotting.PlotterItem.readDirs().

plotting.PlotterFolder._plotFolder
private

Definition at line 2726 of file plotting.py.

Referenced by plotting.PlotterItem.getPlotFolder(), and plotting.PlotterItem.readDirs().

plotting.PlotterFolder._possibleDqmFolders
private

Definition at line 2725 of file plotting.py.

Referenced by plotting.PlotterFolder.create(), and plotting.PlotterFolder.getPossibleDQMFolders().

plotting.PlotterFolder._tableCreators
private

Definition at line 2744 of file plotting.py.

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