test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
plotting.PlotterFolder Class Reference

Public Member Functions

def __init__
 
def create
 
def draw
 
def getDQMSubFolders
 
def getName
 
def getPage
 
def getPossibleDQMFolders
 
def getPurpose
 
def getSection
 
def getSelectionName
 
def getSelectionNameIterator
 
def getTableCreators
 
def onlyForConversion
 
def onlyForElectron
 
def onlyForPileup
 

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

2503  def __init__(self, name, possibleDqmFolders, dqmSubFolders, plotFolder, fallbackNames, fallbackDqmSubFolders, tableCreators):
2504  """
2505  Constructor
2506 
2507  Arguments:
2508  name -- Name of the folder (is used in the output directory naming)
2509  possibleDqmFolders -- List of strings for possible directories of histograms in TFiles
2510  dqmSubFolders -- List of lists of strings for list of subfolders per input file, or None if no subfolders
2511  plotFolder -- PlotFolder object
2512  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.
2513  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.
2514  tableCreators -- List of PlotterTableItem objects for tables to be created from this folder
2515  """
2516  self._name = name
2517  self._possibleDqmFolders = possibleDqmFolders
2518  self._plotFolder = plotFolder
2519  #self._dqmSubFolders = [map(lambda sf: DQMSubFolder(sf, self._plotFolder.translateSubFolder(sf)), lst) for lst in dqmSubFolders]
2520  if dqmSubFolders is None:
2521  self._dqmSubFolders = None
2522  else:
2523  # Match the subfolders between files in case the lists differ
2524  # equality is by the 'translated' name
2525  subfolders = {}
2526  for sf_list in dqmSubFolders:
2527  for sf in sf_list:
2528  sf_translated = self._plotFolder.translateSubFolder(sf)
2529  if sf_translated is not None and not sf_translated in subfolders:
2530  subfolders[sf_translated] = DQMSubFolder(sf, sf_translated)
2531 
2532  self._dqmSubFolders = subfolders.values()
2533  self._dqmSubFolders.sort(key=lambda sf: sf.subfolder)
2535  self._fallbackNames = fallbackNames
2536  self._fallbackDqmSubFolders = fallbackDqmSubFolders
2537  self._tableCreators = tableCreators

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

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

2590  def create(self, files, labels, dqmSubFolder, isPileupSample=True, requireAllHistograms=False):
2591  """Create histograms from a list of TFiles.
2592  Arguments:
2593  files -- List of TFiles
2594  labels -- List of strings for legend labels corresponding the files
2595  dqmSubFolder -- DQMSubFolder object for a subfolder (or None for no subfolder)
2596  isPileupSample -- Is sample pileup (some PlotGroups may limit themselves to pileup)
2597  requireAllHistograms -- If True, a plot is produced if histograms from all files are present (default: False)
2598  """
2599 
2600  subfolder = dqmSubFolder.subfolder if dqmSubFolder is not None else None
2601  neventsHisto = self._plotFolder.getNumberOfEventsHistogram()
2602  dirsNEvents = []
2603 
2604  for tfile in files:
2605  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, subfolder)
2606  # If file and any of possibleDqmFolders exist but subfolder does not, try the fallbacks
2608  for fallbackFunc in self._fallbackDqmSubFolders:
2609  fallback = fallbackFunc(subfolder)
2610  if fallback is not None:
2611  ret = _getDirectoryDetailed(tfile, self._possibleDqmFolders, fallback)
2612  if ret is not GetDirectoryCode.SubDirNotExist:
2613  break
2614  d = GetDirectoryCode.codesToNone(ret)
2615  nev = None
2616  if neventsHisto is not None and tfile is not None:
2617  hnev = _getObject(tfile, neventsHisto)
2618  if hnev is not None:
2619  nev = hnev.GetEntries()
2620  dirsNEvents.append( (d, nev) )
2621 
2622  self._plotFolder.create(dirsNEvents, labels, isPileupSample, requireAllHistograms)
def _getObject
Definition: plotting.py:45
def _getDirectoryDetailed
Definition: plotting.py:69
def plotting.PlotterFolder.draw (   self,
  args,
  kwargs 
)
Draw and save all plots using settings of a given algorithm.

Definition at line 2623 of file plotting.py.

2624  def draw(self, *args, **kwargs):
2625  """Draw and save all plots using settings of a given algorithm."""
2626  return self._plotFolder.draw(*args, **kwargs)
2627 
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 2562 of file plotting.py.

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

2563  def getDQMSubFolders(self, limitOnlyTo=None):
2564  """Get list of subfolders, possibly limiting to some of them.
2565 
2566  Keyword arguments:
2567  limitOnlyTo -- Object depending on the PlotFolder type for limiting the set of subfolders to be processed
2568  """
2569 
2570  if self._dqmSubFolders is None:
2571  return [None]
2572 
2573  if limitOnlyTo is None:
2574  return self._dqmSubFolders
2575 
2576  return filter(lambda s: self._plotFolder.limitSubFolder(limitOnlyTo, s.translated), self._dqmSubFolders)
def plotting.PlotterFolder.getName (   self)

Definition at line 2538 of file plotting.py.

References FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, TrackingRecHitAlgorithm._name, LikelihoodSpecies._name, L1TMuon::PtAssignmentUnit._name, L1TMuon::PtRefinementUnit._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, ElectronMVAEstimatorRun2Phys14NonTrig._name, PhotonMVAEstimatorRun2Spring15NonTrig._name, PhotonMVAEstimatorRun2Phys14NonTrig._name, ElectronMVAEstimatorRun2Spring15Trig._name, GeometricDetExtra._name, ElectronMVAEstimatorRun2Spring15NonTrig._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, plotting.Plot._name, plotting.PlotGroup._name, and plotting.PlotterFolder._name.

2539  def getName(self):
2540  return self._name
def plotting.PlotterFolder.getPage (   self)

Definition at line 2544 of file plotting.py.

2545  def getPage(self):
2546  return self._plotFolder.getPage()
def plotting.PlotterFolder.getPossibleDQMFolders (   self)

Definition at line 2559 of file plotting.py.

References plotting.PlotterFolder._possibleDqmFolders.

2560  def getPossibleDQMFolders(self):
2561  return self._possibleDqmFolders
def plotting.PlotterFolder.getPurpose (   self)

Definition at line 2541 of file plotting.py.

2542  def getPurpose(self):
2543  return self._plotFolder.getPurpose()
def plotting.PlotterFolder.getSection (   self)

Definition at line 2547 of file plotting.py.

2548  def getSection(self):
2549  return self._plotFolder.getSection()
def plotting.PlotterFolder.getSelectionName (   self,
  dqmSubFolder 
)

Definition at line 2586 of file plotting.py.

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

2587  def getSelectionName(self, dqmSubFolder):
2588  return next(self.getSelectionNameIterator(dqmSubFolder))
def plotting.PlotterFolder.getSelectionNameIterator (   self,
  dqmSubFolder 
)
Get a generator for the 'selection name', looping over the name and fallbackNames

Definition at line 2580 of file plotting.py.

References plotting.PlotterFolder._fallbackNames, FP420HitsObject._name, TrackerHitsObject._name, PGeometricDet::Item._name, TrackingRecHitAlgorithm._name, LikelihoodSpecies._name, L1TMuon::PtAssignmentUnit._name, L1TMuon::PtRefinementUnit._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, ElectronMVAEstimatorRun2Phys14NonTrig._name, PhotonMVAEstimatorRun2Spring15NonTrig._name, PhotonMVAEstimatorRun2Phys14NonTrig._name, ElectronMVAEstimatorRun2Spring15Trig._name, GeometricDetExtra._name, ElectronMVAEstimatorRun2Spring15NonTrig._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, plotting.Plot._name, plotting.PlotGroup._name, and plotting.PlotterFolder._name.

Referenced by plotting.PlotterFolder.getSelectionName().

2581  def getSelectionNameIterator(self, dqmSubFolder):
2582  """Get a generator for the 'selection name', looping over the name and fallbackNames"""
2583  for name in [self._name]+self._fallbackNames:
2584  for selname in self._plotFolder.iterSelectionName(name, dqmSubFolder.translated if dqmSubFolder is not None else None):
2585  yield selname
def plotting.PlotterFolder.getTableCreators (   self)

Definition at line 2577 of file plotting.py.

References plotting.PlotterFolder._tableCreators.

2578  def getTableCreators(self):
2579  return self._tableCreators
def plotting.PlotterFolder.onlyForConversion (   self)

Definition at line 2556 of file plotting.py.

2557  def onlyForConversion(self):
2558  return self._plotFolder.onlyForConversion()
def plotting.PlotterFolder.onlyForElectron (   self)

Definition at line 2553 of file plotting.py.

2554  def onlyForElectron(self):
2555  return self._plotFolder.onlyForElectron()
def plotting.PlotterFolder.onlyForPileup (   self)

Definition at line 2550 of file plotting.py.

2551  def onlyForPileup(self):
2552  return self._plotFolder.onlyForPileup()

Member Data Documentation

plotting.PlotterFolder._dqmSubFolders
private

Definition at line 2520 of file plotting.py.

Referenced by plotting.PlotterFolder.getDQMSubFolders().

plotting.PlotterFolder._fallbackDqmSubFolders
private

Definition at line 2535 of file plotting.py.

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

plotting.PlotterFolder._fallbackNames
private

Definition at line 2534 of file plotting.py.

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

plotting.PlotterFolder._name
private

Definition at line 2515 of file plotting.py.

Referenced by trackingPlots.TimePerTrackPlot.__str__(), trackingPlots.TimePerTrackPlot.create(), plotting.PlotterFolder.getName(), plotting.PlotterItem.getName(), plotting.PlotterFolder.getSelectionNameIterator(), validation.SimpleSample.name(), trackingPlots.Iteration.name(), and plotting.PlotterItem.readDirs().

plotting.PlotterFolder._plotFolder
private

Definition at line 2517 of file plotting.py.

Referenced by plotting.PlotterItem.getPlotFolder(), and plotting.PlotterItem.readDirs().

plotting.PlotterFolder._possibleDqmFolders
private

Definition at line 2516 of file plotting.py.

Referenced by plotting.PlotterFolder.create(), and plotting.PlotterFolder.getPossibleDQMFolders().

plotting.PlotterFolder._tableCreators
private

Definition at line 2536 of file plotting.py.

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