Rivet analyses referenceFOCUS_2003_I635446Dalitz plot analysis of D+s and D+→π+π+π−Experiment: FOCUS (Fermilab) Inspire ID: 635446 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decays D+s and D+→π+π+π−. The data were read from the plots in the paper and the backgrounds subtracted. 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: FOCUS_2003_I635446.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+/D+ -> pi+pi+pi-
10 class FOCUS_2003_I635446 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(FOCUS_2003_I635446);
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==411 or
24 Cuts::abspid==431);
25 declare(ufs, "UFS");
26 DecayedParticles DD(ufs);
27 DD.addStable(PID::PI0);
28 DD.addStable(PID::K0S);
29 declare(DD, "DD");
30 // histos
31 book(_h_pippim[0],1,1,1);
32 book(_h_pippim[1],1,1,2);
33 book(_h_pippim[2],2,1,1);
34 book(_h_pippim[3],2,1,2);
35 book(_dalitz[0], "dalitz1",50,0.,2.0,50,0.0,3.5);
36 book(_dalitz[1], "dalitz2",50,0.,1.8,50,0.0,3.1);
37 }
38
39 /// Perform the per-event analysis
40 void analyze(const Event& event) {
41 static const map<PdgId,unsigned int> & mode = { { 211,2},{-211,1}};
42 static const map<PdgId,unsigned int> & modeCC = { {-211,2},{ 211,1}};
43 DecayedParticles DD = apply<DecayedParticles>(event, "DD");
44 // loop over particles
45 for(unsigned int ix=0;ix<DD.decaying().size();++ix) {
46 int sign = 1;
47 if (DD.decaying()[ix].pid()>0 && DD.modeMatches(ix,3,mode)) {
48 sign=1;
49 }
50 else if (DD.decaying()[ix].pid()<0 && DD.modeMatches(ix,3,modeCC)) {
51 sign=-1;
52 }
53 else
54 continue;
55 const Particles & pip = DD.decayProducts()[ix].at( sign*211);
56 const Particle & pim = DD.decayProducts()[ix].at(-sign*211)[0];
57 double m1 = (pim.momentum()+pip[0].momentum()).mass2();
58 double m2 = (pim.momentum()+pip[1].momentum()).mass2();
59 if(m1>m2) swap(m1,m2);
60 if(DD.decaying()[ix].abspid()==431) {
61 _dalitz[0]->fill(m1,m2);
62 _h_pippim[0]->fill(m1);
63 _h_pippim[1]->fill(m2);
64 }
65 else {
66 _dalitz[1]->fill(m1,m2);
67 _h_pippim[2]->fill(m1);
68 _h_pippim[3]->fill(m2);
69 }
70 }
71 }
72
73
74 /// Normalise histograms etc., after the run
75 void finalize() {
76 for(unsigned int ix=0;ix<2;++ix) {
77 normalize(_dalitz[ix]);
78 normalize(_h_pippim[ix ]);
79 normalize(_h_pippim[ix+2]);
80 }
81 }
82
83 /// @}
84
85
86 /// @name Histograms
87 /// @{
88 Histo1DPtr _h_pippim[4];
89 Histo2DPtr _dalitz[2];
90 /// @}
91
92
93 };
94
95
96 RIVET_DECLARE_PLUGIN(FOCUS_2003_I635446);
97
98}
|