ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
python.AnaAlgSequence.AnaAlgSequence Class Reference
Inheritance diagram for python.AnaAlgSequence.AnaAlgSequence:
Collaboration diagram for python.AnaAlgSequence.AnaAlgSequence:

Public Member Functions

def __init__ (self, name="AnalysisSequence")
 
def addGaudiConfig2Algorithm (self, alg)
 
def addGaudiConfig2PublicTool (self, alg)
 
def getGaudiConfig2Algorithms (self)
 
def getGaudiConfig2PublicTools (self)
 
def addDecorAwareTool (self, tool, parent, inputPropName=None, outputPropName=None)
 
def configure (self, inputName, outputName, hiddenLayerPrefix="")
 
def append (self, alg, inputPropName, outputPropName=None, stageName='undefined', metaConfig={}, dynConfig={})
 
def insert (self, index, alg, inputPropName, outputPropName=None, stageName='undefined', metaConfig={}, dynConfig={})
 
def addPublicTool (self, tool, stageName='undefined')
 
def __delattr__ (self, name)
 
def removeStage (self, stageName)
 
def addMetaConfigDefault (self, name, value)
 
def getMetaConfig (self, name)
 

Static Public Member Functions

def allowedStageNames ()
 

Private Attributes

 _algorithmMeta
 
 _metaConfigDefault
 
 _isGaudiConfig2
 
 _gaudiConfig2Algorithms
 
 _gaudiConfig2PublicTools
 
 _algToDecorToolMap
 

Static Private Attributes

tuple __slots__
 

Detailed Description

Analysis algorithm sequence

This is a thin layer above a generic algorithm sequence, which helps
with setting up the analysis algorithms for the job.

Note that this class is specifically meant for setting up the algorithms
provided centrally for analysis. The private analysis algorithms of the
users do not need to use this sequence type.

Definition at line 15 of file AnaAlgSequence.py.

Constructor & Destructor Documentation

◆ __init__()

def python.AnaAlgSequence.AnaAlgSequence.__init__ (   self,
  name = "AnalysisSequence" 
)
Analysis algorithm sequence constructor

Nothing special, it just initialises the base class, and taking the
name of the input container of the sequence.

Keyword arguments:
  name -- The name of the analysis algorithm sequence

Definition at line 35 of file AnaAlgSequence.py.

35  def __init__( self, name = "AnalysisSequence" ):
36  """Analysis algorithm sequence constructor
37 
38  Nothing special, it just initialises the base class, and taking the
39  name of the input container of the sequence.
40 
41  Keyword arguments:
42  name -- The name of the analysis algorithm sequence
43  """
44 
45  # Initialise the base class:
46  super( AnaAlgSequence, self ).__init__( name )
47 
48  print("WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING")
49  print("WARNING!!!!! Usage of AnaAlgSequence is deprecated, please use ConfigBlocks instead")
50  print("WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING")
51 
52  # Set up the sequence's member variables:
53  self._algorithmMeta = []
54  self._metaConfigDefault = {}
55  # Special members for GaudiConfig2 types
56  self._isGaudiConfig2 = False
57  self._gaudiConfig2Algorithms = []
58  self._gaudiConfig2PublicTools = []
59  # For tools that need to be aware of their parent's
60  # input/output properties (for DecorHandle management)
61  self._algToDecorToolMap = {}
62 
63  return
64 

Member Function Documentation

◆ __delattr__()

def python.AnaAlgSequence.AnaAlgSequence.__delattr__ (   self,
  name 
)
Remove one algorithm/sequence from this sequence, by name

This is to allow removing algorithms (or even sequences) from this
sequence in case that would be needed.

Keyword arguments:
name -- The name of the algorithm/sequence to delete from the
sequence

Definition at line 342 of file AnaAlgSequence.py.

342  def __delattr__( self, name ):
343  """Remove one algorithm/sequence from this sequence, by name
344 
345  This is to allow removing algorithms (or even sequences) from this
346  sequence in case that would be needed.
347 
348  Keyword arguments:
349  name -- The name of the algorithm/sequence to delete from the
350  sequence
351  """
352 
353  # Figure out the algorithm's index:
354  algIndex = -1
355  index = 0
356  for alg in self:
357  if alg.name() == name:
358  algIndex = index
359  break
360  index += 1
361  pass
362 
363  # Check if we were successful:
364  if algIndex == -1:
365  raise AttributeError( 'Algorithm/sequence with name "%s" was not ' \
366  'found' % name )
367 
368  # Remove the element from the base class:
369  super( AnaAlgSequence, self ).__delattr__( name )
370 
371  # Now remove the elements from the member lists of this class:
372  del self._algorithmMeta[ algIndex ]
373  pass
374 

◆ addDecorAwareTool()

def python.AnaAlgSequence.AnaAlgSequence.addDecorAwareTool (   self,
  tool,
  parent,
  inputPropName = None,
  outputPropName = None 
)

Definition at line 89 of file AnaAlgSequence.py.

89  def addDecorAwareTool(self, tool, parent, inputPropName=None, outputPropName=None):
90  assert inputPropName or outputPropName, "Either input or output name should be provided for decor-aware tools"
91  self._algToDecorToolMap[getFullName(parent)] = (tool, inputPropName, outputPropName)
92 

◆ addGaudiConfig2Algorithm()

def python.AnaAlgSequence.AnaAlgSequence.addGaudiConfig2Algorithm (   self,
  alg 
)

Definition at line 66 of file AnaAlgSequence.py.

66  def addGaudiConfig2Algorithm(self,alg):
67  self._isGaudiConfig2 = True
68  self._gaudiConfig2Algorithms.append(alg)
69  return
70 

◆ addGaudiConfig2PublicTool()

def python.AnaAlgSequence.AnaAlgSequence.addGaudiConfig2PublicTool (   self,
  alg 
)

Definition at line 72 of file AnaAlgSequence.py.

72  def addGaudiConfig2PublicTool(self,alg):
73  self._isGaudiConfig2 = True
74  self._gaudiConfig2PublicTools.append(alg)
75  return
76 

◆ addMetaConfigDefault()

def python.AnaAlgSequence.AnaAlgSequence.addMetaConfigDefault (   self,
  name,
  value 
)
add a default value for the given meta-configuration entry

This will both register name as a valid meta-configuration
value and set its default value, or add to its default value,
if that name is already known.

Definition at line 413 of file AnaAlgSequence.py.

413  def addMetaConfigDefault (self, name, value) :
414  """add a default value for the given meta-configuration entry
415 
416  This will both register name as a valid meta-configuration
417  value and set its default value, or add to its default value,
418  if that name is already known."""
419 
420  if name in self._metaConfigDefault :
421  self._metaConfigDefault[name] += value
422  pass
423  else :
424  self._metaConfigDefault[name] = value
425  pass
426  pass
427 
428 
429 

◆ addPublicTool()

def python.AnaAlgSequence.AnaAlgSequence.addPublicTool (   self,
  tool,
  stageName = 'undefined' 
)
Add a public tool to the job

This function is here to provide a uniform interface with which
analysis algorithm sequences can declare the public tools that they
need. In Athena mode the function doesn't do anything. But in EventLoop
mode it remembers the EL::AnaAlgorithmConfig object that it receives,
which describes the public tool.

Keyword arguments:
   tool -- The tool object to add to the sequence/job

Definition at line 321 of file AnaAlgSequence.py.

321  def addPublicTool( self, tool, stageName = 'undefined' ):
322  """Add a public tool to the job
323 
324  This function is here to provide a uniform interface with which
325  analysis algorithm sequences can declare the public tools that they
326  need. In Athena mode the function doesn't do anything. But in EventLoop
327  mode it remembers the EL::AnaAlgorithmConfig object that it receives,
328  which describes the public tool.
329 
330  Keyword arguments:
331  tool -- The tool object to add to the sequence/job
332  """
333 
334  if not isAthena:
335  # We're not in Athena, so let's remember this as a "normal" algorithm:
336  self.append( tool, inputPropName = None, stageName = stageName )
337  else:
338  if 'GaudiConfig2' in str(type(tool)):
339  self.addGaudiConfig2PublicTool(tool)
340  return
341 

◆ allowedStageNames()

def python.AnaAlgSequence.AnaAlgSequence.allowedStageNames ( )
static

Definition at line 446 of file AnaAlgSequence.py.

446  def allowedStageNames():
447  return AnaAlgorithmMeta.allowedStageNames ()
448 

◆ append()

def python.AnaAlgSequence.AnaAlgSequence.append (   self,
  alg,
  inputPropName,
  outputPropName = None,
  stageName = 'undefined',
  metaConfig = {},
  dynConfig = {} 
)
Add one analysis algorithm to the sequence

This function is specifically meant for adding one of the centrally
provided analysis algorithms to the sequence.

Keyword arguments:
  alg -- The algorithm to add (an Athena configurable, or an
 EL::AnaAlgorithmConfig instance)
  inputPropName -- The name of the property setting the input
           object/container name for the algorithm
  outputPropName -- The name of the property setting the output
            object/container name for the algorithm [optional]
  stageName -- name of the current processing stage [optional]

Definition at line 267 of file AnaAlgSequence.py.

267  def append( self, alg, inputPropName, outputPropName = None,
268  stageName = 'undefined',
269  metaConfig = {},
270  dynConfig = {}):
271  """Add one analysis algorithm to the sequence
272 
273  This function is specifically meant for adding one of the centrally
274  provided analysis algorithms to the sequence.
275 
276  Keyword arguments:
277  alg -- The algorithm to add (an Athena configurable, or an
278  EL::AnaAlgorithmConfig instance)
279  inputPropName -- The name of the property setting the input
280  object/container name for the algorithm
281  outputPropName -- The name of the property setting the output
282  object/container name for the algorithm [optional]
283  stageName -- name of the current processing stage [optional]
284  """
285 
286  meta = AnaAlgorithmMeta( stageName=stageName, inputPropName=inputPropName, outputPropName=outputPropName, metaConfig=metaConfig, dynConfig=dynConfig )
287  # This makes sure that a GaudiConfig2 alg isn't attached to an old-style sequence
288  if 'GaudiConfig2' in str(type(alg)):
289  self.addGaudiConfig2Algorithm(alg)
290  else:
291  self += alg
292  self._algorithmMeta.append( meta )
293  return self
294 

◆ configure()

def python.AnaAlgSequence.AnaAlgSequence.configure (   self,
  inputName,
  outputName,
  hiddenLayerPrefix = "" 
)
Perform a post-configuration on the analysis algorithm sequence

This function needs to be called once the sequence is configured to
hold the right algorithms, in the right order, with the right settings.
It sets the I/O properties of the algorithms to make sure that they
receive the input object(s) specified, and produce the output object(s)
requested.

The arguments can either be simple string names, or dictionaries in the
form of { "type" : "key", ... }. The latter is used to describe multiple
inputs/outputs to/from a sequence. See the descriptions of the various
analysis algorithm sequence setup functions on how their created
sequences should be configured by this function.

Keyword arguments:
  inputName  -- The name(s) of the input object(s)/container(s) to
        process
  outputName -- The name(s) of the output object(s)/container(s) to
        produce
  hiddenLayerPrefix -- Possible unique string prefix for
               object(s)/container(s) in "hidden layers" of the
               algorithm sequence. To avoid name clashes when
               scheduling multiple instances of the sequence.

Definition at line 93 of file AnaAlgSequence.py.

93  def configure( self, inputName, outputName,
94  hiddenLayerPrefix = "" ):
95  """Perform a post-configuration on the analysis algorithm sequence
96 
97  This function needs to be called once the sequence is configured to
98  hold the right algorithms, in the right order, with the right settings.
99  It sets the I/O properties of the algorithms to make sure that they
100  receive the input object(s) specified, and produce the output object(s)
101  requested.
102 
103  The arguments can either be simple string names, or dictionaries in the
104  form of { "type" : "key", ... }. The latter is used to describe multiple
105  inputs/outputs to/from a sequence. See the descriptions of the various
106  analysis algorithm sequence setup functions on how their created
107  sequences should be configured by this function.
108 
109  Keyword arguments:
110  inputName -- The name(s) of the input object(s)/container(s) to
111  process
112  outputName -- The name(s) of the output object(s)/container(s) to
113  produce
114  hiddenLayerPrefix -- Possible unique string prefix for
115  object(s)/container(s) in "hidden layers" of the
116  algorithm sequence. To avoid name clashes when
117  scheduling multiple instances of the sequence.
118  """
119 
120  # To handle the case where the components are GaudiConfig2, such that the algs
121  # are not actually attached to the sequence, rather than looping directly over the
122  # sequence the contents are copied into a list so that it works for both cases
123  listOfAlgs = []
124  if self._isGaudiConfig2:
125  listOfAlgs = self._gaudiConfig2Algorithms
126  else:
127  for alg in self: listOfAlgs.append(alg)
128 
129  # Make sure that all internal variables are of the same size:
130  # Count either the sequence elements (non-GaudiConfig2) or the standalone list (GaudiConfig2)
131  nAlgs = len(listOfAlgs)
132  if len( self._algorithmMeta ) != nAlgs:
133  raise RuntimeError( 'Analysis algorithm sequence is in an ' \
134  'inconsistent state' )
135 
136  # do the dynamic configuration based on meta-information
137  metaConfig = {}
138  for name, value in self._metaConfigDefault.items() :
139  metaConfig[name] = value[:]
140  pass
141  for alg, meta in zip( listOfAlgs, self._algorithmMeta ):
142  for var, func in meta.dynConfig.items() :
143  # if this is a subtool, find the subtool
144  obj = alg
145  while '.' in var :
146  obj = getattr (alg, var[:var.find('.')])
147  var = var[var.find('.')+1:]
148  pass
149  # set the property on the algorithm/tool
150  setattr (obj, var, func (metaConfig))
151  pass
152  for name, value in meta.metaConfig.items() :
153  if name not in metaConfig :
154  raise RuntimeError ("metaConfig value " + name + " for algorithm " + alg.name() + " not registered, did you forget to call addMetaConfigDefault?")
155  metaConfig[name] += value[:]
156  pass
157  pass
158 
159  # Make the inputs and outputs dictionaries. Allowing simple sequences to
160  # be configured using simple string names.
161  if isinstance( inputName, dict ):
162  inputNameDict = inputName
163  else:
164  inputNameDict = { "default" : inputName }
165  pass
166  if isinstance( outputName, dict ):
167  outputNameDict = outputName
168  else:
169  outputNameDict = { "default" : outputName }
170  pass
171 
172  # Iterate over the algorithms:
173  currentInputs = copy.deepcopy( inputNameDict )
174  tmpIndex = {}
175  for alg, meta in zip( listOfAlgs, self._algorithmMeta ):
176 
177  # If there is no input defined for the algorithm (because it may
178  # be a public tool), then skip doing anything with it:
179  if not meta.inputPropName:
180  continue
181 
182  # Set the input name(s):
183  for inputLabel, inputPropName in meta.inputPropName.items():
184  if inputLabel not in currentInputs:
185  continue
186  setattr( alg, inputPropName, currentInputs[ inputLabel ] )
187 
188  if getFullName(alg) in self._algToDecorToolMap:
189  tool, inputPropName, outputPropName = self._algToDecorToolMap[getFullName(alg)]
190  if inputPropName:
191  setattr( tool, inputPropName, currentInputs[ inputLabel ].replace('%SYS%','NOSYS') )
192  pass
193 
194  # Set up the output name(s):
195  if meta.outputPropName:
196 
197  # Loop over the outputs of the algorithm.
198  for outputLabel, outputPropName in meta.outputPropName.items():
199  if outputLabel not in tmpIndex:
200  tmpIndex[ outputLabel ] = 1
201  pass
202  if outputLabel in outputNameDict:
203  currentInputs[ outputLabel ] = \
204  '%s_tmp%i' % ( outputNameDict[ outputLabel ],
205  tmpIndex[ outputLabel ] )
206  else:
207  currentInputs[ outputLabel ] = \
208  '%s%s_tmp%i' % ( hiddenLayerPrefix, outputLabel,
209  tmpIndex[ outputLabel ] )
210  pass
211 
212  tmpIndex[ outputLabel ] += 1
213  setattr( alg, outputPropName, currentInputs[ outputLabel ] )
214 
215  if getFullName(alg) in self._algToDecorToolMap:
216  tool, inputPropName, outputPropName = self._algToDecorToolMap[getFullName(alg)]
217  if outputPropName:
218  setattr( tool, outputPropName, currentInputs[ outputLabel ].replace('%SYS%','NOSYS') )
219 
220  pass
221  pass
222 
223  pass
224 
225  # Set the output name(s) of the last algorithm (that provides output)
226  # to the requested value:
227  currentOutputs = copy.deepcopy( outputNameDict )
228  for alg, meta in reversed( list( zip( listOfAlgs, self._algorithmMeta ) ) ):
229 
230  # Stop the loop if we're already done.
231  if len( currentOutputs ) == 0:
232  break
233 
234  # If the algorithm has (an) output(s), set them up appropriately.
235  # Remembering which "final" output still needs to be set.
236  if meta.outputPropName:
237  for outputLabel, outputKey in meta.outputPropName.items():
238  if outputLabel in currentOutputs:
239  setattr( alg, outputKey, currentOutputs[ outputLabel ] )
240 
241  if getFullName(alg) in self._algToDecorToolMap:
242  tool, inputPropName, outputPropName = self._algToDecorToolMap[getFullName(alg)]
243  if outputPropName:
244  setattr( tool, outputPropName, currentInputs[ outputLabel ].replace('%SYS%','NOSYS') )
245 
246  del currentOutputs[ outputLabel ]
247  pass
248  pass
249  pass
250 
251  # Set up the input name(s) of the algorithm correctly, in case this
252  # is needed...
253  if meta.inputPropName :
254  for inputLabel, inputKey in meta.inputPropName.items():
255  if inputLabel in currentOutputs:
256  setattr( alg, inputKey, currentOutputs[ inputLabel ] )
257 
258  if getFullName(alg) in self._algToDecorToolMap:
259  tool, inputPropName, outputPropName = self._algToDecorToolMap[getFullName(alg)]
260  if inputPropName:
261  setattr( tool, inputPropName, currentInputs[ inputLabel ].replace('%SYS%','NOSYS') )
262 
263  pass
264 
265  return
266 

◆ getGaudiConfig2Algorithms()

def python.AnaAlgSequence.AnaAlgSequence.getGaudiConfig2Algorithms (   self)

Definition at line 78 of file AnaAlgSequence.py.

78  def getGaudiConfig2Algorithms(self):
79  return self._gaudiConfig2Algorithms
80 

◆ getGaudiConfig2PublicTools()

def python.AnaAlgSequence.AnaAlgSequence.getGaudiConfig2PublicTools (   self)

Definition at line 82 of file AnaAlgSequence.py.

82  def getGaudiConfig2PublicTools(self):
83  return self._gaudiConfig2PublicTools
84 

◆ getMetaConfig()

def python.AnaAlgSequence.AnaAlgSequence.getMetaConfig (   self,
  name 
)
get the value for the given meta-configuration entry

Definition at line 430 of file AnaAlgSequence.py.

430  def getMetaConfig (self, name) :
431  """get the value for the given meta-configuration entry"""
432 
433  if name not in self._metaConfigDefault :
434  raise RuntimeError ("metaConfig value " + name + " not registered, did you forget to call addMetaConfigDefault?")
435  result = self._metaConfigDefault[name][:]
436  for meta in self._algorithmMeta :
437  if name in meta.metaConfig :
438  result += meta.metaConfig[name]
439  pass
440  pass
441  return result
442 
443 
444 

◆ insert()

def python.AnaAlgSequence.AnaAlgSequence.insert (   self,
  index,
  alg,
  inputPropName,
  outputPropName = None,
  stageName = 'undefined',
  metaConfig = {},
  dynConfig = {} 
)
Insert one analysis algorithm into the sequence

This function is specifically meant for adding one of the centrally
provided analysis algorithms to the sequence, in a user defined
location.

Keyword arguments:
  index -- The index to insert the algorithm at
  alg -- The algorithm to add (an Athena configurable, or an
 EL::AnaAlgorithmConfig instance)
  inputPropName -- The name of the property setting the input
           object/container name for the algorithm
  outputPropName -- The name of the property setting the output
            object/container name for the algorithm [optional]
  stageName -- name of the current processing stage [optional]

Definition at line 295 of file AnaAlgSequence.py.

295  def insert( self, index, alg, inputPropName, outputPropName = None,
296  stageName = 'undefined',
297  metaConfig = {},
298  dynConfig = {} ):
299  """Insert one analysis algorithm into the sequence
300 
301  This function is specifically meant for adding one of the centrally
302  provided analysis algorithms to the sequence, in a user defined
303  location.
304 
305  Keyword arguments:
306  index -- The index to insert the algorithm at
307  alg -- The algorithm to add (an Athena configurable, or an
308  EL::AnaAlgorithmConfig instance)
309  inputPropName -- The name of the property setting the input
310  object/container name for the algorithm
311  outputPropName -- The name of the property setting the output
312  object/container name for the algorithm [optional]
313  stageName -- name of the current processing stage [optional]
314  """
315 
316  meta = AnaAlgorithmMeta( stageName=stageName, inputPropName=inputPropName, outputPropName=outputPropName, metaConfig=metaConfig, dynConfig=dynConfig )
317  super( AnaAlgSequence, self ).insert( index, alg )
318  self._algorithmMeta.insert( index, meta )
319  return self
320 

◆ removeStage()

def python.AnaAlgSequence.AnaAlgSequence.removeStage (   self,
  stageName 
)
Remove all algorithms for the given stage

Keyword arguments:
  stageName -- name of the processing stage to remove

Definition at line 375 of file AnaAlgSequence.py.

375  def removeStage( self, stageName ):
376  """Remove all algorithms for the given stage
377 
378  Keyword arguments:
379  stageName -- name of the processing stage to remove
380  """
381 
382  if stageName not in self.allowedStageNames() :
383  raise ValueError ('unknown stage name ' + stageName + ' allowed stage names are ' + ', '.join(self.allowedStageNames()))
384 
385  # safety check that we actually know the stages of all
386  # algorithms
387  if stageName != "undefined" :
388  for meta in self._algorithmMeta :
389  if meta.stageName == "undefined" :
390  raise ValueError ("can not remove stages from an algorithm sequence if some algorithms belong to an undefined stage")
391  pass
392  pass
393 
394  names = []
395  for alg in self:
396  names.append (alg.name())
397  pass
398  iter = 0
399  while iter < len( self ):
400  if self._algorithmMeta[iter].stageName == stageName :
401  super( AnaAlgSequence, self ).__delattr__( names[iter] )
402  del names[iter]
403  del self._algorithmMeta[ iter ]
404  pass
405  else :
406  iter = iter + 1
407  pass
408  pass
409  pass
410 
411 
412 

Member Data Documentation

◆ __slots__

tuple python.AnaAlgSequence.AnaAlgSequence.__slots__
staticprivate
Initial value:
= (
"_algorithmMeta",
"_metaConfigDefault",
"_isGaudiConfig2",
"_gaudiConfig2Algorithms",
"_gaudiConfig2PublicTools",
"_algToDecorToolMap",
)

Definition at line 26 of file AnaAlgSequence.py.

◆ _algorithmMeta

python.AnaAlgSequence.AnaAlgSequence._algorithmMeta
private

Definition at line 53 of file AnaAlgSequence.py.

◆ _algToDecorToolMap

python.AnaAlgSequence.AnaAlgSequence._algToDecorToolMap
private

Definition at line 61 of file AnaAlgSequence.py.

◆ _gaudiConfig2Algorithms

python.AnaAlgSequence.AnaAlgSequence._gaudiConfig2Algorithms
private

Definition at line 57 of file AnaAlgSequence.py.

◆ _gaudiConfig2PublicTools

python.AnaAlgSequence.AnaAlgSequence._gaudiConfig2PublicTools
private

Definition at line 58 of file AnaAlgSequence.py.

◆ _isGaudiConfig2

python.AnaAlgSequence.AnaAlgSequence._isGaudiConfig2
private

Definition at line 56 of file AnaAlgSequence.py.

◆ _metaConfigDefault

python.AnaAlgSequence.AnaAlgSequence._metaConfigDefault
private

Definition at line 54 of file AnaAlgSequence.py.


The documentation for this class was generated from the following file:
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
configure
bool configure(asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > &tool, ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > &electronEffToolsHandles, ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > &electronSFToolsHandles, ToolHandleArray< CP::IMuonTriggerScaleFactors > &muonToolsHandles, ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > &photonEffToolsHandles, ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > &photonSFToolsHandles, const std::string &triggers, const std::map< std::string, std::string > &legsPerTool, unsigned long nToys, bool debug)
Definition: TrigGlobEffCorrValidation.cxx:514
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:79
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
str
Definition: BTagTrackIpAccessor.cxx:11
python.AnaAlgSequence.getFullName
def getFullName(comp)
Definition: AnaAlgSequence.py:12