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

2546  def __init__(self, *plotGroups, **kwargs):
2547  """Constructor.
2548 
2549  Arguments:
2550  plotGroups -- List of PlotGroup objects
2551 
2552  Keyword arguments
2553  loopSubFolders -- Should the subfolders be looped over? (default: True)
2554  onlyForPileup -- Plots this folder only for pileup samples
2555  onlyForElectron -- Plots this folder only for electron samples
2556  onlyForConversion -- Plots this folder only for conversion samples
2557  onlyForBHadron -- Plots this folder only for B-hadron samples
2558  purpose -- html.PlotPurpose member class for the purpose of the folder, used for grouping of the plots to the HTML pages
2559  page -- Optional string for the page in HTML generatin
2560  section -- Optional string for the section within a page in HTML generation
2561  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".
2562  """
2563  self._plotGroups = list(plotGroups)
2564  self._loopSubFolders = kwargs.pop("loopSubFolders", True)
2565  self._onlyForPileup = kwargs.pop("onlyForPileup", False)
2566  self._onlyForElectron = kwargs.pop("onlyForElectron", False)
2567  self._onlyForConversion = kwargs.pop("onlyForConversion", False)
2568  self._onlyForBHadron = kwargs.pop("onlyForBHadron", False)
2569  self._purpose = kwargs.pop("purpose", None)
2570  self._page = kwargs.pop("page", None)
2571  self._section = kwargs.pop("section", None)
2572  self._numberOfEventsHistogram = kwargs.pop("numberOfEventsHistogram", None)
2573  if len(kwargs) > 0:
2574  raise Exception("Got unexpected keyword arguments: "+ ",".join(kwargs.keys()))
2575 

Member Function Documentation

◆ append()

def plotting.PlotFolder.append (   self,
  plotGroup 
)

Definition at line 2605 of file plotting.py.

2605  def append(self, plotGroup):
2606  self._plotGroups.append(plotGroup)
2607 

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

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

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

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

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

2602  def getNumberOfEventsHistogram(self):
2603  return self._numberOfEventsHistogram
2604 

References plotting.PlotFolder._numberOfEventsHistogram.

◆ getPage()

def plotting.PlotFolder.getPage (   self)

Definition at line 2596 of file plotting.py.

2596  def getPage(self):
2597  return self._page
2598 

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

◆ getPlotGroup()

def plotting.PlotFolder.getPlotGroup (   self,
  name 
)

Definition at line 2614 of file plotting.py.

2614  def getPlotGroup(self, name):
2615  for pg in self._plotGroups:
2616  if pg.getName() == name:
2617  return pg
2618  raise Exception("No PlotGroup named '%s'" % name)
2619 

References plotting.PlotFolder._plotGroups.

◆ getPlotGroups()

def plotting.PlotFolder.getPlotGroups (   self)

Definition at line 2611 of file plotting.py.

2611  def getPlotGroups(self):
2612  return self._plotGroups
2613 

References plotting.PlotFolder._plotGroups.

◆ getPurpose()

def plotting.PlotFolder.getPurpose (   self)

Definition at line 2593 of file plotting.py.

2593  def getPurpose(self):
2594  return self._purpose
2595 

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

◆ getSection()

def plotting.PlotFolder.getSection (   self)

Definition at line 2599 of file plotting.py.

2599  def getSection(self):
2600  return self._section
2601 

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

2668  def iterSelectionName(self, plotFolderName, translatedDqmSubFolder):
2669  """Iterate over possible selections name (used in output directory name and legend) from the name of PlotterFolder, and a return value of translateSubFolder"""
2670  ret = ""
2671  if plotFolderName != "":
2672  ret += "_"+plotFolderName
2673  if translatedDqmSubFolder is not None:
2674  ret += "_"+translatedDqmSubFolder
2675  yield ret
2676 

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

2677  def limitSubFolder(self, limitOnlyTo, translatedDqmSubFolder):
2678  """Return True if this subfolder should be processed
2679 
2680  Arguments:
2681  limitOnlyTo -- List/set/similar containing the translatedDqmSubFolder
2682  translatedDqmSubFolder -- Return value of translateSubFolder
2683  """
2684  return translatedDqmSubFolder in limitOnlyTo
2685 

◆ loopSubFolders()

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

Definition at line 2576 of file plotting.py.

2576  def loopSubFolders(self):
2577  """Return True if the PlotGroups of this folder should be applied to the all subfolders"""
2578  return self._loopSubFolders
2579 

References plotting.PlotFolder._loopSubFolders.

◆ onlyForBHadron()

def plotting.PlotFolder.onlyForBHadron (   self)

Definition at line 2590 of file plotting.py.

2590  def onlyForBHadron(self):
2591  return self._onlyForBHadron
2592 

References plotting.PlotFolder._onlyForBHadron.

◆ onlyForConversion()

def plotting.PlotFolder.onlyForConversion (   self)

Definition at line 2587 of file plotting.py.

2587  def onlyForConversion(self):
2588  return self._onlyForConversion
2589 

References plotting.PlotFolder._onlyForConversion.

◆ onlyForElectron()

def plotting.PlotFolder.onlyForElectron (   self)

Definition at line 2584 of file plotting.py.

2584  def onlyForElectron(self):
2585  return self._onlyForElectron
2586 

References plotting.PlotFolder._onlyForElectron.

◆ onlyForPileup()

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

Definition at line 2580 of file plotting.py.

2580  def onlyForPileup(self):
2581  """Return True if the folder is intended only for pileup samples"""
2582  return self._onlyForPileup
2583 

References plotting.PlotFolder._onlyForPileup.

◆ set()

def plotting.PlotFolder.set (   self,
  plotGroups 
)

Definition at line 2608 of file plotting.py.

2608  def set(self, plotGroups):
2609  self._plotGroups = plotGroups
2610 

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

2658  def translateSubFolder(self, dqmSubFolderName):
2659  """Method called to (possibly) translate a subfolder name to more 'readable' form
2660 
2661  The implementation in this (base) class just returns the
2662  argument. The idea is that a deriving class might want to do
2663  something more complex (like trackingPlots.TrackingPlotFolder
2664  does)
2665  """
2666  return dqmSubFolderName
2667 

Member Data Documentation

◆ _labels

plotting.PlotFolder._labels
private

Definition at line 2633 of file plotting.py.

Referenced by validation.SimpleValidation._doPlots(), and plotting.PlotFolder.draw().

◆ _loopSubFolders

plotting.PlotFolder._loopSubFolders
private

Definition at line 2564 of file plotting.py.

Referenced by plotting.PlotFolder.loopSubFolders().

◆ _numberOfEventsHistogram

plotting.PlotFolder._numberOfEventsHistogram
private

Definition at line 2572 of file plotting.py.

Referenced by plotting.PlotFolder.getNumberOfEventsHistogram().

◆ _onlyForBHadron

plotting.PlotFolder._onlyForBHadron
private

Definition at line 2568 of file plotting.py.

Referenced by plotting.PlotFolder.onlyForBHadron().

◆ _onlyForConversion

plotting.PlotFolder._onlyForConversion
private

Definition at line 2567 of file plotting.py.

Referenced by plotting.PlotFolder.onlyForConversion().

◆ _onlyForElectron

plotting.PlotFolder._onlyForElectron
private

Definition at line 2566 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:25
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:309
list
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*", "!HLTx*" if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL. It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of "!*" before the partial wildcard feature was incorporated). Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
hgcalPlots.loopSubFolders
loopSubFolders
Definition: hgcalPlots.py:1785