rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

FOCUS_2003_I618864

Mass distributions in the decays $\Xi_c^+\to\Sigma^+K^-\pi^+$ and $\Xi_c^+\to\Xi^-\pi^+\pi^+$
Experiment: FOCUS (Fermilab)
Inspire ID: 618864
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Lett.B 571 (2003) 139-147
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing Xic+ mesons

Measurement of the mass distributions in the decays $\Xi_c^+\to\Sigma^+K^-\pi^+$ and $\Xi_c^+\to\Xi^-\pi^+\pi^+$ 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}