Rivet analyses referenceALEPH_1997_I427131$\pi^0$ spectrum at LEP1Experiment: ALEPH (LEP) Inspire ID: 427131 Status: VALIDATED Authors:
Beam energies: (45.6, 45.6) GeV Run details:
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}
|