Rivet analyses referenceTASSO_1990_I294755Event shapes in $e^+ e^-$ annihilation at 14--44 GeVExperiment: TASSO (PETRA) Inspire ID: 294755 Status: VALIDATED Authors:
Beam energies: (7.0, 7.0); (11.0, 11.0); (17.5, 17.5); (21.9, 21.9) GeV Run details:
Event shapes Thrust, Sphericity, Aplanarity and charged particle spectra at four different energies Source code: TASSO_1990_I294755.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Thrust.hh"
4#include "Rivet/Projections/Sphericity.hh"
5#include "Rivet/Projections/ChargedFinalState.hh"
6
7namespace Rivet {
8
9
10 class TASSO_1990_I294755 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(TASSO_1990_I294755);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 const ChargedFinalState cfs(Cuts::pT >= 0.1/GeV);
23 declare(cfs, "CFS");
24
25 // Thrust and sphericity
26 declare(Thrust(cfs), "Thrust");
27 declare(Sphericity(cfs), "Sphericity");
28
29 // Histos
30 int offset = 0;
31 switch (int(sqrtS()/GeV)) {
32 case 14:
33 offset = 0;
34 break;
35 case 22:
36 offset = 1;
37 break;
38 case 35:
39 offset = 2;
40 break;
41 case 44:
42 offset = 3;
43 break;
44 }
45 book(_h_xp[0] , 2, 1, 1+offset);
46 book(_h_xp[1] , 3, 1, 1+offset);
47 book(_h_xi , 4, 1, 1+offset);
48 book(_h_pT , 5, 1, 1+offset);
49 book(_h_sphericity , 6, 1, 1+offset);
50 book(_h_aplanarity , 7, 1, 1+offset);
51 book(_h_thrust , 8, 1, 1+offset);
52 book(_sumWPassed,"/TMP/_sumWPassed");
53 }
54
55
56 /// Perform the per-event analysis
57 void analyze(const Event& event) {
58 const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
59
60 // TASSO hadronic event selection TODO: move this into a trigger definition
61 // See page 2 in publication
62 // Condition 1) --- require at least 5 (4) 'good' tracks
63 int nch = cfs.particles().size();
64 if ( (int(sqrtS()/GeV) > 27 && nch < 5) || (int(sqrtS()/GeV) <= 27 && nch < 4 ) ) {
65 MSG_DEBUG("Failed # good tracks cut: " << nch);
66 vetoEvent;
67 }
68 // Condition 2) ---
69 // Condition 5) --- scalar momentum (not pT!!!) sum >= 0.265*s
70 double momsum = 0.0;
71 for (const Particle& p : cfs.particles()) {
72 const double mom = p.p3().mod();
73 momsum += mom;
74 }
75 if (momsum <=0.265 * sqrtS()/GeV) {
76 MSG_DEBUG("Failed pTsum cut: " << momsum << " < " << 0.265 * sqrtS()/GeV);
77 vetoEvent;
78 }
79
80 // Raise counter for events that pass trigger conditions
81 _sumWPassed->fill();
82
83 const Thrust& thrust = apply<Thrust>(event, "Thrust");
84 //const Vector3 & thrustAxis = thrust.thrustAxis ();
85 //double theta = thrustAxis.theta();
86 //if ( fabs(cos(theta)) >= 0.8 ) {
87 //MSG_DEBUG("Failed thrust angle cut: " << fabs(cos(theta)));
88 //vetoEvent;
89 //}
90
91 const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
92
93 // Fill histograms in order of appearance in paper
94 for (const Particle& p : cfs.particles()) {
95 // Get momentum and energy of each particle.
96 const Vector3 mom3 = p.p3();
97 // Scaled momenta.
98 const double mom = mom3.mod();
99 const double scaledMom = 2.*mom/sqrtS();
100 const double pTin = dot(mom3, sphericity.sphericityMajorAxis());
101 const double pTout = dot(mom3, sphericity.sphericityMinorAxis());
102 const double pT = sqrt(sqr(pTin)+sqr(pTout));
103 _h_xp[0]->fill(scaledMom);
104 _h_xp[1]->fill(scaledMom);
105 _h_xi->fill(-log(scaledMom));
106 _h_pT->fill(pT);
107 }
108 // event shapes
109 _h_sphericity->fill(sphericity.sphericity());
110 _h_aplanarity->fill(sphericity.aplanarity());
111 _h_thrust->fill(thrust.thrust());
112 }
113
114
115 /// Normalise histograms etc., after the run
116 void finalize() {
117 scale(_h_xp[0], 1./ *_sumWPassed);
118 scale(_h_xp[1], 1./ *_sumWPassed);
119 scale(_h_xi , 1./ *_sumWPassed);
120 scale(_h_pT , 1./ *_sumWPassed);
121 normalize(_h_sphericity);
122 normalize(_h_aplanarity);
123 normalize(_h_thrust );
124 }
125
126 /// @}
127
128
129 private:
130
131 /// @name Histograms
132 /// @{
133 Histo1DPtr _h_xp[2], _h_xi, _h_pT, _h_sphericity, _h_aplanarity, _h_thrust;
134 CounterPtr _sumWPassed;
135 /// @}
136
137 };
138
139
140
141 RIVET_DECLARE_ALIASED_PLUGIN(TASSO_1990_I294755, TASSO_1990_S2148048);
142
143}
|