Calo towers

Complete: 1


Anton Anastassov (Northwestern University)


CaloTowers are objects that combine information from ECAL and HCAL used (mainly) in calorimeter-based jet reconstruction and calculation of the missing transverse energy in the event. The eta-phi segmentation of CaloTowers is defined by the HCAL tower boundaries. All calorimeter cells (both in ECAL and HCAL) contained in the respective eta-phi region are associated with a CaloTower and considered its constituents. These include crystals in ECAL and HCAL layers at different depths. The standard sequence to invoke calorimeter towers reconstruction is the CaloTowersCreator module, which produces a collection of CaloTowers. The RecHit collections for all calorimeter sub-systems are needed to create CaloTowers "from scratch". The following is an introduction to CaloTowers as used now, and a brief description of new functionality under development for CMSSW releases 2_1_X and above.

Software architecture and Usage of the algorithm

CaloTower energy assignment

Subject to predefined thresholds, the energy of ECAL and HCAL RecHit energies are each summed together to get the EM and Had energy in a CaloTower. In the barrel region, the HCAL contributions from HB and HO are saved separately. If the summed EM or Had energy is below a predefined value, the corresponding contribution to the tower energy is set to zero. The thresholds act as two levels of filtering of low energy contributions: at RecHit and CaloTower level. (There is also a possibility to apply a "third level" filter on EM+Had energy in the CaloTower, but it is not widely used). The thresholds themselves are defined in a configuration file controlling CaloTower reconstruction. They are optimized for the needs of the Jet/Met Group. The sets of parameters are often referred to as "schemes". An example from "SchemeB" for the thresholds is given below (CMSSW/RecoJets/JetProducers/data/CaloTowerSchemeB.cfi):

Threshold Name GeV Scheme
double HBThreshold 0.9 Scheme B
double HOThreshold 1.1 Scheme B
double HESThreshold 1.4 Scheme B
double HEDThreshold 1.4 Scheme B
double HF1Threshold 1.2 Optimized on 10% occupancy
double HF2Threshold 1.8 Optimized on 10% occupancy
double EBThreshold 0.09 ORCA value w/o selective readout
double EEThreshold 0.45 ORCA value w/o selective readout
double EBSumThreshold 0.2 Scheme B
double EESumThreshold 0.45 Scheme B
double HcalThreshold -1000 -1000 means cut not used
double EcutTower -1000 -1000 means cut not used

As shown in the above example, RecHits thresholds, as well as thresholds on their sums, need not be the same for different sub-detectors. The energy assignment uses the energies stored in RecHits. These are subject to applied calibrations at the time of production. At the time of CaloTower creation there are options to change the overall energy scale in each sub-detector by applying "weights" defined in the configuration file.

Weight Name Value
double EBWeight 1.0
double EEWeight 1.0
double HBWeight 1.0
double HESWeight 1.0
double HEDWeight 1.0
double HOWeight 1.0
double HF1Weight 1.0
double HF2Weight 1.0

The weights act as multiplicative factors to the energy of RecHits in the respective sub-detectors. The HO has a special place as it catches only the tails of hadronic showers in the barrel region. Through a dedicated Boolean flag in the configuration file one can specify if the energy deposition in HO is used in the CaloTower energy assignment:

  • bool UseHO = true/false

Four-momentum of CMS.CaloTowers

Using the energy in a CaloTower and a geometrical position one can assign a corresponding four-vector, and thus, treat the CaloTower as a "pseudo-particle" in jet reconstruction. The algorithm for four-momentum assignment in 22x and before uses direction of the four-vector defined by a point on the CaloTower axis. The CMS.CaloTowers are treated as massless: E=|p|. The four-momentum is calculated for vertex z=0 (the vertex is not known at the time of creating the CMS.CaloTowers).

Starting with CMSSW 3_0_0_pre6 there are options to take advantage of the finer granularity in ECAL and define more sophisticated algorithms for four-momentum construction. They are designed to allow better determination of jet direction in case of narrow, highly boosted jets.

At the moment there are three methods for constructing the 4-momentum of the CaloTower. The selection is made in the configuration file with

MomConstrMethod = cms.int32(X)
where X is an integer.

The method used in previous releases assigns direction to the towers based on a point along the axis of the tower. The directions for the EM and HAD components are taken to be the same. This method can be selected with:

MomConstrMethod = cms.int32(0). 

There are two methods that use ECAL granularity. One uses logarithmically energy-weighted crystal positions to determine the direction that is assigned to the tower. The direction for the EM and HAD components are taken to be the same. In case of no EM energy it defaults to the previous momentum assignment. This method is selected with

MomConstrMethod = cms.int32(2). 
The other method allows for the HAD and EM component to have different direction. For the HAD component the direction is taken to be along the axis of the HAD tower. The direction for the EM component is taken by energy-weighting the directions of the individual crystals in the tower. The tower is assigned four-momentum that is the sum of the HAD and EM components. Therefore, a tower may have a non-zero "mass". This method is selected with
MomConstrMethod = cms.int32(1). 
To make possible momentum determination with respect to a user specified vertex, one has to specify what depth in the respective calorimeter is used for determining the direction. Depths are specified in the configuration file through setting separate parameters for HB/HE/EB/EE
MomHBDepth = cms.double(0.2),
MomHEDepth = cms.double(0.4),   
MomEBDepth = cms.double(0.3),
MomEEDepth = cms.double(0.0)
The depth is specified as a fractional depth from the face of the respective detector to the end, and can be from 0 to 1. HO is not used in calculating the depths even if it used in the reconstruction. These parameters allow the user to select parameters that are optimal for directional resolution. The values in the above example are currently used by the JetMET group, but will likely be modified along with other parameters that govern CaloTower reconstruction.

For MomConstrMethod=0 the depths parameters have no effect, for MomConstrMethod=1 all parameters are used, MomConstrMethod=2 uses only MomEBDepth and MomEEDepth.

The default method in CMSSW 31x for four-momentum assignment is "method 1". No matter which method is used, the four-momentum is assigned to the tower as a whole and is intended to be used as a quantity describing the object. Since the direction of the stored four-vector is determined wrt vertex (0,0,0) we provide methods to recalculate the four-momentum of the tower with respect to a user-provided vertex position:

math::PtEtaPhiMLorentzVector p4(double vtxZ)
math::PtEtaPhiMLorentzVector p4(Point v)
Similar accessors are provided for other related quantities - see DataFormats/CMS.CaloTowers/interface/CaloTower.h for a complete list.


Like for other producers, the settings for creating a CaloTower collection are defined in a python file. In addition to the thresholds and flags discussed above, the configuration also specifies the input RecHit collections for the ECAL and HCAL subdetectors. Till CMSSW 310_pre7 the configuration file residing in the CaloTowersCreator package CMSSW/RecoLocalCalo/CaloTowersCreator/python/ was not used in Production. It served as a reference template for different "schemes" deployed by the JetMET group (or other potential users).

To simplify maintenance, starting with CMSSW 310_pre8 CMSSW/RecoLocalCalo/CaloTowersCreator/python/ is imported by CMSSW/RecoJets/JetProducers/python/ However, note that the CaloTower collection stored in the event is still produced using settings defined in CMSSW/RecoJets/JetProducers/python/ - look for redefined parameters! If you need to create a CaloTower collection for your particular needs we recommend that you import CMSSW/RecoLocalCalo/CaloTowersCreator/python/ and override parameters as needed: thresholds, momentum reconstruction method, etc.

Timing information

CMS.CaloTowers stores timing information separately for HCAL and ECAL. Timing is calculated by energy weighting of the times stored in ECAL(HCAL) RecHits. At this time information from cells not classified as "good" is not used.

Treatment of anomalous cells

The ECAL and HCAL DPG groups have defined quality status words that identify problematic channels in the respective detectors. The information from ECAL/HCAL is combined to set a summary status word for each CaloTower. The information on problematic cells in HCAL and ECAL is also used to exclude RecHits with unreliable energy calculation in assigning energy to the CaloTower. More detailed information on anomalous cells handling is available here.


Review status

Reviewer/Editor and Date (copy from screen) Comments
KatiLassilaPerini - 04 Jul 2008 created template page

Responsible: AntonAnastassov
Last reviewed by: Most recent reviewer

Edit | Attach | Watch | Print version | History: r7 < r6 < r5 < r4 < r3 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r7 - 2013-07-01 - SalavatAbdoulline
    • 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