rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CRYSTAL_BALL_1991_I315873

Direct Photon Spectrum in $\Upsilon(1S)$ decays
Experiment: CRYSTAL_BALL (DORIS)
Inspire ID: 315873
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett.B 199 (1987) 291-296
Beams: * *
Beam energies: ANY
Run details:
  • any process producing Upsilon mesons, original e+e- collisions

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
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/DressedLeptons.hh"
#include "Rivet/Projections/MissingMomentum.hh"
#include "Rivet/Projections/DirectFinalState.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief direct photon spectrum in upslion decay
  class CRYSTAL_BALL_1991_I315873 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(CRYSTAL_BALL_1991_I315873);


    /// @name Analysis methods
    /// @{

    /// Book histograms and initialise projections before the run
    void init() {
      // projections
      declare(UnstableParticles(), "UFS");
      book(_h_gamma[0],2,1,1);
      book(_h_gamma[1],2,1,2);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      // Find the Upsilons among the unstables
      for (const Particle& ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==553)) {
	unsigned int nhadron(0);
	Particles photons;
	for(const Particle & child : ups.children()) {
	  if(PID::isHadron(child.pid()))
	    ++nhadron;
	  else if(child.pid()==PID::PHOTON)
	    photons.push_back(child);
	}
	if(nhadron!=0 && !photons.empty()) {
	  LorentzTransform boost;
	  if (ups.p3().mod() > 1*MeV)
	    boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
	  for(const Particle & gamma:photons) {
	    double z = 2.*boost.transform(gamma.momentum()).E()/ups.mass();
	    _h_gamma[0]->fill(z);
	    _h_gamma[1]->fill(z);
	  }
	}
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      normalize(_h_gamma[0],1.,false);
      normalize(_h_gamma[1],1.,false);
    }

    /// @}


    /// @name Histograms
    /// @{
    Histo1DPtr _h_gamma[2];
    /// @}


  };


  RIVET_DECLARE_PLUGIN(CRYSTAL_BALL_1991_I315873);

}