Rivet analyses referenceFOCUS_2003_I618864Mass distributions in the decays Ξ+c→Σ+K−π+ and Ξ+c→Ξ−π+π+Experiment: FOCUS (Fermilab) Inspire ID: 618864 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decays Ξ+c→Σ+K−π+ and Ξ+c→Ξ−π+π+ by FOCUS. The data were read from the plots in the paper. Source code: FOCUS_2003_I618864.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 Xi_c+ -> Sigma+ K- pi+ and Xi- pi+ pi+
10 class FOCUS_2003_I618864 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(FOCUS_2003_I618864);
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==4232);
24 declare(ufs, "UFS");
25 DecayedParticles XICP(ufs);
26 XICP.addStable(PID::PI0);
27 XICP.addStable(PID::K0S);
28 XICP.addStable(PID::ETA);
29 XICP.addStable(3222);
30 XICP.addStable(-3222);
31 XICP.addStable(3312);
32 XICP.addStable(-3312);
33 declare(XICP, "XICP");
34 // histograms
35 for(unsigned int ix=0;ix<2;++ix)
36 book(_h[ix],1+ix,1,1);
37 }
38
39
40 /// Perform the per-event analysis
41 void analyze(const Event& event) {
42 static const map<PdgId,unsigned int> & mode1 = { { PID::KMINUS,1}, { 3222,1}, { PID::PIPLUS ,1}};
43 static const map<PdgId,unsigned int> & mode1CC = { { PID::KPLUS ,1}, {-3222,1}, { PID::PIMINUS,1}};
44 static const map<PdgId,unsigned int> & mode2 = { { 3312,1}, { PID::PIPLUS ,2}};
45 static const map<PdgId,unsigned int> & mode2CC = { {-3312,1}, { PID::PIMINUS,2}};
46 DecayedParticles XICP = apply<DecayedParticles>(event, "XICP");
47 // loop over particles
48 for(unsigned int ix=0;ix<XICP.decaying().size();++ix) {
49 int sign = XICP.decaying()[ix].pid()/XICP.decaying()[ix].abspid();
50 if ( (sign== 1 && XICP.modeMatches(ix,3,mode1 )) ||
51 (sign==-1 && XICP.modeMatches(ix,3,mode1CC)) ) {
52 const Particle & pip = XICP.decayProducts()[ix].at( sign*PID::PIPLUS)[0];
53 const Particle & Km = XICP.decayProducts()[ix].at( sign*PID::KMINUS)[0];
54 for(unsigned int ix=0;ix<2;++ix)
55 _h[0]->fill((pip.momentum()+Km.momentum()).mass());
56 }
57 else if ( (sign== 1 && XICP.modeMatches(ix,3,mode2 )) ||
58 (sign==-1 && XICP.modeMatches(ix,3,mode2CC)) ) {
59 const Particles & pip = XICP.decayProducts()[ix].at( sign*PID::PIPLUS);
60 const Particle & xi = XICP.decayProducts()[ix].at( sign*3312)[0];
61 _h[1]->fill((pip[0].momentum()+xi.momentum()).mass());
62 _h[1]->fill((pip[1].momentum()+xi.momentum()).mass());
63 }
64 }
65 }
66
67
68 /// Normalise histograms etc., after the run
69 void finalize() {
70 for(unsigned int ix=0;ix<2;++ix)
71 normalize(_h[ix],1.,false);
72 }
73
74 /// @}
75
76
77 /// @name Histograms
78 /// @{
79 Histo1DPtr _h[2];
80 /// @}
81
82
83 };
84
85
86 RIVET_DECLARE_PLUGIN(FOCUS_2003_I618864);
87
88}
|