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

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

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

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
2818  if ret is GetDirectoryCode.SubDirNotExist:
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)
2834 

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 2835 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 
2839 

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

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)]
2788 

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

◆ getName()

def plotting.PlotterFolder.getName (   self)

◆ getPage()

def plotting.PlotterFolder.getPage (   self)

Definition at line 2753 of file plotting.py.

2753  def getPage(self):
2754  return self._plotFolder.getPage()
2755 

References plotting.PlotterFolder._plotFolder.

◆ getPossibleDQMFolders()

def plotting.PlotterFolder.getPossibleDQMFolders (   self)

Definition at line 2771 of file plotting.py.

2771  def getPossibleDQMFolders(self):
2772  return self._possibleDqmFolders
2773 

References plotting.PlotterFolder._possibleDqmFolders.

◆ getPurpose()

def plotting.PlotterFolder.getPurpose (   self)

Definition at line 2750 of file plotting.py.

2750  def getPurpose(self):
2751  return self._plotFolder.getPurpose()
2752 

References plotting.PlotterFolder._plotFolder.

◆ getSection()

def plotting.PlotterFolder.getSection (   self)

Definition at line 2756 of file plotting.py.

2756  def getSection(self):
2757  return self._plotFolder.getSection()
2758 

References plotting.PlotterFolder._plotFolder.

◆ getSelectionName()

def plotting.PlotterFolder.getSelectionName (   self,
  dqmSubFolder 
)

Definition at line 2798 of file plotting.py.

2798  def getSelectionName(self, dqmSubFolder):
2799  return next(self.getSelectionNameIterator(dqmSubFolder))
2800 

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

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
2797 

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

2789  def getTableCreators(self):
2790  return self._tableCreators
2791 

References plotting.PlotterFolder._tableCreators.

◆ onlyForBHadron()

def plotting.PlotterFolder.onlyForBHadron (   self)

Definition at line 2768 of file plotting.py.

2768  def onlyForBHadron(self):
2769  return self._plotFolder.onlyForBHadron()
2770 

References plotting.PlotterFolder._plotFolder.

◆ onlyForConversion()

def plotting.PlotterFolder.onlyForConversion (   self)

Definition at line 2765 of file plotting.py.

2765  def onlyForConversion(self):
2766  return self._plotFolder.onlyForConversion()
2767 

References plotting.PlotterFolder._plotFolder.

◆ onlyForElectron()

def plotting.PlotterFolder.onlyForElectron (   self)

Definition at line 2762 of file plotting.py.

2762  def onlyForElectron(self):
2763  return self._plotFolder.onlyForElectron()
2764 

References plotting.PlotterFolder._plotFolder.

◆ onlyForPileup()

def plotting.PlotterFolder.onlyForPileup (   self)

Definition at line 2759 of file plotting.py.

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

References plotting.PlotterFolder._plotFolder.

Member Data Documentation

◆ _dqmSubFolders

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2729 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

◆ _fallbackDqmSubFolders

plotting.PlotterFolder._fallbackDqmSubFolders
private

Definition at line 2744 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:25
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
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
plotting._getDirectoryDetailed
def _getDirectoryDetailed(tfile, possibleDirs, subDir=None)
Definition: plotting.py:74
trackingPlots.onlyForPileup
onlyForPileup
Definition: trackingPlots.py:300
plotting._getObject
def _getObject(tdirectory, name)
Definition: plotting.py:50
GetRecoTauVFromDQM_MC_cff.next
next
Definition: GetRecoTauVFromDQM_MC_cff.py:31