CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
plotting.PlotFolder Class Reference
Inheritance diagram for plotting.PlotFolder:
trackingPlots.TrackingPlotFolder

Public Member Functions

def __init__ (self, *plotGroups, **kwargs)
 
def append (self, plotGroup)
 
def create (self, dirsNEvents, labels, isPileupSample=True, requireAllHistograms=False)
 
def draw (self, prefix=None, separate=False, saveFormat=".pdf", ratio=True, directory="")
 
def getNumberOfEventsHistogram (self)
 
def getPage (self)
 
def getPlotGroup (self, name)
 
def getPlotGroups (self)
 
def getPurpose (self)
 
def getSection (self)
 
def iterSelectionName (self, plotFolderName, translatedDqmSubFolder)
 
def limitSubFolder (self, limitOnlyTo, translatedDqmSubFolder)
 
def loopSubFolders (self)
 
def onlyForBHadron (self)
 
def onlyForConversion (self)
 
def onlyForElectron (self)
 
def onlyForPileup (self)
 
def set (self, plotGroups)
 
def translateSubFolder (self, dqmSubFolderName)
 

Private Attributes

 _labels
 
 _loopSubFolders
 
 _numberOfEventsHistogram
 
 _onlyForBHadron
 
 _onlyForConversion
 
 _onlyForElectron
 
 _onlyForPileup
 
 _page
 
 _plotGroups
 
 _purpose
 
 _section
 

Detailed Description

Represents a collection of PlotGroups, produced from a single folder in a DQM file

Definition at line 2550 of file plotting.py.

Constructor & Destructor Documentation

◆ __init__()

def plotting.PlotFolder.__init__ (   self,
plotGroups,
**  kwargs 
)
Constructor.

Arguments:
plotGroups     -- List of PlotGroup objects

Keyword arguments
loopSubFolders -- Should the subfolders be looped over? (default: True)
onlyForPileup  -- Plots this folder only for pileup samples
onlyForElectron -- Plots this folder only for electron samples
onlyForConversion -- Plots this folder only for conversion samples
onlyForBHadron -- Plots this folder only for B-hadron samples
purpose        -- html.PlotPurpose member class for the purpose of the folder, used for grouping of the plots to the HTML pages
page           -- Optional string for the page in HTML generatin
section        -- Optional string for the section within a page in HTML generation
numberOfEventsHistogram -- Optional path to histogram filled once per event. Needed if there are any plots normalized by number of events. Path is relative to "possibleDqmFolders".

Reimplemented in trackingPlots.TrackingPlotFolder.

Definition at line 2553 of file plotting.py.

2553  def __init__(self, *plotGroups, **kwargs):
2554  """Constructor.
2555 
2556  Arguments:
2557  plotGroups -- List of PlotGroup objects
2558 
2559  Keyword arguments
2560  loopSubFolders -- Should the subfolders be looped over? (default: True)
2561  onlyForPileup -- Plots this folder only for pileup samples
2562  onlyForElectron -- Plots this folder only for electron samples
2563  onlyForConversion -- Plots this folder only for conversion samples
2564  onlyForBHadron -- Plots this folder only for B-hadron samples
2565  purpose -- html.PlotPurpose member class for the purpose of the folder, used for grouping of the plots to the HTML pages
2566  page -- Optional string for the page in HTML generatin
2567  section -- Optional string for the section within a page in HTML generation
2568  numberOfEventsHistogram -- Optional path to histogram filled once per event. Needed if there are any plots normalized by number of events. Path is relative to "possibleDqmFolders".
2569  """
2570  self._plotGroups = list(plotGroups)
2571  self._loopSubFolders = kwargs.pop("loopSubFolders", True)
2572  self._onlyForPileup = kwargs.pop("onlyForPileup", False)
2573  self._onlyForElectron = kwargs.pop("onlyForElectron", False)
2574  self._onlyForConversion = kwargs.pop("onlyForConversion", False)
2575  self._onlyForBHadron = kwargs.pop("onlyForBHadron", False)
2576  self._purpose = kwargs.pop("purpose", None)
2577  self._page = kwargs.pop("page", None)
2578  self._section = kwargs.pop("section", None)
2579  self._numberOfEventsHistogram = kwargs.pop("numberOfEventsHistogram", None)
2580  if len(kwargs) > 0:
2581  raise Exception("Got unexpected keyword arguments: "+ ",".join(kwargs.keys()))
2582 

Member Function Documentation

◆ append()

def plotting.PlotFolder.append (   self,
  plotGroup 
)

Definition at line 2612 of file plotting.py.

2612  def append(self, plotGroup):
2613  self._plotGroups.append(plotGroup)
2614 

References plotting.PlotFolder._plotGroups.

Referenced by diclist.diclist.add().

◆ create()

def plotting.PlotFolder.create (   self,
  dirsNEvents,
  labels,
  isPileupSample = True,
  requireAllHistograms = False 
)
Create histograms from a list of TFiles.

Arguments:
dirsNEvents   -- List of (TDirectory, nevents) pairs
labels -- List of strings for legend labels corresponding the files
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 2627 of file plotting.py.

2627  def create(self, dirsNEvents, labels, isPileupSample=True, requireAllHistograms=False):
2628  """Create histograms from a list of TFiles.
2629 
2630  Arguments:
2631  dirsNEvents -- List of (TDirectory, nevents) pairs
2632  labels -- List of strings for legend labels corresponding the files
2633  isPileupSample -- Is sample pileup (some PlotGroups may limit themselves to pileup)
2634  requireAllHistograms -- If True, a plot is produced if histograms from all files are present (default: False)
2635  """
2636 
2637  if len(dirsNEvents) != len(labels):
2638  raise Exception("len(dirsNEvents) should be len(labels), now they are %d and %d" % (len(dirsNEvents), len(labels)))
2639 
2640  self._labels = labels
2641 
2642  for pg in self._plotGroups:
2643  if pg.onlyForPileup() and not isPileupSample:
2644  continue
2645  pg.create(dirsNEvents, requireAllHistograms)
2646 

◆ draw()

def plotting.PlotFolder.draw (   self,
  prefix = None,
  separate = False,
  saveFormat = ".pdf",
  ratio = True,
  directory = "" 
)
Draw and save all plots using settings of a given algorithm.

Arguments:
prefix   -- Optional string for file name prefix (default None)
separate -- Save the plots of a group to separate files instead of a file per group (default False)
saveFormat   -- String specifying the plot format (default '.pdf')
ratio    -- Add ratio to the plot (default True)
directory -- Directory where to save the file (default "")

Definition at line 2647 of file plotting.py.

2647  def draw(self, prefix=None, separate=False, saveFormat=".pdf", ratio=True, directory=""):
2648  """Draw and save all plots using settings of a given algorithm.
2649 
2650  Arguments:
2651  prefix -- Optional string for file name prefix (default None)
2652  separate -- Save the plots of a group to separate files instead of a file per group (default False)
2653  saveFormat -- String specifying the plot format (default '.pdf')
2654  ratio -- Add ratio to the plot (default True)
2655  directory -- Directory where to save the file (default "")
2656  """
2657  ret = []
2658 
2659  for pg in self._plotGroups:
2660  ret.extend(pg.draw(self._labels, prefix=prefix, separate=separate, saveFormat=saveFormat, ratio=ratio, directory=directory))
2661  return ret
2662 
2663 

References DigiInvestigatorHistogramMaker._labels, SeedMultiplicityAnalyzer._labels, hitfit::Constraint_Intermed_Labels._labels, plotting.PlotFolder._labels, and plotting.PlotFolder._plotGroups.

◆ getNumberOfEventsHistogram()

def plotting.PlotFolder.getNumberOfEventsHistogram (   self)

Definition at line 2609 of file plotting.py.

2609  def getNumberOfEventsHistogram(self):
2610  return self._numberOfEventsHistogram
2611 

References plotting.PlotFolder._numberOfEventsHistogram.

◆ getPage()

def plotting.PlotFolder.getPage (   self)

Definition at line 2603 of file plotting.py.

2603  def getPage(self):
2604  return self._page
2605 

References html.Table._page, and plotting.PlotFolder._page.

◆ getPlotGroup()

def plotting.PlotFolder.getPlotGroup (   self,
  name 
)

Definition at line 2621 of file plotting.py.

2621  def getPlotGroup(self, name):
2622  for pg in self._plotGroups:
2623  if pg.getName() == name:
2624  return pg
2625  raise Exception("No PlotGroup named '%s'" % name)
2626 

References plotting.PlotFolder._plotGroups.

◆ getPlotGroups()

def plotting.PlotFolder.getPlotGroups (   self)

Definition at line 2618 of file plotting.py.

2618  def getPlotGroups(self):
2619  return self._plotGroups
2620 

References plotting.PlotFolder._plotGroups.

◆ getPurpose()

def plotting.PlotFolder.getPurpose (   self)

Definition at line 2600 of file plotting.py.

2600  def getPurpose(self):
2601  return self._purpose
2602 

References html.Table._purpose, and plotting.PlotFolder._purpose.

◆ getSection()

def plotting.PlotFolder.getSection (   self)

Definition at line 2606 of file plotting.py.

2606  def getSection(self):
2607  return self._section
2608 

References html.Table._section, and plotting.PlotFolder._section.

◆ iterSelectionName()

def plotting.PlotFolder.iterSelectionName (   self,
  plotFolderName,
  translatedDqmSubFolder 
)
Iterate over possible selections name (used in output directory name and legend) from the name of PlotterFolder, and a return value of translateSubFolder

Reimplemented in trackingPlots.TrackingPlotFolder.

Definition at line 2675 of file plotting.py.

2675  def iterSelectionName(self, plotFolderName, translatedDqmSubFolder):
2676  """Iterate over possible selections name (used in output directory name and legend) from the name of PlotterFolder, and a return value of translateSubFolder"""
2677  ret = ""
2678  if plotFolderName != "":
2679  ret += "_"+plotFolderName
2680  if translatedDqmSubFolder is not None:
2681  ret += "_"+translatedDqmSubFolder
2682  yield ret
2683 

◆ limitSubFolder()

def plotting.PlotFolder.limitSubFolder (   self,
  limitOnlyTo,
  translatedDqmSubFolder 
)
Return True if this subfolder should be processed

Arguments:
limitOnlyTo            -- List/set/similar containing the translatedDqmSubFolder
translatedDqmSubFolder -- Return value of translateSubFolder

Reimplemented in trackingPlots.TrackingPlotFolder.

Definition at line 2684 of file plotting.py.

2684  def limitSubFolder(self, limitOnlyTo, translatedDqmSubFolder):
2685  """Return True if this subfolder should be processed
2686 
2687  Arguments:
2688  limitOnlyTo -- List/set/similar containing the translatedDqmSubFolder
2689  translatedDqmSubFolder -- Return value of translateSubFolder
2690  """
2691  return translatedDqmSubFolder in limitOnlyTo
2692 

◆ loopSubFolders()

def plotting.PlotFolder.loopSubFolders (   self)
Return True if the PlotGroups of this folder should be applied to the all subfolders

Definition at line 2583 of file plotting.py.

2583  def loopSubFolders(self):
2584  """Return True if the PlotGroups of this folder should be applied to the all subfolders"""
2585  return self._loopSubFolders
2586 

References plotting.PlotFolder._loopSubFolders.

◆ onlyForBHadron()

def plotting.PlotFolder.onlyForBHadron (   self)

Definition at line 2597 of file plotting.py.

2597  def onlyForBHadron(self):
2598  return self._onlyForBHadron
2599 

References plotting.PlotFolder._onlyForBHadron.

◆ onlyForConversion()

def plotting.PlotFolder.onlyForConversion (   self)

Definition at line 2594 of file plotting.py.

2594  def onlyForConversion(self):
2595  return self._onlyForConversion
2596 

References plotting.PlotFolder._onlyForConversion.

◆ onlyForElectron()

def plotting.PlotFolder.onlyForElectron (   self)

Definition at line 2591 of file plotting.py.

2591  def onlyForElectron(self):
2592  return self._onlyForElectron
2593 

References plotting.PlotFolder._onlyForElectron.

◆ onlyForPileup()

def plotting.PlotFolder.onlyForPileup (   self)
Return True if the folder is intended only for pileup samples

Definition at line 2587 of file plotting.py.

2587  def onlyForPileup(self):
2588  """Return True if the folder is intended only for pileup samples"""
2589  return self._onlyForPileup
2590 

References plotting.PlotFolder._onlyForPileup.

◆ set()

def plotting.PlotFolder.set (   self,
  plotGroups 
)

Definition at line 2615 of file plotting.py.

2615  def set(self, plotGroups):
2616  self._plotGroups = plotGroups
2617 

References plotting.PlotFolder._plotGroups.

◆ translateSubFolder()

def plotting.PlotFolder.translateSubFolder (   self,
  dqmSubFolderName 
)
Method called to (possibly) translate a subfolder name to more 'readable' form

The implementation in this (base) class just returns the
argument. The idea is that a deriving class might want to do
something more complex (like trackingPlots.TrackingPlotFolder
does)

Reimplemented in trackingPlots.TrackingPlotFolder.

Definition at line 2665 of file plotting.py.

2665  def translateSubFolder(self, dqmSubFolderName):
2666  """Method called to (possibly) translate a subfolder name to more 'readable' form
2667 
2668  The implementation in this (base) class just returns the
2669  argument. The idea is that a deriving class might want to do
2670  something more complex (like trackingPlots.TrackingPlotFolder
2671  does)
2672  """
2673  return dqmSubFolderName
2674 

Member Data Documentation

◆ _labels

plotting.PlotFolder._labels
private

◆ _loopSubFolders

plotting.PlotFolder._loopSubFolders
private

Definition at line 2571 of file plotting.py.

Referenced by plotting.PlotFolder.loopSubFolders().

◆ _numberOfEventsHistogram

plotting.PlotFolder._numberOfEventsHistogram
private

Definition at line 2579 of file plotting.py.

Referenced by plotting.PlotFolder.getNumberOfEventsHistogram().

◆ _onlyForBHadron

plotting.PlotFolder._onlyForBHadron
private

Definition at line 2575 of file plotting.py.

Referenced by plotting.PlotFolder.onlyForBHadron().

◆ _onlyForConversion

plotting.PlotFolder._onlyForConversion
private

Definition at line 2574 of file plotting.py.

Referenced by plotting.PlotFolder.onlyForConversion().

◆ _onlyForElectron

plotting.PlotFolder._onlyForElectron
private

Definition at line 2573 of file plotting.py.

Referenced by plotting.PlotFolder.onlyForElectron().

◆ _onlyForPileup

plotting.PlotFolder._onlyForPileup
private

◆ _page

plotting.PlotFolder._page
private

◆ _plotGroups

plotting.PlotFolder._plotGroups
private

◆ _purpose

plotting.PlotFolder._purpose
private

◆ _section

plotting.PlotFolder._section
private
join
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
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
Exception
mps_setup.append
append
Definition: mps_setup.py:85
trackingPlots.onlyForPileup
onlyForPileup
Definition: trackingPlots.py:299
hgcalPlots.loopSubFolders
loopSubFolders
Definition: hgcalPlots.py:2678