GCT (Global Calorimeter Trigger) Emulator

Complete: 2

An overview of the GCT emulator design is given in gct_emulator.doc
This page is out of date to some extent. Will be updated asap. Please contact JB for confirmation of details on this page....


Features to be included in a future release :

  • move LUT classes to L1TriggerConfig/GctConfig, and include EventSetup access (and trivial ESProducer)
  • change Source Card setup to new scheme (additional card type, and more cards)
  • include Source Card type as argument in L1CaloRegion (and L1CaloRegionDetId) constructor from GCT indices
  • move file reading capabilities to separate Producer that mimics the RCT (and include muon bits in Region)
  • hardware Jet Finder algorithm to become the default
  • write Raw2Digi module

Using the Emulator

Within CMSSW

Look at the SWGuideL1CaloTrigger. You may analyze the output using SWGuideGCTMonitor. The beginnings of an Analysis project are on the GCTAnalyzerPage


To compile the GCT library and test programs, do the following :

cd L1Trigger/CMS.GlobalCaloTrigger
scramv1 b

To run the test programs :

eval `scramv1 runtime -sh` (or -csh for tcsh users)
cd test

If you're adding a test program, you will need to add some lines to GlobalCaloTrigger/test/CMS.BuildFile

Object Model

This section will eventually include all details of the numbering scheme used in the emulator code.


The jet regions are numbered in eta from 0-21 corresponding to the eta co-ordinate running from -5 to +5, and are numbered in phi from 0-17 corresponding to the phi co-ordinate running from 0 to 2pi.

Source Cards

0-26 cover the -z (minus) half of the detector. 27-54 cover the +z (plus) half of the detector. SourceCard 0 receives data from the RCT electron cables, SourceCard 1 receives RCT region cables 3 & 4, SourceCard 2 receives data from RCT region cables 5 & 6 (and the same is true for 3i, 3i + 1, 3i + 2 respectively). SourceCard 3i receives data from RCT crate i.

The RCT cable mapping for jet regions into source cards follows this diagram, which also explains the orderings of these regions in the vector returned by the L1GctSourceCard::getRegions() method.

Jet Leaf Cards

JetLeafCards 0-2 cover the minus half of the detector, 3-5 cover the plus half. Each JetLeafCard contains three JetFinders. To do this, it needs to take data from fifteen source cards. The numbering of the source cards within the m_sourceCards vector is shown here. It will need to be changed whenever the JetFinder mapping is changed (see next topic).

Jet Finders

Each JetFinder object in the emulator currently receives data from 9 SourceCards like this. Only the first three SourceCard inputs are needed by the JetFinding algorithm implemented in the hardware. The remainder are used by the TDR JetFinder, which is currently the default.

JetFinders 0-8 cover the minus half of the detector, 9-17 cover the plus half (ordered in increasing phi).

Wheel Cards

The Wheel cards themselves are not modelled in the GCT emulator, but the two FPGAs are; the WheelJetFpga and WheelEnergyFpga. The 0 Fpga of each type covers the minus half of the detector, the 1 Fpga of each type covers the plus half of the detector.

EM Leaf Cards

EmLeafCard 0 covers the minus half of the detector, EmLeafCard 1 covers the plus half of the detector. Each EmLeafCard receives data from 9 SourceCards.

Electron Sorters

Each EmLeafCard contains four electron sorters. ElectronSorter 0 (for isolated electons) and ElectronSorter 1 (for non-isolated) process data from SourceCards 0-4 (as received by the EmLeafCard). ElectronSorters 2 and 3 (again for isolated and non-isolated respectively) process data from SourceCards 5-8.

Concentrator Card

The Concentrator card is not modelled itself, instead the three functional processing units are represented; ElectronFinalSort, GlobalEnergyAlgos, JetFinalStage.


The GCT Emulator lives in the CMSSW repository

The following packages are used by the emulator :

  • DataFormats/!L1CaloTrigger - RCT output data
  • DataFormats/!CMS.GlobalCaloTrigger - GCT output data
  • L1TriggerConfig/!GctConfig - GCT configuration data (retrieved from the OMDB)
  • L1Trigger/!CMS.GlobalCaloTrigger - the emulator itself

The following packages are related to the emulator :

  • DQM/!SWGuideGCTMonitor - data quality monitoring for the GCT
  • L1Trigger/!L1GctAnalyzer - offline analysis and MC studies

Coding Rules

  • only #include headers required by the file
  • using namespace std is not allowed in header files. Use std:: instead.
  • global functions/typedefs/constants are not allowed
  • get methods on data types don't start 'get'.
  • set methods on data types do start 'set'
  • private members start 'm_'
  • do use doxygen comments, eg ///
  • don't use bitset<N>, do use uintX_t (requires #include <boost/cstdint.hpp>)
  • always use internal GCT data types for passing trigger data between processors
  • fix compiler warnings

Review Status

Editor/Reviewer and date Comments
JimBrooke - 27 Oct 2006 page author
CMSUserSupport - 12 Mar 2007 moved page into swguide
JennyWilliams - 13 Mar 2007 editing to match swguide layout

Responsible: JimBrooke
Last reviewed by: MostRecentReviewer and date

Topic attachments
I Attachment History Action Size Date Who Comment
Microsoft Word filedoc gct_emulator.doc r1 manage 61.0 K 2006-05-16 - 16:00 JimBrooke GCT Emulator overview
JPEGjpg jetleafcard_sourcecard_wiring.jpg r1 manage 62.0 K 2006-05-30 - 19:09 GregHeath Jet Leaf Card wiring
Edit | Attach | Watch | Print version | History: r47 < r46 < r45 < r44 < r43 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r47 - 2007-06-29 - 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-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