Calorimeter RecHits (CaloRecHitsProducer)

Complete: 4

Current status (3_1_X)

Brief algorithm description


As to save time, the Fast Simulation does not use the standard flow to produce the RecHits and does not go through the digitization intermediate step. As far as the calorimeter is concerned, the output of the core Fast Simulation is a collection of PCaloHits, i.e, energy deposits associated to one cell. By default, there is one PCaloHit per cell, but if the "UnfoldedMode" is turned on, there is one PCaloHit per cell and per particle reaching the calorimeter. These PCaloHit are processed by the MixingModule. The task of the MixingModule is to gather into one single collection all the hits (including PCaloHits) from the signal event and the pile-up events for each sub-detector. For the time being, the pile-up is treated in a different way in the Fast Simulation and the Mixing Module is used in the "no pile-up" configuration. As a result, it is only copying the PCaloHits from on collection into an other.

The principle is the same for all sub-detectors: the PCaloHits are read and stored in a internal array, the noise contribution is added on top of each signal hit. If several hits contribute to one cell (it can happen in the "UnfoldedMode" case for instance), their contributions are added, and the noise is added only once. A calibration (or mis-calibration) factor can be applied at this level. Then, the noise is added in the other cells of the calorimeter. The mechanism is different in the various sub-detectors and is described in the relevant sub sections below. Finally, the RecHits are created and transmitted to the producer which puts them in the event.

For the sake of completeness, it should be mentioned that the ECAL and HCAL RecHit producer modules can produce digis at the same time as the RecHits. These digis are simplified wrt. the standard one and are only use to feed the L1 emulators.

Technical details

The same producer is used for RecHit collections, but several instances are defined as to have the same name as in the Full Simulation:
  • ecalRecHit does the RecHits for the ECAL barrel and endcaps and the output is stored in two collections whose label is EcalRecHitsEB and EcalRecHitsEE respectively
  • ecalPreshowerRecHit does the preshower RecHits whose label is EcalRecHitsES
  • hbhereco does the HCAL barrel and endcap RecHits which are stored into one single collection
  • horeco does the HCAL Outer RecHits
  • hfreco does the HCAL Forward RecHits
These modules are instantiated in one single configuration file.

Each of the five RecHits producer have the following parameters in common

  • InputRecHitCollectionTypes is a vector of integers. Except for the ECAL where the same producer makes two collections, there is only one entry. The numbering is the following : Preshower (1), ECAL barrel (2), ECAL endcap(3), HB/HE (4), HO (5), HF (6)
  • OutputRecHitCollections is a vector strings specifying the label of the output collections. These values are specified for the ECAL, but empty for the HCAL.
  • doDigis is boolean switch controlling whether the digis should be created or not. This option is not available in the Preshower case (the parameter is present, but ignored). Since the preshower is not present in the L1 trigger system, it does not need the digis.
  • doMiscalib is a boolean switch to control whether the calorimeter should be mis-calibrated or not
  • RecHitsFactory is a configuration block which is sub-detector specific. Some parameter names have the same meaning of across the various sub-detectors
    • MixedSimHits contains the name of the input PCaloHit collection created by the MixingModule
    • Noise the value of noise sigma in GeV with the following convention: if a positive value is given, then this value is used. If it is zero, no noise is injected, if it is -1. then, the noise sigma value is computed from the values stored in the database. The implementation can vary across the sub-detectors, see below.
    • Threshold the threshold in GeV to create a RecHit
    • Refactor and Refactor_mean are float values to add extra-flexibility in the handling of the mis-calibration. The calibration parameters, C[i], corresponding to various scenarii are distributed according a Gaussian centered on 1 with a given sigma. The parameter used to mis-calibrated the RecHit in the Fast Sim is defined as
      Cp[i] = Refactor_mean + (C[i]-1.)*Refactor 
      . Thus if the database contains only a 10% miscalibration scenario, it is possible to nevertheless a 20% mis-calibration by setting Refactor 2. Simularly, an overall bias can be applied. The default values for these parameters are 1. and 1.
    • EnableSaturation is a boolean switch to control the simulation of the saturation.

Implementation in the ECAL barrel and endcaps

Containment factor

With respect to the previous description, in the ECAL, a calibration coefficient is always applied. This coefficient is the inverse of the fraction of the incoming energy deposited in 5x5 crystal matrix by an electron of a given energy (35 GeV ?), so about 1/0.97. These coefficients are stored in the ContFact fact parameter which is actually contained in this file.

Selective readout

In the ECAL, a sophisticated zero-suppression mechanism, based on the energy readout of the L1 tower, is applied. It is called the Selective Readout. In the barrel, if a tower has more than 1GeV of transverse energy at L1, this tower (which contains 25 crystals) as well as its neighbouring towers is read without any zero suppression. All the other cells are readout with the threshold defined in the configuration file. In the endcaps, the idea is the same, but the geometry of the trigger towers is intricate and all the supercrystals contributing to a trigger tower of high interest (i.e. with more than 1 GeV of transverse energy) are read without any zero-suppression.

This mechanism can lead to pretty large regions being readout without any zero-suppression and it has two direct consequences on the Fast Sim. Firstly, the Selective Readout must be emulated in the Fast Sim and secondly the noise, if not simulated everywhere, should be injected in the regions considered of high interest by the Selective Readout. The problem is slightly simplified taking the "reconstructed" energy and not the energy measured by the L1 system to decide if a tower is of high interest or not. Then, it is supposed that a or several cells with only noise cannot trigger the selective readout. Given the sigma of the noise, this assumption is reasonable.

The Selective Readout threshold is configurable through the SRThreshold parameter which is a threshold in transverse energy.

Noise simulation

As described earlier, the noise is always firstly added on top of the hits from the "signal".
  • Barrel case: In the barrel, the noise is then injected in all the crystals of the trigger towers receiving a "signal" hit as well as in all the neighbouring towers. Finally, the isolated cells with a noise fluctuation above the threshold are simulated using a Gaussian tail generator. The noise is supposed to be uniform in energy and the value is taken from the config file, not from the database.
  • Endcap case: in the endcaps, the noise sigma depends on the position. So does the zero-suppression.
    In fact, the noise in ADC counts is uniform in the endcaps; but the gain of the VPDs depends on the position (actually, mostly on the distance to the beam axis). The reconstructed energy is obtained from the following formula E (GeV) = Amplitude x ADC2GeV x IC. As a result, the noise sigma in GeV is Sigma(GeV) = Sigma(ADC) x ADC2GeV x IC where Sigma(ADC) is a constant, and is configured via the NoiseADC parameter.
    If a cell is read out without zero-suppression, the situation is simple. On the contrary, if it is read with a zero-suppression, a threshold based on the amplitude reconstructed online is applied with two consequences: 1) since the amplitude reconstructed offline is different, some RecHits have an offline reconstructed energy well below the ZS threshold 2) it acts as a position-dependent threshold wrt the offline amplitude. As it can be seen below, the energy spectrum of the cells with a high noise fluctuation divided by IC has almost a Gaussian shape.
    The multiplicity of the those RecHits depends on the online noise sigma and online threshold but has been fitted from the following plot, which has been obtained in the Full Simulation by applying the online reconstruction methods on the offline RecHits.
    As a result, the simulation of these RecHits with a high noise fluctuation require four parameters which are specified in HighNoiseParameters. The first two parameters define the Gaussian shape distribution (mean, sigma) in ADC counts and the last two parameters define the multiplicity (sigma and threshold), also in ADC counts. Those pure-noise RecHits do not undergo any zero-suppression, while the RecHits containing signal, if they are not in a region of high interest for the Selective Readout, are kept only if their energy is greater than Ethreshold x IC, where Ethreshold is configured in Threshold (in GeV). More information can be found in this talk.
    EonlineOICMC-twik.gif RecHitThresFullLog-twik.gif
    RecHit online-reconstructed energy divided by Intercalibration Coefficient (IC) for pure noise event in the Full Sim (left) and RecHit offline-reconstructed energy divided by IC for pure noise events in the full sim:
How have these samples been obtained in the Full Sim ?
Click here for more information Less Instructions for Fast Sim experts, in case some values need to be updated. To apply the online amplitude reconstruction on the offline RecHits in the Full Sim, one should (in CMSSW_3_1_X)
    • modify in your area the CalibCalorimetry/EcalTrivialCondModules/data/ampWeights_CMS.txt to contain: 0 -0.374 -0.374 -0.3629 0.2721 0.4681 0.3707 0. 0. 0.
    • add in your configuration file:
            # get _only_ weights from trivial
            process.EcalTrivialConditionRetriever.producedEcalChannelStatus = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalPedestals = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalWeights = cms.untracked.bool(True)
            process.EcalTrivialConditionRetriever.producedEcalIntercalibConstants = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalIntercalibConstantsMC = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalIntercalibErrors = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalTimeCalibConstants = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalTimeCalibErrors = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalLaserCorrection = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalGainRatios = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalADCToGeVConstant = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalClusterLocalContCorrParameters = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalClusterCrackCorrParameters = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalClusterLocalContCorrParameters = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEcalMappingElectronics = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.producedEnergyUncertaintyParameters = cms.untracked.bool(False)
            process.EcalTrivialConditionRetriever.produceEnergyCorrectionParameters = cms.untracked.bool(False)
            process.es_prefer_EcalTrivialConditionRetriever = cms.ESPrefer("EcalTrivialConditionRetriever")

How to produce un-suppressed RecHits in the Fast Sim ?
Click here for more information Less All the changes should implemented in the configuration file

  • In the ECAL barrel section, change the Threshold variable to a large negative value (-100 for example)
  • in the ECAL endcap section, change the Threshold variable to a large negative value (-100 for example) and disable the isolated noise custom simulation, setting
    HighNoiseParameters = cms.vdouble(0.)

How to produce un-suppressed RecHits in the Full Sim ?
Click here for more information Less

process.simEcalDigis.srpBarrelLowInterestChannelZS = -1.e9
process.simEcalDigis.srpEndcapLowInterestChannelZS = -1.e9

ECAL miscalibration

The mis-calibration coefficients are directly obtained from the database, and are therefore controlled via the frontier global tag. The doMiscalib parameter should be to true to apply the mis-calibration even if the global tag is set to something different from IDEAL.

Implementation in the ECAL Preshower

The zero-suppression mechanism in the preshower is simple and consists of a single threshold. As a result, the noise simulation in the preshower is also simple and makes use of a Gaussian tail generator to simulate the cells where the noise fluctuation exceeds the energy threshold, which corresponds to 3 sigmas of the noise. No mis-calibration can currently be applied in the preshower.

Implementation in the HCAL

Noise and zero-suppression

The HCAL has a zero-suppression mechanism which unfortunately cannot be emulated in the Fast Sim. As a result, in the HB/HE/HO, a simple conservative threshold of -0.5 GeV is applied, except in the HF where it is 0.5 GeV. The thresholds applied later on, either in the CaloTower reconstruction or in the clustering are of the order of a few hundreds of MeV.

In all the HCAL sub-detectors, the noise sigma value is computed from the digitization parameters read out from the database. There are rather close to the values measured in CRAFT. In the HF, the noise is particularly small and is not simulated in the Fast Simulation.

Some comparisons between the noise in the HB, HE, HO respectively in the Fast and in the Full Sim are visible below: HcalRecHits_noise_HB.gif HcalRecHits_noise_HE.gif HcalRecHits_noise_HO.gif

More plots can be found on this page, in particular it can be seen that the dependency on the position of the noise sigma is well reproduced.

How to produce un-suppressed RecHits in the Fast Sim ?
Click here for more information Less All the changes should implemented in the configuration file

  • In each HCAL section, change the Threshold variable to a large negative value (-100 for example)


Currently, the HCAL calibration is identical in STARTUP and IDEAL conditions. Therefore, the HCAL mis-calibration is always switched off, even when the STARTUP conditions are applied, but a mis-calibration can be applied if one so wish. Contrary to what is done in the ECAL, the mis-calibration coefficients are not retrieved from a database, but obtained from a text file. This text file should be specified in the fileNameHcal parameter. The associated file is looked for in the CalibCalorimetry/CaloMiscalibTools/data/ directory. Several mis-calibration scenarii can be found in here.

Note: this part of the code is supposed to evolve soonish (May-June 2009). Please contact the Fast Sim conveners and me (Florian) if this period has passed and you have doubts about what is currently done in this part of the Fast Simulation.

Obsolete description (1_6_X, 1_8_X)

More  Less 

General principle

In the fast simulation, the digitization is skipped, therefore the CaloRecHits are obtained directly from the PCaloHits. This allows a lot of time to be saved. This mechanism has no equivalent in the GEANT-based simulation. The input, e.g. the PCaloHits are obtained through the CrossingFrame. Note that this requires a special action when running the fast simulation on a sample simulated with GEANT. (See here for technical details.) Then, the noise is added to the PCaloHits and they are turned into CaloRecHits. The CaloRecHits which are thus obtained have format as in the standard reconstruction. The collections are similar, except that the producer is called "caloRecHits". The RecHits production is carried out in FastSimulation/CaloRecHitsProducer and the configuration file is CaloRecHits.cff, which is splitted into several parts corresponding to the various subdetectors.

There are, however, some global parameters:

string EBrechitCollection = "EcalRecHitsEB"
string EErechitCollection = "EcalRecHitsEE"   
string ESrechitCollection = "EcalRecHitsES"   
bool doDigis = false // not for PS
bool doMiscalib = false // not for PS
The first three parameters define the names of the output collections (it is advised not to change them). The doDigis parameters allows the production of simplified digis to be switched off/on for the ECAL and HCAL. No pulse shape is used to generate these digis, and only one time sample is used. For CMSSW < 1_8_0_pre4, the doMiscalib parameter was triggering the ECAL miscalibration only, the HCAL miscalibration was done by a separate module. As for CMSSW_1_8_0_pre4, both the ECAL and HCAL miscalibrations are controlled by this parameter.

RecHits in the preshower

In the preshower, the RecHits (in this case called ESRecHit) are produced according to the general principle described above. The collection is called EcalRecHitsES. This detector is currently the only where there is noise simulated in the regions where is there is no signal. To perform this operation efficiently, the noise injection and the zero suppression are performed simultaneously: the number of cells above the 45 keV treshold is computed. This number of cells is shot randomly and a noise above the threshold according to a gaussian distribution tail (sigma=15 keV) is injected.

RecHits in the ECAL

Two collections are produced: "EcalRecHitsEB" (barrel) and "EcalRecHitsEE" (endcaps). The noise (sigma=40 MeV in the barrel and 150 MeV in the endcaps) is added on top of the signal. The selective readout is currently not implemented. In the past, it had been demonstrated that to obtain the best fast vs GEANT-based simulation agreement for electromagnetic clusters, it was sufficient not to apply any zero-suppression at all. This is what is currently done. As of 150_pre5 the famous 1/0.97 calibration factor is applied in the ECAL. This can be a problem for you if you are comparing the fast simulation with GEANT-simulated samples digitized with a version of CMSSW prior to 150_pre5 (see this mail). This calibration factor can be deactivated by adding the following lines in the config file.
replace caloRecHits.ecal_notCont_sim.EBs25notContainment = 1.
replace caloRecHits.ecal_notCont_sim.EEs25notContainment = 1.

The following parameters

 double         Refactor = 1.
 double         Refactor_mean = 1.
are related to the miscalibration. See SWGuideFastSimECALMiscalibration for more details.

RecHits in the HCAL

Three collections are produced, the HBHERecHitCollection, the HFRecHitCollection and the HORecHitCollection. The noise is superimposed on the signal, the sigma as well as the threshold depend on the HCAL subdetector considered. They are defined in CaloRecHits.cfi. They are not always exactly equal to the values used in the standard digitize to better reproduce the single pion response. The noise outside the signal region can be simulated, but the thresholds which are applied are high (they correspond to the so-called scheme B) and no noisy cells survives these cuts. Note that in the current version of the GEANT-based simulation, there is no zero-suppression applied in the HCAL at the RecHits level. Since, of course, not realistic, and going to change in the future. For the standard jets reconstructed with the standard caloTowers, this does not any sequence, since a threshold-based selection is applied on the RecHits included in the caloTowers. Similarly to what is done in the ECAL, Refactor and Refactor_mean parameters are related to the miscalibration (See SWGuideFastSimHCALMiscalibration)

Review status

Reviewer/Editor and Date (copy from screen) Comments
FlorianBeaudette - 25-Oct-2009 Adding information on un-suppressed mode
FlorianBeaudette - 28 Sept 2009 Updating with latest noise simulation in the EE
FlorianBeaudette - 13 May 2009 Rewriting
FlorianBeaudette - 06 Dec 2007 Update documentation
FlorianBeaudette - 01 May 2007 First version of the documentation
JennyWilliams - 01 May 2007 created template page

Responsible: FlorianBeaudette
Last reviewed by: most recent reviewer

Topic attachments
I Attachment History Action Size Date Who Comment
GIFgif EENoise.gif r1 manage 7.7 K 2009-05-13 - 18:25 FlorianBeaudette Noise in the EE (ECAL DPG)
GIFgif EonlineOICMC-twik.gif r1 manage 6.1 K 2009-09-28 - 10:19 FlorianBeaudette RecHit online-reconstructed energy divided by Intercalibration Coefficient (IC) for pure noise event in the Full Sim
GIFgif HcalRecHits_noise_HB.gif r1 manage 12.5 K 2009-05-14 - 17:08 FlorianBeaudette HB noise
GIFgif HcalRecHits_noise_HE.gif r1 manage 13.9 K 2009-05-14 - 17:09 FlorianBeaudette HE noise
GIFgif HcalRecHits_noise_HO.gif r1 manage 16.3 K 2009-05-14 - 17:09 FlorianBeaudette HO noise
GIFgif RecHitThresFullLog-twik.gif r1 manage 7.0 K 2009-09-28 - 10:24 FlorianBeaudette RecHit energy spectrum divided by IC for pure noise events in the full som
Edit | Attach | Watch | Print version | History: r17 < r16 < r15 < r14 < r13 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r17 - 2011-01-22 - FlorianBeaudette

    • 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