For a more detailed explanation, please read this document Lots of useful information can also be found at this link.
[info] Info For further information, especially related to the TDR geometry that is being delivered in July 2018, refer to this talk.
The rechits coming out the detector electronics have a magnitude measured in femtoCoulomb (fC) corresponding to the energy desposited in the active thickness of the Si sensor cells. The calibration procedure will start from those hits and produce calibrated rechits that can be used for clustering purposes (hence energy measurements). There are 3 steps involved in the calibration procedure:
-
Equalization of the signal scale to account for the three Si sensor thicknesses (3 constants)
-
Equalization of the signal scale to account for the differing absorber thicknesses in the 52 layers of HGCAL (52 constants)
-
Setting the overall scale such that when the signals in a shower are added, their sum is a good estimate of the energy of the incoming particle which caused the shower (1 constant)
These steps are detailed below.
In a sampling calorimeter with varying thicknesses of absorber, the energy samplings must be reweighted to account for the different absorber thicknesses. The actual energy deposited in the sensitive detectors is proportional but not identical to the original energy of the incoming particle.
It is generally agreed that for this purpose the thickness should be measured in
terms of
The first step consists of taking the value in fC coming out of the ADC and
convert it into average number of MIPs, where the conversion factor is the
most probable value of the Landau distribution for a MIP in Si, computed for
the 3 different sensors' thickness. On the advantages of using the most probable
value, as can be seen in the pictures below, is that it is rather stable as a
function of the incoming particle energy: this is definitely not true for the
The following figures, taken from the PDG document linked in the reading section, help understanding the situation better:
Currently (june 2018, 22:55:15 (UTC+0200)) the fCperMIP values are:
Si Thickness [$$\mu\textrm{m}$$] | fCperMIP [$$\textrm{fC}$$] |
---|---|
100 | 1.25 |
200 | 2.57 |
300 | 3.88 |
Let's assume now that
where the amplitude
and is expressed in fC. The term
We can also safely assume that the average number of MIPs in the i-th
passive layer (i.e. in the i-th absorber) is the mean between
The total energy lost in the i-th passive layer is then:
where
The total energy lost in the shower is:
This could be rewritten as (boundary conditions at first and last layer to be checked and carefully handled):
We measure the terms:
in MeV, i.e. multiply the
[warning] Warning The above calculation works great for orthogonally incident particles, which is never the case we face in reality. The assumption we do is that the
$$\textrm{fCperMIP}$$ value will scale in the same way as the$$\lambda_i$$ parameter, i.e. with the$$cos(\theta)$$ of the incident angle. This is quite true but not exactly correct.
Eventually, all energies are converted into
The final step is to scale the rechit magnitudes so that their sum approximately
represents the energy deposited by an electromagnetic shower. We choose to make
the sum of all rechits with
What has been described in the previous section has been implemented into CMSSW. There are few steps to run in order to convert the digital signal received from the electronics (in ADC counts) into a calibrated hit. These are documented in the following sections.
The C++
module responsible for the creation of the un-calibrated rechits
is
HGCalUncalibRecHitProducer
,
configured with the python label HGCalUncalibRecHit
. The main goal of this
module is to convert the input HGCAL Digis, which are measured in ADC count,
into rechits whose amplitude is expressed in terms of average number of MIPs.
The module is also configured so that it can dynamically convert ADC counts into
a real amplitide, measured in HGCalUncalibRecHitWorkerWeights
.
Under the hood, one level deeper, the module that is responsible of making this
conversion is
HGCalUncalibRecHitRecWeightsAlgo<HGCHEDataFrame>
via the makeRecHit
method.
[info] Info The takeway message is that the product produced by the
HGCalUncalibRecHitProducer
is a collection of HGCal un-calibrated rechits (edm::SortedCollection<HGCUncalibratedRecHit>
) whoseamplitude
method will result in the average number of MIPs corresponding to the measured signal for that specific Silicon detector.
This implements the rescale section.
The C++
module responsible for the creation of the calibrated rechits is
HGCalRecHitProducer
configured with the python label HGCalRecHit
. Also in this case, all the
heavy lifting is internally done by an external plugin, loaded using the
canonical cmssw mechanism, and configured via python. The currently
(29 juin 2018, 14:29:44 (UTC+0200)) configured plugin is
HGCalRecHitWorkerSimple
.
The plugin will loop over all the input collection (EE, FH and BH uncalibrated
rechits, separately), and call the run
method of its own configured
plugin/worker. The worker itself will outsource much of its duties to another
C++
object:
HGCalRecHitSimpleAlgo
.
The main plugin will read the weights for each single layer from the
configuration file and pass them down to its internal worker
. This will read
each hit, one by one, determine to which layer is belongs to and rescale its
amplitude
by the weights, eventually converting it from
where the input weights are, in fact, the factors:
as derived directly from the Geant4 simulation.
Currently the final calibration energy has been implemented only at
particleFlow
level, in particular only in the context of realistic SimClusters
, which are the truth-based reconstruction of HGCAL that is feed
into Particle Flow. The C++
module that is responsible of the creation of the
realistic SimClusters and of their validation is PFClusterProducer
with the
python label particleFlowClusterHGCal
. The python configuration of the module
contains 2 sets of eta-binned energy corrections, one for egamma
objects and
one for hadronic
objects.
[warning] Warning At present this distinction is guaranteed by the fact that this step is derived from Monte Carlo truth information. In the real life either we need to find a unique set of constants or, better, find a fully reconstruction based way to distinguish between the 2 types.
Also in this case, most of the heavy lifting is done by an external worker
loaded via the usual cmssw plugin mechanism. This is
RealisticSimClusterMapper
.
The output of this module is a collection of PFClusters
that will have the
energy
set to the uncorrected one, and the correctedEnergy
set to the
corrected one.
[danger] Danger The
PFCluster
s derived from theMultiClusters
will not have this final calibration applied.
- The density of Silicon is 2.328
$$\textrm{g}/\textrm{cm}^3$$ - The value of
$$\frac{\textrm{dE}}{\textrm{dx}}\rvert_{\textrm{min}}$$ is 1.664$$\textrm{MeV} \textrm{g}^{-1} \textrm{cm}^2$$ , i.e., 3.88$$\textrm{MeV}/\textrm{cm}$$ (i.e.$$388 \textrm{eV}/\mu\textrm{m}$$ ) - The energy required to create an e-h in Silicon is
$$3.62 \textrm{eV}$$ - The most probable energy loss value for in
$$300 \mu\textrm{m}$$ Silicon (it can be extracted from the plots in the Rescaling to MIPs) section is$$\sim 1.22 \textrm{MeV} \textrm{g}^{-1} \textrm{cm}^2 = 2.84 \textrm{MeV} \textrm{cm}^{-1}$$ . Rescaled for the thickness, we have$$300 * 284 \textrm{eV} = 85200 \textrm{eV}$$ . - If we consider the energy needed to create an
$$e^{-}-h = 3.62 \textrm{eV}$$ and the charge of the electron, we deduce that the corresponding$$\textrm{fCperMIP}$$ factor is: