Rivet analyses


title: 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: - Phys. Rev. D 92, 092009 (2015) - arXiv: 1508.05340

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.

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.

Source code:CDF_2015_I1388868.cc

```c++ // -- 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
  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
  for (double eVal : allowedEnergies()) {
    const string en = toString(round(eVal));
    if (isCompatibleWithSqrtS(eVal)) _sqs = en;
    size_t ih = 0;
    if (en == "900"s) ih = 1;
    if (en == "300"s) ih = 2;
    book(_p[en + "NchgPDFden1"], 8 * ih + 4, 1, 1);
    book(_p[en + "NchgPMNden1"], 8 * ih + 2, 1, 1);
    book(_p[en + "NchgPMXden1"], 8 * ih + 1, 1, 1);
    book(_p[en + "NchgPden1"], 8 * ih + 3, 1, 1);
    book(_p[en + "PTsumPDFden1"], 8 * ih + 8, 1, 1);
    book(_p[en + "PTsumPMNden1"], 8 * ih + 6, 1, 1);
    book(_p[en + "PTsumPMXden1"], 8 * ih + 5, 1, 1);
    book(_p[en + "PTsumPden1"], 8 * ih + 7, 1, 1);
  }
  raiseBeamErrorIf(_sqs.empty());
}


/// 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
  _p[_sqs + "NchgPden1"]->fill(ptlead / GeV, NchgPtot / AREA);
  _p[_sqs + "NchgPMXden1"]->fill(ptlead / GeV, NchgPmax / AREA);
  _p[_sqs + "NchgPMNden1"]->fill(ptlead / GeV, NchgPmin / AREA);
  _p[_sqs + "NchgPDFden1"]->fill(ptlead / GeV, NchgPDFden);
  _p[_sqs + "PTsumPden1"]->fill(ptlead / GeV, PTsumPtot / AREA);
  _p[_sqs + "PTsumPMXden1"]->fill(ptlead / GeV, PTsumPmax / AREA);
  _p[_sqs + "PTsumPMNden1"]->fill(ptlead / GeV, PTsumPmin / AREA);
  _p[_sqs + "PTsumPDFden1"]->fill(ptlead / GeV, PTsumPDFden);
}

/// @}


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

/// Histograms
map<string, Profile1DPtr> _p;

string _sqs = "";

};

RIVET_DECLARE_PLUGIN(CDF_2015_I1388868);

} ```