Rivet analyses referenceCMS_2012_I1184941Measurement of the differential cross section for inclusive dijet production as a function of $\xi$ in 7 TeV proton-proton collisions.Experiment: CMS (LHC) Inspire ID: 1184941 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
Measurement of the differential cross section for inclusive dijet production as a function of $\xi$ which approximates the fractional momentum loss of the scattered proton in single-diffraction events. The data used has a total integrated luminosity of 2.7 nb$^{-1}$ collected during 2010 with low instantaneous luminosity. Events are selected with at least two jets in $|\eta| < 4.4$ with $p_\perp > 20$ GeV and all final states particles are used for the reconstruction of $\xi$. Source code: CMS_2012_I1184941.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FastJets.hh"
4#include "Rivet/Projections/FinalState.hh"
5
6namespace Rivet {
7
8
9 class CMS_2012_I1184941 : public Analysis {
10 public:
11
12 CMS_2012_I1184941()
13 : Analysis("CMS_2012_I1184941")
14 { }
15
16
17 void init() {
18 FinalState fs;
19 declare(fs, "FS");
20
21 const FastJets jets(FinalState((Cuts::etaIn(-4.9, 4.9))), JetAlg::ANTIKT, 0.5);
22 declare(jets, "AntiKtJets05");
23
24 book(_h_xi ,1, 1, 1);
25 }
26
27
28 void analyze(const Event& event) {
29 double xiM = 0.;
30 double xiP = 0.;
31
32 const Jets jets = apply<FastJets>(event, "AntiKtJets05").jetsByPt(Cuts::pT > 20.*GeV);
33 if (jets.size() < 2) vetoEvent; // require a dijet system with a 20 GeV cut on both jets
34 if (fabs(jets[0].eta()) > 4.4 || fabs(jets[1].eta()) > 4.4) vetoEvent;
35
36 const FinalState& fsp = apply<FinalState>(event, "FS");
37
38 for (const Particle& p : fsp.particles(cmpMomByEta)) {
39 const double eta = p.eta();
40 const double energy = p.E();
41 const double costheta = cos(p.theta());
42 // Yes, they really correct to +/- infinity, using Pythia 8 ...
43 if (eta < 4.9) xiP += (energy + energy*costheta);
44 if (eta > -4.9 ) xiM += (energy - energy*costheta);
45 }
46
47 xiP = xiP / (sqrtS()/GeV);
48 xiM = xiM / (sqrtS()/GeV);
49
50 _h_xi->fill( xiM ); // Fill the histogram both with xiP and xiM, and get the average in the endjob.
51 _h_xi->fill( xiP );
52 }
53
54
55 void finalize() {
56 scale( _h_xi, crossSection()/microbarn/sumOfWeights() / 2.);
57 }
58
59
60 private:
61
62 Histo1DPtr _h_xi;
63
64 };
65
66 RIVET_DECLARE_PLUGIN(CMS_2012_I1184941);
67
68}
|