rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2006_I714447

Momentum Spectra and cross sections for $D_{sJ}^*(2317)^+$ and $D_{sJ}^*(2460)^+$ at 10.6 GeV
Experiment: BABAR (PEP-II)
Inspire ID: 714447
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D74 (2006) 032007
Beams: e+ e-
Beam energies: (5.3, 5.3) GeV
Run details:
  • e+e- to hadrons

Momentum Spectra and cross sections for $D_{sJ}^*(2317)^+$ and $D_{sJ}^*(2460)^+$ at 10.6 GeV. All spectra and cross sections are for the centre-of-mass momentum of the excited $D_s$ state, $p^*$, greater than 3.2 GeV.

Source code: BABAR_2006_I714447.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief D*(sJ) production
  9  class BABAR_2006_I714447 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2006_I714447);
 14
 15
 16    /// @name Analysis methods
 17    ///@{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21      // projections
 22      declare(UnstableParticles(),"UFS");
 23      // histograms
 24      // dists
 25      book(_s_2317  ,2,1,1);
 26      book(_s_2460_1,3,1,1);
 27      book(_s_2460_2,4,1,1);
 28      book(_hel     ,5,1,1);
 29      // rates
 30      book(_r_2317  ,1,1,1);
 31      book(_r_2460_1,1,1,2);
 32      book(_r_2460_2,1,1,3);
 33      book(_r_2460_3,1,1,4);
 34      book(_r_2460_4,1,1,5);
 35      book(_r_2536  ,1,1,6);
 36    }
 37
 38
 39    /// Perform the per-event analysis
 40    void analyze(const Event& event) {
 41      for(const Particle & Ds: apply<UnstableParticles>(event,"UFS").particles(Cuts::pid==10433 or
 42									       Cuts::pid==20433 or
 43									       Cuts::pid==10431)) {
 44	// cut of 3.2 GeV of the momentum
 45	double mom=Ds.momentum().p3().mod();
 46	if(mom<=3.2) continue;
 47	if(Ds.abspid()==10431) {
 48	  _s_2317->fill(mom);
 49	}
 50	else if(Ds.abspid()==20433) {
 51	  _s_2460_1->fill(mom);
 52	  _s_2460_2->fill(mom);
 53	}
 54	int sign = Ds.pid()/Ds.abspid();
 55	Particle DsStar;
 56	bool doHelicity=false;
 57	// identify the decay mode
 58	if(Ds.children().size()==2) {
 59	  if(Ds.children()[0].pid()==sign*431 &&
 60	     Ds.children()[1].pid()==111) {
 61	    if(Ds.abspid()==10431) _r_2317->fill(10.58);
 62	  }
 63	  else if(Ds.children()[1].pid()==sign*431 &&
 64		  Ds.children()[0].pid()==111) {
 65	    if(Ds.abspid()==10431) _r_2317->fill(10.58);
 66	  }
 67	  else if(Ds.children()[0].pid()==sign*433 &&
 68		  Ds.children()[1].pid()==111) {
 69	    if(Ds.abspid()==20433) {
 70	      _r_2460_3->fill(10.58);
 71	      DsStar=Ds.children()[0];
 72	      doHelicity=true;
 73	    }
 74	  }
 75	  else if(Ds.children()[1].pid()==sign*433 &&
 76		  Ds.children()[0].pid()==111) {
 77	    if(Ds.abspid()==20433) {
 78	      _r_2460_3->fill(10.58);
 79	      DsStar=Ds.children()[1];
 80	      doHelicity=true;
 81	    }
 82	  }
 83	  else if(Ds.children()[0].pid()==sign*431 &&
 84		  Ds.children()[1].pid()==22) {
 85	    if(Ds.abspid()==20433) _r_2460_1->fill(10.58);
 86	  }
 87	  else if(Ds.children()[1].pid()==sign*431 &&
 88		  Ds.children()[0].pid()==22) {
 89	    if(Ds.abspid()==20433) _r_2460_1->fill(10.58);
 90	  }
 91	  if(doHelicity && DsStar.children().size()==2) {
 92	    Particle gamma;
 93	    doHelicity=false;
 94	    for(const Particle & p : DsStar.children()) {
 95	      if(p.pid()==22) {
 96		doHelicity=true;
 97		gamma=p;
 98	      }
 99	    }
100	    if(doHelicity) {
101	      LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(Ds.momentum().betaVec());
102	      FourMomentum pDsStar = boost.transform(DsStar.momentum());
103	      FourMomentum pGamma  = boost.transform(gamma .momentum());
104	      LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pDsStar.betaVec());
105	      FourMomentum pGamma2  = boost2.transform(pGamma);
106	      double cTheta = pGamma2.p3().unit().dot(pDsStar.p3().unit());
107	      _hel->fill(cTheta);
108	    }
109	  }
110	}
111	Particles D, pip, pi0, gamma;
112	unsigned int nstable(0);
113	findDecayProducts(Ds,D,pip,pi0,gamma,nstable);
114	if(nstable==3) {
115	  if(D.size()==1&&pip.size()==2) {
116	    if(Ds.abspid()==20433) {
117	      _r_2460_4->fill(10.58);
118	    }
119	    else if(Ds.abspid()==10433) {
120	      _r_2536  ->fill(10.58);
121	    }
122	  }
123	  else if(D.size()==1&&pi0.size()==1&&gamma.size()==1) {
124	    if(Ds.abspid()==20433)
125	      _r_2460_2->fill(10.58);
126	  }							  
127	}
128      }
129    }
130
131    void findDecayProducts(Particle parent, Particles & Ds, Particles & pip, Particles & pi0,
132			   Particles & gamma, unsigned int & nstable) {
133      for(const Particle & p: parent.children()) {
134	if(p.pid()==111) {
135	  pi0.push_back(p);
136	  ++nstable;
137	}
138	else if(p.pid()==22) {
139	  gamma.push_back(p);
140	  ++nstable;
141	}
142	else if(p.abspid()==211) {
143	  pip.push_back(p);
144	  ++nstable;
145	}
146	else if(p.abspid()==431) {
147	  Ds.push_back(p);
148	  ++nstable;
149	}
150	else if(p.children().empty()) {
151	  ++nstable;
152	}
153	else
154	  findDecayProducts(p,Ds,pip,pi0,gamma,nstable);
155      }
156    }
157    
158    
159    /// Normalise histograms etc., after the run
160    void finalize() {
161      normalize(_s_2317  ,1.,false);
162      normalize(_s_2460_1,1.,false);
163      normalize(_s_2460_2,1.,false);
164      normalize(_hel     ,1.,false);
165      scale(_r_2317  ,crossSection()/femtobarn/sumOfWeights());
166      scale(_r_2460_1,crossSection()/femtobarn/sumOfWeights());
167      scale(_r_2460_2,crossSection()/femtobarn/sumOfWeights());
168      scale(_r_2460_3,crossSection()/femtobarn/sumOfWeights());
169      scale(_r_2460_4,crossSection()/femtobarn/sumOfWeights());
170      scale(_r_2536  ,crossSection()/femtobarn/sumOfWeights());
171    }
172
173    ///@}
174
175
176    /// @name Histograms
177    ///@{
178    Histo1DPtr _s_2317,_s_2460_1,_s_2460_2,_hel;
179    Histo1DPtr _r_2317,_r_2460_1,_r_2460_2,_r_2460_3,_r_2460_4,_r_2536;
180    ///@}
181
182
183  };
184
185
186  RIVET_DECLARE_PLUGIN(BABAR_2006_I714447);
187
188}