rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CDF_1988_I263320

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: Beams: p- p+
Beam energies: (315.0, 315.0); (900.0, 900.0) GeV
Run details:
  • QCD min bias events at $\sqrt{s} = 630$ GeV and 1800 GeV, $|\eta| < 1.0$. Beam energy must be specified as analysis option "ENERGY" when rivet-merge'ing samples.

Transverse momentum distributions at 630 GeV and 1800 GeV based on data from the CDF experiment at the Tevatron collider. Beam energy must be specified (in GeV) as analysis option "ENERGY" when rivet-merging samples.

Source code: CDF_1988_I263320.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/ChargedFinalState.hh"
 4#include "Rivet/Projections/TriggerCDFRun0Run1.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief CDF track \f$ p_\perp \f$ distributions at 630 and 1800 GeV
10  class CDF_1988_I263320 : public Analysis {
11  public:
12
13    RIVET_DEFAULT_ANALYSIS_CTOR(CDF_1988_I263320);
14
15
16    /// @name Analysis methods
17    /// @{
18
19    /// Book histograms and set up projections
20    void init() {
21      // Set up projections
22      declare(TriggerCDFRun0Run1(), "Trigger");
23      const ChargedFinalState cfs((Cuts::etaIn(-1.0, 1.0) && Cuts::pT >=  0.4*GeV));
24      declare(cfs, "CFS");
25
26      // Book histo
27      if (isCompatibleWithSqrtS(1800*GeV)) {
28        book(_hist_pt, 1, 1, 1);
29        _axis = 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,
30                                   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,
31                                   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};
32      }
33      else if (isCompatibleWithSqrtS(630*GeV)) {
34        book(_hist_pt, 2, 1, 1);
35        _axis = 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,
36                                   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};
37      }
38
39      book(_sumWTrig, "sumWTrig");
40
41    }
42
43
44    /// Do the analysis
45    void analyze(const Event& event) {
46      if (_edges.empty())  _edges = _hist_pt->xEdges();
47      // Trigger
48      const bool trigger = apply<TriggerCDFRun0Run1>(event, "Trigger").minBiasDecision();
49      if (!trigger) vetoEvent;
50      _sumWTrig->fill();
51
52      const FinalState& trackfs = apply<ChargedFinalState>(event, "CFS");
53      for (Particle p : trackfs.particles()) {
54        const double pt = p.pT()/GeV;
55        // Effective weight for d3sig/dp3 = weight / ( Delta eta * 2pi * pt ), with Delta(eta) = 2
56        const double eff_weight = 1.0/(2*2*TWOPI*pt);
57        _hist_pt->fill(map2string(pt), eff_weight);
58      }
59    }
60
61
62   string map2string(const double value) const {
63     const size_t idx = _axis.index(value);
64     if (idx && idx < _edges.size() + 1)  return _edges[idx-1];
65     return "OTHER";
66   }
67
68    /// Scale histos
69    void finalize() {
70      scale(_hist_pt, crossSectionPerEvent()/millibarn);
71      for (auto& b : _hist_pt->bins()) {
72        b.scaleW(1.0/_axis.width(b.index()));
73      }
74    }
75
76    /// @}
77
78
79  private:
80
81    /// Counter
82    CounterPtr _sumWTrig;
83
84    /// Histo
85    BinnedHistoPtr<string> _hist_pt;
86    YODA::Axis<double> _axis;
87    vector<string> _edges;
88
89  };
90
91
92
93  RIVET_DECLARE_ALIASED_PLUGIN(CDF_1988_I263320, CDF_1988_S1865951);
94
95}