Rivet analyses referenceTASSO_1989_I266893Spectra for $\Lambda^0,\bar{\Lambda}^0$ and $\Xi^-,\bar{\Xi}^-$ at 34.8 and 42.1 GeVExperiment: TASSO (Petra) Inspire ID: 266893 Status: VALIDATED Authors:
Beam energies: (17.4, 17.4); (21.1, 21.1) GeV Run details:
Measurement of the $\Lambda^0,\bar{\Lambda}^0$ and $\Xi^-,\bar{\Xi}^-$ spectra at 34.8 and 42.1 GeV by the TASSO experiment at Petra. In addition to the spectra $p_l$, $p_\perp^{\text{in}}$, $p_\perp^{\text{out}}$ and the rapidity of the $\Lambda^0,\bar{\Lambda}^0$ are measured with respect to the sphericity axis. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples. Source code: TASSO_1989_I266893.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/Sphericity.hh"
5#include "Rivet/Projections/UnstableParticles.hh"
6#include "Rivet/Projections/ChargedFinalState.hh"
7
8namespace Rivet {
9
10
11 /// @brief baryons at 34.8 and 42.1 GeV
12 class TASSO_1989_I266893 : public Analysis {
13 public:
14
15 /// Constructor
16 RIVET_DEFAULT_ANALYSIS_CTOR(TASSO_1989_I266893);
17
18 /// @name Analysis methods
19 /// @{
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23
24 // Initialise and register projections
25 declare(Beam(), "Beams");
26 declare(UnstableParticles(), "UFS");
27 const ChargedFinalState cfs;
28 declare(cfs, "CFS");
29 declare(Sphericity(cfs), "Sphericity");
30 // Book histograms
31 _ih=-1;
32 sqs = 1.0;
33 if(isCompatibleWithSqrtS(34.8*GeV)) {
34 _ih=0;
35 sqs = 34.8;
36 }
37 else if (isCompatibleWithSqrtS(42.1*GeV)) {
38 _ih=1;
39 sqs = 42.1;
40
41 }
42 else
43 MSG_ERROR("Beam energy " << sqrtS() << " not supported!");
44
45 book(_h_lam_p ,6*_ih+3,1,1);
46 book(_h_lam_pL ,6*_ih+4,1,1);
47 book(_h_lam_pTIn ,6*_ih+5,1,1);
48 book(_h_lam_pTOut,6*_ih+6,1,1);
49 book(_h_lam_rap ,6*_ih+7,1,1);
50 book(_h_lam_x ,6*_ih+8,1,1);
51 book(_p_lam_S_1 ,15+_ih,1,1);
52 book(_p_lam_S_2 ,15+_ih,1,2);
53 if(_ih==0) {
54 book(_h_xi_p ,18,1,1);
55 book(_h_xi_pL ,19,1,1);
56 book(_h_xi_pTIn ,20,1,1);
57 book(_h_xi_pTOut,21,1,1);
58 book(_h_xi_rap ,22,1,1);
59 book(_h_xi_x ,23,1,1);
60 }
61 }
62
63
64 /// Perform the per-event analysis
65 void analyze(const Event& event) {
66 const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
67 const size_t numParticles = cfs.particles().size();
68
69 // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
70 if (numParticles < 2) {
71 MSG_DEBUG("Failed leptonic event cut");
72 vetoEvent;
73 }
74 MSG_DEBUG("Passed leptonic event cut");
75
76 // Get beams and average beam momentum
77 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
78 const double meanBeamMom = ( beams.first.p3().mod() +
79 beams.second.p3().mod() ) / 2.0;
80 const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
81 unsigned int nLam(0);
82 UnstableParticles ufs = apply<UnstableParticles>(event,"UFS");
83 for(const Particle & p : ufs.particles(Cuts::abspid==3122 or Cuts::abspid==3312)) {
84 int id = abs(p.pid());
85 double xE = p.E()/meanBeamMom;
86 Vector3 mom3 = p.p3();
87 const double energy = p.E();
88 double modp = mom3.mod();
89 double beta = modp/energy;
90 const double momS = dot(sphericity.sphericityAxis(), mom3);
91 const double pTinS = dot(mom3, sphericity.sphericityMajorAxis());
92 const double pToutS = dot(mom3, sphericity.sphericityMinorAxis());
93 const double rapidityS = 0.5 * std::log((energy + momS) / (energy - momS));
94 if(id==3122) {
95 _h_lam_x->fill(xE,1./beta);
96 _h_lam_p->fill(modp/GeV);
97 _h_lam_pL ->fill(abs(momS)/GeV );
98 _h_lam_pTIn ->fill(abs(pTinS)/GeV );
99 _h_lam_pTOut->fill(abs(pToutS)/GeV);
100 _h_lam_rap ->fill(abs(rapidityS) );
101 ++nLam;
102 }
103 else if(_h_xi_x) {
104 _h_xi_x->fill(xE,1./beta);
105 _h_xi_p->fill(modp/GeV);
106 _h_xi_pL ->fill(abs(momS)/GeV );
107 _h_xi_pTIn ->fill(abs(pTinS)/GeV );
108 _h_xi_pTOut->fill(abs(pToutS)/GeV);
109 _h_xi_rap ->fill(abs(rapidityS) );
110 }
111 }
112 double sphere = sphericity.sphericity();
113 _p_lam_S_1->fill(sphere,nLam);
114 _p_lam_S_2->fill(sphere,cfs.particles().size());
115 }
116
117
118 /// Normalise histograms etc., after the run
119 void finalize() {
120 scale( _h_lam_p , crossSection()/nanobarn/sumOfWeights());
121 scale( _h_lam_pL , crossSection()/nanobarn/sumOfWeights());
122 scale( _h_lam_pTIn , crossSection()/nanobarn/sumOfWeights());
123 scale( _h_lam_pTOut, crossSection()/nanobarn/sumOfWeights());
124 scale( _h_lam_rap , crossSection()/nanobarn/sumOfWeights());
125 scale( _h_lam_x , sqr(sqs)*crossSection()/nanobarn/sumOfWeights());
126 Estimate1DPtr temp;
127 book(temp,15+_ih,1,3);
128 divide(_p_lam_S_1,_p_lam_S_2,temp);
129 if(_ih==0) {
130 scale( _h_xi_p , crossSection()/nanobarn/sumOfWeights());
131 scale( _h_xi_pL , crossSection()/nanobarn/sumOfWeights());
132 scale( _h_xi_pTIn , crossSection()/nanobarn/sumOfWeights());
133 scale( _h_xi_pTOut, crossSection()/nanobarn/sumOfWeights());
134 scale( _h_xi_rap , crossSection()/nanobarn/sumOfWeights());
135 scale( _h_xi_x , sqr(sqs)*crossSection()/nanobarn/sumOfWeights());
136 }
137 }
138
139 /// @}
140
141
142 /// @name Histograms
143 /// @{
144 Histo1DPtr _h_lam_p, _h_lam_pL, _h_lam_pTIn, _h_lam_pTOut, _h_lam_rap, _h_lam_x;
145 Profile1DPtr _p_lam_S_1, _p_lam_S_2;
146 Histo1DPtr _h_xi_p, _h_xi_pL, _h_xi_pTIn, _h_xi_pTOut, _h_xi_rap, _h_xi_x;
147 int _ih;
148 double sqs;
149 /// @}
150
151
152 };
153
154
155 RIVET_DECLARE_PLUGIN(TASSO_1989_I266893);
156
157
158}
|