Rivet analyses referenceCLEOII_1999_I501487Mass distributions in $\tau^-\to\pi^-\pi^-\pi^+\pi^0\nu_\tau$Experiment: CLEOII (CESR) Inspire ID: 501487 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY
Mass distributions in $\tau^-\to\pi^-\pi^-\pi^+\pi^0\nu_\tau$. The data were read from figures 2 and 3 in the paper and may not be fully corrected.. Source code: CLEOII_1999_I501487.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 tau -> pi- pi- pi+ pi0
10 class CLEOII_1999_I501487 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOII_1999_I501487);
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(111);
28 TAU.addStable(221);
29 declare(TAU, "TAU");
30 // histograms
31 for (unsigned int ix=0; ix<3; ++ix) {
32 book(_h_2pi[ix], 1, 1, 1+ix);
33 if (ix==2) continue;
34 book(_h_4pi[ix], 2, 1, 1+ix);
35 }
36 }
37
38
39 /// Perform the per-event analysis
40 void analyze(const Event& event) {
41 DecayedParticles TAU = apply<DecayedParticles>(event, "TAU");
42 // loop over particles
43 for (unsigned int ix=0;ix<TAU.decaying().size();++ix) {
44 int sign = TAU.decaying()[ix].pid()>0 ? 1 : -1;
45 if (!(TAU.modeMatches(ix,5,mode ) ||
46 TAU.modeMatches(ix,5,modeCC))) continue;
47 const Particle& pi0 = TAU.decayProducts()[ix].at( 111 )[0];
48 const Particles& pim = TAU.decayProducts()[ix].at(-211*sign);
49 const Particle& pip = TAU.decayProducts()[ix].at( 211*sign)[0];
50 Particle omega;
51 int iomega=-1;
52 for (unsigned int ix=0; ix<2; ++ix) {
53 Particle parent = pim[ix];
54 while (!parent.parents().empty()) {
55 parent = parent.parents()[0];
56 if (parent.pid()==223) break;
57 }
58 if (parent.pid()==223) {
59 omega=parent;
60 iomega=ix;
61 }
62 }
63 FourMomentum phad = pim[0].mom()+pim[1].mom()+pip.mom()+pi0.mom();
64 const double q = phad.mass();
65 if (iomega>0) {
66 _h_4pi[0]->fill(q);
67 }
68 else {
69 _h_4pi[1]->fill(q);
70 _h_2pi[0]->fill((pi0.mom()+pip.mom()).mass());
71 for (unsigned int iy=0; iy<2; ++iy) {
72 _h_2pi[1]->fill((pim[iy].mom()+pi0.mom()).mass());
73 _h_2pi[2]->fill((pim[iy].mom()+pip.mom()).mass());
74 }
75 }
76 }
77 }
78
79
80 /// Normalise histograms etc., after the run
81 void finalize() {
82 normalize(_h_2pi, 1.0, false);
83 normalize(_h_4pi, 1.0, false);
84 }
85
86 /// @}
87
88
89 /// @name Histograms
90 /// @{
91 Histo1DPtr _h_2pi[3],_h_4pi[2];
92 const map<PdgId,unsigned int> mode = { { 111,1},{-211,2},{ 211,1},{ 16,1}};
93 const map<PdgId,unsigned int> modeCC = { { 111,1},{ 211,2},{-211,1},{-16,1}};
94 /// @}
95
96
97 };
98
99
100 RIVET_DECLARE_PLUGIN(CLEOII_1999_I501487);
101
102}
|