L1Extra Classes

Complete: 4

Introduction

For the HLT and subsequent offline analysis, it is convenient to deal with physical representations of the hardware trigger objects, rather than the hardware representations themselves. In other words, one would like physically meaningful values of phi, eta, transverse energy, etc., not the integer values used in the trigger hardware. The L1Extra classes, defined in DataFormats/L1Trigger and contained in the l1extra namespace, provide these physical representations.

Class Definitions

The following classes inherit from LeafCandidate (found in DataFormats/Candidate). Thus, all the L1 objects are represented by a Lorentz vector, electric charge, and vertex position. One can therefore access directly, for instance, the f, or ET of each object (via the phi() and et() member functions). The vertex is always set to the origin (0,0,0), and the charge is set to 0 for e/g, jet, and MET objects; it is only meaningful for muons. There are also accessors for the corresponding hardware objects. The f and h values assigned are the average of the two bin boundaries. So, for h, this is not the mechanical center of the h bin. For ET, the assigned value is the low edge of the bin.

For an example of how to access these objects, see L1Trigger/L1ExtraTestAnalyzer. In releases prior to CMSSW_1_3_0_pre3, check out tag V01-04-03 to get the .cfi file in the example below.

  • L1EmParticle
    • Enum describing whether the object is isolated or non-isolated (use the type() member function).
    • Corresponding hardware class: L1GctEmCand (in DataFormats/L1GlobalCaloTrigger).
  • L1JetParticle
    • Enum describing whether the object is central, forward, or t (use the type() member function).
    • Corresponding hardware class: L1GctJetCand (in DataFormats/L1GlobalCaloTrigger).
  • L1MuonParticle
    • Status of isolation and MIP bits (use the isIsolated() and isMip() member functions).
    • Corresponding hardware class: L1MuGMTCand (in DataFormats/L1GlobalMuonTrigger).
  • L1EtMissParticle
    • Even though EtMiss is really only a 2-vector, it is represented by a 4-vector for uniformity. The etMiss() member function gives the magnitude of the 2-vector.
    • Other global energy sums (use the etTotal() and etHad() member functions).
    • Corresponding hardware classes: L1GctEtMiss, L1GctEtTotal, and L1GctEtHad (see DataFormats/L1GlobalCaloTrigger/interface/L1GctEtSums.h).

In addition, there is a class that provides lists of objects and object combinations that fired a given trigger:

  • L1ParticleMap
    • Name of trigger (string). This string is not stored; instead, the trigger index, which is stored, is mapped to the name via an enum and a static array of strings.
    • Lists of objects that fired the trigger, either by themselves (for single-object triggers) or in combination with another object (for multi-object triggers). The lists of e/g, jet, and m candidates are stored separately.
    • A reference to the global L1EtMissParticle object. This reference is null if the global quantities were not used in the trigger.
    • A list of object types (i.e. {e/g, t jet, non-t jet, m, MET, total ET, and hadronic ET}, indexed by an enum) used by the trigger.
    • A list of object combinations (e.g. m-pairs) that fired the trigger. Each combination is given by a vector of indices into the particle lists. The list of object types described in the previous bullet tells which particle list to use for each index. For global objects (MET, total ET, and hadronic ET), the index is always 0.
    • Functions for navigating this list of object combinations, returning pointers to the L1Extra objects, of type L1PhysObjectBase or its subclasses.
    • The index of each L1ParticleMap in the L1ParticleMapCollection corresponds to the enum L1ParticleMap::L1TriggerType (defined in DataFormats/L1Trigger/L1ParticleMap.h).
    • Example usage:
         // Check if the double tau trigger fired.
         Handle< L1ParticleMapCollection > mapColl ;
         iEvent.getByLabel( particleMapSource_, mapColl ) ;
         const L1ParticleMap& doubleTauMap = ( *mapColl )[ L1ParticleMap::kDoubleTau ] ;
         bool singleTauFired = doubleTauMap.triggerDecision() ;

         // Get the tau candidates that are part of a successful pair.
         const L1JetParticleVectorRef& triggeredTaus = doubleTauMap.jetParticles() ;

         // Get the successful *pairs* of tau candidates.
         const L1IndexComboVector& triggeredTauPairs = indexCombos() ;

         // Loop over successful tau pairs.
         int pairCounter = 0 ;
         for( L1ParticleMap::L1IndexComboVector::const_iterator pairItr = triggeredTauPairs.begin() ;
               pairItr != triggeredTauPairs.end() ;
               ++pairItr )
         {
             cout << "Pair #" << pairCounter++ << ": " << endl ;

             // Each pair is a vector of indices into the jetParticles() vector.
             for( L1ParticleMap::L1IndexCombo::const_iterator indexItr = pairItr->begin() ;
                   indexItr != pairItr->end() ;
                   ++indexItr )
             {
                 cout << "   Jet #" << *indexItr << ", ET = " << triggeredTaus[ *indexItr ]->et() ;
             }
          }

How To Produce L1Extra Objects

MC truth emulation

For immediate HLT development using CSA06 MC, follow these instructions for running L1ExtraFromMCTruthProd, which makes objects of the above classes, based on 4-vectors at generator level. The actual EDProducts that are generated depend on code version and are listed on the respective instructions pages.

Hardware emulation

Beginning with the CMSSW_1_2_0 series, it is possible to run both calorimeter and muon trigger emulators and produce L1Extra objects from their output. The whole emulation chain is controlled by a single master .cff file, L1Trigger/L1ExtraFromDigis/data/l1extra.cff.

Example .cfg file:

   process TRIG = {
      source = PoolSource {
         untracked vstring fileNames = { 'file:myFile.root' }
         untracked int32 maxEvents = 500
      }

      include "L1Trigger/L1ExtraFromDigis/data/l1extra.cff"
      include "L1Trigger/L1ExtraTestAnalyzer/data/l1extratest.cfi"

      path l1Emulator = {l1emulator,l1extra,l1extratest}
   }

Along with the hardware objects, the following EDProducts are put into the event. All the collections are disjoint, as in the hardware; any given trigger object appears in only one collection. So, for instance, non-isolated EM candidates do not include isolated EM candidates. However, so-called "RelaxedEM" triggers act on the logical OR of the Isolated and NonIsolated collections, which are concatenated by hand. Similarly, "Jet" triggers act on the logical OR of the Forward, Central, and Tau jet collections.

  • L1EmParticleCollection with instance label "Isolated", module "l1extraParticles"
  • L1EmParticleCollection with instance label "NonIsolated", module "l1extraParticles"
  • L1JetParticleCollection with instance label "Forward", module "l1extraParticles"
  • L1JetParticleCollection with instance label "Central", module "l1extraParticles"
  • L1JetParticleCollection with instance label "Tau", module "l1extraParticles"
  • L1MuonParticleCollection, module "l1extraParticles"
  • L1EtMissParticle, module "l1extraParticles"
  • L1ParticleMapCollection (one L1ParticleMap per L1 trigger), module "l1extraParticleMap"
  • L1GlobalTriggerReadoutRecord (defined in DataFormats/L1GlobalTrigger), which gives the global L1 decision, module "l1extraParticleMap"

Please see the calorimeter emulator page for the most up-to-date calorimeter tags.

CMSSW_1_7_0_pre1

See here for the trigger tables implemented temporarily in L1ParticleMapProd.

CMSSW_1_6_0

See here for the trigger tables implemented temporarily in L1ParticleMapProd.

CMSSW_1_6_0_pre8

See here for the trigger tables implemented temporarily in L1ParticleMapProd.

CMSSW_1_6_0_pre5

See here for the trigger tables implemented temporarily in L1ParticleMapProd.

CMSSW_1_6_0_pre4

See here for the trigger tables implemented temporarily in L1ParticleMapProd.

CMSSW_1_3_1_HLTX

See here for the trigger table implemented temporarily in L1ParticleMapProd.

Instructions for CMSSW_1_3_0_pre3

cvs co -r V00-01-06 DataFormats/L1GlobalMuonTrigger
cvs co -r V04-00-02 DataFormats/L1GlobalTrigger
cvs co -r V01-09-03 DataFormats/L1Trigger
cvs co -r V00-01-05 DataFormats/L1DTTrackFinder
cvs co -r V00-02-04 L1Trigger/DTTrackFinder
cvs co -r  V00-00-11 L1Trigger/RegionalCaloTrigger

Instructions for CMSSW_1_3_0_pre1

This release came out before CMSSW_1_2_2, so the following tags are needed:

cvs co -r V00-00-07 L1Trigger/RegionalCaloTrigger
cvs co -r V00-03-03 L1Trigger/CSCTrackFinder
cvs co -r V00-03-00 L1Trigger/L1ExtraFromDigis
cvs co -r V00-03-04 SimCalorimetry/EcalTrigPrimAlgos
cvs co -r V00-05-06 SimCalorimetry/EcalTrigPrimProducers

Instructions for CMSSW_1_2_2, CMSSW_1_3_0_pre2, and CMSSW_1_3_0_pre3

cvs co -r V00-03-04 SimCalorimetry/EcalTrigPrimAlgos
cvs co -r V00-05-06 SimCalorimetry/EcalTrigPrimProducers

The default trigger table is the same as for L1ExtraFromMCTruthProd. See here.

Instructions for CMSSW_1_2_0

To pick up improvements scheduled for CMSSW_1_2_2, check out and compile the following tags:

cvs co -r V01-03-02 DataFormats/L1CaloTrigger
cvs co -r V02-03-05 DataFormats/L1GlobalCaloTrigger
cvs co -r V00-03-00 SimCalorimetry/EcalTrigPrimAlgos 
cvs co -r V00-05-00 SimCalorimetry/EcalTrigPrimProducers 
cvs co -r V01-04-03 SimCalorimetry/HcalSimAlgos
cvs co -r V01-02-09 SimCalorimetry/HcalSimProducers
cvs co -r V00-01-04 CalibCalorimetry/CaloTPG
cvs co -r V00-01-04 CalibCalorimetry/HcalTPGAlgos
cvs co -r V01-01-00 CalibFormats/CaloTPG
cvs co -r V00-00-07 L1Trigger/RegionalCaloTrigger
cvs co -r V01-06-07 L1Trigger/GlobalCaloTrigger
cvs co -r V00-01-07 L1Trigger/L1Scales 
cvs co -r V00-00-06 L1Trigger/L1ScalesProducers
cvs co -r V01-02-05 Geometry/HcalTowerAlgo
cvs co -r V00-01-13 L1Trigger/RPCTrigger 
cvs co -r V00-03-03 L1Trigger/CSCTrackFinder
cvs co -r V00-03-00 L1Trigger/L1ExtraFromDigis 

The default trigger table is the same as for L1ExtraFromMCTruthProd. See here.

Instructions for CMSSW_1_2_0_pre2

The l1extra.cff file is, unfortunately, not in this release, so it needs to be checked out:

cvs co -r V00-01-01 L1Trigger/L1ExtraFromDigis/data/l1extra.cff

In order to use the post-release calorimeter bug fixes (recipe given here), a different version of the .cff file is needed:

cvs co -r V00-01-04 L1Trigger/GlobalMuonTrigger/data/l1muon.cff
cvs co -r V00-01-02 L1Trigger/L1ExtraFromDigis/data/l1extra.cff

Also, when writing out events, the PoolOutputModule problem documented here can be circumvented by including the following lines in the .cfg file:

untracked vstring outputCommands =
{
   "keep *",
   "drop recoCandidatesOwned_*_*_*"
}

Known issues:

  • Mismatched LUTs: RCT vs. L1Extra.
  • Lots of debug output from RCT.
  • Currently, no access to hardware muons from L1Extra. To aid developers, some HW bits [isFwd(), isRPC(), detector()] added temporarily to L1MuonParticle.
  • GT not yet incorporated into L1Extra. L1ExtraParticleMapProd evaluates trigger conditions, generates particle <-> trigger maps. Same as L1ExtraFromMCTruth; performance should be identical to GT hardware emulator, with the same default trigger table (see here).
  • Missing HF towers: generated by TPG but disappear in TPG-RCT interface.
  • CSC tracks shifted by one bx, so they are not merged with forward RPC candidates.

Review Status

Editor/Reviewer and date Comments
Main.wsun - 02 Aug 2006 Page author

Responsible: Main.wsun
Last reviewed by:

Edit | Attach | Watch | Print version | History: r32 < r31 < r30 < r29 < r28 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r29 - 2007-09-26 - WernerSun



 
    • 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-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback