"HLT Analyzer": examining L1, HLT and RECO objects

Complete: 4


This is an EDAnalyzer putting together on an event/event basis information about L1, HLT and RECO objects so that trigger rejection factors and turn-on curves versus off-line variables can be studied. The final goal of the package is also to provide trigger rates for trigger tables in CMSSW.


The code

The driving code is SWGuideHLTAnalyzer, where src/SWGuideHLTAnalyzer.cc gets the instances of each object (jets, e/gamma, hlt info.) to be analyzed.

  • HLTEgamma gathers information about offline electron and photon objects,
  • HLTJets gathers information about offline jet and Missing-ET objects,
  • HLTMuon gathers information about offline muon objects,
  • HLTMCtruth gathers the true MC information of particles produced in the event,
  • HLTInfo is the code gathering L1 and HLT information (see next section).

The configuration file test/HLTAnalysis.cfg

The instances of the objects are taken from test/HLTAnalysis.cfg. For example, jets objects exist in two instances:

  • generated jets: string genjets = iterativeCone5GenJets
  • reconstructed jets: string recjets = iterativeCone5CMS.CaloJets

where the last expression is the actual instance. If a kind of physical object (here: jets) has several instances, several corresponding branches are created (see ROOT-tuple dictionary below).

The input of the SWGuideHLTAnalyzer has to be an output of EDProducers, and has to be specified in test/HLTAnalysis.cfg:

  source = PoolSource {
        untracked vstring fileNames = 
           { "file:/full-path/MyRoottuple.root" }
   untracked int32 maxEvents = -1


Since the L1 objects serve as seed of HLT triggers, it's interesting to have the corresponding basic information.

The L1 information is taken from the outputs of L1Extra Producers:

  • L1MuonParticle class for L1 muons
  • L1EmParticle class with "Isolated" and "NonIsolated" instances for L1 Em objects
  • L1JetParticle class with "Forward" and "Central" instances for L1 jets,
  • L1JetParticle class with "Tau" instance for L1 Taus,
  • L1EtMissParticle class for L1 Missing Et.

The instances of these objects are given directly in the driving code SWGuideHLTAnalyzer.cc.

To get basic information about an object having fired a trigger, the HLTFilterObjectWithRefs object is used.

If, in the production configuration file, there is a trigger path with trigger objects such as :

path DemoTriggerPath_1 = { // HLTPathObject
    L1Filter,             // 1st HLTFilterObject
    L2Filter             // 2nd HLTFilterObject
and if you want to have information about, say, the L2Filter object, then in the test/HLTAnalysis.cfg file, you have to use :
module HLTAnalyzer = 
    string hltobj = L2Filter  // HLT object to be analyzed
The way the HLT object to be analyzed is passed will hopefully improve in the future.

For getting trigger efficiency curves, information about a trigger path is obtained using the TriggerResults object. The code dynamically creates as many branches as trigger paths (TriggerRresults.name), and fills in each branch the corresponding trigger decision (.accept).

Using the code

scramv1 p CMSSW CMSSW_1_3_1_HLT2
cd src/
eval `scramv1 runtime -csh`
cmscvsroot CMSSW
cvs co -r V00-00-20-01 HLTrigger/HLTanalyzers

Modify the code if you wish. Then :

scramv1 b
cd HLTrigger/HLTanalyzers/test/
cmsRun HLTAnalysis.cfg

Roottuple dictionary

(subject to changes)

In general, the name of a branch starts with a general information about the concerned object, and then becomes specific. For example: JetCalE means the energy of calorimeter reconstructed jets, while JetGenE means the same but for generated jets.

More specific branches :

  • HLTPart... branches: Variables dealing with HLT objects
  • L1Ext... branches: Variables dealing with L1Extra objects
  • Nobj... branches: Variables giving multiplicity of different objects
  • TRIGG_MyTrigger: Variable corresponding to the decision of the "MyTrigger" path.

Review status

Reviewer/Editor and Date (copy from screen) Comments
PedrameBargassa page author
ChristosLeonidopoulos - 25 Jan 2007 last content editor
JennyWilliams - 15 Feb 2007 editing for SWGuide inclusion

Responsible: PedrameBargassa

Edit | Attach | Watch | Print version | History: r8 < r7 < r6 < r5 < r4 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r8 - 2007-07-03 - JennyWilliams

    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback