Rivet analyses

CDF transverse momentum distributions at 630 GeV and 1800 GeV.

Experiment: CDF (Tevatron Run I)

Inspire ID: 263320

Status: VALIDATED

Authors: - Christophe Vaillant - Andy Buckley

References: - Phys.Rev.Lett.61:1819,1988 - DOI: 10.1103/PhysRevLett.61.1819

Beams: p- p+

Beam energies: (900.0, 900.0); (315.0, 315.0)GeV

Run details: - QCD min bias events at $\sqrt{s} = 630$ GeV and 1800 GeV, |η| < 1.0.

Transverse momentum distributions at 630 GeV and 1800 GeV based on data from the CDF experiment at the Tevatron collider.

Source code:CDF_1988_I263320.cc

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

namespace Rivet {


  /// @brief CDF track \f$ p_\perp \f$ distributions at 630 and 1800 GeV
  class CDF_1988_I263320 : public Analysis {
  public:

    RIVET_DEFAULT_ANALYSIS_CTOR(CDF_1988_I263320);


    /// @name Analysis methods
    /// @{

    /// Book histograms and set up projections
    void init() {
      // Set up projections
      declare(TriggerCDFRun0Run1(), "Trigger");
      const ChargedFinalState cfs(Cuts::abseta < 1.0 && Cuts::pT >= 0.4 * GeV);
      declare(cfs, "CFS");

      // Book histo
      _axis[0] = YODA::Axis<double>{0.4,   0.45,   0.5, 0.55, 0.6,  0.65, 0.7, 0.75, 0.8, 0.85, 0.9,
                                    0.95,  1.0125, 1.1, 1.2,  1.3,  1.4,  1.5, 1.6,  1.7, 1.8,  1.9,
                                    2.0,   2.1,    2.2, 2.3,  2.4,  2.5,  2.6, 2.7,  2.8, 2.9,  3.0,
                                    3.025, 3.2,    3.4, 3.6,  3.8,  4.0,  4.2, 4.4,  4.6, 4.8,  5.05,
                                    5.4,   5.8,    6.2, 6.6,  7.15, 8.25, 9.75};
      _axis[1] = YODA::Axis<double>{0.4, 0.45, 0.5,    0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85,
                                    0.9, 0.95, 1.0125, 1.1,  1.2, 1.3,  1.4, 1.5,  1.6, 1.7,
                                    1.8, 1.9,  2.025,  2.2,  2.4, 2.6,  2.8, 3.2,  3.8};

      for (double eVal : allowedEnergies()) {
        size_t ih = eVal < 1000.;
        if (isCompatibleWithSqrtS(eVal)) _sqs = ih;

        book(_h[ih], 1 + ih, 1, 1);
      }
      raiseBeamErrorIf(_sqs > 1);
    }


    /// Do the analysis
    void analyze(const Event& event) {
      if (_edges.empty()) _edges = _h[_sqs]->xEdges();
      // Trigger
      const bool trigger = apply<TriggerCDFRun0Run1>(event, "Trigger").minBiasDecision();
      if (!trigger) vetoEvent;

      const FinalState& trackfs = apply<ChargedFinalState>(event, "CFS");
      for (Particle p : trackfs.particles()) {
        const double pt = p.pT() / GeV;
        // Effective weight for d3sig/dp3 = weight / ( Delta eta * 2pi * pt ), with Delta(eta) = 2
        const double eff_weight = 1.0 / (2 * 2 * TWOPI * pt);
        _h[_sqs]->fill(map2string(pt), eff_weight);
      }
    }


    string map2string(const double value) const {
      const size_t idx = _axis[_sqs].index(value);
      if (idx && idx < _edges.size() + 1) return _edges[idx - 1];
      return "OTHER";
    }

    /// Scale histos
    void finalize() {
      scale(_h, crossSectionPerEvent() / millibarn);
      for (size_t ih = 0; ih < 2; ++ih) {
        for (auto& b : _h[ih]->bins()) {
          b.scaleW(1.0 / _axis[ih].width(b.index()));
        }
      }
    }

    /// @}


  private:

    /// Histo
    BinnedHistoPtr<string> _h[2];
    YODA::Axis<double> _axis[2];
    vector<string> _edges;
    size_t _sqs = 2;
  };


  RIVET_DECLARE_ALIASED_PLUGIN(CDF_1988_I263320, CDF_1988_S1865951);

}

Aliases: - CDF_1988_S1865951