Rivet Analyses Reference

CDF_2015_I1388868

Studies of the underlying event at 300, 900 and 1960 GeV with leading charged particles
Experiment: CDF (Tevatron)
Inspire ID: 1388868
Status: VALIDATED
Authors:
  • Oreste Tumbarell Aranda
  • Hannes Jung
  • Paolo Gunnellini
  • Andy Buckley
References:Beams: p+ p-
Beam energies: (150.0, 150.0); (450.0, 450.0); (980.0, 980.0) GeV
Run details:
  • Minimum bias proton-antiproton collision events at 300, 900 and 1960 GeV. Set particles with c*tau > 10 mm stable. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

We study charged particle production in proton--antiproton collisions at 300 GeV, 900 GeV, and 1.96 TeV. We use the direction of the charged particle with the largest transverse momentum in each event to define three regions of $\eta$--$\phi$ space; toward, away, and transverse. The average number and the average scalar pT sum of charged particles in the transverse region are sensitive to the modeling of the underlying event. The transverse region is divided into a MAX and MIN transverse region, which helps separate the hard component (initial and final-state radiation) from the beam-beam remnant and multiple parton interaction components of the scattering. Beam energy must be specified (in GeV) as analysis option "ENERGY" when rivet-merging samples.

Source code: CDF_2015_I1388868.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"

namespace Rivet {


  /// @brief CDF leading track underlying event at 300, 900 and 1960 GeV
  /// @author Orestes Tumbarell Aranda (Havana), Hannes Jung (DESY)
  class CDF_2015_I1388868 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(CDF_2015_I1388868);


    /// @name Analysis methods
    //@{

    /// Book histograms and initialise projections before the run
    void init() {

      // Energy selection
      int isqrts = -1;
      if (isCompatibleWithSqrtS(300)) {
        isqrts = 2;
      } else if (isCompatibleWithSqrtS(900)) {
        isqrts = 1;
      } else if (isCompatibleWithSqrtS(1960)) {
        isqrts = 0;
      } else {
        throw UserError("Unexpected sqrtS ! Only 300, 900, 1960 GeV is supported by CDF_2015_I1388868");
      }
      MSG_DEBUG("CDF Tevatron UE: running with " << sqrtS()/GeV);

      // Book projection
      const ChargedFinalState cfs(Cuts::abseta < 0.8 && Cuts::pT > 0.5*GeV);
      declare(cfs, "Tracks");

      // Book profile histos
      book(_NchgPDFden1,  8*isqrts+4,1,1);
      book(_NchgPMNden1,  8*isqrts+2,1,1);
      book(_NchgPMXden1,  8*isqrts+1,1,1);
      book(_NchgPden1,    8*isqrts+3,1,1);
      book(_PTsumPDFden1, 8*isqrts+8,1,1);
      book(_PTsumPMNden1, 8*isqrts+6,1,1);
      book(_PTsumPMXden1, 8*isqrts+5,1,1);
      book(_PTsumPden1,   8*isqrts+7,1,1);

    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {

      // Require at least one track in the event with pT >= 0.5 GeV
      const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "Tracks");
      if (cfs.empty()) vetoEvent;
      const Particles trks = cfs.particlesByPt();

      // Get lead track
      const Particle p_lead = trks[0];
      const double philead = p_lead.phi();
      const double ptlead  = p_lead.pT();

      // Loop over tracks and compute variables
      double NchgP1 = 0, NchgP2 = 0, PTsumP1 = 0, PTsumP2 = 0;
      for (const Particle& p : trks) {

        // Region definition -- if not in transverse region, ignore
        const double dphi = mapAngle0To2Pi(p.phi() - philead);
        if (!inRange(dphi, PI/3, 2*PI/3) && !inRange(dphi, 4*PI/3, 5*PI/3)) continue;

        // Transverse region 1
        if (inRange(dphi, PI/3, 2*PI/3)) {
          NchgP1 += 1;
          PTsumP1 += p.pT();
        }
        // Transverse region 2
        else if (inRange(dphi, 4*PI/3, 5*PI/3)) {
          NchgP2 += 1;
          PTsumP2 += p.pT();
        }
      }

      // Calculate total variables
      const double NchgPtot = (NchgP1 + NchgP2)/2;
      const double NchgPmax = max(NchgP1,NchgP2);
      const double NchgPmin = min(NchgP1,NchgP2);
      const double PTsumPtot = (PTsumP1 + PTsumP2)/2;
      const double PTsumPmax = max(PTsumP1,PTsumP2);
      const double PTsumPmin = min(PTsumP1,PTsumP2);
      //
      const double PTsumPMXden = PTsumPmax/AREA;
      const double PTsumPMNden = PTsumPmin/AREA;
      const double NchgPMXden = NchgPmax/AREA;
      const double NchgPMNden = NchgPmin/AREA;
      //
      const double NchgPDFden = NchgPMXden - NchgPMNden;
      const double PTsumPDFden = PTsumPMXden - PTsumPMNden;

      // Fill histograms
      _NchgPden1  ->fill(ptlead/GeV, NchgPtot/AREA);
      _NchgPMXden1->fill(ptlead/GeV, NchgPmax/AREA);
      _NchgPMNden1->fill(ptlead/GeV, NchgPmin/AREA);
      _NchgPDFden1->fill(ptlead/GeV, NchgPDFden );
      _PTsumPden1  ->fill(ptlead/GeV, PTsumPtot/AREA);
      _PTsumPMXden1->fill(ptlead/GeV, PTsumPmax/AREA);
      _PTsumPMNden1->fill(ptlead/GeV, PTsumPmin/AREA);
      _PTsumPDFden1->fill(ptlead/GeV, PTsumPDFden );
    }

    //@}


    /// eta-phi area of the transverse region
    constexpr static double AREA = 2*0.8 * M_PI/3;

    /// Histograms
    Profile1DPtr _NchgPden1, _NchgPMXden1,_NchgPMNden1,_NchgPDFden1,_PTsumPden1,_PTsumPMXden1,_PTsumPMNden1,_PTsumPDFden1;

  };


  // The hook for the plugin system
  RIVET_DECLARE_PLUGIN(CDF_2015_I1388868);

}