Rivet analyses
Four-jet angles using Durham algorithm
Experiment: OPAL (LEP Run 1)
Inspire ID: 552446
Status: VALIDATED
Authors: - Frank Siegert
References: - Eur.Phys.J.C20:601-615,2001 - DOI: 10.1007/s100520100699 - arXiv: hep-ex/0101044
Beams: e+ e-
Beam energies: (45.6, 45.6)GeV
Run details: - Hadronic Z decay events generated on the Z pole ($\sqrt{s} = 91.2$ GeV) Hadronisation should be turned off because the data is corrected back to the parton level.
Angles between the leading (in energy) four jets defined using the Durham algorithm with ycut = 0.008. The data is presented at the parton level and includes the Bengtsson-Zerwas, Korner-Schierholz-Willrodt and Nachtmann-Reiter angles as well as the angle between the two softest jets.
Source
code:OPAL_2001_I552446.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/FinalState.hh"
namespace Rivet {
/// Four-jet angles using Durham algorithm
class OPAL_2001_I552446 : public Analysis {
public:
RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_2001_I552446);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
const FinalState fs;
declare(fs, "FS");
declare(FastJets(fs, JetAlg::DURHAM, 0.7), "Jets");
// Book histograms here
book(_h_BZ ,3, 1, 1);
book(_h_KSW ,4, 1, 1);
book(_h_NR ,5, 1, 1);
book(_h_ALPHA34 ,6, 1, 1);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
// Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
if (apply<FinalState>(event, "FS").particles().size() < 2) {
vetoEvent;
}
const FastJets& fastjets = apply<FastJets>(event, "Jets");
if (fastjets.clusterSeq()) {
vector<fastjet::PseudoJet> jets;
for (const fastjet::PseudoJet& jet :
fastjet::sorted_by_E(fastjets.clusterSeq()->exclusive_jets_ycut(0.008))) {
if (jet.E()>3.0*GeV) jets.push_back(jet);
}
if (jets.size() == 4) {
// Prevent nan-fill due to division by zero in calc_BZ
double bz = fabs(calc_BZ(jets));
if (!std::isnan(bz)) _h_BZ->fill(bz);
_h_KSW->fill(calc_KSW(jets));
_h_NR->fill(fabs(calc_NR(jets)));
_h_ALPHA34->fill(calc_ALPHA34(jets));
}
}
}
/// Normalise histograms etc., after the run
void finalize() {
normalize(_h_BZ);
normalize(_h_KSW);
normalize(_h_NR);
normalize(_h_ALPHA34);
}
/// @}
private:
/// @name Jet angle calculator functions
/// @{
/// @todo Use Jet or FourMomentum interface rather than PseudoJet
/// @todo Move to utils?
double calc_BZ(const vector<fastjet::PseudoJet>& jets) {
assert(jets.size() == 4);
Vector3 p12 = cross( momentum3(jets[0]), momentum3(jets[1]));
Vector3 p34 = cross( momentum3(jets[2]), momentum3(jets[3]));
return dot(p12,p34) / (p12.mod()*p34.mod());
}
/// @todo Use Jet or FourMomentum interface rather than PseudoJet
/// @todo Move to utils?
double calc_KSW(const vector<fastjet::PseudoJet>& jets) {
assert(jets.size() == 4);
Vector3 p13 = cross( momentum3(jets[0]), momentum3(jets[2]));
Vector3 p24 = cross( momentum3(jets[1]), momentum3(jets[3]));
Vector3 p14 = cross( momentum3(jets[0]), momentum3(jets[3]));
Vector3 p23 = cross( momentum3(jets[1]), momentum3(jets[2]));
return cos (0.5*( acos (dot(p14,p23) / (p14.mod()*p23.mod())) +
acos (dot(p13,p24) / (p13.mod()*p24.mod())) ));
}
/// @todo Use Jet or FourMomentum interface rather than PseudoJet
/// @todo Move to utils?
double calc_NR(const vector<fastjet::PseudoJet>& jets) {
assert(jets.size() == 4);
Vector3 p12 = momentum3(jets[0]) - momentum3(jets[1]);
Vector3 p34 = momentum3(jets[2]) - momentum3(jets[3]);
return dot(p12,p34) / (p12.mod()*p34.mod());
}
/// @todo Use Jet or FourMomentum interface rather than PseudoJet
/// @todo Move to utils?
double calc_ALPHA34(const vector<fastjet::PseudoJet>& jets) {
assert(jets.size() == 4);
Vector3 p3 = momentum3(jets[2]);
Vector3 p4 = momentum3(jets[3]);
return dot(p3,p4) / (p3.mod()*p4.mod());
}
/// @}
/// @name Histograms
/// @{
Histo1DPtr _h_BZ;
Histo1DPtr _h_KSW;
Histo1DPtr _h_NR;
Histo1DPtr _h_ALPHA34;
/// @}
};
RIVET_DECLARE_ALIASED_PLUGIN(OPAL_2001_I552446, OPAL_2001_S4553896);
}Aliases: - OPAL_2001_S4553896