rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ALEPH_1997_I427131

$\pi^0$ spectrum at LEP1
Experiment: ALEPH (LEP)
Inspire ID: 427131
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Z.Phys. C74 (1997) 451-461
Beams: e- e+
Beam energies: ANY
Run details:
  • e+e- -> hadrons at Z pole

Measurement of the $\pi^0$ spectrum, and distribution of $p_T^{\text{in}}$ and $p_T^{\text{out}}$ with respect to the sphericity axis by the ALEPH experiment at LEP1.

Source code: ALEPH_1997_I427131.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/Sphericity.hh"
 4#include "Rivet/Projections/FinalState.hh"
 5#include "Rivet/Projections/UnstableParticles.hh"
 6#include "Rivet/Projections/Beam.hh"
 7
 8namespace Rivet {
 9
10
11  /// @brief pi0 spectrum
12  class ALEPH_1997_I427131 : public Analysis {
13  public:
14
15    /// Constructor
16    RIVET_DEFAULT_ANALYSIS_CTOR(ALEPH_1997_I427131);
17
18
19    /// @name Analysis methods
20    /// @{
21
22    /// Book histograms and initialise projections before the run
23    void init() {
24
25      // // Initialise and register projections
26      declare(Beam(), "Beams");
27      const FinalState fs;
28      declare(fs, "FS");
29      declare(Sphericity(fs), "Sphericity");
30      declare(UnstableParticles(), "UFS");
31
32      // Book histograms
33      book(_h_x  , 2, 1, 2);
34      book(_h_in , 4, 1, 1);
35      book(_h_out, 3, 1, 1);
36
37    }
38
39
40    /// Perform the per-event analysis
41    void analyze(const Event& event) {
42      const FinalState& fs = apply<FinalState>(event, "FS");
43      if (fs.particles().size() < 2) {
44      	MSG_DEBUG("Failed ncharged cut");
45      	vetoEvent;
46      }
47      MSG_DEBUG("Passed ncharged cut");
48
49      const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
50
51      // Get beams and average beam momentum
52      const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
53      const double meanBeamMom = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0;
54      MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
55
56      for (const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==111) ) {
57	const Vector3 mom3 = p.p3();
58	const double pTinS  = abs(dot(mom3, sphericity.sphericityMajorAxis()));
59	const double pToutS = abs(dot(mom3, sphericity.sphericityMinorAxis()));
60       	_h_x  ->fill(mom3.mod()/meanBeamMom);
61       	_h_in ->fill(pTinS                 );
62       	_h_out->fill(pToutS                );
63      }
64    }
65
66
67    /// Normalise histograms etc., after the run
68    void finalize() {
69      scale(_h_x  , 1./sumOfWeights());
70      scale(_h_in , 1./sumOfWeights());
71      scale(_h_out, 1./sumOfWeights());
72    }
73
74    /// @}
75
76
77    /// @name Histograms
78    /// @{
79    Histo1DPtr _h_x, _h_in, _h_out;
80    /// @}
81
82
83  };
84
85
86  RIVET_DECLARE_PLUGIN(ALEPH_1997_I427131);
87
88
89}