rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

LHCF_2020_I1783943

Measurement of energy flow, cross section and average inelasticity of forward neutrons produced in $\sqrt{s} = 13$ TeV proton-proton collisions with the LHCf Arm2 detector
Experiment: LHCF (LHC)
Inspire ID: 1783943
Status: VALIDATED
Authors:
  • Eugenio Berti
  • LHCf collaboration
References:
  • JHEP 07 (2020) 16
  • DOI:10.1007/JHEP07(2020)016
  • arXiv: 2003.02192
Beams: p+ p+
Beam energies: (6500.0, 6500.0) GeV
Run details:
  • Measurement of the energy flow, the cross section and the average inelasticity of forward neutrons (+ antineutrons) produced in $\sqrt{s} = 13$ TeV proton-proton collisions. These quantities are derived from the inclusive differential production cross section measured, as a function of energy, in the six pseudorapidity regions corresponding to $\eta > 10.76$, $10.06 < \eta < 10.75$, $9.65 < \eta < 10.06$, $8.99 < \eta < 9.22$, $8.81 < \eta < 8.99$ and $8.65 < \eta < 8.80$. The measurements refer to all neutrons (and antineutrons) directly produced in the collisions or resulting from the decay of short life particles ($\mathrm{c \tau<1\,cm}$).

In this paper, we report the measurement of the energy flow, the cross section and the average inelasticity of forward neutrons (+ antineutrons) produced in $\sqrt{s} = 13$ TeV proton-proton collisions. These quantities are obtained from the inclusive differential production cross section, measured using the LHCf Arm2 detector at the CERN Large Hadron Collider. The measurements are performed in six pseudorapidity regions: three of them ($\eta > 10.75$, $8.99 < \eta < 9.21$ and $8.80 < \eta < 8.99$), albeit with smaller acceptance and larger uncertainties, were already published in a previous work, whereas the remaining three ($10.06 < \eta < 10.75$, $9.65 < \eta < 10.06$ and $8.65 < \eta < 8.80$) are presented here for the first time. The analysis was carried out using a data set acquired in June 2015 with a corresponding integrated luminosity of $\mathrm{0.194 nb^{-1}}$. Comparing the experimental measurements with the expectations of several hadronic interaction models used to simulate cosmic ray air showers, none of these generators resulted to have a satisfactory agreement in all the phase space selected for the analysis. The inclusive differential production cross section for $\eta > 10.75$ is not reproduced by any model, whereas the results still indicate a significant but less serious deviation at lower pseudorapidities. Depending on the pseudorapidity region, the generators showing the best overall agreement with data are either SIBYLL 2.3 or EPOS-LHC. Furthermore, apart from the most forward region, the derived energy flow and cross section distributions are best reproduced by EPOS-LHC. Finally, even if none of the models describe the elasticity distribution in a satisfactory way, the extracted average inelasticity is consistent with the QGSJET II-04 value, while most of the other generators give values that lie just outside the experimental uncertainties.

Source code: LHCF_2020_I1783943.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief Measurement of forward neutron(+ antineutron) production in proton-proton Collisions at 13 TeV
 10  class LHCF_2020_I1783943 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(LHCF_2020_I1783943);
 15
 16    /// @name Analysis methods
 17    /// @{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21
 22      // Initialise and register projections
 23      declare(Beam(), "Beam");
 24      declare(FinalState(), "FS");
 25
 26      // Book histograms
 27      book(_h_n_en_eta1, 1, 1, 1);
 28      book(_h_n_en_eta2, 2, 1, 1);
 29      book(_h_n_en_eta3, 3, 1, 1);
 30      book(_h_n_en_eta4, 4, 1, 1);
 31      book(_h_n_en_eta5, 5, 1, 1);
 32      book(_h_n_en_eta6, 6, 1, 1);
 33      book(_h_n_eflow, 7, 1, 1);
 34      book(_h_n_sigma, 8, 1, 1);
 35      book(_h_n_elas,  9, 1, 1);
 36      book(_h_n_inel, 10, 1, 1);
 37
 38      book(_inelnorm, "_inelasticity_norm");
 39    }
 40
 41    /// Perform the per-event analysis
 42    void analyze(const Event& event) {
 43
 44      const FinalState &fs = apply<FinalState> (event, "FS");
 45      Particles fs_particles = fs.particles();
 46
 47      bool is_fl_neutron = false;
 48      double elasticity = 0.;
 49
 50      for (Particle& p: fs_particles ) {
 51        //Artificially remove QGSJet II-04 wrong events
 52        //if(p.pT()/GeV == 0.0) continue;
 53
 54        // double analysis efficiency with a two-sided LHCf
 55        double energy = p.E()/GeV;
 56        double eta = p.abseta();
 57        // highest eta value must be in [10.75, 13.00]
 58        if (eta > 13.0)  eta = 11.875;
 59
 60        // search for forward leading particle on one side only
 61        if (p.eta() > 0) {
 62          if (2.*energy/sqrtS() > elasticity) {
 63            elasticity = 2.*energy/sqrtS();
 64            is_fl_neutron = p.abspid() == 2112;
 65          }
 66        }
 67
 68        // select neutrons above threshold
 69        if (p.abspid() != 2112) continue; //Select neutrons and antineutrons only
 70
 71        _h_n_eflow->fill(eta, energy); //Energy Flow
 72        _h_n_sigma->fill(eta); //Cross Section
 73
 74        // select only energy above 500 GeV
 75        if (p.E()/GeV < 500.) continue;
 76
 77        // fill energy distributions
 78        if (eta >= 10.749356) {
 79          _h_n_en_eta1->fill( energy );
 80        } else if(eta >= 10.056209 && eta <= 10.749356) {
 81          _h_n_en_eta2->fill( energy );
 82        } else if(eta >= 9.650744 && eta <= 10.056209) {
 83          _h_n_en_eta3->fill( energy );
 84        } else if(eta >= 8.985767 && eta <= 9.208911) {
 85          _h_n_en_eta4->fill( energy );
 86        } else if(eta >= 8.803446 && eta <= 8.985767) {
 87          _h_n_en_eta5->fill( energy );
 88        } else if(eta >= 8.649295 && eta <= 8.803446) {
 89          _h_n_en_eta6->fill( energy );
 90        }
 91
 92      }
 93
 94      // fill elasticity distribution if forward particle is a neutron
 95      if (is_fl_neutron) {
 96        _h_n_elas->fill(elasticity);
 97        _h_n_inel->fill(1.0, 1.0-elasticity);
 98        _inelnorm->fill();
 99      }
100
101    }
102
103    /// Normalise histograms etc., after the run
104    void finalize() {
105
106      //Scale considering the LHCf Arm2 side
107      scale(_h_n_en_eta1, 0.5*crossSection()/millibarn/sumOfWeights()); // normalize to cross section
108      scale(_h_n_en_eta2, 0.5*crossSection()/millibarn/sumOfWeights()); // normalize to cross section
109      scale(_h_n_en_eta3, 0.5*crossSection()/millibarn/sumOfWeights()); // normalize to cross section
110      scale(_h_n_en_eta4, 0.5*crossSection()/millibarn/sumOfWeights()); // normalize to cross section
111      scale(_h_n_en_eta5, 0.5*crossSection()/millibarn/sumOfWeights()); // normalize to cross section
112      scale(_h_n_en_eta6, 0.5*crossSection()/millibarn/sumOfWeights()); // normalize to cross section
113
114      scale(_h_n_eflow, 0.5/sumOfWeights()); // normalize to event number
115      scale(_h_n_sigma, 0.5*crossSection()/millibarn/sumOfWeights()); // normalize to cross section
116
117      scale(_h_n_inel, 1. / *_inelnorm); // normalize to forward leading neutron event number
118      scale(_h_n_elas, crossSection()/millibarn/sumOfWeights()); // normalize to cross section
119      for (auto& b : _h_n_inel->bins()) {
120        b.scaleW(b.xWidth());
121      }
122      for (auto& b : _h_n_elas->bins()) {
123        b.scaleW(b.xWidth());
124      }
125
126    }
127    /// @}
128
129  private:
130
131    /// @name Histograms
132    /// @{
133    Histo1DPtr _h_n_en_eta1;
134    Histo1DPtr _h_n_en_eta2;
135    Histo1DPtr _h_n_en_eta3;
136    Histo1DPtr _h_n_en_eta4;
137    Histo1DPtr _h_n_en_eta5;
138    Histo1DPtr _h_n_en_eta6;
139    Histo1DPtr _h_n_eflow;
140    Histo1DPtr _h_n_sigma;
141    Histo1DPtr _h_n_inel;
142    Histo1DPtr _h_n_elas;
143
144    CounterPtr _inelnorm;
145    /// @}
146
147  };
148
149
150  RIVET_DECLARE_PLUGIN(LHCF_2020_I1783943);
151
152}