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

Constructor & Destructor Documentation

◆ __init__()

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

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

Member Function Documentation

◆ create()

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

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

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

◆ draw()

def plotting.PlotterFolder.draw (   self,
args,
**  kwargs 
)
Draw and save all plots using settings of a given algorithm.

Definition at line 2833 of file plotting.py.

2833  def draw(self, *args, **kwargs):
2834  """Draw and save all plots using settings of a given algorithm."""
2835  return self._plotFolder.draw(*args, **kwargs)
2836 
2837 

References plotting.PlotterFolder._plotFolder.

◆ getDQMSubFolders()

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

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

References plotting.PlotterFolder._dqmSubFolders, and plotting.PlotterFolder._plotFolder.

◆ getName()

def plotting.PlotterFolder.getName (   self)

◆ getPage()

def plotting.PlotterFolder.getPage (   self)

Definition at line 2751 of file plotting.py.

2751  def getPage(self):
2752  return self._plotFolder.getPage()
2753 

References plotting.PlotterFolder._plotFolder.

◆ getPossibleDQMFolders()

def plotting.PlotterFolder.getPossibleDQMFolders (   self)

Definition at line 2769 of file plotting.py.

2769  def getPossibleDQMFolders(self):
2770  return self._possibleDqmFolders
2771 

References plotting.PlotterFolder._possibleDqmFolders.

◆ getPurpose()

def plotting.PlotterFolder.getPurpose (   self)

Definition at line 2748 of file plotting.py.

2748  def getPurpose(self):
2749  return self._plotFolder.getPurpose()
2750 

References plotting.PlotterFolder._plotFolder.

◆ getSection()

def plotting.PlotterFolder.getSection (   self)

Definition at line 2754 of file plotting.py.

2754  def getSection(self):
2755  return self._plotFolder.getSection()
2756 

References plotting.PlotterFolder._plotFolder.

◆ getSelectionName()

def plotting.PlotterFolder.getSelectionName (   self,
  dqmSubFolder 
)

Definition at line 2796 of file plotting.py.

2796  def getSelectionName(self, dqmSubFolder):
2797  return next(self.getSelectionNameIterator(dqmSubFolder))
2798 

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

◆ getSelectionNameIterator()

def plotting.PlotterFolder.getSelectionNameIterator (   self,
  dqmSubFolder 
)
Get a generator for the 'selection name', looping over the name and fallbackNames

Definition at line 2790 of file plotting.py.

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

References plotting.PlotterFolder._fallbackNames, FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, TrackingRecHitAlgorithm._name, Logger._name, hcaldqm::DQModule._name, citk::IsolationConeDefinitionBase._name, DrellYanValidation._name, WValidation._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, plotting.PlotterFolder._name, and plotting.PlotterFolder._plotFolder.

Referenced by plotting.PlotterFolder.getSelectionName().

◆ getTableCreators()

def plotting.PlotterFolder.getTableCreators (   self)

Definition at line 2787 of file plotting.py.

2787  def getTableCreators(self):
2788  return self._tableCreators
2789 

References plotting.PlotterFolder._tableCreators.

◆ onlyForBHadron()

def plotting.PlotterFolder.onlyForBHadron (   self)

Definition at line 2766 of file plotting.py.

2766  def onlyForBHadron(self):
2767  return self._plotFolder.onlyForBHadron()
2768 

References plotting.PlotterFolder._plotFolder.

◆ onlyForConversion()

def plotting.PlotterFolder.onlyForConversion (   self)

Definition at line 2763 of file plotting.py.

2763  def onlyForConversion(self):
2764  return self._plotFolder.onlyForConversion()
2765 

References plotting.PlotterFolder._plotFolder.

◆ onlyForElectron()

def plotting.PlotterFolder.onlyForElectron (   self)

Definition at line 2760 of file plotting.py.

2760  def onlyForElectron(self):
2761  return self._plotFolder.onlyForElectron()
2762 

References plotting.PlotterFolder._plotFolder.

◆ onlyForPileup()

def plotting.PlotterFolder.onlyForPileup (   self)

Definition at line 2757 of file plotting.py.

2757  def onlyForPileup(self):
2758  return self._plotFolder.onlyForPileup()
2759 

References plotting.PlotterFolder._plotFolder.

Member Data Documentation

◆ _dqmSubFolders

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2728 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

◆ _fallbackDqmSubFolders

plotting.PlotterFolder._fallbackDqmSubFolders
private

Definition at line 2742 of file plotting.py.

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

◆ _fallbackNames

plotting.PlotterFolder._fallbackNames
private

◆ _name

plotting.PlotterFolder._name
private

◆ _plotFolder

plotting.PlotterFolder._plotFolder
private

◆ _possibleDqmFolders

plotting.PlotterFolder._possibleDqmFolders
private

◆ _tableCreators

plotting.PlotterFolder._tableCreators
private
ntuplePlotting.draw
def draw(name, histos, styles=_defaultStyles, legendLabels=[], **kwargs)
Definition: ntuplePlotting.py:24
beamerCreator.create
def create(alignables, pedeDump, additionalData, outputFile, config)
Definition: beamerCreator.py:44
getName
TString getName(TString structure, int layer, TString geometry)
Definition: DMRtrends.cc:235
plotting._getDirectoryDetailed
def _getDirectoryDetailed(tfile, possibleDirs, subDir=None)
Definition: plotting.py:73
trackingPlots.onlyForPileup
onlyForPileup
Definition: trackingPlots.py:299
plotting._getObject
def _getObject(tdirectory, name)
Definition: plotting.py:49
GetRecoTauVFromDQM_MC_cff.next
next
Definition: GetRecoTauVFromDQM_MC_cff.py:31