Rivet analyses referenceOPAL_1995_I382219Scaled energy distribution of $D^*$ with flavour separation at LEPExperiment: OPAL (LEP) Inspire ID: 382219 Status: VALIDATED Authors:
Beam energies: (45.6, 45.6) GeV Run details:
The scaled energy distribution of $D^{*\pm}$ is measure, including separating the contributions from $c\bar{c}$ and $b\bar{b}$ events. Source code: OPAL_1995_I382219.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/ChargedFinalState.hh"
5#include "Rivet/Projections/UnstableParticles.hh"
6
7namespace Rivet {
8
9
10 /// @brief D* production
11 class OPAL_1995_I382219 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_1995_I382219);
16
17
18 /// @name Analysis methods
19 /// @{
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23 declare(Beam(), "Beams");
24 declare(UnstableParticles(), "UFS");
25
26 book(_h_Xe_Ds , 3, 1, 1);
27 book(_h_Xe_Ds_b, 4, 1, 1);
28 book(_h_Xe_Ds_c, 5, 1, 1);
29 }
30
31
32 /// Perform the per-event analysis
33 void analyze(const Event& event) {
34 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
35
36 // Get beams and average beam momentum
37 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
38 const double meanBeamMom = ( beams.first.p3().mod() +
39 beams.second.p3().mod() ) / 2.0/GeV;
40 // check if b hadrons or not
41 unsigned int nB= (select(ufs.particles(), isBottomHadron)).size();
42 // Accept all D*+- decays.
43 for (const Particle& p : select(ufs.particles(), Cuts::abspid==PID::DSTARPLUS)) {
44 // Scaled energy.
45 const double energy = p.E()/GeV;
46 const double scaledEnergy = energy/meanBeamMom;
47 _h_Xe_Ds->fill(scaledEnergy);
48 if(nB==0)
49 _h_Xe_Ds_c->fill(scaledEnergy);
50 else
51 _h_Xe_Ds_b->fill(scaledEnergy);
52 }
53 }
54
55
56 /// Normalise histograms etc., after the run
57 void finalize() {
58 // brs for D*+/- -> D0 pi+/- and D0->K+pi-
59 double br = 0.677*0.03950;
60 scale(_h_Xe_Ds , 1./sumOfWeights()*br);
61 scale(_h_Xe_Ds_b, 1./sumOfWeights()*br);
62 scale(_h_Xe_Ds_c, 1./sumOfWeights()*br);
63 }
64
65 /// @}
66
67
68 /// @name Histograms
69 /// @{
70 Histo1DPtr _h_Xe_Ds,_h_Xe_Ds_b,_h_Xe_Ds_c;
71 /// @}
72
73
74 };
75
76
77 RIVET_DECLARE_PLUGIN(OPAL_1995_I382219);
78
79
80}
|