Rivet analyses

CDF energy scan underlying event analysis

Experiment: CDF (Tevatron energy scan)

Status: VALIDATED

Authors: - Rick Field

References: - CDF Note 10874

Beams: p- p+

Beam energies: (150.0, 150.0); (450.0, 450.0); (980.0, 980.0)GeV

Run details: - pp̄ QCD interactions at 300, 900, and 1960~GeV. Particles with $c > {}$10 mm should be set stable.

In this analysis the behavior of the underlying event in hard scattering proton-antiproton collisions at 300 GeV, 900 GeV, and 1.96 TeV is studied. The 300 GeV and 900 GeV data are a result of the Tevatron Energy Scan which was performed just before the Tevatron was shut down.

Source code:CDF_2012_NOTE10874.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"



namespace Rivet {


  class CDF_2012_NOTE10874 : public Analysis {
  public:

    RIVET_DEFAULT_ANALYSIS_CTOR(CDF_2012_NOTE10874);


  public:

    void init() {
      const ChargedFinalState cfs(Cuts::abseta < 1.0 && Cuts::pT >= 0.5*GeV);
      declare(cfs, "CFS");

      size_t ih = 1;
      for (double eVal : allowedEnergies()) {
        const string en = toString(round(eVal));
        if (isCompatibleWithSqrtS(eVal))  _sqs = en;
        book(_p[en+"nch_transverse"], 1, 1, ih);
        book(_p[en+"ptSumDen"], 2, 1, ih);
        book(_p[en+"avePt"], 3, 1, ih);
        ++ih;
      }
      raiseBeamErrorIf(_sqs.empty());
    }

    // Little helper function to identify Delta(phi) regions
    inline int region_index(double dphi) {
      assert(inRange(dphi, 0.0, PI, CLOSED, CLOSED));
      if (dphi < PI/3.0) return 0;
      if (dphi < 2*PI/3.0) return 1;
      return 2;
    }


    void analyze(const Event& event) {
      const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
      if (cfs.size() < 1) vetoEvent;

      Particles particles = cfs.particlesByPt();
      Particle p_lead = particles[0];
      const double philead = p_lead.phi();
      const double pTlead  = p_lead.pT();

      int    tNch = 0;
      double ptSum = 0.0;
      for (const Particle& p : particles) {
        const double pT = p.pT();
        const double dPhi = deltaPhi(philead, p.phi());
        const int ir = region_index(dPhi);
        if (ir==1) {
          ++tNch;
          ptSum += pT;
        }
      }

      const double dEtadPhi = 4.0*PI/3.0;

      _p[_sqs+"nch_transverse"]->fill(pTlead/GeV, tNch/dEtadPhi);
      _p[_sqs+"ptSumDen"]->fill(pTlead/GeV, ptSum/dEtadPhi);

      if (tNch > 0)  _p[_sqs+"avePt"]->fill(pTlead/GeV, ptSum/tNch);
    }


  private:

    map<string,Profile1DPtr> _p;

    string _sqs = "";

  };


  RIVET_DECLARE_PLUGIN(CDF_2012_NOTE10874);

}