Page MenuHomeHEPForge

No OneTemporary

diff --git a/analyses/pluginATLAS/ATLAS_2014_I1315949.cc b/analyses/pluginATLAS/ATLAS_2014_I1315949.cc
--- a/analyses/pluginATLAS/ATLAS_2014_I1315949.cc
+++ b/analyses/pluginATLAS/ATLAS_2014_I1315949.cc
@@ -1,228 +1,228 @@
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/ZFinder.hh"
namespace Rivet {
class ATLAS_2014_I1315949 : public Analysis {
public:
/// Constructor
DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2014_I1315949);
void init() {
FinalState fs;
ZFinder zfinder(fs, Cuts::abseta<2.4 && Cuts::pT>20.0*GeV, PID::MUON, 66*GeV, 116*GeV, 0.1, ZFinder::CLUSTERNODECAY);
declare(zfinder, "ZFinder");
ChargedFinalState cfs( zfinder.remainingFinalState() );
declare(cfs, "cfs");
- _h_pTsum_tow = bookProfile1D( 79, 1, 1);
- _h_pTsum_trv = bookProfile1D( 80, 1, 1);
- _h_pTsum_away = bookProfile1D( 81, 1, 1);
- _h_pTsum_tmin = bookProfile1D( 82, 1, 1);
- _h_pTsum_tmax = bookProfile1D( 83, 1, 1);
- _h_pTsum_tdif = bookProfile1D(149, 1, 1);
+ _h_pTsum_tow = bookProfile1D( 67, 1, 1);
+ _h_pTsum_trv = bookProfile1D( 68, 1, 1);
+ _h_pTsum_away = bookProfile1D( 69, 1, 1);
+ _h_pTsum_tmin = bookProfile1D( 70, 1, 1);
+ _h_pTsum_tmax = bookProfile1D( 71, 1, 1);
+ _h_pTsum_tdif = bookProfile1D(125, 1, 1);
- _h_Nchg_tow = bookProfile1D( 84, 1, 1);
- _h_Nchg_trv = bookProfile1D( 85, 1, 1);
- _h_Nchg_away = bookProfile1D( 86, 1, 1);
- _h_Nchg_tmin = bookProfile1D( 87, 1, 1);
- _h_Nchg_tmax = bookProfile1D( 94, 1, 1);
- _h_Nchg_tdif = bookProfile1D(150, 1, 1);
+ _h_Nchg_tow = bookProfile1D( 70, 1, 1);
+ _h_Nchg_trv = bookProfile1D( 71, 1, 1);
+ _h_Nchg_away = bookProfile1D( 72, 1, 1);
+ _h_Nchg_tmin = bookProfile1D( 73, 1, 1);
+ _h_Nchg_tmax = bookProfile1D( 82, 1, 1);
+ _h_Nchg_tdif = bookProfile1D(126, 1, 1);
- _h_pTavg_tow = bookProfile1D(131, 1, 1);
- _h_pTavg_trv = bookProfile1D(132, 1, 1);
- _h_pTavg_away = bookProfile1D(133, 1, 1);
+ _h_pTavg_tow = bookProfile1D(113, 1, 1);
+ _h_pTavg_trv = bookProfile1D(114, 1, 1);
+ _h_pTavg_away = bookProfile1D(115, 1, 1);
- _h_pTavgvsmult_tow = bookProfile1D(140, 1, 1);
- _h_pTavgvsmult_trv = bookProfile1D(141, 1, 1);
- _h_pTavgvsmult_away = bookProfile1D(142, 1, 1);
+ _h_pTavgvsmult_tow = bookProfile1D(116, 1, 1);
+ _h_pTavgvsmult_trv = bookProfile1D(117, 1, 1);
+ _h_pTavgvsmult_away = bookProfile1D(118, 1, 1);
// Book sumpt and nch histos
for (size_t id = 0; id < 6.; ++id) {
- _h_ptSum_1D[0][id] = bookHisto1D( 88 + id, 1, 1);
- _h_ptSum_1D[1][id] = bookHisto1D(125 + id, 1, 1);
- _h_ptSum_1D[2][id] = bookHisto1D(143 + id, 1, 1);
- _h_ptSum_1D[3][id] = bookHisto1D(151 + id, 1, 1);
- _h_Nchg_1D[0][id] = bookHisto1D( 95 + id, 1, 1);
- _h_Nchg_1D[1][id] = bookHisto1D(101 + id, 1, 1);
- _h_Nchg_1D[2][id] = bookHisto1D(113 + id, 1, 1);
- _h_Nchg_1D[3][id] = bookHisto1D(119 + id, 1, 1);
+ _h_ptSum_1D[0][id] = bookHisto1D( 89 + id, 1, 1);
+ _h_ptSum_1D[1][id] = bookHisto1D(107 + id, 1, 1);
+ _h_ptSum_1D[2][id] = bookHisto1D(119 + id, 1, 1);
+ _h_ptSum_1D[3][id] = bookHisto1D(127 + id, 1, 1);
+ _h_Nchg_1D[0][id] = bookHisto1D( 83 + id, 1, 1);
+ _h_Nchg_1D[1][id] = bookHisto1D( 89 + id, 1, 1);
+ _h_Nchg_1D[2][id] = bookHisto1D( 95 + id, 1, 1);
+ _h_Nchg_1D[3][id] = bookHisto1D(101 + id, 1, 1);
}
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const double weight = event.weight();
const ZFinder& zfinder = apply<ZFinder>(event, "ZFinder");
if (zfinder.bosons().size() != 1) vetoEvent;
double Zpt = zfinder.bosons()[0].momentum().pT()/GeV;
double Zphi = zfinder.bosons()[0].momentum().phi();
double Zmass = zfinder.bosons()[0].momentum().mass()/GeV;
if(Zmass < 66. || Zmass > 116.) vetoEvent;
// Initialise counters for Nch and sumPt for all regions
int nTowards(0), nTransverse(0), nLeft(0), nRight(0), nTrmin(0), nTrmax(0), nAway(0);
double ptSumTowards(0.0), ptSumTransverse(0.0), ptSumLeft(0.0), ptSumRight(0.0),
ptSumTrmin(0.0), ptSumTrmax(0.0), ptSumAway(0.0);
// The charged particles
ParticleVector particles = apply<ChargedFinalState>(event, "cfs").particlesByPt(
Cuts::pT > 0.5*GeV && Cuts::abseta <2.5);
// Loop over charged particles with pT>500 MeV and |eta|<2.5
foreach(const Particle& p, particles) {
double dphi = p.momentum().phi() - Zphi,
pT = p.momentum().pT();
// Get multiples of 2pi right
for(; std::fabs(dphi) > M_PI; dphi += (dphi > 0. ? -2.*M_PI : 2.*M_PI) );
// Towards region
if( std::fabs(dphi) < M_PI/3. ) {
nTowards++;
ptSumTowards += pT;
}
// Transverse region
else if( std::fabs(dphi) < 2.*M_PI/3. ) {
nTransverse++;
ptSumTransverse += pT;
if(dphi > 0.) {
nRight++;
ptSumRight += pT;
}
else {
nLeft++;
ptSumLeft += pT;
}
}
// Away region
else {
nAway++;
ptSumAway += pT;
}
}
// TransMAX, TransMIN regions
if (ptSumLeft > ptSumRight) {
ptSumTrmax = ptSumLeft;
ptSumTrmin = ptSumRight;
nTrmax = nLeft;
nTrmin = nRight;
}
else {
ptSumTrmax = ptSumRight;
ptSumTrmin = ptSumLeft;
nTrmax = nRight;
nTrmin = nLeft;
}
// min max regions have difference are than all other regions
const double area = 5.*2./3.*M_PI;
// Fill sumPt vs. Zpt region profiles
_h_pTsum_tow->fill( Zpt, ptSumTowards/area, weight);
_h_pTsum_trv->fill( Zpt, ptSumTransverse/area, weight);
_h_pTsum_away->fill(Zpt, ptSumAway/area, weight);
_h_pTsum_tmin->fill(Zpt, ptSumTrmin/(0.5*area), weight);
_h_pTsum_tmax->fill(Zpt, ptSumTrmax/(0.5*area), weight);
_h_pTsum_tdif->fill(Zpt, (ptSumTrmax - ptSumTrmin)/(0.5*area), weight);
// Fill Nch vs. Zpt region profiles
_h_Nchg_tow->fill( Zpt, nTowards/area, weight);
_h_Nchg_trv->fill( Zpt, nTransverse/area, weight);
_h_Nchg_away->fill(Zpt, nAway/area, weight);
_h_Nchg_tmin->fill(Zpt, nTrmin/(0.5*area), weight);
_h_Nchg_tmax->fill(Zpt, nTrmax/(0.5*area), weight);
_h_Nchg_tdif->fill(Zpt, (nTrmax - nTrmin)/(0.5*area), weight);
// Fill <pT> vs. ZpT profiles
_h_pTavg_tow->fill( Zpt, nTowards > 0.? ptSumTowards/nTowards : 0., weight);
_h_pTavg_trv->fill( Zpt, nTransverse > 0.? ptSumTransverse/nTransverse : 0., weight);
_h_pTavg_away->fill(Zpt, nAway > 0.? ptSumAway/nAway : 0., weight);
// Fill <Nch> vs. ZpT profiles
_h_pTavgvsmult_tow->fill( nTowards, nTowards > 0.? ptSumTowards/nTowards : 0., weight);
_h_pTavgvsmult_trv->fill( nTransverse, nTransverse > 0.? ptSumTransverse/nTransverse : 0., weight);
_h_pTavgvsmult_away->fill(nAway, nAway > 0.? ptSumAway/nAway : 0., weight);
// Determine Zpt region histo to fill
int i_bin(0);
if (inRange(Zpt,0,5) ) i_bin=0;
if (inRange(Zpt,5,10) ) i_bin=1;
if (inRange(Zpt,10,20) ) i_bin=2;
if (inRange(Zpt,20,50) ) i_bin=3;
if (inRange(Zpt,50,110) ) i_bin=4;
if (Zpt>110) i_bin=5;
// SumPt histos for Zpt region
_h_ptSum_1D[0][i_bin]->fill(ptSumTowards/area, weight);
_h_ptSum_1D[1][i_bin]->fill(ptSumTransverse/area, weight);
_h_ptSum_1D[2][i_bin]->fill(ptSumTrmin/(0.5*area), weight);
_h_ptSum_1D[3][i_bin]->fill(ptSumTrmax/(0.5*area), weight);
// Nch histos for Zpt region
_h_Nchg_1D[0][i_bin]->fill(nTowards/area, weight);
_h_Nchg_1D[1][i_bin]->fill(nTransverse/area, weight);
_h_Nchg_1D[2][i_bin]->fill(nTrmin/(0.5*area), weight);
_h_Nchg_1D[3][i_bin]->fill(nTrmax/(0.5*area), weight);
}
/// Normalise histograms etc., after the run
void finalize() {
for(int i_reg = 0; i_reg < 4; i_reg++) {
for(int i_bin = 0; i_bin < 6; i_bin++) {
normalize( _h_ptSum_1D[i_reg][i_bin] );
normalize( _h_Nchg_1D[ i_reg][i_bin] );
}
}
}
private:
Profile1DPtr _h_pTsum_tow,
_h_pTsum_trv,
_h_pTsum_away,
_h_pTsum_tmin,
_h_pTsum_tmax,
_h_pTsum_tdif,
_h_Nchg_tow,
_h_Nchg_trv,
_h_Nchg_away,
_h_Nchg_tmin,
_h_Nchg_tmax,
_h_Nchg_tdif,
_h_pTavg_tow,
_h_pTavg_trv,
_h_pTavg_away,
_h_pTavgvsmult_tow,
_h_pTavgvsmult_trv,
_h_pTavgvsmult_away;
Histo1DPtr _h_ptSum_1D[4][6], _h_Nchg_1D[4][6];
};
// This global object acts as a hook for the plugin system
DECLARE_RIVET_PLUGIN(ATLAS_2014_I1315949);
}
diff --git a/analyses/pluginATLAS/ATLAS_2014_I1315949.plot b/analyses/pluginATLAS/ATLAS_2014_I1315949.plot
--- a/analyses/pluginATLAS/ATLAS_2014_I1315949.plot
+++ b/analyses/pluginATLAS/ATLAS_2014_I1315949.plot
@@ -1,719 +1,719 @@
# BEGIN PLOT /ATLAS_2014_I1315949/*
LegendYPos=0.3
LegendXPos=0.3
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d79
+# BEGIN PLOT /ATLAS_2014_I1315949/d67
Title=Toward region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2\sum p_\text{T} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d84
+# BEGIN PLOT /ATLAS_2014_I1315949/d72
Title=Toward region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2 N_\text{ch} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d131
+# BEGIN PLOT /ATLAS_2014_I1315949/d113
Title=Toward region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle$ mean $p_\text{T}\rangle$~[GeV]
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d140
+# BEGIN PLOT /ATLAS_2014_I1315949/d116
Title=Toward region, dressed level
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
XLabel=$N_\text{ch}$
YLabel=$\langle$ mean $p_\text{T}\rangle$~[GeV]
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d80
+# BEGIN PLOT /ATLAS_2014_I1315949/d68
Title=Transverse region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2\sum p_\text{T} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d85
+# BEGIN PLOT /ATLAS_2014_I1315949/d73
Title=Transverse region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2 N_\text{ch} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d132
+# BEGIN PLOT /ATLAS_2014_I1315949/d114
Title=Transverse region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle$ mean $p_\text{T}\rangle$~[GeV]
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d141
+# BEGIN PLOT /ATLAS_2014_I1315949/d117
Title=Transverse region, dressed level
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
XLabel=$N_\text{ch}$
YLabel=$\langle$ mean $p_\text{T}\rangle$~[GeV]
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d81
+# BEGIN PLOT /ATLAS_2014_I1315949/d69
Title=Away region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2\sum p_\text{T} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d86
+# BEGIN PLOT /ATLAS_2014_I1315949/d74
Title=Away region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2 N_\text{ch} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d133
+# BEGIN PLOT /ATLAS_2014_I1315949/d115
Title=Away region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle$ mean $p_\text{T}\rangle$~[GeV]
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d142
+# BEGIN PLOT /ATLAS_2014_I1315949/d118
Title=Away region, dressed level
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
XLabel=$N_\text{ch}$
YLabel=$\langle$ mean $p_\text{T}\rangle$~[GeV]
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d82
+# BEGIN PLOT /ATLAS_2014_I1315949/d70
Title=Trans-min region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2\sum p_\text{T} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d87
+# BEGIN PLOT /ATLAS_2014_I1315949/d75
Title=Trans-min region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2 N_\text{ch} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d83
+# BEGIN PLOT /ATLAS_2014_I1315949/d71
Title=Trans-max region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2\sum p_\text{T} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d94
+# BEGIN PLOT /ATLAS_2014_I1315949/d82
Title=Trans-max region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2 N_\text{ch} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d149
+# BEGIN PLOT /ATLAS_2014_I1315949/d125
Title=Trans-diff region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2\sum p_\text{T} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d150
+# BEGIN PLOT /ATLAS_2014_I1315949/d126
Title=Trans-diff region, dressed level
XLabel=$p_\text{T}^Z$~[GeV]
LogY=0
RatioPlotYMax=1.25
RatioPlotYMin=0.6
YLabel=$\langle\text{d}^2 N_\text{ch} / \text{d}\eta\text{d}\phi\rangle$
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d88
+# BEGIN PLOT /ATLAS_2014_I1315949/d76
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Toward region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d89
+# BEGIN PLOT /ATLAS_2014_I1315949/d77
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Toward region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d90
+# BEGIN PLOT /ATLAS_2014_I1315949/d78
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Toward region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d91
+# BEGIN PLOT /ATLAS_2014_I1315949/d79
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Toward region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d92
+# BEGIN PLOT /ATLAS_2014_I1315949/d80
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Toward region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d93
+# BEGIN PLOT /ATLAS_2014_I1315949/d81
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Toward region, $p_\text{T}^Z > 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d125
+# BEGIN PLOT /ATLAS_2014_I1315949/d107
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Transverse region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d126
+# BEGIN PLOT /ATLAS_2014_I1315949/d108
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Transverse region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d127
+# BEGIN PLOT /ATLAS_2014_I1315949/d109
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Transverse region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d128
+# BEGIN PLOT /ATLAS_2014_I1315949/d110
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Transverse region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d129
+# BEGIN PLOT /ATLAS_2014_I1315949/d111
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Transverse region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d130
+# BEGIN PLOT /ATLAS_2014_I1315949/d112
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Transverse region, $p_\text{T}^Z > 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d143
+# BEGIN PLOT /ATLAS_2014_I1315949/d119
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Trans-min region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d144
+# BEGIN PLOT /ATLAS_2014_I1315949/d120
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Trans-min region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d145
+# BEGIN PLOT /ATLAS_2014_I1315949/d121
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Trans-min region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d146
+# BEGIN PLOT /ATLAS_2014_I1315949/d122
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Trans-min region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d147
+# BEGIN PLOT /ATLAS_2014_I1315949/d123
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Trans-min region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d148
+# BEGIN PLOT /ATLAS_2014_I1315949/d124
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Trans-min region, $p_\text{T}^Z > 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d151
+# BEGIN PLOT /ATLAS_2014_I1315949/d127
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Trans-max region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d152
+# BEGIN PLOT /ATLAS_2014_I1315949/d128
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title=Trans-max region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d153
+# BEGIN PLOT /ATLAS_2014_I1315949/d129
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Trans-max region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d154
+# BEGIN PLOT /ATLAS_2014_I1315949/d130
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Trans-max region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d155
+# BEGIN PLOT /ATLAS_2014_I1315949/d131
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Trans-max region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d156
+# BEGIN PLOT /ATLAS_2014_I1315949/d132
LogX=1
LogY=1
LeftMargin=1.8
YLabelSep=7.0
XMin=0.048
XMax=20.0
RatioPlotYMin=0.25
XLabel=$\sum p_\text{T} / \delta\eta\delta\phi$ [GeV]
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}\sum p_\text{T} / \delta\eta\delta\phi}$
Title= Trans-max region, $p_\text{T}^Z > 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d95
+# BEGIN PLOT /ATLAS_2014_I1315949/d83
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Toward region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d96
+# BEGIN PLOT /ATLAS_2014_I1315949/d84
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Toward region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d97
+# BEGIN PLOT /ATLAS_2014_I1315949/d85
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Toward region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d98
+# BEGIN PLOT /ATLAS_2014_I1315949/d86
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Toward region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d99
+# BEGIN PLOT /ATLAS_2014_I1315949/d87
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Toward region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d100
+# BEGIN PLOT /ATLAS_2014_I1315949/d88
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Toward region, $p_\text{T}^Z > 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d101
+# BEGIN PLOT /ATLAS_2014_I1315949/d89
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Transverse region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d102
+# BEGIN PLOT /ATLAS_2014_I1315949/d90
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Transverse region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d103
+# BEGIN PLOT /ATLAS_2014_I1315949/d91
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Transverse region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d104
+# BEGIN PLOT /ATLAS_2014_I1315949/d92
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Transverse region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d105
+# BEGIN PLOT /ATLAS_2014_I1315949/d93
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Transverse region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d106
+# BEGIN PLOT /ATLAS_2014_I1315949/d94
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Transverse region, $p_\text{T}^Z > 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d113
+# BEGIN PLOT /ATLAS_2014_I1315949/d95
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Trans-min region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d114
+# BEGIN PLOT /ATLAS_2014_I1315949/d96
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Trans-min region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d115
+# BEGIN PLOT /ATLAS_2014_I1315949/d97
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Trans-min region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d116
+# BEGIN PLOT /ATLAS_2014_I1315949/d98
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Trans-min region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d117
+# BEGIN PLOT /ATLAS_2014_I1315949/d99
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Trans-min region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d118
+# BEGIN PLOT /ATLAS_2014_I1315949/d100
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Trans-min region, $p_\text{T}^Z > 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d119
+# BEGIN PLOT /ATLAS_2014_I1315949/d101
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Trans-max region, $p_\text{T}^Z < 5$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d120
+# BEGIN PLOT /ATLAS_2014_I1315949/d102
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title=Trans-max region, 5 $\text{GeV} < p_\text{T}^Z < 10$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d121
+# BEGIN PLOT /ATLAS_2014_I1315949/d103
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Trans-max region, 10 $\text{GeV} < p_\text{T}^Z < 20$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d122
+# BEGIN PLOT /ATLAS_2014_I1315949/d104
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Trans-max region, 20 $\text{GeV} < p_\text{T}^Z < 50$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d123
+# BEGIN PLOT /ATLAS_2014_I1315949/d105
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Trans-max region, 50 $\text{GeV} < p_\text{T}^Z < 110$ GeV
# END PLOT
-# BEGIN PLOT /ATLAS_2014_I1315949/d124
+# BEGIN PLOT /ATLAS_2014_I1315949/d106
LogY=1
LeftMargin=1.8
XMin=0.
XMax=5
XLabel=$N_\text{ch} / \delta\eta\delta\phi$
YLabel=$\dfrac{1}{N_{ev}} \dfrac{\text{d}N_{ev}}{\text{d}N_\text{ch} / \delta\eta\delta\phi}$
Title= Trans-max region, $p_\text{T}^Z > 110$ GeV
# END PLOT
diff --git a/include/Rivet/Tools/SmearingFunctions.hh b/include/Rivet/Tools/SmearingFunctions.hh
--- a/include/Rivet/Tools/SmearingFunctions.hh
+++ b/include/Rivet/Tools/SmearingFunctions.hh
@@ -1,741 +1,741 @@
// -*- C++ -*-
#ifndef RIVET_SmearingFunctions_HH
#define RIVET_SmearingFunctions_HH
#include "Rivet/Tools/MomentumSmearingFunctions.hh"
#include "Rivet/Tools/ParticleSmearingFunctions.hh"
#include "Rivet/Tools/JetSmearingFunctions.hh"
namespace Rivet {
/// @name Electron efficiency and smearing functions
//@{
/// ATLAS Run 1 electron reconstruction efficiency
/// @todo Include reco eff (but no e/y discrimination) in forward region
/// @todo How to use this in combination with tracking eff?
inline double ELECTRON_EFF_ATLAS_RUN1(const Particle& e) {
if (e.abseta() > 2.5) return 0;
if (e.pT() < 10*GeV) return 0;
return (e.abseta() < 1.5) ? 0.95 : 0.85;
}
/// ATLAS Run 2 electron reco efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double ELECTRON_EFF_ATLAS_RUN2(const Particle& e) {
return ELECTRON_EFF_ATLAS_RUN1(e);
}
/// @brief ATLAS Run 2 'loose' electron identification/selection efficiency
///
/// Values read from Fig 3 of ATL-PHYS-PUB-2015-041
/// @todo What about faking by jets or non-electrons?
inline double ELECTRON_IDEFF_ATLAS_RUN2_LOOSE(const Particle& e) {
// Manually symmetrised eta eff histogram
const static vector<double> edges_eta = { 0.0, 0.1, 0.8, 1.37, 1.52, 2.01, 2.37, 2.47 };
const static vector<double> effs_eta = { 0.950, 0.965, 0.955, 0.885, 0.950, 0.935, 0.90 };
// Et eff histogram (10-20 is a guess)
const static vector<double> edges_et = { 0, 10, 20, 25, 30, 35, 40, 45, 50, 60, 80 };
const static vector<double> effs_et = { 0.0, 0.90, 0.91, 0.92, 0.94, 0.95, 0.955, 0.965, 0.97, 0.98 };
if (e.abseta() > 2.47) return 0.0; // no ID outside the tracker
const int i_eta = binIndex(e.abseta(), edges_eta);
const int i_et = binIndex(e.Et()/GeV, edges_et, true);
const double eff = effs_et[i_et] * effs_eta[i_eta] / 0.95; //< norm factor as approximate double differential
return min(eff, 1.0);
}
/// @brief ATLAS Run 1 'medium' electron identification/selection efficiency
inline double ELECTRON_IDEFF_ATLAS_RUN1_MEDIUM(const Particle& e) {
const static vector<double> eta_edges_10 = {0.000, 0.049, 0.454, 1.107, 1.46, 1.790, 2.277, 2.500};
const static vector<double> eta_vals_10 = {0.730, 0.757, 0.780, 0.771, 0.77, 0.777, 0.778};
const static vector<double> eta_edges_15 = {0.000, 0.053, 0.456, 1.102, 1.463, 1.783, 2.263, 2.500};
const static vector<double> eta_vals_15 = {0.780, 0.800, 0.819, 0.759, 0.749, 0.813, 0.829};
const static vector<double> eta_edges_20 = {0.000, 0.065, 0.362, 0.719, 0.980, 1.289, 1.455, 1.681, 1.942, 2.239, 2.452, 2.500};
const static vector<double> eta_vals_20 = {0.794, 0.806, 0.816, 0.806, 0.797, 0.774, 0.764, 0.788, 0.793, 0.806, 0.825};
const static vector<double> eta_edges_25 = {0.000, 0.077, 0.338, 0.742, 1.004, 1.265, 1.467, 1.692, 1.940, 2.227, 2.452, 2.500};
const static vector<double> eta_vals_25 = {0.833, 0.843, 0.853, 0.845, 0.839, 0.804, 0.790, 0.825, 0.830, 0.833, 0.839};
const static vector<double> eta_edges_30 = {0.000, 0.077, 0.350, 0.707, 0.980, 1.289, 1.479, 1.681, 1.942, 2.239, 2.441, 2.500};
const static vector<double> eta_vals_30 = {0.863, 0.872, 0.881, 0.874, 0.870, 0.824, 0.808, 0.847, 0.845, 0.840, 0.842};
const static vector<double> eta_edges_35 = {0.000, 0.058, 0.344, 0.700, 1.009, 1.270, 1.458, 1.685, 1.935, 2.231, 2.468, 2.500};
const static vector<double> eta_vals_35 = {0.878, 0.889, 0.901, 0.895, 0.893, 0.849, 0.835, 0.868, 0.863, 0.845, 0.832};
const static vector<double> eta_edges_40 = {0.000, 0.047, 0.355, 0.699, 0.983, 1.280, 1.446, 1.694, 1.943, 2.227, 2.441, 2.500};
const static vector<double> eta_vals_40 = {0.894, 0.901, 0.909, 0.905, 0.904, 0.875, 0.868, 0.889, 0.876, 0.848, 0.827};
const static vector<double> eta_edges_45 = {0.000, 0.058, 0.356, 0.712, 0.997, 1.282, 1.459, 1.686, 1.935, 2.220, 2.444, 2.500};
const static vector<double> eta_vals_45 = {0.900, 0.911, 0.923, 0.918, 0.917, 0.897, 0.891, 0.904, 0.894, 0.843, 0.796};
const static vector<double> eta_edges_50 = {0.000, 0.059, 0.355, 0.711, 0.983, 1.280, 1.469, 1.682, 1.919, 2.227, 2.441, 2.500};
const static vector<double> eta_vals_50 = {0.903, 0.913, 0.923, 0.922, 0.923, 0.903, 0.898, 0.908, 0.895, 0.831, 0.774};
const static vector<double> eta_edges_60 = {0.000, 0.053, 0.351, 0.720, 1.006, 1.291, 1.469, 1.696, 1.946, 2.243, 2.455, 2.500};
const static vector<double> eta_vals_60 = {0.903, 0.917, 0.928, 0.924, 0.927, 0.915, 0.911, 0.915, 0.899, 0.827, 0.760};
const static vector<double> eta_edges_80 = {0.000, 0.053, 0.351, 0.720, 0.994, 1.292, 1.482, 1.708, 1.934, 2.220, 2.458, 2.500};
const static vector<double> eta_vals_80 = {0.936, 0.942, 0.952, 0.956, 0.956, 0.934, 0.931, 0.944, 0.933, 0.940, 0.948};
const static vector<double> et_edges = { 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 80 };
const static vector< vector<double> > et_eta_edges = { eta_edges_10, eta_edges_15, eta_edges_20, eta_edges_25, eta_edges_30, eta_edges_35, eta_edges_40, eta_edges_45, eta_edges_50, eta_edges_60, eta_edges_80 };
const static vector< vector<double> > et_eta_vals = { eta_vals_10, eta_vals_15, eta_vals_20, eta_vals_25, eta_vals_30, eta_vals_35, eta_vals_40, eta_vals_45, eta_vals_50, eta_vals_60, eta_vals_80 };
if (e.abseta() > 2.5 || e.Et() < 10*GeV) return 0.0;
const int i_et = binIndex(e.Et()/GeV, et_edges, true);
const int i_eta = binIndex(e.abseta(), et_eta_edges[i_et]);
return et_eta_vals[i_et][i_eta];
}
/// @brief ATLAS Run 2 'medium' electron identification/selection efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double ELECTRON_IDEFF_ATLAS_RUN2_MEDIUM(const Particle& e) {
return ELECTRON_IDEFF_ATLAS_RUN1_MEDIUM(e);
}
/// @brief ATLAS Run 1 'tight' electron identification/selection efficiency
inline double ELECTRON_IDEFF_ATLAS_RUN1_TIGHT(const Particle& e) {
const static vector<double> eta_edges_10 = {0.000, 0.049, 0.459, 1.100, 1.461, 1.789, 2.270, 2.500};
const static vector<double> eta_vals_10 = {0.581, 0.632, 0.668, 0.558, 0.548, 0.662, 0.690};
const static vector<double> eta_edges_15 = {0.000, 0.053, 0.450, 1.096, 1.463, 1.783, 2.269, 2.500};
const static vector<double> eta_vals_15 = {0.630, 0.678, 0.714, 0.633, 0.616, 0.700, 0.733};
const static vector<double> eta_edges_20 = {0.000, 0.065, 0.362, 0.719, 0.992, 1.277, 1.479, 1.692, 1.930, 2.227, 2.464, 2.500};
const static vector<double> eta_vals_20 = {0.653, 0.695, 0.735, 0.714, 0.688, 0.635, 0.625, 0.655, 0.680, 0.691, 0.674};
const static vector<double> eta_edges_25 = {0.000, 0.077, 0.362, 0.719, 0.992, 1.300, 1.479, 1.692, 1.942, 2.227, 2.464, 2.500};
const static vector<double> eta_vals_25 = {0.692, 0.732, 0.768, 0.750, 0.726, 0.677, 0.667, 0.692, 0.710, 0.706, 0.679};
const static vector<double> eta_edges_30 = {0.000, 0.053, 0.362, 0.719, 1.004, 1.277, 1.467, 1.681, 1.954, 2.239, 2.452, 2.500};
const static vector<double> eta_vals_30 = {0.724, 0.763, 0.804, 0.789, 0.762, 0.702, 0.690, 0.720, 0.731, 0.714, 0.681};
const static vector<double> eta_edges_35 = {0.000, 0.044, 0.342, 0.711, 0.971, 1.280, 1.456, 1.683, 1.944, 2.218, 2.442, 2.500};
const static vector<double> eta_vals_35 = {0.736, 0.778, 0.824, 0.811, 0.784, 0.730, 0.718, 0.739, 0.743, 0.718, 0.678};
const static vector<double> eta_edges_40 = {0.000, 0.047, 0.355, 0.699, 0.983, 1.268, 1.457, 1.671, 1.931, 2.204, 2.453, 2.500};
const static vector<double> eta_vals_40 = {0.741, 0.774, 0.823, 0.823, 0.802, 0.764, 0.756, 0.771, 0.771, 0.734, 0.684};
const static vector<double> eta_edges_45 = {0.000, 0.056, 0.354, 0.711, 0.984, 1.280, 1.458, 1.684, 1.945, 2.207, 2.442, 2.500};
const static vector<double> eta_vals_45 = {0.758, 0.792, 0.841, 0.841, 0.823, 0.792, 0.786, 0.796, 0.794, 0.734, 0.663};
const static vector<double> eta_edges_50 = {0.000, 0.059, 0.355, 0.699, 0.983, 1.268, 1.446, 1.682, 1.943, 2.216, 2.453, 2.500};
const static vector<double> eta_vals_50 = {0.771, 0.806, 0.855, 0.858, 0.843, 0.810, 0.800, 0.808, 0.802, 0.730, 0.653};
const static vector<double> eta_edges_60 = {0.000, 0.050, 0.350, 0.707, 0.981, 1.278, 1.468, 1.694, 1.944, 2.242, 2.453, 2.500};
const static vector<double> eta_vals_60 = {0.773, 0.816, 0.866, 0.865, 0.853, 0.820, 0.812, 0.817, 0.804, 0.726, 0.645};
const static vector<double> eta_edges_80 = {0.000, 0.051, 0.374, 0.720, 0.981, 1.279, 1.468, 1.707, 1.945, 2.207, 2.457, 2.500};
const static vector<double> eta_vals_80 = {0.819, 0.855, 0.899, 0.906, 0.900, 0.869, 0.865, 0.873, 0.869, 0.868, 0.859};
const static vector<double> et_edges = { 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 80 };
const static vector< vector<double> > et_eta_edges = { eta_edges_10, eta_edges_15, eta_edges_20, eta_edges_25, eta_edges_30, eta_edges_35, eta_edges_40, eta_edges_45, eta_edges_50, eta_edges_60, eta_edges_80 };
const static vector< vector<double> > et_eta_vals = { eta_vals_10, eta_vals_15, eta_vals_20, eta_vals_25, eta_vals_30, eta_vals_35, eta_vals_40, eta_vals_45, eta_vals_50, eta_vals_60, eta_vals_80 };
if (e.abseta() > 2.5 || e.Et() < 10*GeV) return 0.0;
const int i_et = binIndex(e.Et()/GeV, et_edges, true);
const int i_eta = binIndex(e.abseta(), et_eta_edges[i_et]);
return et_eta_vals[i_et][i_eta];
}
/// @brief ATLAS Run 2 'tight' electron identification/selection efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double ELECTRON_IDEFF_ATLAS_RUN2_TIGHT(const Particle& e) {
return ELECTRON_IDEFF_ATLAS_RUN1_TIGHT(e);
}
/// ATLAS Run 1 electron reco smearing
inline Particle ELECTRON_SMEAR_ATLAS_RUN1(const Particle& e) {
static const vector<double> edges_eta = {0., 2.5, 3.};
static const vector<double> edges_pt = {0., 0.1, 25.};
static const vector<double> e2s = {0.000, 0.015, 0.005,
0.005, 0.005, 0.005,
0.107, 0.107, 0.107};
static const vector<double> es = {0.00, 0.00, 0.05,
0.05, 0.05, 0.05,
2.08, 2.08, 2.08};
static const vector<double> cs = {0.00, 0.00, 0.25,
0.25, 0.25, 0.25,
0.00, 0.00, 0.00};
const int i_eta = binIndex(e.abseta(), edges_eta, true);
const int i_pt = binIndex(e.pT()/GeV, edges_pt, true);
const int i = i_eta*edges_pt.size() + i_pt;
// Calculate absolute resolution in GeV
const double c1 = sqr(e2s[i]), c2 = sqr(es[i]), c3 = sqr(cs[i]);
const double resolution = sqrt(c1*e.E2() + c2*e.E() + c3) * GeV;
// normal_distribution<> d(e.E(), resolution);
// const double mass = e.mass2() > 0 ? e.mass() : 0; //< numerical carefulness...
// const double smeared_E = max(d(gen), mass); //< can't let the energy go below the mass!
// return Particle(e.pid(), FourMomentum::mkEtaPhiME(e.eta(), e.phi(), mass, smeared_E));
return Particle(e.pid(), P4_SMEAR_E_GAUSS(e, resolution));
}
/// ATLAS Run 2 electron reco smearing
/// @todo Currently just a copy of the Run 1 version: fix!
inline Particle ELECTRON_SMEAR_ATLAS_RUN2(const Particle& e) {
return ELECTRON_SMEAR_ATLAS_RUN1(e);
}
/// @todo Add charge flip efficiency?
/// CMS Run 1 electron reconstruction efficiency
inline double ELECTRON_EFF_CMS_RUN1(const Particle& e) {
if (e.abseta() > 2.5) return 0;
if (e.pT() < 10*GeV) return 0;
return (e.abseta() < 1.5) ? 0.95 : 0.85;
}
/// CMS Run 2 electron reco efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double ELECTRON_EFF_CMS_RUN2(const Particle& e) {
return ELECTRON_EFF_CMS_RUN1(e);
}
/// @brief CMS electron energy smearing, preserving direction
///
/// Calculate resolution
/// for pT > 0.1 GeV, E resolution = |eta| < 0.5 -> sqrt(0.06^2 + pt^2 * 1.3e-3^2)
/// |eta| < 1.5 -> sqrt(0.10^2 + pt^2 * 1.7e-3^2)
/// |eta| < 2.5 -> sqrt(0.25^2 + pt^2 * 3.1e-3^2)
inline Particle ELECTRON_SMEAR_CMS_RUN1(const Particle& e) {
// Calculate absolute resolution in GeV from functional form
double resolution = 0;
const double abseta = e.abseta();
if (e.pT() > 0.1*GeV && abseta < 2.5) { //< should be a given from efficiencies
if (abseta < 0.5) {
resolution = add_quad(0.06, 1.3e-3 * e.pT()/GeV) * GeV;
} else if (abseta < 1.5) {
resolution = add_quad(0.10, 1.7e-3 * e.pT()/GeV) * GeV;
} else { // still |eta| < 2.5
resolution = add_quad(0.25, 3.1e-3 * e.pT()/GeV) * GeV;
}
}
// normal_distribution<> d(e.E(), resolution);
// const double mass = e.mass2() > 0 ? e.mass() : 0; //< numerical carefulness...
// const double smeared_E = max(d(gen), mass); //< can't let the energy go below the mass!
// return Particle(e.pid(), FourMomentum::mkEtaPhiME(e.eta(), e.phi(), mass, smeared_E));
return Particle(e.pid(), P4_SMEAR_E_GAUSS(e, resolution));
}
/// CMS Run 2 electron reco smearing
/// @todo Currently just a copy of the Run 1 version: fix!
inline Particle ELECTRON_SMEAR_CMS_RUN2(const Particle& e) {
return ELECTRON_SMEAR_CMS_RUN1(e);
}
//@}
/// @name Photon efficiency and smearing functions
//@{
/// @brief ATLAS Run 2 photon reco efficiency
///
/// Taken from converted photons, Fig 8, in arXiv:1606.01813
inline double PHOTON_EFF_ATLAS_RUN1(const Particle& y) {
if (y.pT() < 10*GeV) return 0;
if (inRange(y.abseta(), 1.37, 1.52) || y.abseta() > 2.37) return 0;
static const vector<double> edges_eta = {0., 0.6, 1.37, 1.52, 1.81, 2.37};
static const vector<double> edges_pt = {10., 15., 20., 25., 30., 35., 40., 45.,
50., 60., 80., 100., 125., 150., 175., 250.};
static const vector<double> effs = {0.53, 0.65, 0.73, 0.83, 0.86, 0.93, 0.94, 0.96,
0.97, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98,//
0.45, 0.57, 0.67, 0.74, 0.84, 0.87, 0.93, 0.94,
0.95, 0.96, 0.97, 0.98, 0.98, 0.99, 0.99, 0.99,//
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,//
0.48, 0.56, 0.68, 0.76, 0.86, 0.90, 0.93, 0.95,
0.96, 0.97, 0.98, 0.99, 0.99, 1.00, 1.00, 1.00,//
0.50, 0.61, 0.74, 0.82, 0.88, 0.92, 0.94, 0.95,
0.96, 0.97, 0.98, 0.98, 0.98, 0.98, 0.99, 0.99};
const int i_eta = binIndex(y.abseta(), edges_eta);
const int i_pt = binIndex(y.pT()/GeV, edges_pt, true);
const int i = i_eta*edges_pt.size() + i_pt;
const double eff = effs[i];
return eff;
}
/// @brief ATLAS Run 2 photon reco efficiency
///
/// Taken from converted photons, Fig 6, in ATL-PHYS-PUB-2016-014
inline double PHOTON_EFF_ATLAS_RUN2(const Particle& y) {
if (y.pT() < 10*GeV) return 0;
if (inRange(y.abseta(), 1.37, 1.52) || y.abseta() > 2.37) return 0;
static const vector<double> edges_eta = {0., 0.6, 1.37, 1.52, 1.81, 2.37};
static const vector<double> edges_pt = {10., 15., 20., 25., 30., 35., 40., 45.,
50., 60., 80., 100., 125., 150., 175., 250.};
static const vector<double> effs = {0.55, 0.70, 0.85, 0.89, 0.93, 0.95, 0.96, 0.96,
0.97, 0.97, 0.98, 0.97, 0.97, 0.97, 0.97, 0.97,//
0.47, 0.66, 0.79, 0.86, 0.89, 0.94, 0.96, 0.97,
0.97, 0.98, 0.97, 0.98, 0.98, 0.98, 0.98, 0.98,//
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,//
0.54, 0.71, 0.84, 0.88, 0.92, 0.93, 0.94, 0.95,
0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96,//
0.61, 0.74, 0.83, 0.88, 0.91, 0.94, 0.95, 0.96,
0.97, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98};
const int i_eta = binIndex(y.abseta(), edges_eta);
const int i_pt = binIndex(y.pT()/GeV, edges_pt, true);
const int i = i_eta*edges_pt.size() + i_pt;
const double eff = effs[i];
return eff;
}
/// CMS Run 1 photon reco efficiency
/// @todo Currently from Delphes
inline double PHOTON_EFF_CMS_RUN1(const Particle& y) {
if (y.pT() < 10*GeV || y.abseta() > 2.5) return 0;
return (y.abseta() < 1.5) ? 0.95 : 0.85;
}
/// CMS Run 2 photon reco efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double PHOTON_EFF_CMS_RUN2(const Particle& y) {
return PHOTON_EFF_CMS_RUN1(y);
}
/// @todo Use real photon smearing
inline Particle PHOTON_SMEAR_ATLAS_RUN1(const Particle& y) { return y; }
inline Particle PHOTON_SMEAR_ATLAS_RUN2(const Particle& y) { return y; }
inline Particle PHOTON_SMEAR_CMS_RUN1(const Particle& y) { return y; }
inline Particle PHOTON_SMEAR_CMS_RUN2(const Particle& y) { return y; }
//@}
/// @name Muon efficiency and smearing functions
//@{
/// ATLAS Run 1 muon reco efficiency
inline double MUON_EFF_ATLAS_RUN1(const Particle& m) {
if (m.abseta() > 2.7) return 0;
if (m.pT() < 10*GeV) return 0;
return (m.abseta() < 1.5) ? 0.95 : 0.85;
}
/// @brief ATLAS Run 2 muon reco efficiency
///
/// For medium ID, from Fig 3 of
/// https://cds.cern.ch/record/2047831/files/ATL-PHYS-PUB-2015-037.pdf
inline double MUON_EFF_ATLAS_RUN2(const Particle& m) {
if (m.abseta() > 2.7) return 0;
static const vector<double> edges_pt = {0., 3.5, 4., 5., 6., 7., 8., 10.};
static const vector<double> effs = {0.00, 0.76, 0.94, 0.97, 0.98, 0.98, 0.98, 0.99};
const int i_pt = binIndex(m.pT()/GeV, edges_pt, true);
- const double eff = eff[i_pt];
+ const double eff = effs[i_pt];
return eff;
}
/// ATLAS Run 1 muon reco smearing
inline Particle MUON_SMEAR_ATLAS_RUN1(const Particle& m) {
static const vector<double> edges_eta = {0, 1.5, 2.5};
static const vector<double> edges_pt = {0, 0.1, 1.0, 10., 200.};
static const vector<double> res = {0., 0.03, 0.02, 0.03, 0.05,
0., 0.04, 0.03, 0.04, 0.05};
const int i_eta = binIndex(m.abseta(), edges_eta);
const int i_pt = binIndex(m.pT()/GeV, edges_pt, true);
const int i = i_eta*edges_pt.size() + i_pt;
const double resolution = res[i];
// Smear by a Gaussian centered on the current pT, with width given by the resolution
// normal_distribution<> d(m.pT(), resolution*m.pT());
// const double smeared_pt = max(d(gen), 0.);
// const double mass = m.mass2() > 0 ? m.mass() : 0; //< numerical carefulness...
// return Particle(m.pid(), FourMomentum::mkEtaPhiMPt(m.eta(), m.phi(), mass, smeared_pt));
return Particle(m.pid(), P4_SMEAR_PT_GAUSS(m, resolution*m.pT()));
}
/// ATLAS Run 2 muon reco smearing
/// @todo Currently just a copy of the Run 1 version: fix!
inline Particle MUON_SMEAR_ATLAS_RUN2(const Particle& m) {
return MUON_SMEAR_ATLAS_RUN1(m);
}
/// CMS Run 1 muon reco efficiency
inline double MUON_EFF_CMS_RUN1(const Particle& m) {
if (m.abseta() > 2.4) return 0;
if (m.pT() < 10*GeV) return 0;
return 0.95 * (m.abseta() < 1.5 ? 1 : exp(0.5 - 5e-4*m.pT()/GeV));
}
/// CMS Run 2 muon reco efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double MUON_EFF_CMS_RUN2(const Particle& m) {
return MUON_EFF_CMS_RUN1(m);
}
/// CMS Run 1 muon reco smearing
inline Particle MUON_SMEAR_CMS_RUN1(const Particle& m) {
// Calculate fractional resolution
// for pT > 0.1 GeV, mom resolution = |eta| < 0.5 -> sqrt(0.01^2 + pt^2 * 2.0e-4^2)
// |eta| < 1.5 -> sqrt(0.02^2 + pt^2 * 3.0e-4^2)
// |eta| < 2.5 -> sqrt(0.05^2 + pt^2 * 2.6e-4^2)
double resolution = 0;
const double abseta = m.abseta();
if (m.pT() > 0.1*GeV && abseta < 2.5) {
if (abseta < 0.5) {
resolution = add_quad(0.01, 2.0e-4 * m.pT()/GeV);
} else if (abseta < 1.5) {
resolution = add_quad(0.02, 3.0e-4 * m.pT()/GeV);
} else { // still |eta| < 2.5... but isn't CMS' mu acceptance < 2.4?
resolution = add_quad(0.05, 2.6e-4 * m.pT()/GeV);
}
}
// Smear by a Gaussian centered on the current pT, with width given by the resolution
// normal_distribution<> d(m.pT(), resolution*m.pT());
// const double smeared_pt = max(d(gen), 0.);
// const double mass = m.mass2() > 0 ? m.mass() : 0; //< numerical carefulness...
// return Particle(m.pid(), FourMomentum::mkEtaPhiMPt(m.eta(), m.phi(), mass, smeared_pt));
return Particle(m.pid(), P4_SMEAR_PT_GAUSS(m, resolution*m.pT()));
}
/// CMS Run 2 muon reco smearing
/// @todo Currently just a copy of the Run 1 version: fix!
inline Particle MUON_SMEAR_CMS_RUN2(const Particle& m) {
return MUON_SMEAR_CMS_RUN1(m);
}
//@}
/// @name Tau efficiency and smearing functions
//@{
/// @brief ATLAS Run 1 8 TeV tau efficiencies (medium working point)
///
/// Taken from http://arxiv.org/pdf/1412.7086.pdf
/// 20-40 GeV 1-prong LMT eff|mis = 0.66|1/10, 0.56|1/20, 0.36|1/80
/// 20-40 GeV 3-prong LMT eff|mis = 0.45|1/60, 0.38|1/100, 0.27|1/300
/// > 40 GeV 1-prong LMT eff|mis = 0.66|1/15, 0.56|1/25, 0.36|1/80
/// > 40 GeV 3-prong LMT eff|mis = 0.45|1/250, 0.38|1/400, 0.27|1/1300
inline double TAU_EFF_ATLAS_RUN1(const Particle& t) {
if (t.abseta() > 2.5) return 0; //< hmm... mostly
double pThadvis = 0;
Particles chargedhadrons;
for (const Particle& p : t.children()) {
if (p.isHadron()) {
pThadvis += p.pT(); //< right definition? Paper is unclear
if (p.charge3() != 0 && p.abseta() < 2.5 && p.pT() > 1*GeV) chargedhadrons += p;
}
}
if (chargedhadrons.empty()) return 0; //< leptonic tau
if (pThadvis < 20*GeV) return 0; //< below threshold
if (pThadvis < 40*GeV) {
if (chargedhadrons.size() == 1) return (t.abspid() == PID::TAU) ? 0.56 : 1/20.;
if (chargedhadrons.size() == 3) return (t.abspid() == PID::TAU) ? 0.38 : 1/100.;
} else {
if (chargedhadrons.size() == 1) return (t.abspid() == PID::TAU) ? 0.56 : 1/25.;
if (chargedhadrons.size() == 3) return (t.abspid() == PID::TAU) ? 0.38 : 1/400.;
}
return 0;
}
/// @brief ATLAS Run 2 13 TeV tau efficiencies (medium working point)
///
/// From https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/PUBNOTES/ATL-PHYS-PUB-2015-045/ATL-PHYS-PUB-2015-045.pdf
/// LMT 1 prong efficiency/mistag = 0.6|1/30, 0.55|1/50, 0.45|1/120
/// LMT 3 prong efficiency/mistag = 0.5|1/30, 0.4|1/110, 0.3|1/300
inline double TAU_EFF_ATLAS_RUN2(const Particle& t) {
if (t.abseta() > 2.5) return 0; //< hmm... mostly
double pThadvis = 0;
Particles chargedhadrons;
for (const Particle& p : t.children()) {
if (p.isHadron()) {
pThadvis += p.pT(); //< right definition? Paper is unclear
if (p.charge3() != 0 && p.abseta() < 2.5 && p.pT() > 1*GeV) chargedhadrons += p;
}
}
if (chargedhadrons.empty()) return 0; //< leptonic tau
if (pThadvis < 20*GeV) return 0; //< below threshold
if (chargedhadrons.size() == 1) return (t.abspid() == PID::TAU) ? 0.55 : 1/50.;
if (chargedhadrons.size() == 3) return (t.abspid() == PID::TAU) ? 0.40 : 1/110.;
return 0;
}
/// ATLAS Run 1 tau smearing
/// @todo Currently a copy of the crappy jet smearing that is probably wrong...
inline Particle TAU_SMEAR_ATLAS_RUN1(const Particle& t) {
// Const fractional resolution for now
static const double resolution = 0.03;
// Smear by a Gaussian centered on 1 with width given by the (fractional) resolution
/// @todo Is this the best way to smear? Should we preserve the energy, or pT, or direction?
const double fsmear = max(randnorm(1., resolution), 0.);
const double mass = t.mass2() > 0 ? t.mass() : 0; //< numerical carefulness...
return Particle(t.pid(), FourMomentum::mkXYZM(t.px()*fsmear, t.py()*fsmear, t.pz()*fsmear, mass));
}
/// ATLAS Run 2 tau smearing
/// @todo Currently a copy of the Run 1 version
inline Particle TAU_SMEAR_ATLAS_RUN2(const Particle& t) {
return TAU_SMEAR_ATLAS_RUN1(t);
}
/// CMS Run 2 tau efficiency
///
/// @todo Needs work; this is the dumb version from Delphes 3.3.2
inline double TAU_EFF_CMS_RUN2(const Particle& t) {
return (t.abspid() == PID::TAU) ? 0.6 : 0;
}
/// CMS Run 1 tau efficiency
///
/// @todo Needs work; this is just a copy of the Run 2 version in Delphes 3.3.2
inline double TAU_EFF_CMS_RUN1(const Particle& t) {
return TAU_EFF_CMS_RUN2(t);
}
/// CMS Run 1 tau smearing
/// @todo Currently a copy of the crappy ATLAS one
inline Particle TAU_SMEAR_CMS_RUN1(const Particle& t) {
return TAU_SMEAR_ATLAS_RUN1(t);
}
/// CMS Run 2 tau smearing
/// @todo Currently a copy of the Run 1 version
inline Particle TAU_SMEAR_CMS_RUN2(const Particle& t) {
return TAU_SMEAR_CMS_RUN1(t);
}
//@}
/// @name Jet efficiency and smearing functions
//@{
/// Return the ATLAS Run 1 jet flavour tagging efficiency for the given Jet
inline double JET_BTAG_ATLAS_RUN1(const Jet& j) {
/// @todo This form drops past ~100 GeV, asymptotically to zero efficiency... really?!
if (j.abseta() > 2.5) return 0;
const auto ftagsel = [&](const Particle& p){ return p.pT() > 5*GeV && deltaR(p,j) < 0.3; };
if (j.bTagged(ftagsel)) return 0.80*tanh(0.003*j.pT()/GeV)*(30/(1+0.0860*j.pT()/GeV));
if (j.cTagged(ftagsel)) return 0.20*tanh(0.020*j.pT()/GeV)*( 1/(1+0.0034*j.pT()/GeV));
return 0.002 + 7.3e-6*j.pT()/GeV;
}
/// Return the ATLAS Run 2 MC2c20 jet flavour tagging efficiency for the given Jet
inline double JET_BTAG_ATLAS_RUN2_MV2C20(const Jet& j) {
if (j.abseta() > 2.5) return 0;
if (j.bTagged(Cuts::pT > 5*GeV)) return 0.77;
if (j.cTagged(Cuts::pT > 5*GeV)) return 1/4.5;
return 1/140.;
}
/// Return the ATLAS Run 2 MC2c10 jet flavour tagging efficiency for the given Jet
inline double JET_BTAG_ATLAS_RUN2_MV2C10(const Jet& j) {
if (j.abseta() > 2.5) return 0;
if (j.bTagged(Cuts::pT > 5*GeV)) return 0.77;
if (j.cTagged(Cuts::pT > 5*GeV)) return 1/6.0;
return 1/134.;
}
/// ATLAS Run 1 jet smearing
inline Jet JET_SMEAR_ATLAS_RUN1(const Jet& j) {
// Jet energy resolution lookup
// Implemented by Matthias Danninger for GAMBIT, based roughly on
// https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/CONFNOTES/ATLAS-CONF-2015-017/
// Parameterisation can be still improved, but eta dependence is minimal
/// @todo Also need a JES uncertainty component?
static const vector<double> binedges_pt = {0., 50., 70., 100., 150., 200., 1000., 10000.};
static const vector<double> jer = {0.145, 0.115, 0.095, 0.075, 0.07, 0.05, 0.04, 0.04}; //< note overflow value
const int ipt = binIndex(j.pT()/GeV, binedges_pt, true);
if (ipt < 0) return j;
const double resolution = jer.at(ipt);
// Smear by a Gaussian centered on 1 with width given by the (fractional) resolution
/// @todo Is this the best way to smear? Should we preserve the energy, or pT, or direction?
const double fsmear = max(randnorm(1., resolution), 0.);
const double mass = j.mass2() > 0 ? j.mass() : 0; //< numerical carefulness...
Jet rtn(FourMomentum::mkXYZM(j.px()*fsmear, j.py()*fsmear, j.pz()*fsmear, mass));
//if (deltaPhi(j, rtn) > 0.01) cout << "jdphi: " << deltaPhi(j, rtn) << endl;
return rtn;
}
/// ATLAS Run 2 jet smearing
/// @todo Just a copy of the Run 1 one: improve!!
inline Jet JET_SMEAR_ATLAS_RUN2(const Jet& j) {
return JET_SMEAR_ATLAS_RUN1(j);
}
/// CMS Run 2 jet smearing
/// @todo Just a copy of the suboptimal ATLAS one: improve!!
inline Jet JET_SMEAR_CMS_RUN2(const Jet& j) {
return JET_SMEAR_ATLAS_RUN1(j);
}
//@}
/// @name ETmiss smearing functions
//@{
inline Vector3 MET_SMEAR_IDENTITY(const Vector3& met, double) { return met; }
/// @brief ATLAS Run 1 ETmiss smearing
///
/// Based on https://arxiv.org/pdf/1108.5602v2.pdf, Figs 14 and 15
inline Vector3 MET_SMEAR_ATLAS_RUN1(const Vector3& met, double set) {
// Linearity offset (Fig 14)
Vector3 smeared_met = met;
if (met.mod()/GeV < 25*GeV) smeared_met *= 1.05;
else if (met.mod()/GeV < 40*GeV) smeared_met *= (1.05 - (0.04/15)*(met.mod()/GeV - 25)); //< linear decrease
else smeared_met *= 1.01;
// Smear by a Gaussian with width given by the resolution(sumEt) ~ 0.45 sqrt(sumEt) GeV
const double resolution = 0.45 * sqrt(set/GeV) * GeV;
const double metsmear = max(randnorm(smeared_met.mod(), resolution), 0.);
smeared_met = metsmear * smeared_met.unit();
return smeared_met;
}
/// ATLAS Run 2 ETmiss smearing
/// @todo Just a copy of the Run 1 one: improve!!
inline Vector3 MET_SMEAR_ATLAS_RUN2(const Vector3& met, double set) {
return MET_SMEAR_ATLAS_RUN1(met, set);
}
/// CMS Run 1 ETmiss smearing
/// @todo Just a copy of the ATLAS one: improve!!
inline Vector3 MET_SMEAR_CMS_RUN1(const Vector3& met, double set) {
return MET_SMEAR_ATLAS_RUN1(met, set);
}
/// CMS Run 2 ETmiss smearing
/// @todo Just a copy of the ATLAS one: improve!!
inline Vector3 MET_SMEAR_CMS_RUN2(const Vector3& met, double set) {
return MET_SMEAR_ATLAS_RUN2(met, set);
}
//@}
/// @name Tracking efficiency and smearing functions
//@{
/// ATLAS Run 1 tracking efficiency
inline double TRK_EFF_ATLAS_RUN1(const Particle& p) {
if (p.charge3() == 0) return 0;
if (p.abseta() > 2.5) return 0;
if (p.pT() < 0.1*GeV) return 0;
if (p.abspid() == PID::ELECTRON) {
if (p.abseta() < 1.5) {
if (p.pT() < 1*GeV) return 0.73;
if (p.pT() < 100*GeV) return 0.95;
return 0.99;
} else {
if (p.pT() < 1*GeV) return 0.50;
if (p.pT() < 100*GeV) return 0.83;
else return 0.90;
}
} else if (p.abspid() == PID::MUON) {
if (p.abseta() < 1.5) {
return (p.pT() < 1*GeV) ? 0.75 : 0.99;
} else {
return (p.pT() < 1*GeV) ? 0.70 : 0.98;
}
} else { // charged hadrons
if (p.abseta() < 1.5) {
return (p.pT() < 1*GeV) ? 0.70 : 0.95;
} else {
return (p.pT() < 1*GeV) ? 0.60 : 0.85;
}
}
}
/// ATLAS Run 2 tracking efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double TRK_EFF_ATLAS_RUN2(const Particle& p) {
return TRK_EFF_ATLAS_RUN1(p);
}
/// CMS Run 1 tracking efficiency
inline double TRK_EFF_CMS_RUN1(const Particle& p) {
if (p.charge3() == 0) return 0;
if (p.abseta() > 2.5) return 0;
if (p.pT() < 0.1*GeV) return 0;
if (p.abspid() == PID::ELECTRON) {
if (p.abseta() < 1.5) {
if (p.pT() < 1*GeV) return 0.73;
if (p.pT() < 100*GeV) return 0.95;
return 0.99;
} else {
if (p.pT() < 1*GeV) return 0.50;
if (p.pT() < 100*GeV) return 0.83;
else return 0.90;
}
} else if (p.abspid() == PID::MUON) {
if (p.abseta() < 1.5) {
return (p.pT() < 1*GeV) ? 0.75 : 0.99;
} else {
return (p.pT() < 1*GeV) ? 0.70 : 0.98;
}
} else { // charged hadrons
if (p.abseta() < 1.5) {
return (p.pT() < 1*GeV) ? 0.70 : 0.95;
} else {
return (p.pT() < 1*GeV) ? 0.60 : 0.85;
}
}
}
/// CMS Run 2 tracking efficiency
/// @todo Currently just a copy of Run 1: fix!
inline double TRK_EFF_CMS_RUN2(const Particle& p) {
return TRK_EFF_CMS_RUN1(p);
}
//@}
}
#endif

File Metadata

Mime Type
text/x-diff
Expires
Sat, May 3, 5:47 AM (5 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4982819
Default Alt Text
(64 KB)

Event Timeline