Rivet analyses referenceCLEOIII_2005_I675005Hadronic mass spectra in four hadron $\tau^-$ decays with $K^\pm$Experiment: CLEOIII (CESR) Inspire ID: 675005 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the hadronic mass spectrum in $\tau^-\to K^-\pi^+\pi^-\pi^0\nu_\tau$ (excluding $\omega$ and $K^-\omega\nu_\tau$) and $\tau^-\to K^-K^+\pi^-\pi^0\nu_\tau$ decays. The background subtracted, efficiency corrected data were read from Figure 2 in the paper. Source code: CLEOIII_2005_I675005.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 Hadronic mass spectra in four hadron tau- decays with K+/-
10 class CLEOIII_2005_I675005 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOIII_2005_I675005);
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==15);
24 declare(ufs, "UFS");
25 DecayedParticles TAU(ufs);
26 TAU.addStable(310);
27 TAU.addStable(223);
28 TAU.addStable(111);
29 declare(TAU, "TAU");
30 // histos
31 for (unsigned int ix=0; ix<3; ++ix) {
32 book(_h[ix], 1, 1, 1+ix);
33 }
34 }
35
36
37 /// Perform the per-event analysis
38 void analyze(const Event& event) {
39 DecayedParticles TAU = apply<DecayedParticles>(event, "TAU");
40 // loop over particles
41 for (unsigned int ix=0;ix<TAU.decaying().size();++ix) {
42 int sign = 1, imode=0;
43 if (TAU.decaying()[ix].pid()>0 &&
44 TAU.modeMatches(ix,5,mode1)) {
45 sign=1;
46 imode=0;
47 }
48 else if (TAU.decaying()[ix].pid()<0 &&
49 TAU.modeMatches(ix,5,mode1CC)) {
50 sign=-1;
51 imode=0;
52 }
53 else if(TAU.decaying()[ix].pid()>0 &&
54 TAU.modeMatches(ix,3,mode2)) {
55 sign=1;
56 imode=1;
57 }
58 else if (TAU.decaying()[ix].pid()<0 &&
59 TAU.modeMatches(ix,3,mode2CC)) {
60 sign=-1;
61 imode=1;
62 }
63 else if(TAU.decaying()[ix].pid()>0 &&
64 TAU.modeMatches(ix,5,mode3)) {
65 sign=1;
66 imode=2;
67 }
68 else if (TAU.decaying()[ix].pid()<0 &&
69 TAU.modeMatches(ix,5,mode3CC)) {
70 sign=-1;
71 imode=2;
72 }
73 else {
74 continue;
75 }
76 const Particle& nu = TAU.decayProducts()[ix].at(16*sign)[0];
77 const double mass = (TAU.decaying()[ix].mom()-nu.mom()).mass();
78 _h[imode]->fill(mass);
79 }
80 }
81
82
83 /// Normalise histograms etc., after the run
84 void finalize() {
85 normalize(_h, 1.0, false);
86 }
87
88 /// @}
89
90
91 /// @name Histograms
92 /// @{
93 Histo1DPtr _h[3];
94 const map<PdgId,unsigned int> mode1 = { {-321,1}, { 211,1}, {-211,1}, {111,1}, { 16,1}};
95 const map<PdgId,unsigned int> mode1CC = { { 321,1}, { 211,1}, {-211,1}, {111,1}, {-16,1}};
96 const map<PdgId,unsigned int> mode2 = { {-321,1}, { 223,1}, { 16,1}};
97 const map<PdgId,unsigned int> mode2CC = { { 321,1}, { 223,1}, {-16,1}};
98 const map<PdgId,unsigned int> mode3 = { { 321,1}, {-321,1}, {-211,1}, {111,1}, { 16,1}};
99 const map<PdgId,unsigned int> mode3CC = { { 321,1}, {-321,1}, { 211,1}, {111,1}, {-16,1}};
100 /// @}
101
102
103 };
104
105
106 RIVET_DECLARE_PLUGIN(CLEOIII_2005_I675005);
107
108}
|