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

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

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

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

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

2829  def draw(self, *args, **kwargs):
2830  """Draw and save all plots using settings of a given algorithm."""
2831  return self._plotFolder.draw(*args, **kwargs)
2832 
2833 

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

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

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

◆ getName()

def plotting.PlotterFolder.getName (   self)

◆ getPage()

def plotting.PlotterFolder.getPage (   self)

Definition at line 2747 of file plotting.py.

2747  def getPage(self):
2748  return self._plotFolder.getPage()
2749 

References plotting.PlotterFolder._plotFolder.

◆ getPossibleDQMFolders()

def plotting.PlotterFolder.getPossibleDQMFolders (   self)

Definition at line 2765 of file plotting.py.

2765  def getPossibleDQMFolders(self):
2766  return self._possibleDqmFolders
2767 

References plotting.PlotterFolder._possibleDqmFolders.

◆ getPurpose()

def plotting.PlotterFolder.getPurpose (   self)

Definition at line 2744 of file plotting.py.

2744  def getPurpose(self):
2745  return self._plotFolder.getPurpose()
2746 

References plotting.PlotterFolder._plotFolder.

◆ getSection()

def plotting.PlotterFolder.getSection (   self)

Definition at line 2750 of file plotting.py.

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

References plotting.PlotterFolder._plotFolder.

◆ getSelectionName()

def plotting.PlotterFolder.getSelectionName (   self,
  dqmSubFolder 
)

Definition at line 2792 of file plotting.py.

2792  def getSelectionName(self, dqmSubFolder):
2793  return next(self.getSelectionNameIterator(dqmSubFolder))
2794 

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

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

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

2783  def getTableCreators(self):
2784  return self._tableCreators
2785 

References plotting.PlotterFolder._tableCreators.

◆ onlyForBHadron()

def plotting.PlotterFolder.onlyForBHadron (   self)

Definition at line 2762 of file plotting.py.

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

References plotting.PlotterFolder._plotFolder.

◆ onlyForConversion()

def plotting.PlotterFolder.onlyForConversion (   self)

Definition at line 2759 of file plotting.py.

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

References plotting.PlotterFolder._plotFolder.

◆ onlyForElectron()

def plotting.PlotterFolder.onlyForElectron (   self)

Definition at line 2756 of file plotting.py.

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

References plotting.PlotterFolder._plotFolder.

◆ onlyForPileup()

def plotting.PlotterFolder.onlyForPileup (   self)

Definition at line 2753 of file plotting.py.

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

References plotting.PlotterFolder._plotFolder.

Member Data Documentation

◆ _dqmSubFolders

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2723 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

◆ _fallbackDqmSubFolders

plotting.PlotterFolder._fallbackDqmSubFolders
private

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