rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2019_I1762584

Differential single diffractive cross sections at 8 TeV
Experiment: ATLAS, ALFA (LHC)
Inspire ID: 1762584
Status: VALIDATED
Authors:
  • Felix Kling
References: Beams: p+ p+
Beam energies: (4000.0, 4000.0) GeV
Run details:
  • Single diffractive minimum bias events

A dedicated sample of Large Hadron Collider proton-proton collision data at centre-of-mass energy $\sqrt{s} = 8$ TeV is used to study inclusive single diffractive dissociation, $pp \to X p$. The intact final-state proton is reconstructed in the ATLAS ALFA forward spectrometer, while charged particles from the dissociated system X are measured in the central detector components. The fiducial range of the measurement is $-4.0 < \log_{10} \xi < -1.6$ and $0.016 < |t| < 0.43$ GeV$^{2}$, where $\xi$ is the proton fractional energy loss and $t$ is the squared four-momentum transfer. The total cross section integrated across the fiducial range is $1.59 \pm 0.13$ mb. Cross sections are also measured differentially as functions of $\xi$, $t$, and $\Delta \eta$, a variable that characterises the rapidity gap separating the proton and the system X. The data are consistent with an exponential $t$ dependence, d$\sigma$/d$t \approx e^{Bt}$ with slope parameter $B = 7.65 \pm 0.34$ GeV$^{-2}$. Interpreted in the framework of triple Regge phenomenology, the $\xi$ dependence leads to a pomeron intercept of $\alpha(0) = 1.07 \pm 0.09$.

Source code: ATLAS_2019_I1762584.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/ChargedFinalState.hh"
 4#include "Rivet/Projections/FinalState.hh"
 5
 6namespace Rivet {
 7
 8    /// @brief single-diffractive cross-sections at 8 TeV
 9    class ATLAS_2019_I1762584 : public Analysis {
10        public:
11
12        /// Constructor
13        RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2019_I1762584);
14
15        void init() {
16
17            // Inner Detector (ID) charged final states
18            // charged tracks with pT>200MeV, |eta|<2.5
19            Cut track_cuts = Cuts::abseta < 2.5 && Cuts::pT > 0.2*GeV;
20            const ChargedFinalState tracks(track_cuts);
21            declare(tracks, "tracks");
22
23            // Forward Detector (FD) protons
24            // protons with 0.016<|t|/GeV^2<0.43: 0.126<pT/GeV<0.655
25            Cut proton_t_cuts = Cuts::pT>0.126/GeV && Cuts::pT<0.655/GeV  ;
26            // protons with -4<log10(Xi)<-1.6: 0.016<|t|/GeV^2<0.43: 3899.52<E<3999.6
27            Cut proton_xi_cuts = Cuts::E>3899.52/GeV && Cuts::E<3999.6/GeV ;
28            const ChargedFinalState protons(Cuts::pid==PID::PROTON && proton_t_cuts && proton_xi_cuts ) ;
29            declare(protons, "protons");
30
31            // Book histograms
32            book(_h_dSigma_dDeltaEta, 1, 1, 1);
33            book(_h_dSigma_dAbsT, 2, 1, 1);
34            book(_h_dSigma_dLog10Xi, 3, 1, 1);
35
36        }
37
38
39        void analyze(const Event& event) {
40
41            // Retrieve charged tracks in Inner Detector
42            const ChargedFinalState& tracks = apply<ChargedFinalState>(event, "tracks");
43
44            // Retrieve protons in ALFA detector
45            const ChargedFinalState protons = apply<ChargedFinalState>(event, "protons");
46
47            // Veto Events with more than one tagged proton
48            if (protons.size()!=1) vetoEvent;
49            const Particle tagProton = protons.particles()[0];
50
51            // Calculate |t|
52            const double AbsT = (tagProton.pT()/GeV)*(tagProton.pT()/GeV);
53
54            // Calculate Log10(Xi)
55            const double Log10Xi = log10(1.-(tagProton.E()/GeV)/4000.);
56
57            //Calculate DeltaEta
58            const double EtaEdge = 2.5*tagProton.pz()/abs(tagProton.pz());
59            double DeltaEta = 5;
60            for (const Particle& p : tracks.particles()) {
61                double DeltaEta_track = abs(p.eta() - EtaEdge);
62                if (DeltaEta_track<DeltaEta) DeltaEta=DeltaEta_track;
63            }
64
65            // Fill histograms
66            _h_dSigma_dDeltaEta->fill(DeltaEta);
67            _h_dSigma_dAbsT->fill(AbsT);
68            _h_dSigma_dLog10Xi->fill(Log10Xi);
69
70        }
71
72        /// Normalise histograms to units of millibarn
73        void finalize() {
74
75            // norm to generated cross-section in mb (after cuts)
76            scale(_h_dSigma_dAbsT, crossSection()/millibarn/sumOfWeights());
77            scale(_h_dSigma_dLog10Xi, crossSection()/millibarn/sumOfWeights());
78            scale(_h_dSigma_dDeltaEta, crossSection()/millibarn/sumOfWeights());
79        }
80
81
82    private:
83
84        Histo1DPtr _h_dSigma_dAbsT, _h_dSigma_dLog10Xi, _h_dSigma_dDeltaEta;
85
86    };
87
88    RIVET_DECLARE_PLUGIN(ATLAS_2019_I1762584);
89
90}