Rivet analyses referenceE791_2001_I530319Dalitz plot analysis of $D_s^+\to \pi^+\pi^+\pi^-$Experiment: E791 (Fermilab) Inspire ID: 530319 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decay $D_s^+\to \pi^+\pi^+\pi^-$. The data were read from the plots in the paper. Resolution/acceptance effects have been not unfolded and given the agreement with the model in the paper this analysis should only be used for qualitative studies. Source code: E791_2001_I530319.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 D_s+ -> pi+pi+pi-
10 class E791_2001_I530319 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(E791_2001_I530319);
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==431);
24 declare(ufs, "UFS");
25 DecayedParticles DS(ufs);
26 DS.addStable(PID::PI0);
27 DS.addStable(PID::K0S);
28 declare(DS,"DS");
29 // histos
30 book(_h_pi,1,1,1);
31 book(_dalitz, "dalitz",50,0.,3.5,50,0.0,3.5);
32 }
33
34 /// Perform the per-event analysis
35 void analyze(const Event& event) {
36 static const map<PdgId,unsigned int> & mode = { { 211,2}, {-211,1}};
37 static const map<PdgId,unsigned int> & modeCC = { {-211,2}, { 211,1}};
38 DecayedParticles DS = apply<DecayedParticles>(event, "DS");
39 // loop over particles
40 for(unsigned int ix=0;ix<DS.decaying().size();++ix) {
41 int sign = 1;
42 if (DS.decaying()[ix].pid()>0 && DS.modeMatches(ix,3,mode)) {
43 sign=1;
44 }
45 else if (DS.decaying()[ix].pid()<0 && DS.modeMatches(ix,3,modeCC)) {
46 sign=-1;
47 }
48 else
49 continue;
50 const Particles & pip = DS.decayProducts()[ix].at( sign*211);
51 const Particle & pim = DS.decayProducts()[ix].at(-sign*211)[0];
52 double m1 = (pim.momentum()+pip[0].momentum()).mass2();
53 double m2 = (pim.momentum()+pip[1].momentum()).mass2();
54 _h_pi->fill(m1);
55 _h_pi->fill(m2);
56 _dalitz->fill(m1,m2);
57 _dalitz->fill(m2,m1);
58 }
59 }
60
61
62 /// Normalise histograms etc., after the run
63 void finalize() {
64 normalize(_h_pi);
65 normalize(_dalitz);
66 }
67
68 /// @}
69
70
71 /// @name Histograms
72 /// @{
73 Histo1DPtr _h_pi;
74 Histo2DPtr _dalitz;
75 /// @}
76
77
78 };
79
80
81 RIVET_DECLARE_PLUGIN(E791_2001_I530319);
82
83}
|