rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2019_I1736531

Underlying event in inclusive Z boson production
Experiment: ATLAS (LHC)
Inspire ID: 1736531
Status: VALIDATED
Authors:
  • Deepak Kar
References: Beams: p+ p+
Beam energies: (6500.0, 6500.0) GeV
Run details:
  • Inclusive Z to \mu\mu events

This paper presents measurements of charged-particle distributions sensitive to the properties of the underlying event in events containing a Z boson decaying into a muon pair.The data were obtained using the ATLAS detector at the LHC in proton-proton collisions at a centre-of-mass energy of 13 TeV with an integrated luminosity of 3.2 fb$^{-1}$. Distributions of the charged-particle multiplicity and of the charged-particle transverse momentum are measured in regions of the azimuth defined relative to the Z boson direction. The measured distributions are compared with the predictions of various Monte Carlo generators which implement different underlying-event models. The Monte Carlo model predictions qualitatively describe the data well, but with some significant discrepancies.

Source code: ATLAS_2019_I1736531.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Thrust.hh"
  4#include "Rivet/Projections/FinalState.hh"
  5#include "Rivet/Projections/ChargedFinalState.hh"
  6#include "Rivet/Projections/DileptonFinder.hh"
  7
  8namespace Rivet {
  9
 10  /// @brief Underlying event in Z events
 11  class ATLAS_2019_I1736531 : public Analysis {
 12  public:
 13
 14    /// Constructor
 15    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2019_I1736531);
 16
 17    void init() {
 18
 19      // Get options from the new option system
 20      PdgId flav = (getOption("LMODE") == "EL") ? PID::ELECTRON : PID::MUON;
 21
 22      //Projections
 23      DileptonFinder zfinder(91.2*GeV, 0.1, Cuts::abseta < 2.4 && Cuts::pT > 25*GeV &&
 24                             Cuts::abspid == flav, Cuts::massIn(66*GeV, 116*GeV));
 25      declare(zfinder, "DileptonFinder");
 26      ChargedFinalState cfs(zfinder.remainingFinalState() );
 27      declare(cfs, "cfs");
 28
 29    //Histograms
 30
 31       book(_p["pTsum_tow_zpt"] , 1, 1, 1);
 32       book(_p["pTsum_trv_zpt"] , 2, 1, 1);
 33       book(_p["pTsum_tmin_zpt"] , 3, 1, 1);
 34       book(_p["pTsum_tmax_zpt"] , 4, 1, 1);
 35       book(_p["pTsum_away_zpt"] , 5, 1, 1);
 36       book(_p["nch_tow_zpt"] , 6, 1, 1);
 37       book(_p["nch_trv_zpt"] , 7, 1, 1);
 38       book(_p["nch_tmin_zpt"] , 8, 1, 1);
 39       book(_p["nch_tmax_zpt"] , 9, 1, 1);
 40       book(_p["nch_away_zpt"] , 10, 1, 1);
 41       book(_p["pTmean_tow_zpt"] , 11, 1, 1);
 42       book(_p["pTmean_trv_zpt"] , 12, 1, 1);
 43       book(_p["pTmean_tmin_zpt"] , 13, 1, 1);
 44       book(_p["pTmean_tmax_zpt"] , 14, 1, 1);
 45       book(_p["pTmean_away_zpt"] , 15, 1, 1);
 46       book(_p["pTsum_tow_zpt_tlow"] , 16, 1, 1);
 47       book(_p["pTsum_trv_zpt_tlow"] , 17, 1, 1);
 48       book(_p["pTsum_tmin_zpt_tlow"] , 18, 1, 1);
 49       book(_p["pTsum_tmax_zpt_tlow"] , 19, 1, 1);
 50       book(_p["pTsum_away_zpt_tlow"] , 20, 1, 1);
 51       book(_p["nch_tow_zpt_tlow"] , 21, 1, 1);
 52       book(_p["nch_trv_zpt_tlow"] , 22, 1, 1);
 53       book(_p["nch_tmin_zpt_tlow"] , 23, 1, 1);
 54       book(_p["nch_tmax_zpt_tlow"] , 24, 1, 1);
 55       book(_p["nch_away_zpt_tlow"] , 25, 1, 1);
 56       book(_p["pTmean_tow_zpt_tlow"] , 26, 1, 1);
 57       book(_p["pTmean_trv_zpt_tlow"] , 27, 1, 1);
 58       book(_p["pTmean_tmin_zpt_tlow"] , 28, 1, 1);
 59       book(_p["pTmean_tmax_zpt_tlow"] , 29, 1, 1);
 60       book(_p["pTmean_away_zpt_tlow"] , 30, 1, 1);
 61       book(_p["pTsum_tow_zpt_thi"] , 31, 1, 1);
 62       book(_p["pTsum_trv_zpt_thi"] , 32, 1, 1);
 63       book(_p["pTsum_tmin_zpt_thi"] , 33, 1, 1);
 64       book(_p["pTsum_tmax_zpt_thi"] , 34, 1, 1);
 65       book(_p["pTsum_away_zpt_thi"] , 35, 1, 1);
 66       book(_p["nch_tow_zpt_thi"] , 36, 1, 1);
 67       book(_p["nch_trv_zpt_thi"] , 37, 1, 1);
 68       book(_p["nch_tmin_zpt_thi"] , 38, 1, 1);
 69       book(_p["nch_tmax_zpt_thi"] , 39, 1, 1);
 70       book(_p["nch_away_zpt_thi"] , 40, 1, 1);
 71       book(_p["pTmean_tow_zpt_thi"] , 41, 1, 1);
 72       book(_p["pTmean_trv_zpt_thi"] , 42, 1, 1);
 73       book(_p["pTmean_tmin_zpt_thi"] , 43, 1, 1);
 74       book(_p["pTmean_tmax_zpt_thi"] , 44, 1, 1);
 75       book(_p["pTmean_away_zpt_thi"] , 45, 1, 1);
 76
 77      for (size_t i_bin = 0; i_bin < 8; ++i_bin) {
 78
 79        book(_h["pT[0]"+to_str(i_bin)] , 46 + i_bin, 1, 1);
 80        book(_h["pT[1]"+to_str(i_bin)] , 54 + i_bin, 1, 1);
 81        book(_h["pT[2]"+to_str(i_bin)] , 62 + i_bin, 1, 1);
 82        book(_h["pT[3]"+to_str(i_bin)] , 70 + i_bin, 1, 1);
 83        book(_h["pT[4]"+to_str(i_bin)] , 78 + i_bin, 1, 1);
 84        book(_h["nch[0]"+to_str(i_bin)] , 86 + i_bin, 1, 1);
 85        book(_h["nch[1]"+to_str(i_bin)] , 94 + i_bin, 1, 1);
 86        book(_h["nch[2]"+to_str(i_bin)] , 102 + i_bin, 1, 1);
 87        book(_h["nch[3]"+to_str(i_bin)] , 110 + i_bin, 1, 1);
 88        book(_h["nch[4]"+to_str(i_bin)] , 118 + i_bin, 1, 1);
 89        book(_h["pTsum[0]"+to_str(i_bin)] , 126 + i_bin, 1, 1);
 90        book(_h["pTsum[1]"+to_str(i_bin)] , 134 + i_bin, 1, 1);
 91        book(_h["pTsum[2]"+to_str(i_bin)] , 142 + i_bin, 1, 1);
 92        book(_h["pTsum[3]"+to_str(i_bin)] , 150 + i_bin, 1, 1);
 93        book(_h["pTsum[4]"+to_str(i_bin)] , 158 + i_bin, 1, 1);
 94        book(_h["pTmean[0]"+to_str(i_bin)] , 166 + i_bin, 1, 1);
 95        book(_h["pTmean[1]"+to_str(i_bin)] , 174 + i_bin, 1, 1);
 96        book(_h["pTmean[2]"+to_str(i_bin)] , 182 + i_bin, 1, 1);
 97        book(_h["pTmean[3]"+to_str(i_bin)] , 190 + i_bin, 1, 1);
 98        book(_h["pTmean[4]"+to_str(i_bin)] , 198 + i_bin, 1, 1);
 99        book(_h["pT_tlow[0]"+to_str(i_bin)] , 206 + i_bin, 1, 1);
100        book(_h["pT_tlow[1]"+to_str(i_bin)] , 214 + i_bin, 1, 1);
101        book(_h["pT_tlow[2]"+to_str(i_bin)] , 222 + i_bin, 1, 1);
102        book(_h["pT_tlow[3]"+to_str(i_bin)] , 230 + i_bin, 1, 1);
103        book(_h["pT_tlow[4]"+to_str(i_bin)] , 238 + i_bin, 1, 1);
104        book(_h["nch_tlow[0]"+to_str(i_bin)] , 246 + i_bin, 1, 1);
105        book(_h["nch_tlow[1]"+to_str(i_bin)] , 254 + i_bin, 1, 1);
106        book(_h["nch_tlow[2]"+to_str(i_bin)] , 262 + i_bin, 1, 1);
107        book(_h["nch_tlow[3]"+to_str(i_bin)] , 270 + i_bin, 1, 1);
108        book(_h["nch_tlow[4]"+to_str(i_bin)] , 278 + i_bin, 1, 1);
109        book(_h["pTsum_tlow[0]"+to_str(i_bin)] , 286 + i_bin, 1, 1);
110        book(_h["pTsum_tlow[1]"+to_str(i_bin)] , 294 + i_bin, 1, 1);
111        book(_h["pTsum_tlow[2]"+to_str(i_bin)] , 302 + i_bin, 1, 1);
112        book(_h["pTsum_tlow[3]"+to_str(i_bin)] , 310 + i_bin, 1, 1);
113        book(_h["pTsum_tlow[4]"+to_str(i_bin)] , 318 + i_bin, 1, 1);
114        book(_h["pTmean_tlow[0]"+to_str(i_bin)] , 326 + i_bin, 1, 1);
115        book(_h["pTmean_tlow[1]"+to_str(i_bin)] , 334 + i_bin, 1, 1);
116        book(_h["pTmean_tlow[2]"+to_str(i_bin)] , 342 + i_bin, 1, 1);
117        book(_h["pTmean_tlow[3]"+to_str(i_bin)] , 350 + i_bin, 1, 1);
118        book(_h["pTmean_tlow[4]"+to_str(i_bin)] , 358 + i_bin, 1, 1);
119        book(_h["pT_thi[0]"+to_str(i_bin)] , 366 + i_bin, 1, 1);
120        book(_h["pT_thi[1]"+to_str(i_bin)] , 374 + i_bin, 1, 1);
121        book(_h["pT_thi[2]"+to_str(i_bin)] , 382 + i_bin, 1, 1);
122        book(_h["pT_thi[3]"+to_str(i_bin)] , 390 + i_bin, 1, 1);
123        book(_h["pT_thi[4]"+to_str(i_bin)] , 398 + i_bin, 1, 1);
124        book(_h["nch_thi[0]"+to_str(i_bin)] , 406 + i_bin, 1, 1);
125        book(_h["nch_thi[1]"+to_str(i_bin)] , 414 + i_bin, 1, 1);
126        book(_h["nch_thi[2]"+to_str(i_bin)] , 422 + i_bin, 1, 1);
127        book(_h["nch_thi[3]"+to_str(i_bin)] , 430 + i_bin, 1, 1);
128        book(_h["nch_thi[4]"+to_str(i_bin)] , 438 + i_bin, 1, 1);
129        book(_h["pTsum_thi[0]"+to_str(i_bin)] , 446 + i_bin, 1, 1);
130        book(_h["pTsum_thi[1]"+to_str(i_bin)] , 454 + i_bin, 1, 1);
131        book(_h["pTsum_thi[2]"+to_str(i_bin)] , 462 + i_bin, 1, 1);
132        book(_h["pTsum_thi[3]"+to_str(i_bin)] , 470 + i_bin, 1, 1);
133        book(_h["pTsum_thi[4]"+to_str(i_bin)] , 478 + i_bin, 1, 1);
134        book(_h["pTmean_thi[0]"+to_str(i_bin)] , 486 + i_bin, 1, 1);
135        book(_h["pTmean_thi[1]"+to_str(i_bin)] , 494 + i_bin, 1, 1);
136        book(_h["pTmean_thi[2]"+to_str(i_bin)] , 502 + i_bin, 1, 1);
137        book(_h["pTmean_thi[3]"+to_str(i_bin)] , 510 + i_bin, 1, 1);
138        book(_h["pTmean_thi[4]"+to_str(i_bin)] , 518 + i_bin, 1, 1);
139        }
140
141    }
142
143
144 // Perform the per-event analysis
145    void analyze(const Event& event) {
146
147      const double area = 5.*2./3.*M_PI;
148      const DileptonFinder& zfinder = apply<DileptonFinder>(event, "DileptonFinder");
149
150      if (zfinder.bosons().size() != 1) vetoEvent;
151      double  Zpt   = zfinder.bosons()[0].momentum().pT()/GeV;
152      double  Zphi  = zfinder.bosons()[0].momentum().phi();
153
154     // Determine Zpt region histo to fill
155
156      int i_bin(0);
157      if (inRange(Zpt,0,10)) i_bin=0;
158      if (inRange(Zpt,10,20)) i_bin=1;
159      if (inRange(Zpt,20,40)) i_bin=2;
160      if (inRange(Zpt,40,60)) i_bin=3;
161      if (inRange(Zpt,60,80)) i_bin=4;
162      if (inRange(Zpt,80,120)) i_bin=5;
163      if (inRange(Zpt,120,200)) i_bin=6;
164      if (Zpt>200) i_bin=7;
165
166
167      // Initialization
168      int nTow(0), nTrans(0), nTransmin(0), nTransmax(0), nAway(0), nLeft(0), nRight(0);
169      double pTsumTow(0.0), pTsumTrans(0.0), pTsumTransmin(0.0), pTsumTransmax(0.0), pTsumAway(0.0), pTsumLeft(0.0), pTsumRight(0.0);
170    //  double pTmeanTow(0.0), pTmeanTrans(0.0), pTmeanTransmin(0.0), pTmeanTransmax(0.0), pTmeanAway(0.0);
171      std::vector<double> leftpt;
172      std::vector<double> rightpt;
173
174      const Cut& pcut = ( (Cuts::abspid != PID::SIGMAMINUS) && (Cuts::abspid != PID::SIGMAPLUS) &&
175                          (Cuts::abspid != PID::XIMINUS)    && (Cuts::abspid != PID::OMEGAMINUS) );
176
177      Particles particles = apply<ChargedFinalState>(event, "cfs").particlesByPt(Cuts::pT > 0.5*GeV && Cuts::abseta <2.5 && pcut);
178
179
180    //Calculate thrust
181      vector<Vector3> momenta;
182      for(const Particle& p : particles) {
183          Vector3 mom = p.momentum().vector3();
184           mom.setZ(0.0);
185           momenta.push_back(mom);
186           }
187
188       if (momenta.size() == 2) {
189          momenta.push_back(Vector3(1e-10*MeV, 0., 0.));
190        }
191
192       Thrust thrustC;
193       thrustC.calc(momenta);
194       double thrust = thrustC.thrust();
195
196      // Loop over charged particles
197
198        for(const Particle& p : particles) {
199              double dphi = p.momentum().phi() - Zphi;
200              double pT   = p.momentum().pT();
201              for(; std::fabs(dphi) > M_PI; dphi += (dphi > 0. ? -2.*M_PI : 2.*M_PI) );
202
203        // Towards region
204        if( std::fabs(dphi) < M_PI/3. ) {
205          nTow++;
206          pTsumTow += pT;
207          _h["pT[0]"+to_str(i_bin)]->fill(pT);
208          if(thrust < 0.75) _h["pT_tlow[0]"+to_str(i_bin)]->fill(pT);
209          if(thrust > 0.75) _h["pT_thi[0]"+to_str(i_bin)]->fill(pT);
210        }
211
212
213        // Transverse region
214        else if( std::fabs(dphi) < 2.*M_PI/3. ) {
215          nTrans++;
216          pTsumTrans += pT;
217          _h["pT[1]"+to_str(i_bin)]->fill(pT);
218          if(thrust < 0.75) _h["pT_tlow[1]"+to_str(i_bin)]->fill(pT);
219          if(thrust > 0.75) _h["pT_thi[1]"+to_str(i_bin)]->fill(pT);
220           if(dphi > 0.) {
221            nRight++;
222            pTsumRight += pT;
223            rightpt.push_back(pT);
224          }
225          else {
226            nLeft++;
227            pTsumLeft += pT;
228            leftpt.push_back(pT);
229          }
230
231        }
232
233
234        // Away region
235        else {
236          nAway++;
237          pTsumAway += pT;
238          _h["pT[4]"+to_str(i_bin)]->fill(pT);
239          if(thrust < 0.75) _h["pT_tlow[4]"+to_str(i_bin)]->fill(pT);
240          if(thrust > 0.75) _h["pT_thi[4]"+to_str(i_bin)]->fill(pT);
241        }
242     }
243
244     // TransMAX, TransMIN regions
245      if (pTsumLeft > pTsumRight) {
246        pTsumTransmax = pTsumLeft;
247        pTsumTransmin = pTsumRight;
248        nTransmax     = nLeft;
249        nTransmin     = nRight;
250
251         for (auto x: rightpt) {
252             _h["pT[2]"+to_str(i_bin)]->fill(x);
253            if(thrust < 0.75) _h["pT_tlow[2]"+to_str(i_bin)]->fill(x);
254            if(thrust > 0.75) _h["pT_thi[2]"+to_str(i_bin)]->fill(x);
255             }
256         for (auto x: rightpt) {
257            _h["pT[3]"+to_str(i_bin)]->fill(x);
258            if(thrust < 0.75) _h["pT_tlow[3]"+to_str(i_bin)]->fill(x);
259            if(thrust > 0.75) _h["pT_thi[3]"+to_str(i_bin)]->fill(x);
260             }
261       }
262
263      else {
264        pTsumTransmax = pTsumRight;
265        pTsumTransmin = pTsumLeft;
266        nTransmax     = nRight;
267        nTransmin     = nLeft;
268
269         for (auto x: leftpt) {
270             _h["pT[2]"+to_str(i_bin)]->fill(x);
271             if(thrust < 0.75) _h["pT_tlow[2]"+to_str(i_bin)]->fill(x);
272             if(thrust > 0.75) _h["pT_thi[2]"+to_str(i_bin)]->fill(x);
273             }
274
275         for (auto x: leftpt) {
276             _h["pT[3]"+to_str(i_bin)]->fill(x);
277            if(thrust < 0.75) _h["pT_tlow[3]"+to_str(i_bin)]->fill(x);
278            if(thrust > 0.75) _h["pT_thi[3]"+to_str(i_bin)]->fill(x);
279             }
280      }
281
282     // Fill rest of the histogtams
283
284
285      _p["pTsum_tow_zpt"]->fill(Zpt, pTsumTow/area);
286      _p["pTsum_trv_zpt"]->fill(Zpt, pTsumTrans/area);
287      _p["pTsum_away_zpt"]->fill(Zpt, pTsumAway/area);
288      _p["pTsum_tmin_zpt"]->fill(Zpt, pTsumTransmin/(0.5*area));
289      _p["pTsum_tmax_zpt"]->fill(Zpt, pTsumTransmax/(0.5*area));
290      _p["nch_tow_zpt"]->fill(Zpt, nTow/area);
291      _p["nch_trv_zpt"]->fill(Zpt, nTrans/area);
292      _p["nch_away_zpt"]->fill(Zpt, nAway/area);
293      _p["nch_tmin_zpt"]->fill(Zpt, nTransmin/(0.5*area));
294      _p["nch_tmax_zpt"]->fill(Zpt, nTransmax/(0.5*area));
295
296       if(nTow > 0)_p["pTmean_tow_zpt"]->fill(Zpt, pTsumTow/nTow);
297       if(nTrans > 0)_p["pTmean_trv_zpt"]->fill(Zpt, pTsumTrans/nTrans);
298       if(nAway > 0)_p["pTmean_away_zpt"]->fill(Zpt, pTsumAway/nAway);
299       if(nTransmin > 0)_p["pTmean_tmin_zpt"]->fill(Zpt, pTsumTransmin/nTransmin);
300       if(nTransmax > 0)_p["pTmean_tmax_zpt"]->fill(Zpt, pTsumTransmax/nTransmax);
301
302      if(thrust < 0.75){
303       _p["pTsum_tow_zpt_tlow"]->fill(Zpt, pTsumTow/area);
304       _p["pTsum_trv_zpt_tlow"]->fill(Zpt, pTsumTrans/area);
305       _p["pTsum_away_zpt_tlow"]->fill(Zpt, pTsumAway/area);
306       _p["pTsum_tmin_zpt_tlow"]->fill(Zpt, pTsumTransmin/(0.5*area));
307       _p["pTsum_tmax_zpt_tlow"]->fill(Zpt, pTsumTransmax/(0.5*area));
308       _p["nch_tow_zpt_tlow"]->fill(Zpt, nTow/area);
309       _p["nch_trv_zpt_tlow"]->fill(Zpt, nTrans/area);
310       _p["nch_away_zpt_tlow"]->fill(Zpt, nAway/area);
311       _p["nch_tmin_zpt_tlow"]->fill(Zpt, nTransmin/(0.5*area));
312       _p["nch_tmax_zpt_tlow"]->fill(Zpt, nTransmax/(0.5*area));
313
314        if(nTow > 0)_p["pTmean_tow_zpt_tlow"]->fill(Zpt, pTsumTow/nTow);
315        if(nTrans > 0)_p["pTmean_trv_zpt_tlow"]->fill(Zpt, pTsumTrans/nTrans);
316        if(nAway > 0)_p["pTmean_away_zpt_tlow"]->fill(Zpt, pTsumAway/nAway);
317        if(nTransmin > 0)_p["pTmean_tmin_zpt_tlow"]->fill(Zpt, pTsumTransmin/nTransmin);
318        if(nTransmax > 0)_p["pTmean_tmax_zpt_tlow"]->fill(Zpt, pTsumTransmax/nTransmax);
319      }
320
321     if(thrust > 0.75){
322        _p["pTsum_tow_zpt_thi"]->fill(Zpt, pTsumTow/area);
323        _p["pTsum_trv_zpt_thi"]->fill(Zpt, pTsumTrans/area);
324        _p["pTsum_away_zpt_thi"]->fill(Zpt, pTsumAway/area);
325        _p["pTsum_tmin_zpt_thi"]->fill(Zpt, pTsumTransmin/(0.5*area));
326        _p["pTsum_tmax_zpt_thi"]->fill(Zpt, pTsumTransmax/(0.5*area));
327        _p["nch_tow_zpt_thi"]->fill(Zpt, nTow/area);
328        _p["nch_trv_zpt_thi"]->fill(Zpt, nTrans/area);
329        _p["nch_away_zpt_thi"]->fill(Zpt, nAway/area);
330        _p["nch_tmin_zpt_thi"]->fill(Zpt, nTransmin/(0.5*area));
331        _p["nch_tmax_zpt_thi"]->fill(Zpt, nTransmax/(0.5*area));
332
333        if(nTow > 0)_p["pTmean_tow_zpt_thi"]->fill(Zpt, pTsumTow/nTow);
334        if(nTrans > 0)_p["pTmean_trv_zpt_thi"]->fill(Zpt, pTsumTrans/nTrans);
335        if(nAway > 0)_p["pTmean_away_zpt_thi"]->fill(Zpt, pTsumAway/nAway);
336        if(nTransmin > 0)_p["pTmean_tmin_zpt_thi"]->fill(Zpt, pTsumTransmin/nTransmin);
337        if(nTransmax > 0)_p["pTmean_tmax_zpt_thi"]->fill(Zpt, pTsumTransmax/nTransmax);
338
339      }
340
341      _h["nch[0]"+to_str(i_bin)]->fill(nTow/area);
342      _h["nch[1]"+to_str(i_bin)]->fill(nTrans/area);
343      _h["nch[4]"+to_str(i_bin)]->fill(nAway/area);
344      _h["nch[2]"+to_str(i_bin)]->fill(nTransmin/(0.5*area));
345      _h["nch[3]"+to_str(i_bin)]->fill(nTransmax/(0.5*area));
346      _h["pTsum[0]"+to_str(i_bin)]->fill(pTsumTow/area);
347      _h["pTsum[1]"+to_str(i_bin)]->fill(pTsumTrans/area);
348      _h["pTsum[4]"+to_str(i_bin)]->fill(pTsumAway/area);
349      _h["pTsum[2]"+to_str(i_bin)]->fill(pTsumTransmin/(0.5*area));
350      _h["pTsum[3]"+to_str(i_bin)]->fill(pTsumTransmax/(0.5*area));
351
352       if(nTow > 0) _h["pTmean[0]"+to_str(i_bin)]->fill(pTsumTow/nTow);
353       if(nTrans > 0)_h["pTmean[1]"+to_str(i_bin)]->fill(pTsumTrans/nTrans);
354       if(nAway > 0)_h["pTmean[4]"+to_str(i_bin)]->fill(pTsumAway/nAway);
355       if(nTransmin > 0)_h["pTmean[2]"+to_str(i_bin)]->fill(pTsumTransmin/nTransmin);
356       if(nTransmax > 0)_h["pTmean[3]"+to_str(i_bin)]->fill(pTsumTransmax/nTransmax);
357
358       if(thrust < 0.75){
359       _h["nch_tlow[0]"+to_str(i_bin)]->fill(nTow/area);
360       _h["nch_tlow[1]"+to_str(i_bin)]->fill(nTrans/area);
361       _h["nch_tlow[4]"+to_str(i_bin)]->fill(nAway/area);
362       _h["nch_tlow[2]"+to_str(i_bin)]->fill(nTransmin/(0.5*area));
363       _h["nch_tlow[3]"+to_str(i_bin)]->fill(nTransmax/(0.5*area));
364       _h["pTsum_tlow[0]"+to_str(i_bin)]->fill(pTsumTow/area);
365       _h["pTsum_tlow[1]"+to_str(i_bin)]->fill(pTsumTrans/area);
366       _h["pTsum_tlow[4]"+to_str(i_bin)]->fill(pTsumAway/area);
367       _h["pTsum_tlow[2]"+to_str(i_bin)]->fill(pTsumTransmin/(0.5*area));
368       _h["pTsum_tlow[3]"+to_str(i_bin)]->fill(pTsumTransmax/(0.5*area));
369
370       if(nTow > 0) _h["pTmean_tlow[0]"+to_str(i_bin)]->fill(pTsumTow/nTow);
371       if(nTrans > 0)_h["pTmean_tlow[1]"+to_str(i_bin)]->fill(pTsumTrans/nTrans);
372       if(nAway > 0)_h["pTmean_tlow[4]"+to_str(i_bin)]->fill(pTsumAway/nAway);
373       if(nTransmin > 0)_h["pTmean_tlow[2]"+to_str(i_bin)]->fill(pTsumTransmin/nTransmin);
374       if(nTransmax > 0)_h["pTmean_tlow[3]"+to_str(i_bin)]->fill(pTsumTransmax/nTransmax);
375      }
376
377      if(thrust > 0.75){
378       _h["nch_thi[0]"+to_str(i_bin)]->fill(nTow/area);
379       _h["nch_thi[1]"+to_str(i_bin)]->fill(nTrans/area);
380       _h["nch_thi[4]"+to_str(i_bin)]->fill(nAway/area);
381       _h["nch_thi[2]"+to_str(i_bin)]->fill(nTransmin/(0.5*area));
382       _h["nch_thi[3]"+to_str(i_bin)]->fill(nTransmax/(0.5*area));
383       _h["pTsum_thi[0]"+to_str(i_bin)]->fill(pTsumTow/area);
384       _h["pTsum_thi[1]"+to_str(i_bin)]->fill(pTsumTrans/area);
385       _h["pTsum_thi[4]"+to_str(i_bin)]->fill(pTsumAway/area);
386       _h["pTsum_thi[2]"+to_str(i_bin)]->fill(pTsumTransmin/(0.5*area));
387       _h["pTsum_thi[3]"+to_str(i_bin)]->fill(pTsumTransmax/(0.5*area));
388
389       if(nTow > 0) _h["pTmean_thi[0]"+to_str(i_bin)]->fill(pTsumTow/nTow);
390       if(nTrans > 0)_h["pTmean_thi[1]"+to_str(i_bin)]->fill(pTsumTrans/nTrans);
391       if(nAway > 0)_h["pTmean_thi[4]"+to_str(i_bin)]->fill(pTsumAway/nAway);
392       if(nTransmin > 0)_h["pTmean_thi[2]"+to_str(i_bin)]->fill(pTsumTransmin/nTransmin);
393       if(nTransmax > 0)_h["pTmean_thi[3]"+to_str(i_bin)]->fill(pTsumTransmax/nTransmax);
394      }
395
396  }
397
398
399 void finalize() {
400
401   normalize(_h);
402
403 }
404
405  private:
406    map<string, Histo1DPtr> _h;
407    map<string, Profile1DPtr> _p;
408  };
409
410  RIVET_DECLARE_PLUGIN(ATLAS_2019_I1736531);
411
412}