Rivet analyses


title: 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

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief D*(sJ) production class BABAR_2006_I714447 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2006_I714447);


/// @name Analysis methods
/// @{

/// Book histograms and initialise projections before the run
void init() {
  // projections
  declare(UnstableParticles(), "UFS");
  // histograms
  // dists
  book(_s_2317, 2, 1, 1);
  book(_s_2460_1, 3, 1, 1);
  book(_s_2460_2, 4, 1, 1);
  book(_hel, 5, 1, 1);
  // rates
  book(_r_2317, 1, 1, 1);
  book(_r_2460_1, 1, 1, 2);
  book(_r_2460_2, 1, 1, 3);
  book(_r_2460_3, 1, 1, 4);
  book(_r_2460_4, 1, 1, 5);
  book(_r_2536, 1, 1, 6);
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  for (const Particle& Ds :
       apply<UnstableParticles>(event, "UFS")
           .particles(Cuts::pid == 10433 or Cuts::pid == 20433 or Cuts::pid == 10431)) {
    // cut of 3.2 GeV of the momentum
    double mom = Ds.momentum().p3().mod();
    if (mom <= 3.2) continue;
    if (Ds.abspid() == 10431) {
      _s_2317->fill(mom);
    }
    else if (Ds.abspid() == 20433) {
      _s_2460_1->fill(mom);
      _s_2460_2->fill(mom);
    }
    int sign = Ds.pid() / Ds.abspid();
    Particle DsStar;
    bool doHelicity = false;
    // identify the decay mode
    if (Ds.children().size() == 2) {
      if (Ds.children()[0].pid() == sign * 431 && Ds.children()[1].pid() == 111) {
        if (Ds.abspid() == 10431) _r_2317->fill("10.6"s);
      }
      else if (Ds.children()[1].pid() == sign * 431 && Ds.children()[0].pid() == 111) {
        if (Ds.abspid() == 10431) _r_2317->fill("10.6"s);
      }
      else if (Ds.children()[0].pid() == sign * 433 && Ds.children()[1].pid() == 111) {
        if (Ds.abspid() == 20433) {
          _r_2460_3->fill("10.6"s);
          DsStar = Ds.children()[0];
          doHelicity = true;
        }
      }
      else if (Ds.children()[1].pid() == sign * 433 && Ds.children()[0].pid() == 111) {
        if (Ds.abspid() == 20433) {
          _r_2460_3->fill("10.6"s);
          DsStar = Ds.children()[1];
          doHelicity = true;
        }
      }
      else if (Ds.children()[0].pid() == sign * 431 && Ds.children()[1].pid() == 22) {
        if (Ds.abspid() == 20433) _r_2460_1->fill("10.6"s);
      }
      else if (Ds.children()[1].pid() == sign * 431 && Ds.children()[0].pid() == 22) {
        if (Ds.abspid() == 20433) _r_2460_1->fill("10.6"s);
      }
      if (doHelicity && DsStar.children().size() == 2) {
        Particle gamma;
        doHelicity = false;
        for (const Particle& p : DsStar.children()) {
          if (p.pid() == 22) {
            doHelicity = true;
            gamma = p;
          }
        }
        if (doHelicity) {
          LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(Ds.momentum().betaVec());
          FourMomentum pDsStar = boost.transform(DsStar.momentum());
          FourMomentum pGamma = boost.transform(gamma.momentum());
          LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pDsStar.betaVec());
          FourMomentum pGamma2 = boost2.transform(pGamma);
          double cTheta = pGamma2.p3().unit().dot(pDsStar.p3().unit());
          _hel->fill(cTheta);
        }
      }
    }
    Particles D, pip, pi0, gamma;
    unsigned int nstable(0);
    findDecayProducts(Ds, D, pip, pi0, gamma, nstable);
    if (nstable == 3) {
      if (D.size() == 1 && pip.size() == 2) {
        if (Ds.abspid() == 20433) {
          _r_2460_4->fill("10.6"s);
        }
        else if (Ds.abspid() == 10433) {
          _r_2536->fill("10.6"s);
        }
      }
      else if (D.size() == 1 && pi0.size() == 1 && gamma.size() == 1) {
        if (Ds.abspid() == 20433) _r_2460_2->fill("10.6"s);
      }
    }
  }
}

void findDecayProducts(Particle parent,
                       Particles& Ds,
                       Particles& pip,
                       Particles& pi0,
                       Particles& gamma,
                       unsigned int& nstable) {
  for (const Particle& p : parent.children()) {
    if (p.pid() == 111) {
      pi0.push_back(p);
      ++nstable;
    }
    else if (p.pid() == 22) {
      gamma.push_back(p);
      ++nstable;
    }
    else if (p.abspid() == 211) {
      pip.push_back(p);
      ++nstable;
    }
    else if (p.abspid() == 431) {
      Ds.push_back(p);
      ++nstable;
    }
    else if (p.children().empty()) {
      ++nstable;
    }
    else
      findDecayProducts(p, Ds, pip, pi0, gamma, nstable);
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  normalize(_s_2317, 1., false);
  normalize(_s_2460_1, 1., false);
  normalize(_s_2460_2, 1., false);
  normalize(_hel, 1., false);
  scale(_r_2317, crossSection() / femtobarn / sumOfWeights());
  scale(_r_2460_1, crossSection() / femtobarn / sumOfWeights());
  scale(_r_2460_2, crossSection() / femtobarn / sumOfWeights());
  scale(_r_2460_3, crossSection() / femtobarn / sumOfWeights());
  scale(_r_2460_4, crossSection() / femtobarn / sumOfWeights());
  scale(_r_2536, crossSection() / femtobarn / sumOfWeights());
}

/// @}


/// @name Histograms
/// @{
Histo1DPtr _s_2317, _s_2460_1, _s_2460_2, _hel;
BinnedHistoPtr<string> _r_2317, _r_2460_1, _r_2460_2, _r_2460_3, _r_2460_4, _r_2536;
/// @}

};

RIVET_DECLARE_PLUGIN(BABAR_2006_I714447);

} ```