Page MenuHomeHEPForge

No OneTemporary

diff --git a/analyses/pluginATLAS/ATLAS_2010_S8591806.cc b/analyses/pluginATLAS/ATLAS_2010_S8591806.cc
--- a/analyses/pluginATLAS/ATLAS_2010_S8591806.cc
+++ b/analyses/pluginATLAS/ATLAS_2010_S8591806.cc
@@ -1,73 +1,71 @@
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
namespace Rivet {
/// @brief ATLAS minimum bias analysis at 900 GeV
/// @author Frank Siegert
class ATLAS_2010_S8591806 : public Analysis {
public:
ATLAS_2010_S8591806()
: Analysis("ATLAS_2010_S8591806")
{ }
void init() {
ChargedFinalState cfs(-2.5, 2.5, 0.5*GeV);
declare(cfs, "CFS");
book(_h_dNch_deta ,2, 1, 1);
book(_h_dNch_dpT ,3, 1, 1);
book(_h_dNevt_dNch ,4, 1, 1);
book(_p_meanpT_Nch ,5, 1, 1);
book(_Nevt_after_cuts, "nevt_pass");
}
void analyze(const Event& event) {
- const double;
-
const ChargedFinalState& charged = apply<ChargedFinalState>(event, "CFS");
if (charged.size() < 1) {
vetoEvent;
}
_Nevt_after_cuts->fill();
_h_dNevt_dNch->fill(charged.size());
foreach (const Particle& p, charged.particles()) {
double pT = p.pT()/GeV;
_h_dNch_deta->fill(p.eta());
_h_dNch_dpT->fill(pT, 1.0/pT);
_p_meanpT_Nch->fill(charged.size(), pT);
}
}
void finalize() {
double deta = 5.0;
scale(_h_dNch_deta, 1.0/_Nevt_after_cuts->val());
scale(_h_dNch_dpT, 1.0/_Nevt_after_cuts->val()/TWOPI/deta);
scale(_h_dNevt_dNch, 1.0/_Nevt_after_cuts->val());
}
private:
Histo1DPtr _h_dNch_deta;
Histo1DPtr _h_dNch_dpT;
Histo1DPtr _h_dNevt_dNch;
Profile1DPtr _p_meanpT_Nch;
CounterPtr _Nevt_after_cuts;
};
//DECLARE_RIVET_PLUGIN(ATLAS_2010_S8591806);
DECLARE_ALIASED_RIVET_PLUGIN(ATLAS_2010_S8591806, ATLAS_2010_I849050);
}
diff --git a/analyses/pluginATLAS/ATLAS_2011_I925932.cc b/analyses/pluginATLAS/ATLAS_2011_I925932.cc
--- a/analyses/pluginATLAS/ATLAS_2011_I925932.cc
+++ b/analyses/pluginATLAS/ATLAS_2011_I925932.cc
@@ -1,115 +1,113 @@
// -*- C++ -*-
// ATLAS W pT analysis
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/WFinder.hh"
namespace Rivet {
class ATLAS_2011_I925932 : public Analysis {
public:
/// Constructor
ATLAS_2011_I925932() : Analysis("ATLAS_2011_I925932") { }
/// @name Analysis methods
//@{
void init() {
// Set up projections
FinalState fs;
Cut cuts = Cuts::abseta < 2.4 && Cuts::pT > 20*GeV;
WFinder wfinder_dressed_el(fs, cuts, PID::ELECTRON, 0*GeV, 1000*GeV, 25*GeV, 0.2, WFinder::CLUSTERNODECAY);
declare(wfinder_dressed_el, "WFinder_dressed_el");
WFinder wfinder_bare_el(fs, cuts, PID::ELECTRON, 0*GeV, 1000*GeV, 25*GeV, 0.0, WFinder::NOCLUSTER);
declare(wfinder_bare_el, "WFinder_bare_el");
WFinder wfinder_dressed_mu(fs, cuts, PID::MUON, 0*GeV, 1000*GeV, 25*GeV, 0.2, WFinder::CLUSTERNODECAY);
declare(wfinder_dressed_mu, "WFinder_dressed_mu");
WFinder wfinder_bare_mu(fs, cuts, PID::MUON, 0*GeV, 1000*GeV, 25*GeV, 0.0, WFinder::NOCLUSTER);
declare(wfinder_bare_mu, "WFinder_bare_mu");
// Book histograms
book(_hist_wpt_dressed_el ,1, 1, 1);
book(_hist_wpt_bare_el ,1, 1, 2);
book(_hist_wpt_dressed_mu ,2, 1, 1);
book(_hist_wpt_bare_mu ,2, 1, 2);
}
/// Do the analysis
void analyze(const Event& event) {
- const double weight = 1.0;
-
const WFinder& wfinder_dressed_el = apply<WFinder>(event, "WFinder_dressed_el");
const WFinder& wfinder_bare_el = apply<WFinder>(event, "WFinder_bare_el");
const WFinder& wfinder_dressed_mu = apply<WFinder>(event, "WFinder_dressed_mu");
const WFinder& wfinder_bare_mu = apply<WFinder>(event, "WFinder_bare_mu");
if (wfinder_dressed_el.empty() && wfinder_bare_el.empty() &&
wfinder_dressed_mu.empty() && wfinder_bare_mu.empty()) {
MSG_DEBUG("No W bosons found");
vetoEvent;
}
// "Dressed" electron
if (!wfinder_dressed_el.particles().empty()) {
const FourMomentum& nu = wfinder_dressed_el.constituentNeutrinos()[0].momentum();
if (wfinder_dressed_el.mT() > 40*GeV && nu.pT() > 25*GeV) {
- _hist_wpt_dressed_el->fill(wfinder_dressed_el.bosons()[0].pT()/GeV, weight);
+ _hist_wpt_dressed_el->fill(wfinder_dressed_el.bosons()[0].pT()/GeV);
}
}
// "Bare" electron
if (!wfinder_bare_el.particles().empty()) {
const FourMomentum& nu = wfinder_bare_el.constituentNeutrinos()[0].momentum();
if (wfinder_bare_el.mT() > 40*GeV && nu.pT() > 25*GeV) {
- _hist_wpt_bare_el->fill(wfinder_bare_el.bosons()[0].pT()/GeV, weight);
+ _hist_wpt_bare_el->fill(wfinder_bare_el.bosons()[0].pT()/GeV);
}
}
// "Dressed" muon
if (!wfinder_dressed_mu.particles().empty()) {
const FourMomentum& nu = wfinder_dressed_mu.constituentNeutrinos()[0].momentum();
if (wfinder_dressed_mu.mT() > 40*GeV && nu.pT() > 25*GeV) {
- _hist_wpt_dressed_mu->fill(wfinder_dressed_mu.bosons()[0].pT()/GeV, weight);
+ _hist_wpt_dressed_mu->fill(wfinder_dressed_mu.bosons()[0].pT()/GeV);
}
}
// "Bare" muon
if (!wfinder_bare_mu.particles().empty()) {
const FourMomentum& nu = wfinder_bare_mu.constituentNeutrinos()[0].momentum();
if (wfinder_bare_mu.mT() > 40*GeV && nu.pT() > 25*GeV) {
- _hist_wpt_bare_mu->fill(wfinder_bare_mu.bosons()[0].pT()/GeV, weight);
+ _hist_wpt_bare_mu->fill(wfinder_bare_mu.bosons()[0].pT()/GeV);
}
}
}
// Normalize histos
void finalize() {
normalize(_hist_wpt_dressed_el);
normalize(_hist_wpt_bare_el);
normalize(_hist_wpt_dressed_mu);
normalize(_hist_wpt_bare_mu);
}
//@}
private:
Histo1DPtr _hist_wpt_dressed_el;
Histo1DPtr _hist_wpt_bare_el;
Histo1DPtr _hist_wpt_dressed_mu;
Histo1DPtr _hist_wpt_bare_mu;
};
// Hook for the plugin system
DECLARE_RIVET_PLUGIN(ATLAS_2011_I925932);
}
diff --git a/analyses/pluginATLAS/ATLAS_2011_I926145.cc b/analyses/pluginATLAS/ATLAS_2011_I926145.cc
--- a/analyses/pluginATLAS/ATLAS_2011_I926145.cc
+++ b/analyses/pluginATLAS/ATLAS_2011_I926145.cc
@@ -1,172 +1,170 @@
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/IdentifiedFinalState.hh"
#include "Rivet/Projections/WFinder.hh"
#include "Rivet/Projections/ZFinder.hh"
namespace Rivet {
/// @brief Measurement of electron and muon differential cross section from heavy flavour production
///
/// Lepton cross sections differential in pT
///
/// @author Paul Bell, Holger Schulz
class ATLAS_2011_I926145 : public Analysis {
public:
/// Constructor
ATLAS_2011_I926145()
: Analysis("ATLAS_2011_I926145")
{ }
public:
/// Book histograms and initialise projections before the run
void init() {
///projection for electrons
Cut cuts = (Cuts::abseta < 1.37 || Cuts::absetaIn(1.52, 2.00)) && Cuts::pT > 7*GeV;
IdentifiedFinalState elecs(cuts);
elecs.acceptId(PID::ELECTRON);
elecs.acceptId(PID::POSITRON);
declare(elecs, "elecs");
//projection for muons -- same phase space as above??? Not sure if the crack region has
//to be removed for the muons as well
std::vector<std::pair<double, double> > eta_m;
//eta_m.push_back(make_pair(-2.00,-1.52));
//eta_m.push_back(make_pair(-1.37,1.37));
//eta_m.push_back(make_pair(1.52,2.00));
//IdentifiedFinalState muons(eta_m, 7.0*GeV);
IdentifiedFinalState muons(Cuts::abseta < 2 && Cuts::pT > 7*GeV);
muons.acceptId(PID::MUON);
muons.acceptId(PID::ANTIMUON);
declare(muons, "muons");
//projection for muons full range
IdentifiedFinalState muons_full(Cuts::abseta < 2.5 && Cuts::pT > 4*GeV);
muons_full.acceptId(PID::MUON);
muons_full.acceptId(PID::ANTIMUON);
declare(muons_full, "muons_full");
Cut cut20 = Cuts::abseta < 2.0;
Cut cut25 = Cuts::abseta < 2.5;
const FinalState fs20(cut20);
const FinalState fs25(cut25);
/// @todo Bare Zs ...
ZFinder zfinder_e(fs20, cut20, PID::ELECTRON, 66.0*GeV, 116.0*GeV, 0.1, ZFinder::NOCLUSTER);
declare(zfinder_e, "ZFinder_e");
ZFinder zfinder_mu(fs20, cut20, PID::MUON, 66.0*GeV, 116.0*GeV, 0.1, ZFinder::NOCLUSTER);
declare(zfinder_mu, "ZFinder_mu");
ZFinder zfinder_mufull(fs25, cut25, PID::MUON, 66.0*GeV, 116.0*GeV, 0.1, ZFinder::NOCLUSTER);
declare(zfinder_mufull, "ZFinder_mufull");
/// @todo ... but dressed Ws?
WFinder wfinder_e(fs20, cut20, PID::ELECTRON, 60.0*GeV, 100.0*GeV, 25.0*GeV, 0.2);
declare(wfinder_e, "WFinder_e");
WFinder wfinder_mu(fs20, cut20, PID::MUON, 60.0*GeV, 100.0*GeV, 25.0*GeV, 0.2);
declare(wfinder_mu, "WFinder_mu");
WFinder wfinder_mufull(fs25, cut25, PID::MUON, 60.0*GeV, 100.0*GeV, 25.0*GeV, 0.2);
declare(wfinder_mufull, "WFinder_mufull");
// Book histograms
book(_histPt_elecs ,1 ,1 ,1);
book(_histPt_muons ,2 ,1 ,1);
book(_histPt_muons_full ,3 ,1 ,1);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
- const double weight = 1.0;
-
const FinalState& elecs = apply<FinalState>(event, "elecs");
const FinalState& muons = apply<FinalState>(event, "muons");
const FinalState& muons_full = apply<FinalState>(event, "muons_full");
// Veto event if no lepton is present
if (elecs.size() == 0 && muons.size() == 0 && muons_full.size() == 0) {
vetoEvent;
}
// Check for W and or Z bosons in event
//
// Z veto
const ZFinder& zfinder_e = apply<ZFinder>(event, "ZFinder_e");
const ZFinder& zfinder_mu = apply<ZFinder>(event, "ZFinder_mu");
const ZFinder& zfinder_mufull = apply<ZFinder>(event, "ZFinder_mufull");
if (zfinder_e.bosons().size() > 0 || zfinder_mu.bosons().size() > 0 || zfinder_mufull.bosons().size() > 0) {
MSG_DEBUG("Num elec Z-bosons found: " << zfinder_e.bosons().size());
MSG_DEBUG("Num muon Z-bosons found: " << zfinder_mu.bosons().size());
MSG_DEBUG("Num muon Z-bosons found (|eta|<2.5): " << zfinder_mufull.bosons().size());
vetoEvent;
}
// W veto
const WFinder& wfinder_e = apply<WFinder>(event, "WFinder_e");
const WFinder& wfinder_mu = apply<WFinder>(event, "WFinder_mu");
const WFinder& wfinder_mufull = apply<WFinder>(event, "WFinder_mufull");
if (wfinder_e.bosons().size() > 0 || wfinder_mu.bosons().size() > 0 || wfinder_mufull.bosons().size() > 0) {
MSG_DEBUG("Num elec W-bosons found: " << wfinder_e.bosons().size());
MSG_DEBUG("Num muon W-bosons found: " << wfinder_mu.bosons().size());
MSG_DEBUG("Num muon W-bosons found (|eta|<2.5): " << wfinder_mufull.bosons().size());
vetoEvent;
}
// Electron histogram
if (elecs.size() > 0) {
foreach (const Particle& ele, elecs.particles()) {
if (ele.pT()*GeV < 26.0) {
- _histPt_elecs->fill(ele.pT()*GeV, weight);
+ _histPt_elecs->fill(ele.pT()*GeV);
}
}
}
// Muon histogram
if (muons.size() > 0) {
foreach (const Particle& muo, muons.particles()) {
if (muo.pT()*GeV < 26.0) {
- _histPt_muons->fill(muo.pT()*GeV, weight);
+ _histPt_muons->fill(muo.pT()*GeV);
}
}
}
// Muon full histogram
if (muons_full.size() > 0) {
foreach (const Particle& muo, muons_full.particles()) {
if (muo.pT()*GeV < 100.0) {
- _histPt_muons_full->fill(muo.pT()*GeV, weight);
+ _histPt_muons_full->fill(muo.pT()*GeV);
}
}
}
}
/// Normalise histograms etc., after the run
void finalize() {
// Data cross-section is given in nb! x-sections in rivet are in pb!
scale(_histPt_elecs, crossSection()/nanobarn/sumOfWeights());
scale(_histPt_muons, crossSection()/nanobarn/sumOfWeights());
scale(_histPt_muons_full, crossSection()/nanobarn/sumOfWeights());
}
private:
/// @name Histograms
Histo1DPtr _histPt_elecs;
Histo1DPtr _histPt_muons;
Histo1DPtr _histPt_muons_full;
};
// The hook for the plugin system
DECLARE_RIVET_PLUGIN(ATLAS_2011_I926145);
}
diff --git a/analyses/pluginATLAS/ATLAS_2011_I928289_W.cc b/analyses/pluginATLAS/ATLAS_2011_I928289_W.cc
--- a/analyses/pluginATLAS/ATLAS_2011_I928289_W.cc
+++ b/analyses/pluginATLAS/ATLAS_2011_I928289_W.cc
@@ -1,148 +1,147 @@
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/WFinder.hh"
namespace Rivet {
class ATLAS_2011_I928289_W : public Analysis {
public:
/// Constructor
ATLAS_2011_I928289_W()
: Analysis("ATLAS_2011_I928289_W")
{
setNeedsCrossSection(true);
}
/// @name Analysis methods
//@{
/// Book histograms and initialise projections before the run
void init() {
///Initialise and register projections here
FinalState fs;
Cut cut = (Cuts::pT >= 20*GeV);
WFinder wfinder_el_bare( fs, cut, PID::ELECTRON, 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.0, WFinder::CLUSTERNODECAY, WFinder::NOTRACK, WFinder::TRANSMASS);
WFinder wfinder_el_dressed(fs, cut, PID::ELECTRON, 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.1, WFinder::CLUSTERNODECAY, WFinder::NOTRACK, WFinder::TRANSMASS);
WFinder wfinder_mu_bare (fs, cut, PID::MUON , 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.0, WFinder::CLUSTERNODECAY, WFinder::NOTRACK, WFinder::TRANSMASS);
WFinder wfinder_mu_dressed(fs, cut, PID::MUON , 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.1, WFinder::CLUSTERNODECAY, WFinder::NOTRACK, WFinder::TRANSMASS);
declare(wfinder_el_bare , "WFinder_el_bare");
declare(wfinder_el_dressed, "WFinder_el_dressed");
declare(wfinder_mu_bare , "WFinder_mu_bare");
declare(wfinder_mu_dressed, "WFinder_mu_dressed");
/// Book histograms here
book(_h_Wminus_lepton_eta_el_bare ,3, 1, 1);
book(_h_Wminus_lepton_eta_el_dressed ,3, 1, 2);
book(_h_Wminus_lepton_eta_mu_bare ,3, 1, 3);
book(_h_Wminus_lepton_eta_mu_dressed ,3, 1, 4);
book(_h_Wplus_lepton_eta_el_bare ,5, 1, 1);
book(_h_Wplus_lepton_eta_el_dressed ,5, 1, 2);
book(_h_Wplus_lepton_eta_mu_bare ,5, 1, 3);
book(_h_Wplus_lepton_eta_mu_dressed ,5, 1, 4);
book(_h_W_asym_eta_el_bare ,7, 1, 1);
book(_h_W_asym_eta_el_dressed ,7, 1, 2);
book(_h_W_asym_eta_mu_bare ,7, 1, 3);
book(_h_W_asym_eta_mu_dressed ,7, 1, 4);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const WFinder& wfinder_el_bare = apply<WFinder>(event, "WFinder_el_bare");
const WFinder& wfinder_el_dressed = apply<WFinder>(event, "WFinder_el_dressed");
const WFinder& wfinder_mu_bare = apply<WFinder>(event, "WFinder_mu_bare");
const WFinder& wfinder_mu_dressed = apply<WFinder>(event, "WFinder_mu_dressed");
- const double weight = 1.0;
- fillPlots1D(wfinder_el_bare , _h_Wplus_lepton_eta_el_bare , _h_Wminus_lepton_eta_el_bare , weight);
- fillPlots1D(wfinder_el_dressed, _h_Wplus_lepton_eta_el_dressed, _h_Wminus_lepton_eta_el_dressed, weight);
- fillPlots1D(wfinder_mu_bare , _h_Wplus_lepton_eta_mu_bare , _h_Wminus_lepton_eta_mu_bare , weight);
- fillPlots1D(wfinder_mu_dressed, _h_Wplus_lepton_eta_mu_dressed, _h_Wminus_lepton_eta_mu_dressed, weight);
+ fillPlots1D(wfinder_el_bare , _h_Wplus_lepton_eta_el_bare , _h_Wminus_lepton_eta_el_bare);
+ fillPlots1D(wfinder_el_dressed, _h_Wplus_lepton_eta_el_dressed, _h_Wminus_lepton_eta_el_dressed);
+ fillPlots1D(wfinder_mu_bare , _h_Wplus_lepton_eta_mu_bare , _h_Wminus_lepton_eta_mu_bare);
+ fillPlots1D(wfinder_mu_dressed, _h_Wplus_lepton_eta_mu_dressed, _h_Wminus_lepton_eta_mu_dressed);
}
- void fillPlots1D(const WFinder& wfinder, Histo1DPtr hist_plus, Histo1DPtr hist_minus, double weight) {
+ void fillPlots1D(const WFinder& wfinder, Histo1DPtr hist_plus, Histo1DPtr hist_minus) {
if (wfinder.bosons().size() != 1) return;
const Particle l = wfinder.constituentLeptons()[0];
const FourMomentum& miss = wfinder.constituentNeutrinos()[0].momentum();
if (l.pT() > 20*GeV && miss.Et() > 25*GeV && wfinder.mT() > 40*GeV)
- (l.charge3() > 0 ? hist_plus : hist_minus)->fill(l.abseta(), weight);
+ (l.charge3() > 0 ? hist_plus : hist_minus)->fill(l.abseta());
}
/// Normalise histograms etc., after the run
void finalize() {
// Construct asymmetry: (dsig+/deta - dsig-/deta) / (dsig+/deta + dsig-/deta)
divide(*_h_Wplus_lepton_eta_el_bare - *_h_Wminus_lepton_eta_el_bare,
*_h_Wplus_lepton_eta_el_bare + *_h_Wminus_lepton_eta_el_bare,
_h_W_asym_eta_el_bare);
divide(*_h_Wplus_lepton_eta_el_dressed - *_h_Wminus_lepton_eta_el_dressed,
*_h_Wplus_lepton_eta_el_dressed + *_h_Wminus_lepton_eta_el_dressed,
_h_W_asym_eta_el_dressed);
divide(*_h_Wplus_lepton_eta_mu_bare - *_h_Wminus_lepton_eta_mu_bare,
*_h_Wplus_lepton_eta_mu_bare + *_h_Wminus_lepton_eta_mu_bare,
_h_W_asym_eta_mu_bare);
divide(*_h_Wplus_lepton_eta_mu_dressed - *_h_Wminus_lepton_eta_mu_dressed,
*_h_Wplus_lepton_eta_mu_dressed + *_h_Wminus_lepton_eta_mu_dressed,
_h_W_asym_eta_mu_dressed);
// Print summary info
const double xs_pb(crossSection() / picobarn);
const double sumw(sumOfWeights());
MSG_DEBUG( "Cross-section/pb : " << xs_pb );
MSG_DEBUG( "Sum of weights : " << sumw );
MSG_DEBUG( "nEvents : " << numEvents() );
/// Normalise, scale and otherwise manipulate histograms here
const double sf = 0.5 * xs_pb / sumw; // 0.5 accounts for rapidity bin width
scale(_h_Wminus_lepton_eta_el_bare , sf);
scale(_h_Wminus_lepton_eta_el_dressed, sf);
scale(_h_Wminus_lepton_eta_mu_bare , sf);
scale(_h_Wminus_lepton_eta_mu_dressed, sf);
scale(_h_Wplus_lepton_eta_el_bare , sf);
scale(_h_Wplus_lepton_eta_el_dressed , sf);
scale(_h_Wplus_lepton_eta_mu_bare , sf);
scale(_h_Wplus_lepton_eta_mu_dressed , sf);
}
//@}
private:
/// @name Histograms
//@{
Histo1DPtr _h_Wminus_lepton_eta_el_bare;
Histo1DPtr _h_Wminus_lepton_eta_el_dressed;
Histo1DPtr _h_Wminus_lepton_eta_mu_bare;
Histo1DPtr _h_Wminus_lepton_eta_mu_dressed;
Histo1DPtr _h_Wplus_lepton_eta_el_bare;
Histo1DPtr _h_Wplus_lepton_eta_el_dressed;
Histo1DPtr _h_Wplus_lepton_eta_mu_bare;
Histo1DPtr _h_Wplus_lepton_eta_mu_dressed;
Scatter2DPtr _h_W_asym_eta_el_bare;
Scatter2DPtr _h_W_asym_eta_el_dressed;
Scatter2DPtr _h_W_asym_eta_mu_bare;
Scatter2DPtr _h_W_asym_eta_mu_dressed;
//@}
};
// The hook for the plugin system
DECLARE_RIVET_PLUGIN(ATLAS_2011_I928289_W);
}
diff --git a/analyses/pluginATLAS/ATLAS_2011_I928289_Z.cc b/analyses/pluginATLAS/ATLAS_2011_I928289_Z.cc
--- a/analyses/pluginATLAS/ATLAS_2011_I928289_Z.cc
+++ b/analyses/pluginATLAS/ATLAS_2011_I928289_Z.cc
@@ -1,111 +1,110 @@
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ZFinder.hh"
namespace Rivet {
class ATLAS_2011_I928289_Z : public Analysis {
public:
/// Constructor
ATLAS_2011_I928289_Z()
: Analysis("ATLAS_2011_I928289_Z")
{
setNeedsCrossSection(true);
}
/// @name Analysis methods
//@{
/// Book histograms and initialise projections before the run
void init() {
FinalState fs;
Cut cut = (Cuts::pT >= 20.0*GeV);
ZFinder zfinder_ee_bare( fs, cut, PID::ELECTRON, 66.0*GeV, 116.0*GeV, 0.0, ZFinder::CLUSTERNODECAY, ZFinder::NOTRACK);
ZFinder zfinder_ee_dressed(fs, cut, PID::ELECTRON, 66.0*GeV, 116.0*GeV, 0.1, ZFinder::CLUSTERNODECAY, ZFinder::NOTRACK);
ZFinder zfinder_mm_bare( fs, cut, PID::MUON , 66.0*GeV, 116.0*GeV, 0.0, ZFinder::CLUSTERNODECAY, ZFinder::NOTRACK);
ZFinder zfinder_mm_dressed(fs, cut, PID::MUON , 66.0*GeV, 116.0*GeV, 0.1, ZFinder::CLUSTERNODECAY, ZFinder::NOTRACK);
declare(zfinder_ee_bare , "ZFinder_ee_bare" );
declare(zfinder_ee_dressed, "ZFinder_ee_dressed");
declare(zfinder_mm_bare , "ZFinder_mm_bare" );
declare(zfinder_mm_dressed, "ZFinder_mm_dressed");
// y(Z) cross-section dependence
book(_h_Z_y_ee_bare ,1, 1, 1);
book(_h_Z_y_ee_dressed ,1, 1, 2);
book(_h_Z_y_mm_bare ,1, 1, 3);
book(_h_Z_y_mm_dressed ,1, 1, 4);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const ZFinder& zfinder_ee_bare = apply<ZFinder>(event, "ZFinder_ee_bare" );
const ZFinder& zfinder_ee_dressed = apply<ZFinder>(event, "ZFinder_ee_dressed");
const ZFinder& zfinder_mm_bare = apply<ZFinder>(event, "ZFinder_mm_bare" );
const ZFinder& zfinder_mm_dressed = apply<ZFinder>(event, "ZFinder_mm_dressed");
- const double weight = 1.0;
- fillPlots1D(zfinder_ee_bare , _h_Z_y_ee_bare , weight);
- fillPlots1D(zfinder_ee_dressed, _h_Z_y_ee_dressed, weight);
- fillPlots1D(zfinder_mm_bare , _h_Z_y_mm_bare , weight);
- fillPlots1D(zfinder_mm_dressed, _h_Z_y_mm_dressed, weight);
+ fillPlots1D(zfinder_ee_bare , _h_Z_y_ee_bare);
+ fillPlots1D(zfinder_ee_dressed, _h_Z_y_ee_dressed);
+ fillPlots1D(zfinder_mm_bare , _h_Z_y_mm_bare);
+ fillPlots1D(zfinder_mm_dressed, _h_Z_y_mm_dressed);
}
- void fillPlots1D(const ZFinder& zfinder, Histo1DPtr hist, double weight) {
+ void fillPlots1D(const ZFinder& zfinder, Histo1DPtr hist) {
if (zfinder.bosons().size() != 1) return;
const FourMomentum zmom = zfinder.bosons()[0].momentum();
- hist->fill(zmom.absrap(), weight);
+ hist->fill(zmom.absrap());
}
/// Normalise histograms etc., after the run
void finalize() {
// Print summary info
const double xs_pb(crossSection() / picobarn);
const double sumw(sumOfWeights());
MSG_DEBUG("Cross-Section/pb: " << xs_pb );
MSG_DEBUG("Sum of weights : " << sumw );
MSG_DEBUG("nEvents : " << numEvents());
// Normalise, scale and otherwise manipulate histograms here
const double sf(0.5 * xs_pb / sumw); // 0.5 accounts for rapidity bin width
scale(_h_Z_y_ee_bare , sf);
scale(_h_Z_y_ee_dressed, sf);
scale(_h_Z_y_mm_bare , sf);
scale(_h_Z_y_mm_dressed, sf);
}
//@}
private:
/// @name Histograms
//@{
Histo1DPtr _h_Z_y_ee_bare;
Histo1DPtr _h_Z_y_ee_dressed;
Histo1DPtr _h_Z_y_mm_bare;
Histo1DPtr _h_Z_y_mm_dressed;
//@}
};
// The hook for the plugin system
DECLARE_RIVET_PLUGIN(ATLAS_2011_I928289_Z);
}
diff --git a/analyses/pluginATLAS/ATLAS_2011_I929691.cc b/analyses/pluginATLAS/ATLAS_2011_I929691.cc
--- a/analyses/pluginATLAS/ATLAS_2011_I929691.cc
+++ b/analyses/pluginATLAS/ATLAS_2011_I929691.cc
@@ -1,103 +1,102 @@
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
namespace Rivet {
/// Jet fragmentation at 7 TeV
class ATLAS_2011_I929691 : public Analysis {
public:
/// Constructor
DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2011_I929691);
/// Initialisation
void init() {
const FinalState fs(Cuts::abseta < 2.0);
FastJets antikt_06_jets(fs, FastJets::ANTIKT, 0.6, JetAlg::NO_MUONS, JetAlg::NO_INVISIBLES);
declare(antikt_06_jets, "jets");
ChargedFinalState tracks(Cuts::pT > 0.5*GeV && Cuts::abseta < 2.0);
declare(tracks, "tracks");
// Set up the histograms (each element is a binning in jet pT)
for (size_t i = 0; i < 10; i++) {
book(_p_F_z[i] , i+ 1, 1, 1);
book(_p_rho_r[i] , i+11, 1, 1);
book(_p_f_pTrel[i], i+21, 1, 1);
}
}
// Per-event analysis
void analyze(const Event& event) {
const Jets alljets = apply<FastJets>(event, "jets").jetsByPt(Cuts::absrap < 1.2);
const Particles& tracks = apply<ChargedFinalState>(event, "tracks").particlesByPt();
for (size_t i = 0; i < 10; ++i) {
const Jets jets = filter_select(alljets, Cuts::pT > bedges[i] && Cuts::pT < bedges[i+1]);
const int n_jets = jets.size();
if (n_jets == 0) continue;
// First... count the tracks
Histo1D h_ntracks_z(*_p_F_z[i]), h_ntracks_r(*_p_rho_r[i]), h_ntracks_pTrel(*_p_f_pTrel[i]);
for (const Jet& j : jets) {
for (const Particle& p : tracks) {
const double dr = deltaR(j, p, RAPIDITY);
if (dr > 0.6) continue; // The paper uses pseudorapidity, but this is a requirement for filling the histogram
h_ntracks_z.fill(z(j, p), 1.0/n_jets);
h_ntracks_r.fill(dr, 1.0/n_jets);
h_ntracks_pTrel.fill(pTrel(j, p), 1.0/n_jets);
}
}
// Then... calculate the observable and fill the profiles
- const double weight = 1.0;
for (const HistoBin1D& b : h_ntracks_z.bins())
- _p_F_z[i]->fill(b.xMid(), b.height(), weight);
+ _p_F_z[i]->fill(b.xMid(), b.height());
for (const HistoBin1D& b : h_ntracks_r.bins())
- _p_rho_r[i]->fill(b.xMid(), b.area()/annulus_area(b.xMin(), b.xMax()), weight);
+ _p_rho_r[i]->fill(b.xMid(), b.area()/annulus_area(b.xMin(), b.xMax()));
for (const HistoBin1D& b : h_ntracks_pTrel.bins())
- _p_f_pTrel[i]->fill(b.xMid(), b.height(), weight);
+ _p_f_pTrel[i]->fill(b.xMid(), b.height());
}
}
double z (const Jet& jet, const Particle& ch) {
return dot(jet.p3(), ch.p3()) / jet.p3().mod2();
}
double pTrel (const Jet& jet, const Particle& ch) {
return (ch.p3().cross(jet.p3())).mod()/(jet.p3().mod());
}
// To calculate the area of the annulus in an r bin
double annulus_area(double r1, double r2) {
return M_PI*(sqr(r2) - sqr(r1));
}
private:
Profile1DPtr _p_F_z[10], _p_rho_r[10], _p_f_pTrel[10];
const vector<double> bedges = { 25., 40., 60., 80., 110., 160., 210., 260., 310., 400., 500. };
};
// The hook for the plugin system
DECLARE_RIVET_PLUGIN(ATLAS_2011_I929691);
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Feb 23, 3:06 PM (24 m, 28 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4486844
Default Alt Text
(26 KB)

Event Timeline