Rivet analyses referenceOPAL_1997_I440721Event Shapes at 161 GeVExperiment: OPAL (LEP) Inspire ID: 440721 Status: VALIDATED Authors:
Beam energies: (80.5, 80.5) GeV Run details:
Event shapes at 161 GeV. Only the evnet shapes are implemented, not the mean values, or the cone jet observables. Source code: OPAL_1997_I440721.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/FinalState.hh"
5#include "Rivet/Projections/ChargedFinalState.hh"
6#include "Rivet/Projections/Sphericity.hh"
7#include "Rivet/Projections/Thrust.hh"
8#include "Rivet/Projections/FastJets.hh"
9#include "Rivet/Projections/ParisiTensor.hh"
10#include "Rivet/Projections/Hemispheres.hh"
11
12namespace Rivet {
13
14
15 /// @brief event shapes at 161
16 class OPAL_1997_I440721 : public Analysis {
17 public:
18
19 /// Constructor
20 RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_1997_I440721);
21
22
23 /// @name Analysis methods
24 //@{
25
26 /// Book histograms and initialise projections before the run
27 void init() {
28
29 // Initialise and register projections
30 // Projections
31 declare(Beam(), "Beams");
32 const FinalState fs;
33 declare(fs, "FS");
34 const ChargedFinalState cfs;
35 declare(cfs, "CFS");
36 declare(FastJets(fs, FastJets::DURHAM, 0.7), "DurhamJets");
37 declare(Sphericity(fs), "Sphericity");
38 declare(ParisiTensor(fs), "Parisi");
39 const Thrust thrust(fs);
40 declare(thrust, "Thrust");
41 declare(Hemispheres(thrust), "Hemispheres");
42
43 // Book histograms
44 book(_h_thrust , 3,1,1);
45 book(_h_major , 4,1,1);
46 book(_h_minor , 5,1,1);
47 book(_h_aplanarity, 8,1,1);
48 book(_h_oblateness, 6,1,1);
49 book(_h_C , 9,1,1);
50 book(_h_rhoH , 10,1,1);
51 book(_h_sphericity, 7,1,1);
52 book(_h_totalB , 11,1,1);
53 book(_h_wideB , 12,1,1);
54 book(_h_y23 , 20,1,1);
55 book(_h_mult , 26,1,1);
56 book(_h_pTin , 21,1,1);
57 book(_h_pTout , 22,1,1);
58 book(_h_y , 23,1,1);
59 book(_h_x , 24,1,1);
60 book(_h_xi , 25,1,1);
61 book(_sumW,"/TMP/sumW");
62 }
63
64
65 /// Perform the per-event analysis
66 void analyze(const Event& event) {
67 // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
68 const FinalState& cfs = apply<FinalState>(event, "CFS");
69 if (cfs.size() < 2) vetoEvent;
70 _sumW->fill();
71
72 // Get beams and average beam momentum
73 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
74 const double meanBeamMom = ( beams.first.p3().mod() +
75 beams.second.p3().mod() ) / 2.0;
76
77 // Thrust related
78 const Thrust& thrust = apply<Thrust>(event, "Thrust");
79 _h_thrust ->fill(thrust.thrust() );
80 _h_major ->fill(thrust.thrustMajor());
81 _h_minor ->fill(thrust.thrustMinor());
82 _h_oblateness->fill(thrust.oblateness());
83
84 // Sphericity related
85 const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
86 _h_sphericity->fill(sphericity.sphericity());
87 _h_aplanarity->fill(sphericity.aplanarity());
88
89 // C parameter
90 const ParisiTensor& parisi = apply<ParisiTensor>(event, "Parisi");
91 _h_C->fill(parisi.C());
92
93 // Hemispheres
94 const Hemispheres& hemi = apply<Hemispheres>(event, "Hemispheres");
95
96 _h_rhoH ->fill(hemi.scaledMhigh());
97 _h_wideB ->fill(hemi.Bmax());
98 _h_totalB->fill(hemi.Bsum());
99
100 // Jets
101 const FastJets& durjet = apply<FastJets>(event, "DurhamJets");
102 const double y23 = durjet.clusterSeq()->exclusive_ymerge_max(2);
103 _h_y23->fill(y23);
104
105 // charged particles
106 _h_mult->fill(cfs.particles().size());
107 for (const Particle& p : cfs.particles()) {
108 const Vector3 mom3 = p.p3();
109 const double energy = p.E();
110 const double pTinT = dot(mom3, thrust.thrustMajorAxis());
111 const double pToutT = dot(mom3, thrust.thrustMinorAxis());
112 _h_pTin ->fill(fabs(pTinT/GeV) );
113 _h_pTout->fill(fabs(pToutT/GeV));
114 const double momT = dot(thrust.thrustAxis(), mom3);
115 const double rapidityT = 0.5 * std::log((energy + momT) / (energy - momT));
116 _h_y->fill(fabs(rapidityT));
117 const double mom = mom3.mod();
118 const double scaledMom = mom/meanBeamMom;
119 const double logInvScaledMom = -std::log(scaledMom);
120 _h_xi->fill(logInvScaledMom);
121 _h_x ->fill(scaledMom );
122 }
123 }
124
125
126 /// Normalise histograms etc., after the run
127 void finalize() {
128 scale(_h_thrust ,1./ *_sumW);
129 scale(_h_major ,1./ *_sumW);
130 scale(_h_minor ,1./ *_sumW);
131 scale(_h_aplanarity,1./ *_sumW);
132 scale(_h_oblateness,1./ *_sumW);
133 scale(_h_C ,1./ *_sumW);
134 scale(_h_rhoH ,1./ *_sumW);
135 scale(_h_sphericity,1./ *_sumW);
136 scale(_h_totalB ,1./ *_sumW);
137 scale(_h_wideB ,1./ *_sumW);
138 scale(_h_y23 ,1./ *_sumW);
139 scale(_h_mult ,200./ *_sumW);
140 scale(_h_pTin ,1./ *_sumW);
141 scale(_h_pTout ,1./ *_sumW);
142 scale(_h_y ,1./ *_sumW);
143 scale(_h_x ,1./ *_sumW);
144 scale(_h_xi ,1./ *_sumW);
145 // mean multiplicity
146 double nch = _h_mult->xMean();
147 double nch_err = _h_mult->xStdErr();
148 Scatter2DPtr m_ch;
149 book(m_ch,2,1,1);
150 m_ch->addPoint(sqrtS(),nch,0.5,nch_err);
151 }
152
153 //@}
154
155
156 /// @name Histograms
157 //@{
158 Histo1DPtr _h_thrust,_h_major,_h_minor,_h_aplanarity,_h_oblateness,_h_C,_h_rhoH,_h_sphericity;
159 Histo1DPtr _h_totalB,_h_wideB,_h_y23,_h_mult,_h_pTin,_h_pTout,_h_y,_h_x,_h_xi;
160 CounterPtr _sumW;
161 //@}
162
163
164 };
165
166
167 // The hook for the plugin system
168 RIVET_DECLARE_PLUGIN(OPAL_1997_I440721);
169
170
171}
|