CMS 3D CMS Logo

Public Member Functions | Private Attributes | Static Private Attributes

trigTools::SwitchOnTriggerMatching Class Reference

Inherits FWCore::GuiBrowsers::ConfigToolBase::ConfigToolBase.

List of all members.

Public Member Functions

def __call__
def __init__
def getDefaultParameters
def toolCode

Private Attributes

 _comment
 _parameters

Static Private Attributes

tuple _defaultParameters = dicttypes.SortedKeysDict()
string _label = 'switchOnTriggerMatching'

Detailed Description

Enables trigger matching in PAT
SwitchOnTriggerMatching( [cms.Process], triggerMatchers = [default list], triggerProducer = 'patTrigger', triggerEventProducer = 'patTriggerEvent', path = '', hltProcess = 'HLT', outputModule = 'out', postfix = '' )
- [cms.Process]       : the 'cms.Process'
- triggerMatchers     : PAT trigger matcher module labels (list)
                        optional; default: defined in '_exampleTriggerMatchers'
                        (s. PhysicsTools/PatAlgos/python/triggerLayer1/triggerMatcherExamples_cfi.py)
- triggerProducer     : PATTriggerProducer module label;
                        optional, default: 'patTrigger'
- triggerEventProducer: PATTriggerEventProducer module label;
                        optional, default: 'patTriggerEvent'
- path                : name of path to use;
                        optional, default: 'patDefaultSequence'
- hltProcess          : HLT process name;
                        optional, default: 'HLT'
- outputModule        : output module label;
                        empty label indicates no output;
                        optional, default: 'out'
- postfix             : postfix to apply to PAT module labels;
                        optional, default: ''
Using None as any argument restores its default value.

Definition at line 279 of file trigTools.py.


Constructor & Destructor Documentation

def trigTools::SwitchOnTriggerMatching::__init__ (   self)

Definition at line 304 of file trigTools.py.

00305                         :
00306         ConfigToolBase.__init__( self )
00307         self.addParameter( self._defaultParameters, 'triggerMatchers'     , _exampleTriggerMatchers     , _defaultTriggerMatchersComment )
00308         self.addParameter( self._defaultParameters, 'exampleMatchers'     , False                       , '' )
00309         self.addParameter( self._defaultParameters, 'triggerProducer'     , _defaultTriggerProducer     , _defaultTriggerProducerComment )
00310         self.addParameter( self._defaultParameters, 'triggerEventProducer', _defaultTriggerEventProducer, _defaultTriggerEventProducerComment )
00311         self.addParameter( self._defaultParameters, 'path'                , _defaultPath                , _defaultPathComment )
00312         self.addParameter( self._defaultParameters, 'hltProcess'          , _defaultHltProcess          , _defaultHltProcessComment )
00313         self.addParameter( self._defaultParameters, 'outputModule'        , _defaultOutputModule        , _defaultOutputModuleComment )
00314         self.addParameter( self._defaultParameters, 'postfix'             , _defaultPostfix             , _defaultPostfixComment )
00315         self._parameters = copy.deepcopy( self._defaultParameters )
00316         self._comment = ""


Member Function Documentation

def trigTools::SwitchOnTriggerMatching::__call__ (   self,
  process,
  triggerMatchers = None,
  triggerProducer = None,
  triggerEventProducer = None,
  path = None,
  hltProcess = None,
  outputModule = None,
  postfix = None 
)

Definition at line 320 of file trigTools.py.

00329                  :
00330         if triggerMatchers is None:
00331             triggerMatchers = self._defaultParameters[ 'triggerMatchers' ].value
00332             self.setParameter( 'exampleMatchers', True )
00333         if triggerProducer is None:
00334             triggerProducer = self._defaultParameters[ 'triggerProducer' ].value
00335         if triggerEventProducer is None:
00336             triggerEventProducer = self._defaultParameters[ 'triggerEventProducer' ].value
00337         if path is None:
00338             path = self._defaultParameters[ 'path' ].value
00339         if hltProcess is None:
00340             hltProcess = self._defaultParameters[ 'hltProcess' ].value
00341         if outputModule is None:
00342             outputModule = self._defaultParameters[ 'outputModule' ].value
00343         if postfix is None:
00344             postfix = self._defaultParameters[ 'postfix' ].value
00345         self.setParameter( 'triggerMatchers'     , triggerMatchers )
00346         self.setParameter( 'triggerProducer'     , triggerProducer )
00347         self.setParameter( 'triggerEventProducer', triggerEventProducer )
00348         self.setParameter( 'path'                , path )
00349         self.setParameter( 'hltProcess'          , hltProcess )
00350         self.setParameter( 'outputModule'        , outputModule )
00351         self.setParameter( 'postfix'             , postfix )
00352         self.apply( process )

def trigTools::SwitchOnTriggerMatching::getDefaultParameters (   self)

Definition at line 317 of file trigTools.py.

00318                                     :
00319         return self._defaultParameters

def trigTools::SwitchOnTriggerMatching::toolCode (   self,
  process 
)

Definition at line 353 of file trigTools.py.

00354                                  :
00355         triggerMatchers      = self._parameters[ 'triggerMatchers' ].value
00356         exampleMatchers      = self._parameters[ 'exampleMatchers' ].value
00357         triggerProducer      = self._parameters[ 'triggerProducer' ].value
00358         triggerEventProducer = self._parameters[ 'triggerEventProducer' ].value
00359         path                 = self._parameters[ 'path' ].value
00360         hltProcess           = self._parameters[ 'hltProcess' ].value
00361         outputModule         = self._parameters[ 'outputModule' ].value
00362         postfix              = self._parameters[ 'postfix' ].value
00363 
00364         # Load default producers from existing config file, if needed
00365         if exampleMatchers:
00366             process.load( "PhysicsTools.PatAlgos.triggerLayer1.triggerMatcherExamples_cfi" )
00367 
00368         # Switch on PAT trigger information if needed
00369         if not hasattr( process, triggerEventProducer ):
00370             print '%s():'%( self._label )
00371             print '    PAT trigger production switched on automatically using'
00372             print '    switchOnTrigger( process, \'%s\', \'%s\', \'%s\', \'%s\', \'%s\' )'%( hltProcess, triggerProducer, triggerEventProducer, path, outputModule )
00373             print _longLine
00374             switchOnTrigger( process, triggerProducer, triggerEventProducer, path, hltProcess, outputModule )
00375 
00376         # Maintain configurations
00377         trigEvtProdMod = getattr( process, triggerEventProducer )
00378         triggerMatchersKnown = []
00379         for matcher in triggerMatchers:
00380             if not hasattr( process, matcher ):
00381                 print '%s():'%( self._label )
00382                 print '    Matcher \'%s\' not known to process'%( matcher )
00383                 print '    ==> skipped'
00384                 print _longLine
00385                 continue
00386             triggerMatchersKnown.append( matcher )
00387             trigMchMod         = getattr( process, matcher )
00388             trigMchMod.src     = cms.InputTag( trigMchMod.src.getModuleLabel() + postfix )
00389             trigMchMod.matched = triggerProducer
00390         matchers = getattr( trigEvtProdMod, 'patTriggerMatches' )
00391         if len( matchers ) > 0:
00392             print '%s():'%( self._label )
00393             print '    PAT trigger matchers already attached to existing PATTriggerEventProducer \'%s\''%( triggerEventProducer )
00394             print '    configuration parameters automatically changed'
00395             for matcher in matchers:
00396                 trigMchMod = getattr( process, matcher )
00397                 if trigMchMod.matched.value() is not triggerProducer:
00398                     trigMchMod.matched = triggerProducer
00399                     print '    PAT trigger matcher %s.matched --> %s'%( matcher, trigMchMod.matched )
00400             print _longLine
00401         else:
00402             trigEvtProdMod.patTriggerMatches = cms.VInputTag()
00403         for matcher in triggerMatchersKnown:
00404             trigEvtProdMod.patTriggerMatches.append( cms.InputTag( matcher ) )
00405 
00406         # Add event content
00407         if outputModule is not '':
00408             patTriggerEventContent = []
00409             for matcher in triggerMatchersKnown:
00410                 patTriggerEventContent += [ 'keep patTriggerObjectsedmAssociation_%s_%s_%s'%( triggerEventProducer, matcher, process.name_() )
00411                                           , 'keep *_%s_*_*'%( getattr( process, matcher ).src.value() )
00412                                           ]
00413             getattr( process, outputModule ).outputCommands = _addEventContent( getattr( process, outputModule ).outputCommands, patTriggerEventContent )


Member Data Documentation

Definition at line 304 of file trigTools.py.

tuple trigTools::SwitchOnTriggerMatching::_defaultParameters = dicttypes.SortedKeysDict() [static, private]

Definition at line 302 of file trigTools.py.

Definition at line 301 of file trigTools.py.

Definition at line 304 of file trigTools.py.