rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2021_I1859517

Decay asymmetries in $\Xi^0_c\to\Lambda^0\bar{K}^{*0}$, $\Sigma^0\bar{K}^{*0}$ and $\Sigma^+\bar{K}^{*-}$
Experiment: BELLE (KEKB)
Inspire ID: 1859517
Status: VALIDATED
Authors:
  • Peter Richardson
References: Beams: * *
Beam energies: ANY
Run details:
  • Any process producing Xi_c0

Measurement of the decay asymmetries in $\Xi^0_c\to\Lambda^0\bar{K}^{*0}$, $\Sigma^0\bar{K}^{*0}$ and $\Sigma^+\bar{K}^{*-}$ decays by the BELLE experiment.

Source code: BELLE_2021_I1859517.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief Xi_c0 decay asymmetries
  9  class BELLE_2021_I1859517 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2021_I1859517);
 14
 15
 16    /// @name Analysis methods
 17    ///@{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21      // Initialise and register projections
 22      declare(UnstableParticles(), "UFS" );
 23      // book histograms
 24      book(_h_Lambda,1,1,1);
 25      book(_h_Sigma0,2,1,1);
 26      book(_h_Sigmap,3,1,1);
 27    }
 28
 29
 30    /// Perform the per-event analysis
 31    void analyze(const Event& event) {
 32      // loop over Xi_c0 baryons
 33      for( const Particle& Xic : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==4132)) {
 34	int sign = Xic.pid()/4132;
 35	if(Xic.children().size()!=2) continue;
 36	Particle baryon1,meson1;
 37	if(Xic.children()[0].pid()==sign*3122 && 
 38	   Xic.children()[1].pid()==-sign*313) {
 39	  baryon1 = Xic.children()[0];
 40	  meson1  = Xic.children()[1];
 41	}
 42	else if(Xic.children()[1].pid()==sign*3122 && 
 43		Xic.children()[0].pid()==-sign*313) {
 44	  baryon1 = Xic.children()[1];
 45	  meson1  = Xic.children()[0];
 46	}
 47	else if(Xic.children()[0].pid()==sign*3212 && 
 48		Xic.children()[1].pid()==-sign*313) {
 49	  baryon1 = Xic.children()[0];
 50	  meson1  = Xic.children()[1];
 51	}
 52	else if(Xic.children()[1].pid()==sign*3212 && 
 53		Xic.children()[0].pid()==-sign*313) {
 54	  baryon1 = Xic.children()[1];
 55	  meson1  = Xic.children()[0];
 56	}
 57	else if(Xic.children()[0].pid()==sign*3222 && 
 58		Xic.children()[1].pid()==-sign*323) {
 59	  baryon1 = Xic.children()[0];
 60	  meson1  = Xic.children()[1];
 61	}
 62	else if(Xic.children()[1].pid()==sign*3222 && 
 63		Xic.children()[0].pid()==-sign*323) {
 64	  baryon1 = Xic.children()[1];
 65	  meson1  = Xic.children()[0];
 66	}
 67	else
 68	  continue;
 69	Particle baryon2,meson2;
 70	if(baryon1.abspid()==3122) {
 71	  if(baryon1.children()[0].pid()== sign*2212 && 
 72	     baryon1.children()[1].pid()==-sign*211) {
 73	    baryon2 = baryon1.children()[0];
 74	    meson2  = baryon1.children()[1];
 75	  }
 76	  else if(baryon1.children()[1].pid()== sign*2212 && 
 77		  baryon1.children()[0].pid()==-sign*211) {
 78	    baryon2 = baryon1.children()[1];
 79	    meson2  = baryon1.children()[0];
 80	  }
 81	  else
 82	    continue;
 83	}
 84	else if(baryon1.abspid()==3212) {
 85	  if(baryon1.children()[0].pid()== sign*3122 && 
 86	     baryon1.children()[1].pid()==22) {
 87	    baryon2 = baryon1.children()[0];
 88	    meson2  = baryon1.children()[1];
 89	  }
 90	  else if(baryon1.children()[1].pid()== sign*3122 && 
 91		  baryon1.children()[0].pid()==22) {
 92	    baryon2 = baryon1.children()[1];
 93	    meson2  = baryon1.children()[0];
 94	  }
 95	  else
 96	    continue;
 97	}
 98	else if(baryon1.abspid()==3222) {
 99	  if(baryon1.children()[0].pid()== sign*2212 && 
100	     baryon1.children()[1].pid()==111) {
101	    baryon2 = baryon1.children()[0];
102	    meson2  = baryon1.children()[1];
103	  }
104	  else if(baryon1.children()[1].pid()== sign*2212 && 
105		  baryon1.children()[0].pid()==111) {
106	    baryon2 = baryon1.children()[1];
107	    meson2  = baryon1.children()[0];
108	  }
109	  else
110	    continue;
111	}
112	// first boost to the Xic rest frame
113	LorentzTransform boost1 = LorentzTransform::mkFrameTransformFromBeta(Xic.momentum().betaVec());
114	FourMomentum pbaryon1 = boost1.transform(baryon1.momentum());
115	FourMomentum pbaryon2 = boost1.transform(baryon2.momentum());
116	// to lambda rest frame
117	LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pbaryon1.betaVec());
118	Vector3 axis = pbaryon1.p3().unit();
119	FourMomentum pp = boost2.transform(pbaryon2);
120	// calculate angle
121	double cTheta = pp.p3().unit().dot(axis);
122	if(baryon1.abspid()==3122) {
123	  _h_Lambda->fill(cTheta);
124	}
125	else if(baryon1.abspid()==3212) {
126	  _h_Sigma0->fill(cTheta);
127	}
128	else if(baryon1.abspid()==3222) {
129	  _h_Sigmap->fill(cTheta);
130	}
131      }
132    }
133
134    pair<double,double> calcAlpha(Histo1DPtr hist) {
135      if(hist->numEntries()==0.) return make_pair(0.,0.);
136      double sum1(0.),sum2(0.);
137      for (const auto& bin : hist->bins() ) {
138        double Oi = bin.sumW();
139        if(Oi==0.) continue;
140        double ai = 0.5*(bin.xMax()-bin.xMin());
141        double bi = 0.5*ai*(bin.xMax()+bin.xMin());
142        double Ei = bin.errW();
143        sum1 += sqr(bi/Ei);
144        sum2 += bi/sqr(Ei)*(Oi-ai);
145      }
146      return make_pair(sum2/sum1,sqrt(1./sum1));
147    }
148
149    /// Normalise histograms etc., after the run
150    void finalize() {
151      // Lambda Kbar*0
152      normalize(_h_Lambda);
153      Estimate1DPtr _h_alpha;
154      book(_h_alpha,4,1,1);
155      pair<double,double> alpha = calcAlpha(_h_Lambda);
156      _h_alpha->bin(1).set(alpha.first, alpha.second);
157      // Sigma0 Kbar*0
158      normalize(_h_Sigma0);
159      book(_h_alpha,4,1,2);
160      alpha = calcAlpha(_h_Sigma0);
161      _h_alpha->bin(1).set(alpha.first, alpha.second);
162      // Sigma+ K*-
163      normalize(_h_Sigmap);
164      book(_h_alpha,4,1,3);
165      alpha = calcAlpha(_h_Sigmap);
166      _h_alpha->bin(1).set(alpha.first, alpha.second);
167
168    }
169
170    ///@}
171
172
173    /// @name Histograms
174    ///@{
175    Histo1DPtr _h_Lambda,_h_Sigma0,_h_Sigmap;
176    ///@}
177
178
179  };
180
181
182  RIVET_DECLARE_PLUGIN(BELLE_2021_I1859517);
183
184}