Rivet Analyses Reference

CDF_2012_NOTE10874

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:
  • $p\bar{p}$ QCD interactions at 300, 900, and 1960 GeV. Particles with $c \tau > {}$10 mm should be set stable. Beam energy must be specified as analysis option "ENERGY" when rivet-merge'ing samples.

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. The energy ratio histograms can be created from different runs with a merging script available in the Rivet bin directory. Beam energy must be specified (in GeV) as analysis option "ENERGY" when rivet-merging samples.

Source code: CDF_2012_NOTE10874.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
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"



namespace Rivet {


  class CDF_2012_NOTE10874 : public Analysis {
  public:

    CDF_2012_NOTE10874()
      : Analysis("CDF_2012_NOTE10874")
    {}


  public:

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

      int isqrts = -1;
      if (isCompatibleWithSqrtS(300)) isqrts = 1;
      else if (isCompatibleWithSqrtS(900)) isqrts = 2;
      else if (isCompatibleWithSqrtS(1960)) isqrts = 3;
      assert(isqrts >= 0);

      book(_h_nch_transverse ,1,1,isqrts);
      book(_h_ptSumDen ,2,1,isqrts);
      book(_h_avePt ,3,1,isqrts);
    }

    // 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;

      _h_nch_transverse->fill(pTlead/GeV, tNch/dEtadPhi);
      _h_ptSumDen->fill(pTlead/GeV, ptSum/dEtadPhi);

      if (tNch > 0) {
        _h_avePt->fill(pTlead/GeV, ptSum/tNch);
      }
    }


    void finalize() {
    }


  private:

    Profile1DPtr _h_nch_transverse, _h_ptSumDen, _h_avePt;

  };


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

}