TWiki
>
CMSPublic Web
>
SWGuide
>
SWGuideOnSel
>
SWGuideL1Trigger
>
SWGuideL1Extra
(revision 31) (raw view)
Edit
Attach
PDF
---+!! !L1Extra Classes %COMPLETE4% %TOC{title="Contents:"}% ---++ 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 <font face="Symbol">f</font>, or E<sub>T</sub> 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/<font face="Symbol">g</font>, jet, and MET objects; it is only meaningful for muons. There are also accessors for the corresponding hardware objects. The <font face="Symbol">f</font> and <font face="Symbol">h</font> values assigned are the average of the two bin boundaries. So, for <font face="Symbol">h</font>, this is _not_ the mechanical center of the <font face="Symbol">h</font> bin. For E<sub>T</sub>, 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 <font face="Symbol">t</font> (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= * *Deprecated beginning with CMSSW_1_7_0 in favor of GlobalTriggerObjectMapRecord*. * 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/<font face="Symbol">g</font>, jet, and <font face="Symbol">m</font> 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/<font face="Symbol">g</font>, <font face="Symbol">t</font> jet, non-<font face="Symbol">t</font> jet, <font face="Symbol">m</font>, MET, total E<sub>T</sub>, and hadronic E<sub>T</sub>}, indexed by an enum) used by the trigger. * A list of object _combinations_ (e.g. <font face="Symbol">m</font>-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 E<sub>T</sub>, and hadronic E<sub>T</sub>), 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:* <verbatim> // 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() ; } } </verbatim> ---++ How To Produce =L1Extra= Objects ---+++ MC truth emulation For immediate HLT development using CSA06 MC, follow these [[SWGuideL1ExtraFromMCTruth][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: <verbatim> 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} } </verbatim> 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" (17X and earlier). Beginning in 18X, the =L1EtMissParticle= is contained in a collection that always has one element: =L1EtMissParticleCollection=, module "l1extraParticles". * =L1ParticleMapCollection= (one =L1ParticleMap= per L1 trigger), module "l1extraParticleMap" (before 17X only --- see above) * =L1GlobalTriggerReadoutRecord= (defined in =DataFormats/L1GlobalTrigger=), which gives the global L1 decision, module "l1extraParticleMap" *Please see the calorimeter emulator [[SWGuideL1CaloTrigger][page]] for the most up-to-date calorimeter tags.* ---++++ =CMSSW_1_7_0= Beginning with CMSSW_1_7_0, we will no longer produce !L1ParticleMaps in standard production. Instead, the GT emulator will be used to evaluate L1 triggers and to produce the GlobalTriggerObjectMapRecord. The default GT trigger menu implemented in 170 can be seen [[GlobalTriggerMenu_L1Menu2007_Rev_1_3][here]]. ---++++ =CMSSW_1_7_0_pre1= See [[L1TriggerTable170pre1][here]] for the trigger tables implemented temporarily in =L1ParticleMapProd=. ---++++ =CMSSW_1_6_0= See [[L1TriggerTable160][here]] for the trigger tables implemented temporarily in =L1ParticleMapProd=. ---++++ =CMSSW_1_6_0_pre8= See [[L1TriggerTable160pre8][here]] for the trigger tables implemented temporarily in =L1ParticleMapProd=. ---++++ =CMSSW_1_6_0_pre5= See [[L1TriggerTable160pre5][here]] for the trigger tables implemented temporarily in =L1ParticleMapProd=. ---++++ =CMSSW_1_6_0_pre4= See [[L1TriggerTable160pre4][here]] for the trigger tables implemented temporarily in =L1ParticleMapProd=. ---++++ =CMSSW_1_3_1_HLTX= See [[L1TriggerTableHLTExercise][here]] for the trigger table implemented temporarily in =L1ParticleMapProd=. ---++++ Instructions for =CMSSW_1_3_0_pre3= <verbatim> 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 </verbatim> ---++++ Instructions for =CMSSW_1_3_0_pre1= This release came out before =CMSSW_1_2_2=, so the following tags are needed: <verbatim> 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 </verbatim> ---++++ Instructions for =CMSSW_1_2_2=, =CMSSW_1_3_0_pre2=, and =CMSSW_1_3_0_pre3= <verbatim> cvs co -r V00-03-04 SimCalorimetry/EcalTrigPrimAlgos cvs co -r V00-05-06 SimCalorimetry/EcalTrigPrimProducers </verbatim> The default trigger table is the same as for =L1ExtraFromMCTruthProd=. See [[L1ExtraFromMCTruth122][here]]. ---++++ Instructions for =CMSSW_1_2_0= To pick up improvements scheduled for =CMSSW_1_2_2=, check out and compile the following tags: <verbatim> 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 </verbatim> The default trigger table is the same as for =L1ExtraFromMCTruthProd=. See [[L1ExtraFromMCTruth122][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: <verbatim> cvs co -r V00-01-01 L1Trigger/L1ExtraFromDigis/data/l1extra.cff </verbatim> In order to use the post-release calorimeter bug fixes (recipe given [[SWGuideL1CaloTrigger][here]]), a different version of the .cff file is needed: <verbatim> cvs co -r V00-01-04 L1Trigger/GlobalMuonTrigger/data/l1muon.cff cvs co -r V00-01-02 L1Trigger/L1ExtraFromDigis/data/l1extra.cff </verbatim> Also, when writing out events, the =PoolOutputModule= problem documented [[https://hypernews.cern.ch/HyperNews/CMS/get/edmFramework/455.html][here]] can be circumvented by including the following lines in the .cfg file: <verbatim> untracked vstring outputCommands = { "keep *", "drop recoCandidatesOwned_*_*_*" } </verbatim> 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 [[L1ExtraFromMCTruth110pre1][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. #ReviewStatus ---++!! Review Status | *Editor/Reviewer and date* | *Comments* | | Main.wsun - 02 Aug 2006 | Page author | %RESPONSIBLE% Main.wsun %BR% %REVIEW%
Edit
|
Attach
|
Watch
|
P
rint version
|
H
istory
:
r32
<
r31
<
r30
<
r29
<
r28
|
B
acklinks
|
V
iew topic
|
Raw edit
|
More topic actions...
Topic revision: r31 - 2007-12-19
-
WernerSun
Log In
CMSPublic
CMSPublic Web
CMSPrivate Web
Create New Topic
Index
Search
Changes
Notifications
Statistics
Preferences
Offline SW Guide
Summary of Changes
Site Map
Preface
Contributors Guide
Developers Guide
Offline Workbook
Glossary/Index
User Support
Reference Manual
Main Areas
Framework and EDM
Detector Description
Event Generation
Full Simulation
Fast Simulation
Calibration and Alignment
Conditions Database
High Level Trigger
L1 Trigger
Online Selection
Reconstruction
Detector Reco Objects
Tracks
Ecal Reco
Hcal Reco
Muon System Reco
Vertex Reco
Physics Reco Objects
Muons
Electrons/Photons
Jets, missing ET
b Tagging
Particle flow
Tau-ID
Analysis/Software Tools
Physics Tools
MC Truth Tools
Visualization
Trouble Shooting
Code Performance
Port to New Release
CRAB
Analysis Examples
Higgs
SUSY/BSM
Electroweak
Top
Heavy Ions
Public webs
Public webs
ABATBEA
ACPP
ADCgroup
AEGIS
AfricaMap
AgileInfrastructure
ALICE
AliceEbyE
AliceSPD
AliceSSD
AliceTOF
AliFemto
ALPHA
Altair
ArdaGrid
ASACUSA
AthenaFCalTBAna
Atlas
AtlasLBNL
AXIALPET
CAE
CALICE
CDS
CENF
CERNSearch
CLIC
Cloud
CloudServices
CMS
Controls
CTA
CvmFS
DB
DefaultWeb
DESgroup
DPHEP
DM-LHC
DSSGroup
EGEE
EgeePtf
ELFms
EMI
ETICS
FIOgroup
FlukaTeam
Frontier
Gaudi
GeneratorServices
GuidesInfo
HardwareLabs
HCC
HEPIX
ILCBDSColl
ILCTPC
IMWG
Inspire
IPv6
IT
ItCommTeam
ITCoord
ITdeptTechForum
ITDRP
ITGT
ITSDC
LAr
LCG
LCGAAWorkbook
Leade
LHCAccess
LHCAtHome
LHCb
LHCgas
LHCONE
LHCOPN
LinuxSupport
Main
Medipix
Messaging
MPGD
NA49
NA61
NA62
NTOF
Openlab
PDBService
Persistency
PESgroup
Plugins
PSAccess
PSBUpgrade
R2Eproject
RCTF
RD42
RFCond12
RFLowLevel
ROXIE
Sandbox
SocialActivities
SPI
SRMDev
SSM
Student
SuperComputing
Support
SwfCatalogue
TMVA
TOTEM
TWiki
UNOSAT
Virtualization
VOBox
WITCH
XTCA
Cern Search
TWiki Search
Google Search
CMSPublic
All webs
Copyright &© 2008-2022 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