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

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

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

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

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

Definition at line 2819 of file plotting.py.

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

References plotting.PlotterFolder._dqmSubFolders.

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

Definition at line 2737 of file plotting.py.

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

Definition at line 2755 of file plotting.py.

References plotting.PlotterFolder._possibleDqmFolders.

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

Definition at line 2734 of file plotting.py.

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

Definition at line 2740 of file plotting.py.

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

Definition at line 2782 of file plotting.py.

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

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

Definition at line 2776 of file plotting.py.

References plotting.PlotterFolder._fallbackNames, FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, TrackingRecHitAlgorithm._name, LikelihoodSpecies._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, 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().

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

Definition at line 2773 of file plotting.py.

References plotting.PlotterFolder._tableCreators.

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

Definition at line 2752 of file plotting.py.

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

Definition at line 2749 of file plotting.py.

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

Definition at line 2746 of file plotting.py.

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

Definition at line 2743 of file plotting.py.

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

Member Data Documentation

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2713 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

plotting.PlotterFolder._fallbackDqmSubFolders
private

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