Jets with pileup in 2011


Due to decreased bunch spacing, varying bunch configuration and increased per-bunch luminosity, the effect of pile-up on jets is significantly different in 2011 as compared to 2010. Consequently, we have this dedicated TWiki page to summarize the impact of pile-up on jets for the new data.

Goal: Summarize the current understanding of the effects of pile-up on jets in ATLAS and the methods and techniques available to mitigate these effects on physics analysis.

Some related TWiki pages are:

Error: (3) can't find JiveXML_177531_183764-YX-RZ-EventInfo-RZ-2011-03-13-22-38-43.png in Sandbox

In-time pile-up

The result of additional interactions in the current bunch crossing. The amount of in-time pile-up is described (on average) by the number of reconstructed primary vertices in an event, NPV. However, other variables may provide a more ideal parametrization of in-time pile-up. For example, the number of tracks not associated with the hard scatter primary vertex, Ntrkout, may be a more precise measure of pile-up activity, and it is less sensitive to vertex reconstruction efficiencies.

Out-of-time pile-up

Because the integration times in the calorimeter span many successive bunch crossings, minimum bias interactions from several preceding and some following bunch crossings may affect the response of the calorimeter to in-time signals. The effect of out-of-time pile-up depends on several factors that are specific to each event. Signal shaping in the calorimeter is designed such that out-of-time pileup should have an overall negative effect that cancels the positive effect from in-time pile-up on average. However, this only works if the bunch intensity is constant over the integration time of the calorimeter. For example, at the beginning of a bunch train there is insufficient out-of-time pile-up to cancel the in-time pile-up, so the calorimeter response is systematically higher for these events.

Currently, we do not have a way to directly measure the number of interactions in preceding and following bunch crossings, so we use the instantaneous luminosity to roughly estimate the amount of out-of-time pile-up. The variable μ is the mean number of inelastic interactions per bunch crossing, calculated directly from the instantaneous luminosity, inelastic cross-section, and beam parameters for the luminosity block that contains the event of interest. Work is ongoing to provide a more precise estimate of the out-of-time pile-up, for example using the BCID-specific luminosity to take into account variations in bunch intensity.

Effect on the jet energy scale

Perhaps the largest effect that pile-up has on reconstructed jets is to shift the jet energy scale. We are primarily interested in measuring and correcting for this shift, though studies of other pile-up effects on jets are also ongoing.

Pile-up interactions result in both diffuse, low-pT and point-like, high-pT energy deposits in the calorimeter. The average shift in the JES is due to the low-pT component of pile-up. Diffuse in-time pile-up contributes a fixed amount of energy (dependent on jet η) to each jet for every additional minimum bias interaction. On the other hand, out-of-time pileup can either add or subtract energy from the jet, depending on the distribution in time of contributions from surrounding bunch crossings.

The effect of diffuse in-time and out-of-time pile-up is to induce an additive offset in the jet energy scale, independent of the jet pT. We expect this offset to depend linearly on the numbers of additional in-time and out-of-time interactions. Therefore, we propose the following form for an offset correction:

\[{\rm Offset} = A \times (\mu - \mu^{\rm ref}) + B \times (N_{\rm PV} - N_{\rm PV}^{\rm ref})\]

Both A and B must depend on jet η, and they must be determined separately for each type of jet (algorithm, radius, EM vs. LC). The quantities μref and NPVref are used to control the output energy scale of the correction, which should match the assumed input energy scale of any subsequent jet calibration.

To take into account the incomplete cancellation of in-time and out-of-time pile-up near the beginning of each bunch train, the coefficient A may be binned according to the time elapsed since the last empty bunch crossing. Coarse binning in the size of the gap preceding the current bunch train may also be necessary.

To begin, we have determined a jet pT offset of this form by matching reconstructed jets to truth jets in simulated QCD dijet events; the next section is a description of the resulting correction.

MC-based offset correction

The correction uses two variables to parametrize pile-up: the number of primary vertices in an event (NPV) and the number of average interactions in a lumi block (μ). Note that for the purposes of this correction, we define NPV as the number of reconstructed primary vertices with at least two associated tracks.

The correction is pT independent, and it is given in seven |η| bins: 0.0-0.3, 0.3-0.8, 0.8-1.2, 1.2-2.1, 2.1-2.9, 2.9-3.5, 3.5-5.0. Also, the correction depends on two other parameters that serve to connect the correction with the subsequent JES calibration: the reference values of NPV and μ. These should be taken from the MC sample from which the JES was derived, and should be equal to the mean values of NPV and μ in that sample. The correction should be applied before the JES, taking into account the reference values of NPV and μ.

Note that this correction, as a first pass, does not take into account the incomplete cancellation of in-time and out-of-time pile-up near the beginning of a bunch train. It is derived from events that are at least 600 ns from the beginning of a train. However, any mismodeling of the average effect from incomplete cancellation is taken into account in the determination of associated systematic uncertainties.

Correction for Release 16 (MC10b)

The latest version of this correction was presented at the 2011 ATLAS hadronic calibration workshop at SLAC (https://indico.cern.ch/getFile.py/access?contribId=29&sessionId=0&resId=0&materialId=slides&confId=132005), and all the plots supporting it can be found here:

Correction for Release 17 (MC11a)

The latest version of this correction was presented at the Jet/Etmiss Phone Conference of 9 November 2011 (http://indico.cern.ch/getFile.py/access?contribId=8&resId=0&materialId=slides&confId=161038), and all the plots supporting it can be found here:


/// GetOffsetCorrection NPV                                                                                                                                                        
double AnalysisBase::GetOffsetNPV(Double_t jetEta, Double_t mu, Int_t NPV, TString tag, Int_t NPVref, Int_t MUref, bool m_fDebug) {

  // Offset correction table                                                                                                                                                       

  //slope and intercept                                                                                                                                                            
    const static Double_t slope_MC10b_AKt6_topoEM[7] = {
  const static Double_t intercept_MC10b_AKt6_topoEM[7] = {
    const static Double_t slope_MC10b_AKt6_lct[7] = {
  const static Double_t intercept_MC10b_AKt6_lct[7] = {

    const static Double_t slope_MC10b_AKt4_topoEM[7] = {
  const static Double_t intercept_MC10b_AKt4_topoEM[7] = {
    const static Double_t slope_MC10b_AKt4_lct[7] = {
  const static Double_t intercept_MC10b_AKt4_lct[7] = {

  const static Double_t slope_MC11_AKt6_topoEM[7] = {
  const static Double_t intercept_MC11_AKt6_topoEM[7] = {
  const static Double_t slope_MC11_AKt6_lct[7] = {
  const static Double_t intercept_MC11_AKt6_lct[7] = {

  const static Double_t slope_MC11_AKt4_topoEM[7] = {
  const static Double_t intercept_MC11_AKt4_topoEM[7] = {
  const static Double_t slope_MC11_AKt4_lct[7] = {
  const static Double_t intercept_MC11_AKt4_lct[7] = {

  if (m_fDebug) cout << "In GetOffsetNPV()" << endl;

  double jet_NPV_offset = 0.0;

  int eta_index = -1;

  if(fabs(jetEta) <= 0.3)                       eta_index = 0;
  if(fabs(jetEta) > 0.3 && fabs(jetEta) <= 0.8) eta_index = 1;
  if(fabs(jetEta) > 0.8 && fabs(jetEta) <= 1.2) eta_index = 2;
  if(fabs(jetEta) > 1.2 && fabs(jetEta) <= 2.1) eta_index = 3;
  if(fabs(jetEta) > 2.1 && fabs(jetEta) <= 2.9) eta_index = 4;
  if(fabs(jetEta) > 2.9 && fabs(jetEta) <= 3.5) eta_index = 5;
  if(fabs(jetEta) > 3.5 && fabs(jetEta) <= 5.0) eta_index = 6;

  if(tag.Contains("AKt6_TopoEM_MC10b")) {
    jet_NPV_offset = slope_MC10b_AKt6_topoEM[eta_index] * (NPV-NPVref) + intercept_MC10b_AKt6_topoEM[eta_index] * (mu-MUref) ;
  else if(tag.Contains("AKt6_LCTopo_MC10b")) {
    jet_NPV_offset = slope_MC10b_AKt6_lct[eta_index] * (NPV-NPVref) + intercept_MC10b_AKt6_lct[eta_index] * (mu-MUref);
  else if(tag.Contains("AKt4_TopoEM_MC10b")) {
    jet_NPV_offset = slope_MC10b_AKt4_topoEM[eta_index] * (NPV-NPVref) + intercept_MC10b_AKt4_topoEM[eta_index] * (mu-MUref) ;
  else if(tag.Contains("AKt4_LCTopo_MC10b")) {
    jet_NPV_offset = slope_MC10b_AKt4_lct[eta_index] * (NPV-NPVref) + intercept_MC10b_AKt4_lct[eta_index] * (mu-MUref);
  else if(tag.Contains("AKt6_TopoEM_MC11")) {
   jet_NPV_offset = slope_MC11_AKt6_topoEM[eta_index] * (NPV-NPVref) + intercept_MC11_AKt6_topoEM[eta_index] * (mu-MUref) ;
  else if(tag.Contains("AKt6_LCTopo_MC11")) {
    jet_NPV_offset = slope_MC11_AKt6_lct[eta_index] * (NPV-NPVref) + intercept_MC11_AKt6_lct[eta_index] * (mu-MUref);
  else if(tag.Contains("AKt4_TopoEM_MC11")) {
    jet_NPV_offset = slope_MC11_AKt4_topoEM[eta_index] * (NPV-NPVref) + intercept_MC11_AKt4_topoEM[eta_index] * (mu-MUref) ;
  else if(tag.Contains("AKt4_LCTopo_MC11")) {
    jet_NPV_offset = slope_MC11_AKt4_lct[eta_index] * (NPV-NPVref) + intercept_MC11_AKt4_lct[eta_index] * (mu-MUref);

  else cout << "WARNING: cannot find offset correction for tag = " << tag << "; Please use a supported tag." << endl;

  // Some debugging                                                                                                                                                                
  if (m_fDebug)     cout << "Eta = " << jetEta
                         << " ; eta bin in graph = " << eta_index
                         << " ; mu = " << mu
                         << " ; NPV = " << NPV
                         << " ; Jet NPV offset = " <<  jet_NPV_offset
                         << " ; Tag = " <<  tag
                         << endl;

  // Done                                                                                                                                                                          
  return jet_NPV_offset;



The correction returns a number that should be subtracted from the pT of the jet (uncalibrated, i.e. no JES) in GeV. It has 6 input parameters: NPV, μ, jet η, NPVref, μref, and a tag. The tag tells the correction which jet collection you are interested in. This is the list of tags that should be used:

  • "AKt6_TopoEM_MC10b"
  • "AKt6_LCTopo_MC10b"
  • "AKt4_TopoEM_MC10b"
  • "AKt4_LCTopo_MC10b"
  • "AKt6_TopoEM_MC11"
  • "AKt6_LCTopo_MC11"
  • "AKt4_TopoEM_MC11"
  • "AKt4_LCTopo_MC11"

The correction should be applied as follows:

\[p_T^{\rm EM+JES} = (p_T^{\rm EM} - {\rm Offset}) \times R^{\rm JES}\]

where Offset is obtained from the GetOffsetNPV() function defined in the code above, parametrized by the variables explained here and the tags in the list (a different implementation can be found in JetCalibTools to use within ATHENA). If for example you want to use the JES from MC10b, you should use NPVref=6, MUref=8 and the tags with "MC10b". To obtain the correction for an AntiKt6 LC jet, you would call GetOffsetNPV(jetEta, mu, NPV, "AKt6_LCTopo_MC10b", 6, 8, false).

In-situ validation techniques

The MC-based jet pT offset is validated by comparison to offsets obtained from two in-situ techniques: matching calorimeter jets to track jets, and exploiting momentum conservation in events with a photon back-to-back with a jet.

Track-jet validation

We construct track jets from tracks that are matched to the chosen primary vertex. By matching these jets to calorimeter jets, we obtain an estimate of the jet pT that is insensitive to pile-up. For a given track-jet pT, the median value of the matched calorimeter pT is shifted by in-time and out-of-time pile-up in the same way as the MC-based jet pT offset.

Some recent results from track-jet validation of the MC-based offset correction:

γ-jet pT balance

To a good approximation, the reconstructed energy of photons is insensitive to pile-up, and its resolution is much better than the jet energy resolution. Consequently, in events where a jet is balanced against a photon, momentum conservation allows us to use the photon pT as a very good estimate of the true jet pT. The difference between the jet pT and photon pT is shifted by in-time and out-of-time pile-up in the same way as the MC-based jet pT offset.

A recent presentation by Andres Tanasijczuk summarizes the results from γ-jet pT balance validating the MC10b-based offset correction.

Systematic uncertainties

Deprecated material

Effect of pileup on EM Scale jet constituents (Calo,TopoTowers)

The effect of pileup on 2011 ZeroBias data for periods D-H was studied using un-calibrated, EM scale calorimeter towers. The goal of the study was to first understand the in-time and out-of-time effects of pileup on the towers and then use this information to calculate an offset correction, similar to the pileup offset correction used on 2010 data.

Error: (3) can't find h_CaloTower_ET_vs_Eta_formatted.gif in Sandbox Error: (3) can't find h_CaloTowerET_vs_NPV_gt1000_eta0_0p3_formatted.gif in Sandbox Error: (3) can't find h_CaloTowerET_vs_DFE_central_formatted.gif in Sandbox

The above plots represent the average effects of pileup on calorimeter towers. For events with lower than average measured interactions, quantized by the number of primary vertices, the average transverse energy is less than zero due to the negative portion of the LAr shaping pulse from the previous bunch crossings (see David Miller's Toy MC). As the number of interactions increase, the average transverse energy increases linearly, as shown in the middle figure. The data for the figure in the middle is required to to have been from events sufficiently far away in time from the beginning of the bunch train. This is done to separate the large out-of-time LAr effect seen at the beginning of the train, shown in the figure on the right. When binned in <μ>, events at the beginning of the train tend to have increasing transverse energy with increasing <μ>, while events lying in the "plateau" region ($D_{FE}$>1ns) tend to show decreasing transverse energy with increasing <μ>.

Tower based correction

The tower based correction is derived from the average change in transverse energy at the tower level with respect to various pileup parameters. The tower level correction is translated to the jet level correction by scaling it by some tower area of the jet. Two possibilities for the tower area are:
  • NumTowers - the moment associated with the jet describing the number of towers that would be associated to a jet.
  • $\pi R^2 / (0.1)^2 $- For large R, the number of towers that fit in a cone or circle of radius R (0.4, 0.6).

Currently, closure has only been shown for the $N_{PV}$ based correction using the latter area above, but results for both ($N_{PV}$ and$D_{FE}$) are shown in the links below.

Pileup in MC10b - not-reweighted

The digitization and reconstruction of MC10b is done with the configuration of the bunch train pileup with three trains with 9BC=225ns separation , within trains are 36 filled bunches with 50ns bunch separation and variable pileup rate configuration , where MB means Pythia6 ND+SD+DD mixed minbias channels. For more information, see AtlasProductionGroupMC10b.
Error: (3) can't find h_NVertices_mc10b_formatted.png in Sandbox Error: (3) can't find h_n_trk_out_Ecut_mc10b_formatted.png in Sandbox Error: (3) can't find h_NVtx_nTrkOut_Ecut_mc10b_formatted.png in Sandbox

Error: (3) can't find mu_mc10b_formatted.png in Sandbox Error: (3) can't find h_npv_vs_mu_mc10b_formatted.png in Sandbox Error: (3) can't find h_ntrkout_vs_mu_mc10b_formatted.png in Sandbox

Pileup in Data

Effect of bunch spacing on raw calorimeter energy density

Comparison between 2010 PeriodI , 2011 run178109 (75ns bs) and run 179153 (50ns bs)

As an initial study, we looked at the differences between the average calorimeter tower energy vs. the number of primary vertices for late 2010 data, early 2011 75ns data and recent 2011 50ns data. While these plots show that there are significant differences between the data periods, it does not illustrate why. It was not clear if the bunch spacing alone was the cause of the differences. The next set of plots shows the differences between several 50ns runs, indicating that the bunch spacing alone is not the cause of the varying average tower energy.
Error: (3) can't find h_tower_E_NV_Eta_0_08.150ns.75ns.50ns.comp.png in Sandbox Error: (3) can't find h_tower_E_NV_Eta_32_5.150ns.75ns.50ns.comp.png in Sandbox

Comparison between several runs with 50ns bunch spacings

As mentioned above, bunch spacing alone does not explain why there is a run-by-run difference in the average calorimeter tower energy, as shown below.
Error: (3) can't find h_tower_E_NV_Eta_0_50ns_runcomp.png in Sandbox Error: (3) can't find h_tower_E_NV_Eta_1_50ns_runcomp.png in Sandbox Error: (3) can't find h_tower_E_NV_Eta_2_50ns_runcomp.png in Sandbox Error: (3) can't find h_tower_E_NV_Eta_3_50ns_runcomp.png in Sandbox
Error: (3) can't find h_tower_E_NV_Eta_4_50ns_runcomp.png in Sandbox Error: (3) can't find h_tower_E_NV_Eta_5_50ns_runcomp.png in Sandbox Error: (3) can't find h_tower_E_NV_Eta_6_50ns_runcomp.png in Sandbox Error: (3) can't find h_tower_E_NV_Eta_7_50ns_runcomp.png in Sandbox

Run-by-run luminosity, bunch, and tower based pileup offset information

In order to determine the dependence of the average calorimeter energy, and thus the tower based offset correction, we list all of the quantities of interest in the table below. The plots these numbers are derived from are in the Notes section below.

Data Period Run Number Luminosity <mu> RMS(mu) Bunch Spacing Average Bunch Train Length Slope of tower based <Jet ET Offset> vs. NPV (GeV / Vertex) AntiKt4,AntiKt6
Recorded [1/pb] L1_J15 [1/nb] EF_zerobias_NoAlg [1/nb] 0< |eta| < 0.3 3< |eta| < 0.8 0.8< |eta| < 1.2 1.2< |eta| < 2.1 2.1< |eta| < 2.8 2.8< |eta| < 3.2 3.2< |eta| < 4.5
B2 178044 4.7 3.5 3.1     75ns 1727ns 0.35, 0.65 0.37, 0.69 0.39, 0.77 0.37, 0.75 0.42, 0.89 0.54, 1.2 0.35, 0.80
B2 178109 6.5 4.8 4.3     75ns 1727ns              
D1 179710 4.3 4.4 2.1 5.9 1.4 50ns 1651ns 0.50, 0.92 0.51, 0.95 0.53, 1.0 0.49, 0.99 0.58, 1.2 0.71, 1.6 0.36, 0.86
D2 179804 7.4 5.4 3.7 6.4 1.5 50ns 1701ns 0.51, 0.94 0.52, 0.97 0.54, 1.1 0.51, 1.0 0.58, 1.2 0.73, 1.6 0.38, 0.86
D3 180124 7.6 5.3 3.8 5.1 1.2 50ns 1704ns 0.44, 0.79 0.46, 0.84 0.46, 0.91 0.44, 0.87 0.52, 1.1 0.64, 1.4 0.35, 0.86
D3 180139 7.7 3.4 3.8 6.1 1.1 50ns 1704ns 0.47, 0.84 0.47, 0.86 0.48, 0.93 0.45, 0.89 0.53, 1.1 0.65, 1.4 0.38, 0.88
D4 180153 8.8 6.0 4.4 5.4 1.2 50ns 1704ns 0.44, 0.79 0.46, 0.85 0.48, 0.91 0.46, 0.89 0.53, 1.1 0.65, 1.4 0.40, 0.87
D4 180164 19.1 9.8 9.6 5.8 1.3 50ns 1704ns 0.50, 0.91 0.51, 0.94 0.54, 1.0 0.49, 0.98 0.58, 1.2 0.72, 1.5 0.40, 0.88
D5 180225 17.1 10.2 8.5 5.3 1.1 50ns 2833ns 0.36, 0.67 0.38, 0.70 0.39, 0.75 0.39, 0.76 0.45, 0.93 0.57, 1.2 0.38, 0.84
D6 180309 9.5 2.9 4.8 6.7 0.9 50ns 2833ns 0.38, 0.71 0.41, 0.74 0.40, 0.80 0.40, 0.79 0.47, 0.97 0.58, 1.3 0.40, 0.87
D6 180400 14.5 2.8 3.5 6.2 1.0 50ns 3318ns              
D7 180481 21.1 4.2 5.4 6.0 1.1 50ns 3318ns 0.38, 0.68 0.38, 0.70 0.39, 0.75 0.39, 0.76 0.45, 0.92 0.57, 1.2 0.35, 0.83
E1 180636 24.1 5.1 6.6 5.8 1.1 50ns 3318ns 0.35, 0.64 3.36, 0.66 0.37, 0.72 0.37, 0.71 0.43, 0.87 0.54, 1.1 0.36, 0.77
E1 180710 12.1 1.8 6.8 7.1 0.9 50ns 3084ns 0.34, 0.60 0.33, 0.63 0.35, 0.68 0.35, 0.69 0.40, 0.81 0.51, 1.1 0.35, 0.78


Error: (3) can't find OffsetAnalysis_mu_L1J15_ZB_overlay.png in Sandbox

  • While the run-by-run information is shown above, the average offset vs. NPV slopes will be used for the pileup uncertainty estimate for the summer conference. For reference, below are the average (over all 50ns runs) constituent multiplicity for AntiKt4 and AntiKt6 TopoTower jets:
Error: (3) can't find nConst_vs_eta_akt4_ZeroBias.png in Sandbox Error: (3) can't find nConst_vs_eta_akt6_ZeroBias.png in Sandbox
  • With the average constituent multiplicities above and the average tower level E_T offset (below left), the average jet E_T offsets are shown below.
Error: (3) can't find offset_tower_energy_et.png in Sandbox Error: (3) can't find offset_jet_energy_et_akt4.png in Sandbox Error: (3) can't find offset_jet_energy_et_akt6.png in Sandbox

These plots can then be combined in a more useful form, the average jet transverse energy offset as a function of NPV for 7 eta bins, as shown below. These plots represent all of the 50ns data above modulo run 180400.

Error: (3) can't find h_data_jet_energy_offset_vs_NV_fit_akt4_formatted.png in Sandbox Error: (3) can't find h_data_jet_energy_offset_vs_NV_fit_akt6_formatted.png in Sandbox

2011 Jet Pileup uncertainty from the RMS bias between data and MC10a

While we are not in a position to provide a pileup offset correction, it is possible to characterize the uncertainty on the JES calibration due to pileup in the 2011 data. To do this, we compare the difference between the average change in jet transverse energy pileup offset per additional vertex (Average Jet ET offset/NPV) between 50ns 2011 data and currently, MC10a minbias events. This comparison is shown in the below plot, which is derived from the previous two plots as well as the analogous ones for MC10a. Error: (3) can't find h_slope_eta_formatted_final.png in Sandbox

With this information as well as the average number of vertices in the 50ns data and the width of this distribution, shown below, we can define a positive and negative RMS bias, defined as:

Below are the calculated RMS biases between the 50ns data and MC10a for AntiKt4 and AntiKt6 Tower jets at EM scale for a $NV_{ref}=3$, chosen because for this number of vertices, the average calorimeter tower energy is closest to zero, $<NV>=\lambda$ and $RMS_{NV}=\sqrt{\lambda}$. Using the difference between the negative and positive bias with the current EM+JES calibration, a relative jet pileup uncertainty can be calculated for jets of various $p_{T}$ in the defined $\eta$ regions.

Error: (3) can't find NVertices_fit.png in Sandbox Error: (3) can't find h_RMS_akt4_slope_eta_formatted.png in Sandbox Error: (3) can't find h_RMS_akt6_slope_eta_formatted.png in Sandbox

Major updates:
-- JohnBackusMayes - 08-Nov-2011

%RESPONSIBLE% JohnBackusMayes
%REVIEW% Never reviewed

Edit | Attach | Watch | Print version | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r5 - 2011-11-09 - JohnBackusMayes
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Sandbox All webs login

  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2021 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