Rivet analyses referenceCRYSTAL_BALL_1991_I315873Direct Photon Spectrum in $\Upsilon(1S)$ decaysExperiment: CRYSTAL_BALL (DORIS) Inspire ID: 315873 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the direct photon spectrum in $\Upsilon(1S)$ decays by the Crystal Ball experiment. While there is a more recent CLEO result that is not corrected for efficiency and resolution. The spectrum was read from the figures in the paper as it was not included in the original HEPDATA entry. It is normalised to unity in the observed region. Source code: CRYSTAL_BALL_1991_I315873.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5#include "Rivet/Projections/LeptonFinder.hh"
6#include "Rivet/Projections/MissingMomentum.hh"
7#include "Rivet/Projections/DirectFinalState.hh"
8#include "Rivet/Projections/UnstableParticles.hh"
9
10namespace Rivet {
11
12
13 /// @brief direct photon spectrum in upslion decay
14 class CRYSTAL_BALL_1991_I315873 : public Analysis {
15 public:
16
17 /// Constructor
18 RIVET_DEFAULT_ANALYSIS_CTOR(CRYSTAL_BALL_1991_I315873);
19
20
21 /// @name Analysis methods
22 /// @{
23
24 /// Book histograms and initialise projections before the run
25 void init() {
26 // projections
27 declare(UnstableParticles(), "UFS");
28 book(_h_gamma[0],2,1,1);
29 book(_h_gamma[1],2,1,2);
30 }
31
32
33 /// Perform the per-event analysis
34 void analyze(const Event& event) {
35 // Find the Upsilons among the unstables
36 for (const Particle& ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==553)) {
37 unsigned int nhadron(0);
38 Particles photons;
39 for(const Particle & child : ups.children()) {
40 if(PID::isHadron(child.pid()))
41 ++nhadron;
42 else if(child.pid()==PID::PHOTON)
43 photons.push_back(child);
44 }
45 if(nhadron!=0 && !photons.empty()) {
46 LorentzTransform boost;
47 if (ups.p3().mod() > 1*MeV)
48 boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
49 for(const Particle & gamma:photons) {
50 double z = 2.*boost.transform(gamma.momentum()).E()/ups.mass();
51 _h_gamma[0]->fill(z);
52 _h_gamma[1]->fill(z);
53 }
54 }
55 }
56 }
57
58
59 /// Normalise histograms etc., after the run
60 void finalize() {
61 normalize(_h_gamma[0],1.,false);
62 normalize(_h_gamma[1],1.,false);
63 }
64
65 /// @}
66
67
68 /// @name Histograms
69 /// @{
70 Histo1DPtr _h_gamma[2];
71 /// @}
72
73
74 };
75
76
77 RIVET_DECLARE_PLUGIN(CRYSTAL_BALL_1991_I315873);
78
79}
|