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

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

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

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

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

Definition at line 2818 of file plotting.py.

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

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

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

Definition at line 2736 of file plotting.py.

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

Definition at line 2754 of file plotting.py.

References plotting.PlotterFolder._possibleDqmFolders.

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

Definition at line 2733 of file plotting.py.

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

Definition at line 2739 of file plotting.py.

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

Definition at line 2781 of file plotting.py.

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

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

Definition at line 2775 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, ElectronMVAEstimatorRun2Phys14NonTrig._name, CutApplicatorBase._name, PhotonMVAEstimatorRun2Spring15NonTrig._name, PhotonMVAEstimatorRun2Phys14NonTrig._name, ElectronMVAEstimatorRun2Spring15Trig._name, ElectronMVAEstimatorRun2Spring15NonTrig._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().

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

Definition at line 2772 of file plotting.py.

References plotting.PlotterFolder._tableCreators.

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

Definition at line 2751 of file plotting.py.

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

Definition at line 2748 of file plotting.py.

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

Definition at line 2745 of file plotting.py.

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

Definition at line 2742 of file plotting.py.

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

Member Data Documentation

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2712 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

plotting.PlotterFolder._fallbackDqmSubFolders
private

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