Rivet analyses
Charged particle multiplicity and momentum spectra in Breit frame at ZEUS
Experiment: ZEUS (HERA)
Inspire ID: 392386
Status: VALIDATED
Authors: - Suzie Kim - Hannes Jung
References: - Z.Phys.C67:93-108,1995 - DOI:10.1007/BF01564824 - arXiv: hep-ex/9501012 - DESY 95-007
Beams: e- p+, p+ e-
Beam energies: (26.7, 820.0); (820.0, 26.7)GeV
Run details: none listed
Charged particle multiplicity and momentum spectra in Deep Inelastic Scattering event are measured at ZEUS. The analysis is performed in Breit frame. The analysis covers the kinematic range of 10 < Q2 < 1280 GeV2 and 6 × 10−4 < xbj < 5 × 10−2.
Source
code:ZEUS_1995_I392386.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/DISKinematics.hh"
namespace Rivet {
const vector<double> QEdges {10., 20., 40., 80., 160., 320.};
const vector<double> xEdges {0.6e-3,1.2e-3,2.4e-3,1.0e-2,5.0e-2};
/// @brief Charged particle multiplicity and momentum spectra in Breit frame at ZEUS
class ZEUS_1995_I392386 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ZEUS_1995_I392386);
/// @name Analysis methods
///@{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
declare(DISKinematics(), "Kinematics");
// The basic final-state projection:
// all final-state particles within
// the given eta acceptance
const ChargedFinalState fs;
declare(fs, "FS");
// Book histograms
// specify custom binning
// take binning from reference data using HEPData ID (digits in "d01-x01-y01" etc.)
for(int iQ = 0; iQ < 11; ++iQ) {
book(_Nevt_after_cuts_Q[iQ], "TMP/Nevt_after_cuts_Q"+ to_string(iQ));
}
book(_p["mult1"], 1,1,1);
book(_p["mult2"], 2,1,1);
book(_p["mult3"], 3,1,1);
book(_p["mult4"], 4,1,1);
book(_p["mom1"], 5,1,1);
book(_p["mom2"], 6,1,1);
book(_p["mom3"], 7,1,1);
book(_p["mom4"], 8,1,1);
book(_i["nch1"], 9, 1, 1); // Multiplicity
book(_i["nch2"], 10, 1, 1);
book(_i["nch3"], 10, 1, 2);
book(_i["nch4"], 10, 1, 3);
book(_i["nch5"], 11, 1, 1);
book(_i["nch6"], 11, 1, 2);
book(_i["nch7"], 11, 1, 3);
book(_i["nch8"], 11, 1, 4);
book(_i["nch9"], 12, 1, 1);
book(_i["nch10"], 12, 1, 2);
book(_h["loginvmom1"], 13, 1, 1); // Momentum spectra
book(_h["loginvmom2"], 14, 1, 1);
book(_h["loginvmom3"], 14, 1, 2);
book(_h["loginvmom4"], 14, 1, 3);
book(_h["loginvmom5"], 15, 1, 1);
book(_h["loginvmom6"], 15, 1, 2);
book(_h["loginvmom7"], 15, 1, 3);
book(_h["loginvmom8"], 15, 1, 4);
book(_h["loginvmom9"], 16, 1, 1);
book(_h["loginvmom10"], 16, 1, 2);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "FS");
const DISKinematics& dk = apply<DISKinematics>(event, "Kinematics");
double xbj = dk.x(); // momentum fraction
double Q2 = dk.Q2()/GeV; // momentum transfer
const LorentzTransform Breitboost = dk.boostBreit();
// Multiplicity counters
int n911(0), n1011(0), n1012(0), n1013(0), n1111(0), n1112(0), n1113(0), n1114(0), n1211(0), n1212(0);
if(0.6e-3<xbj && xbj<1.2e-3) {
if(10<Q2 && Q2<20) {
_Nevt_after_cuts_Q[1] -> fill();
}
if(10<Q2 && Q2<20) {
_Nevt_after_cuts_Q[2] -> fill();
}
if(20<Q2 && Q2<40) {
_Nevt_after_cuts_Q[3] -> fill();
}
if(40<Q2 && Q2<80) {
_Nevt_after_cuts_Q[4] -> fill();
}
}
if(2.4e-3<xbj && xbj<1.0e-2) {
if(20<Q2 && Q2<40) {
_Nevt_after_cuts_Q[5] -> fill();
}
if(40<Q2 && Q2<80){
_Nevt_after_cuts_Q[6] -> fill();
}
if(80<Q2 && Q2<160) {
_Nevt_after_cuts_Q[7] -> fill();
}
if(160<Q2 && Q2<320) {
_Nevt_after_cuts_Q[8] -> fill();
}
}
if(1.0e-2<xbj && xbj<5.0e-2) {
if(320<Q2 && Q2<640) {
_Nevt_after_cuts_Q[9] -> fill();
}
if(640<Q2 && Q2<1280) {
_Nevt_after_cuts_Q[10] -> fill();
}
}
for (const Particle& p : cfs.particles()) {
//??? calculating ln(1/x_p) ??? --> part to ask
const FourMomentum BrMom = Breitboost.transform(p.momentum());
double pp = sqrt(BrMom.px()*BrMom.px() + BrMom.py()*BrMom.py() + BrMom.pz()*BrMom.pz() );
double xp = 2*pp/(sqrt(Q2));
const double logInvScaledMom = log(1/xp);
if ( BrMom.pz() > 0. ) continue;
if(0.6e-3<xbj && xbj<1.2e-3) {
_p["mom1"] ->fill(Q2, logInvScaledMom);
if(10<Q2 && Q2<20) {
_h["loginvmom1"] ->fill(logInvScaledMom);
++n911;
}
}
if(1.2e-3<xbj && xbj<2.4e-3) {
_p["mom2"] ->fill(Q2, logInvScaledMom);
if(10<Q2 && Q2<20) {
_h["loginvmom2"] ->fill(logInvScaledMom);
++n1011;
}
if(20<Q2 && Q2<40) {
_h["loginvmom3"] ->fill(logInvScaledMom);
++n1012;
}
if(40<Q2 && Q2<80) {
_h["loginvmom4"] ->fill(logInvScaledMom);
++n1013;
}
}
if(2.4e-3<xbj && xbj<1.0e-2) {
_p["mom3"] ->fill(Q2, logInvScaledMom);
if(20<Q2 && Q2<40) {
_h["loginvmom5"] ->fill(logInvScaledMom);
++n1111;
}
if(40<Q2 && Q2<80){
_h["loginvmom6"] ->fill(logInvScaledMom);
++n1112;
}
if(80<Q2 && Q2<160) {
_h["loginvmom7"] ->fill(logInvScaledMom);
++n1113;
}
if(160<Q2 && Q2<320) {
_h["loginvmom8"] ->fill(logInvScaledMom);
++n1114;
}
}
if(1.0e-2<xbj && xbj<5.0e-2) {
_p["mom4"] ->fill(Q2,logInvScaledMom);
if(320<Q2 && Q2<640) {
_h["loginvmom9"] ->fill(logInvScaledMom);
++n1211;
}
if(640<Q2 && Q2<1280) {
_h["loginvmom10"] ->fill(logInvScaledMom);
++n1212;
}
}
}
if(0.6e-3<xbj && xbj<1.2e-3) {
if(10<Q2 && Q2<20) {
_p["mult1"] ->fill(Q2, n911);
_i["nch1"] ->fill(n911);
}
}
if(1.2e-3<xbj && xbj<2.4e-3) {
if(10<Q2 && Q2<80) {
_p["mult2"] ->fill(Q2, n1011+n1012+n1013);
if(10<Q2 && Q2<20) {
_i["nch2"] ->fill(n1011); }
if(20<Q2 && Q2<40) {
_i["nch3"] ->fill(n1012);}
if(40<Q2 && Q2<80) {
_i["nch4"] ->fill(n1013);}
}
}
if(2.4e-3<xbj && xbj<1.0e-2) {
_p["mult3"] ->fill(Q2,n1111+n1112+n1113+n1114);
if(20<Q2 && Q2<40) {
_i["nch5"] ->fill(n1111);}
if(40<Q2 && Q2<80) {
_i["nch6"] ->fill(n1112);}
if(80<Q2 && Q2<160) {
_i["nch7"] ->fill(n1113);}
if(160<Q2 && Q2<320) {
_i["nch8"] ->fill(n1114);}
}
if(1.0e-2<xbj && xbj<5.0e-2) {
_p["mult4"] ->fill(Q2, n1211+n1212);
if(320<Q2 && Q2<640) {
_i["nch9"] ->fill(n1211);}
if(640<Q2 && Q2<1280) {
_i["nch10"] ->fill(n1212); }
}
}
/// Normalise histograms etc., after the run
void finalize() {
normalize(_i["nch1"]); //multiplicity
normalize(_i["nch2"]);
normalize(_i["nch3"]);
normalize(_i["nch4"]);
normalize(_i["nch5"]);
normalize(_i["nch6"]);
normalize(_i["nch7"]);
normalize(_i["nch8"]);
normalize(_i["nch9"]);
normalize(_i["nch10"]);
if(dbl(*_Nevt_after_cuts_Q[1])>0 ) scale(_h["loginvmom1"],1./ *_Nevt_after_cuts_Q[1]); //momentum
if(dbl(*_Nevt_after_cuts_Q[2])>0 ) scale(_h["loginvmom2"],1./ *_Nevt_after_cuts_Q[2]);
if(dbl(*_Nevt_after_cuts_Q[3])>0 ) scale(_h["loginvmom3"],1./ *_Nevt_after_cuts_Q[3] );
if(dbl(*_Nevt_after_cuts_Q[4])>0 ) scale(_h["loginvmom4"],1./ *_Nevt_after_cuts_Q[4] );
if(dbl(*_Nevt_after_cuts_Q[5])>0 ) scale(_h["loginvmom5"],1./ *_Nevt_after_cuts_Q[5] );
if(dbl(*_Nevt_after_cuts_Q[6])>0 ) scale(_h["loginvmom6"],1./ *_Nevt_after_cuts_Q[6]);
if(dbl(*_Nevt_after_cuts_Q[7])>0 ) scale(_h["loginvmom7"],1./ *_Nevt_after_cuts_Q[7]);
if(dbl(*_Nevt_after_cuts_Q[8])>0 ) scale(_h["loginvmom8"],1./ *_Nevt_after_cuts_Q[8]);
if(dbl(*_Nevt_after_cuts_Q[9])>0 ) scale(_h["loginvmom9"],1./ *_Nevt_after_cuts_Q[9] );
if(dbl(*_Nevt_after_cuts_Q[10])>0 ) scale(_h["loginvmom10"],1./ *_Nevt_after_cuts_Q[10] );
}
///@}
/// @name Histograms
///@{
Estimate1DPtr _h_mult1;
Estimate1DPtr _h_mult2;
Estimate1DPtr _h_mult3;
Estimate1DPtr _h_mult4;
Estimate1DPtr _h_mom1;
Estimate1DPtr _h_mom2;
Estimate1DPtr _h_mom3;
Estimate1DPtr _h_mom4;
map<string, Histo1DPtr> _h;
map<string, BinnedHistoPtr<int> > _i;
map<string, Profile1DPtr> _p;
map<string, CounterPtr> _c;
CounterPtr _Nevt_after_cuts_Q[11];
///@}
};
RIVET_DECLARE_PLUGIN(ZEUS_1995_I392386);
}