Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F10881036
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
64 KB
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
rRIVETHG rivethg
Event Timeline
Log In to Comment