Rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### LHCB_2015_I1333223

Measurement of inelastic interaction cross-section in pp collisions at 7 TeV for LHCb fiducial phase-space.
Experiment: LHCB (Large Hadron Collider (LHC))
Inspire ID: 1333223
Status: VALIDATED
Authors:
• Alex Grecu
References:
Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
• Proton-proton interactions at sqrt(s) = 7 TeV. LHCb minimum bias, inelastic events (elastic processes may be turned off).

LhCb measurement of the cross-section for inelastic proton-proton collisions at $\sqrt{s} = 7$ TeV with at least one prompt stable charged particle of transverse momentum $p_T > 0.2$ GeV/$c$ and pseudorapidity ($\eta$) in the range $2.0 < \eta < 4.5$. A prompt stable charged particle is defined as having the true impact parameter relative to the true primary vertex smaller than 200 $\mu$m.

Source code: LHCB_2015_I1333223.cc
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Tools/Logging.hh" #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Math/Units.hh" #include using namespace std; namespace Rivet { class LHCB_2015_I1333223 : public Analysis { public: /// @name Constructors etc. //@{ /// Constructor LHCB_2015_I1333223() : Analysis("LHCB_2015_I1333223") { } //@} public: /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // Charged particles declare(ChargedFinalState(Cuts::eta> 2.0 && Cuts::eta <4.5 && Cuts::pT >0.2*GeV), "CFS"); // Reproducing only measurement for prompt charged particles _hInelasticXs = bookHisto1D(1, 1, 1); } /// Perform the per-event analysis void analyze(const Event& event) { const double weight = event.weight(); const ChargedFinalState &cfs = apply (event, "CFS"); // eliminate non-inelastic events and empty events in LHCb if (cfs.particles().size() == 0) vetoEvent; // See if this event has at least one prompt particle foreach (const Particle &myp, cfs.particles()){ double dPV = getPVDCA(myp); // if IP > 200 microns the particle is not considered prompt if ((dPV < 0.) || (dPV > 0.2 * millimeter)) { MSG_DEBUG(" Vetoing " << myp.pdgId() << " at " << dPV); continue; } // histo gets filled only for inelastic events (at least one prompt charged particle) _hInelasticXs->fill(sqrtS(), weight); break; } //end loop on particles } /// Normalise histograms etc., after the run void finalize() { scale(_hInelasticXs, crossSection()/sumOfWeights()/millibarn); } //@} private: /* * Compute Distance of Closest Approach in z range for one particle. * Assuming length unit is mm. * Returns -1. if unable to compute the DCA to PV. */ double getPVDCA(const Particle& p) { const HepMC::GenVertex* vtx = p.genParticle()->production_vertex(); if ( 0 == vtx ) return -1.; // Unit vector of particle's MOMENTUM three vector const Vector3 u = p.momentum().p3().unit(); // The interaction point is always at (0, 0,0,0) hence the // vector pointing from the PV to the particle production vertex is: Vector3 d(vtx->position().x(), vtx->position().y(), vtx->position().z()); // Subtract projection of d onto u from d double proj = d.dot(u); d -= (u * proj); // d should be orthogonal to u and it's length give the distance of // closest approach return d.mod(); } /// @name Histograms //@{ Histo1DPtr _hInelasticXs; //@} // }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(LHCB_2015_I1333223); }