rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ARGUS_1987_I238071

$\pi^+\pi^-$ mass spectrum in $\Upsilon(2S)\to\pi^+\pi^-\Upsilon(1S)$
Experiment: ARGUS (DORIS)
Inspire ID: 238071
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Z.Phys.C 35 (1987) 283
Beams: * *
Beam energies: ANY
Run details:
  • In princple any process producing Upsilon(2S)

Measurement of the $\pi^+\pi^-$ mass spectrum in $\Upsilon(2S)\to\pi^+\pi^-\Upsilon(1S)$.

Source code: ARGUS_1987_I238071.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4#include "Rivet/Projections/DecayedParticles.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief Upsilon(2S) -> Upsilon(1S) pi+pi-
10  class ARGUS_1987_I238071 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1987_I238071);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      // Initialise and register projections
23      UnstableParticles ufs = UnstableParticles(Cuts::abspid==100553);
24      declare(ufs, "UFS");
25      DecayedParticles UPS(ufs);
26      UPS.addStable( 553);
27      declare(UPS, "UPS");
28      // histos
29      for (unsigned int ix=0; ix<2; ++ix) {
30        book(_h[ix], 1+ix, 1, 1);
31      }
32    }
33
34
35    /// Perform the per-event analysis
36    void analyze(const Event& event) {
37      DecayedParticles UPS = apply<DecayedParticles>(event, "UPS");
38      // loop over particles
39      for (unsigned int ix=0; ix<UPS.decaying().size(); ++ix) {
40        // check pi+pi- upslion(1S) decay mode
41      	if (!UPS.modeMatches(ix,3,mode)) continue;
42        const Particle& ups1 = UPS.decayProducts()[ix].at( 553)[0];
43        const Particle& pip  = UPS.decayProducts()[ix].at( 211)[0];
44        const Particle& pim  = UPS.decayProducts()[ix].at(-211)[0];
45        double mpipi=(pip.momentum()+pim.momentum()).mass();
46        _h[0]->fill(mpipi);
47        double mpi = pip.mass()+pim.mass();
48        double x = (mpipi-mpi)/(UPS.decaying()[ix].mass()-ups1.mass()-mpi);
49        _h[1]->fill(x);
50      }
51    }
52
53
54    /// Normalise histograms etc., after the run
55    void finalize() {
56      normalize(_h, 1.0, false);
57    }
58
59    /// @}
60
61
62    /// @name Histograms
63    /// @{
64    Histo1DPtr _h[2];
65    const map<PdgId,unsigned int> mode = { { 553,1},{ 211,1}, {-211,1}};
66    /// @}
67
68
69  };
70
71
72  RIVET_DECLARE_PLUGIN(ARGUS_1987_I238071);
73
74}