Rivet analyses referenceTPC_1984_I200105$\phi$ spectrum at 29 GeVExperiment: TPC (PEP) Inspire ID: 200105 Status: VALIDATED Authors:
Beam energies: (14.5, 14.5) GeV Run details:
Measurement of the $\phi$ spectra at 29 GeV by the TPC experiment. Source code: TPC_1984_I200105.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/UnstableParticles.hh"
5#include "Rivet/Projections/FastJets.hh"
6#include "Rivet/Projections/Thrust.hh"
7#include "Rivet/Projections/Beam.hh"
8
9namespace Rivet {
10
11
12 /// @brief Add a short analysis description here
13 class TPC_1984_I200105 : public Analysis {
14 public:
15
16 /// Constructor
17 RIVET_DEFAULT_ANALYSIS_CTOR(TPC_1984_I200105);
18
19
20 /// @name Analysis methods
21 /// @{
22
23 /// Book histograms and initialise projections before the run
24 void init() {
25 declare(Beam(), "Beams");
26 const FinalState cfs(Cuts::charge != 0);
27 declare(cfs, "FS");
28 const Thrust thrust(cfs);
29 declare(thrust, "Thrust");
30 declare(UnstableParticles(), "UFS");
31
32 // Book histograms
33 book(_h_x , 1, 1, 1);
34 book(_h_pt, 3, 1, 1);
35
36 }
37
38
39 /// Perform the per-event analysis
40 void analyze(const Event& event) {
41 // require 5 charged particles
42 const FinalState& fs = apply<FinalState>(event, "FS");
43 if(fs.size()<3) vetoEvent;
44 // Get beams and average beam momentum
45 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
46 const double meanBeamMom = ( beams.first.p3().mod() +
47 beams.second.p3().mod() ) / 2.0;
48 MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
49 // calc thrust
50 const Thrust& thrust = apply<Thrust>(event, "Thrust");
51 Vector3 axis = thrust.thrustAxis();
52 // Final state of unstable particles to get particle spectra
53 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
54 for (const Particle& p : ufs.particles(Cuts::pid==333)) {
55 double xE = p.E()/meanBeamMom;
56 double pT2 = p.p3().mod2()-sqr(axis.dot(p.p3()));
57 _h_x ->fill(xE );
58 _h_pt->fill(pT2);
59 }
60 }
61
62
63 /// Normalise histograms etc., after the run
64 void finalize() {
65
66 scale(_h_x, 1./sumOfWeights());
67 scale(_h_pt, 1./sumOfWeights());
68 }
69
70 /// @}
71
72
73 /// @name Histograms
74 /// @{
75 Histo1DPtr _h_x,_h_pt;
76 /// @}
77
78
79 };
80
81
82 RIVET_DECLARE_PLUGIN(TPC_1984_I200105);
83
84
85}
|