rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEO_2001_I552541

Correlated $\Lambda^+_c\bar{\Lambda}_c$ production in $e^+e^-$ annihilations at $\sqrt{s}=10.5$ GeV
Experiment: CLEO (CESR)
Inspire ID: 552541
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D63 (2001) 112003, 2001
Beams: e+ e-
Beam energies: (5.3, 5.3) GeV
Run details:
  • $e^+ e^-$ analysis near the $\Upsilon(4S)$ resonance

Measurement of correlations between $\Lambda^+_c$ and $\bar{\Lambda}_c$ production in $e^+e^-$ annihilations at $\sqrt{s}=10.5$ GeV by the CLEO experiment. Useful fo studying models of baryon production.

Source code: CLEO_2001_I552541.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief Add a short analysis description here
  9  class CLEO_2001_I552541 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2001_I552541);
 14
 15
 16    /// @name Analysis methods
 17    //@{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21
 22      // Initialise and register projections
 23      declare(UnstableParticles(), "UFS");
 24      book(_d_Dbar0[0], "/TMP/d_D0_low" );
 25      book(_d_Dbar0[1], "/TMP/d_D0_high");
 26      book(_d_Dm[0]   , "/TMP/d_Dm_low" );
 27      book(_d_Dm[1]   , "/TMP/d_Dm_high");
 28      book(_d_Lam[0]  , "/TMP/d_La_low" );
 29      book(_d_Lam[1]  , "/TMP/d_La_high");
 30      
 31      book(_n_Dbar0[0][0], "/TMP/d_D0_low_low"  );
 32      book(_n_Dbar0[0][1], "/TMP/d_D0_low_high" );
 33      book(_n_Dbar0[1][0], "/TMP/d_D0_high_low" );
 34      book(_n_Dbar0[1][1], "/TMP/d_D0_high_high");
 35      book(_n_Dm[0][0]   , "/TMP/d_Dm_low_low"  );
 36      book(_n_Dm[0][1]   , "/TMP/d_Dm_low_high" );
 37      book(_n_Dm[1][0]   , "/TMP/d_Dm_high_low" );
 38      book(_n_Dm[1][1]   , "/TMP/d_Dm_high_high");
 39      book(_n_Lam[0][0]  , "/TMP/d_La_low_low"  );
 40      book(_n_Lam[0][1]  , "/TMP/d_La_low_high" );
 41      book(_n_Lam[1][0]  , "/TMP/d_La_high_low" );
 42      book(_n_Lam[1][1]  , "/TMP/d_La_high_high");
 43
 44    }
 45
 46
 47    /// Perform the per-event analysis
 48    void analyze(const Event& event) {
 49      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
 50      for(const Particle & p : ufs.particles(Cuts::pid==-4122 or Cuts::pid==-411 or Cuts::pid==-421)) {
 51	long id1 = p.pid();
 52	double mom1 = p.p3().mod();
 53	if(mom1<2.3*GeV || mom1>5.*GeV) continue;
 54	bool high1 = mom1>3.3*GeV;
 55	if(id1==-4122) {
 56	  _d_Lam[high1]->fill();
 57	}
 58	else if(id1==-411) {
 59	  _d_Dm[high1]->fill();
 60	}
 61	else if(id1==-421) {
 62	  _d_Dbar0[high1]->fill();
 63	}
 64	for(const Particle & p2 : ufs.particles(Cuts::pid==4122)) {
 65	  if(p.p3().angle(p2.p3())<0.5*M_PI) continue;
 66	  double mom2 = p2.p3().mod();
 67	  if(mom2<2.3*GeV || mom2>5.*GeV) continue;
 68	  bool high2 = mom2>3.3*GeV;
 69	  if(id1==-4122) {
 70	    _n_Lam[high1][high2]->fill();
 71	  }
 72	  else if(id1==-411) {
 73	    _n_Dm[high1][high2]->fill();
 74	  }
 75	  else if(id1==-421) {
 76	    _n_Dbar0[high1][high2]->fill();
 77	  }
 78	}
 79      }
 80    }
 81
 82
 83    /// Normalise histograms etc., after the run
 84    void finalize() {
 85      Scatter1D R_D0_low_low    = *_n_Dbar0[0][0]/ *_d_Dbar0[0];
 86      Scatter1D R_D0_low_high   = *_n_Dbar0[0][1]/ *_d_Dbar0[0];
 87      Scatter1D R_D0_high_low   = *_n_Dbar0[1][0]/ *_d_Dbar0[1];
 88      Scatter1D R_D0_high_high  = *_n_Dbar0[1][1]/ *_d_Dbar0[1];
 89      Scatter1D R_Dm_low_low    = *_n_Dm[0][0]   / *_d_Dm[0];
 90      Scatter1D R_Dm_low_high   = *_n_Dm[0][1]   / *_d_Dm[0];
 91      Scatter1D R_Dm_high_low   = *_n_Dm[1][0]   / *_d_Dm[1];
 92      Scatter1D R_Dm_high_high  = *_n_Dm[1][1]   / *_d_Dm[1];
 93      Scatter1D R_Lam_low_low   = *_n_Lam[0][0]  / *_d_Lam[0];
 94      Scatter1D R_Lam_low_high  = *_n_Lam[0][1]  / *_d_Lam[0];
 95      Scatter1D R_Lam_high_low  = *_n_Lam[1][0]  / *_d_Lam[1];
 96      Scatter1D R_Lam_high_high = *_n_Lam[1][1]  / *_d_Lam[1];
 97      for(unsigned int ix=3;ix<5;++ix) {
 98	for(unsigned int iy=1;iy<5;++iy) {
 99	  double num(0.),den(0.),num_err(0.),den_err(0.);
100	  if(ix==3) {
101	    if(iy==1) {
102	      den     =  R_D0_low_low  .points()[0].x();
103	      den_err =  R_D0_low_low  .points()[0].xErrAvg();
104	    }
105	    else if(iy==2) {
106	      den     =  R_D0_high_low .points()[0].x();
107	      den_err =  R_D0_high_low .points()[0].xErrAvg();
108	    }
109	    else if(iy==3) {
110	      den     =  R_D0_low_low  .points()[0].x();
111	      den_err =  R_D0_low_low  .points()[0].xErrAvg();
112	    }
113	    else if(iy==4) {
114	      den     =  R_D0_high_high.points()[0].x();
115	      den_err =  R_D0_high_high.points()[0].xErrAvg();
116	    }
117	  }
118	  else if(ix==4) {
119	    if(iy==1) {
120	      den     =  R_Dm_low_low  .points()[0].x();
121	      den_err =  R_Dm_low_low  .points()[0].xErrAvg();
122	    }
123	    else if(iy==2) {
124	      den     =  R_Dm_high_low .points()[0].x();
125	      den_err =  R_Dm_high_low .points()[0].xErrAvg();
126	    }
127	    else if(iy==3) {
128	      den     =  R_Dm_low_low  .points()[0].x();
129	      den_err =  R_Dm_low_low  .points()[0].xErrAvg();
130	    }
131	    else if(iy==4) {
132	      den     =  R_Dm_high_high.points()[0].x();
133	      den_err =  R_Dm_high_high.points()[0].xErrAvg();
134	    }
135	  }
136	  if(iy==1) {
137	    num     =  R_Lam_low_low  .points()[0].x();
138	    num_err =  R_Lam_low_low  .points()[0].xErrAvg();
139	  }
140	  else if(iy==2) {
141	    num     =  R_Lam_high_low .points()[0].x();
142	    num_err =  R_Lam_high_low .points()[0].xErrAvg();
143	  }
144	  else if(iy==3) {
145	    num     =  R_Lam_low_low  .points()[0].x();
146	    num_err =  R_Lam_low_low  .points()[0].xErrAvg();
147	  }
148	  else if(iy==4) {
149	    num     =  R_Lam_high_high.points()[0].x();
150	    num_err =  R_Lam_high_high.points()[0].xErrAvg();
151	  }
152	  double val = num/den;
153	  double err = val>=0. ? val*sqrt(sqr(num_err/num)+sqr(den_err/den)) : 0.;
154	  Scatter2DPtr ratio;
155	  book(ratio,ix, 1, iy);
156	  Scatter2D temphisto(refData(ix, 1, iy));
157	  const double x  = temphisto.point(0).x();
158	  pair<double,double> ex = temphisto.point(0).xErrs();
159	  ratio->addPoint(x, val, ex, make_pair(err,err));
160	}
161      }
162    }
163
164    //@}
165
166
167    /// @name Histograms
168    //@{
169    CounterPtr _d_Dbar0[2],_d_Dm[2],_d_Lam[2];
170    CounterPtr _n_Dbar0[2][2],_n_Dm[2][2],_n_Lam[2][2];
171    //@}
172
173
174  };
175
176
177  // The hook for the plugin system
178  RIVET_DECLARE_PLUGIN(CLEO_2001_I552541);
179
180
181}