Rivet analyses


title: ARGUS_1995_I374784

Electron and muon spectrum in leptonic tau decays

Experiment: ARGUS (DORIS)

Inspire ID: 374784

Status: VALIDATED NOHEPDATA

Authors: - Peter Richardson

References: - Phys.Lett.B 341 (1995) 441-447

Beams: e+ e-

Beam energies: (5.0, 5.0)GeV

Run details: - e+e- -> tau+tau-, needed due pseudo-rest frame definition

Measurement of the electron and muon spectrum in leptonic tau decays in the pseudo-rest frame of the tau lepton. Correccted data read from figures 3 and 4 in the paper.

Source code:ARGUS_1995_I374784.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/ChargedFinalState.hh"

namespace Rivet {

/// @brief tau -> e/mu nu nu class ARGUS_1995_I374784 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1995_I374784);


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

/// Book histograms and initialise projections before the run
void init() {
  // Initialise and register projections
  declare(ChargedFinalState(), "CFS");
  // hists
  for (unsigned int ix = 0; ix < 2; ++ix) {
    book(_h[ix], 1, 1, 1 + ix);
  }
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  const double mtau = 1.77686;
  Particles charged = apply<ChargedFinalState>(event, "CFS").particles();
  if (charged.size() != 4) vetoEvent;
  // find the charged lepton
  int il = -1;
  for (unsigned int ix = 0; ix < charged.size(); ++ix) {
    if (charged[ix].abspid() == 11 || charged[ix].abspid() == 13) {
      if (il > 0) vetoEvent;
      il = ix;
    }
  }
  if (il < 0) vetoEvent;
  // cuts angle charged<90 each other and >90 lepton
  FourMomentum phad;
  Vector3 axisL = charged[il].mom().p3().unit();
  for (int ix = 0; ix < 4; ++ix) {
    if (ix == il) continue;
    phad += charged[ix];
    Vector3 axis = charged[ix].mom().p3().unit();
    if (axis.dot(axisL) > 0) vetoEvent;
    for (int iy = ix + 1; iy < 4; ++iy) {
      if (iy == il) continue;
      if (axis.dot(charged[iy].mom().p3().unit()) < 0) vetoEvent;
    }
  }
  const double pp = sqrt(sqr(0.5 * sqrtS()) - sqr(mtau));
  Vector3 axis = -phad.p3().unit();
  FourMomentum ptau;
  ptau.setT(0.5 * sqrtS());
  ptau.setX(pp * axis.x());
  ptau.setY(pp * axis.y());
  ptau.setZ(pp * axis.z());
  LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(ptau.betaVec());
  FourMomentum pl = boost.transform(charged[il].mom());
  if (charged[il].abspid() == 11) {
    _h[0]->fill(pl.p3().mod());
  }
  else {
    _h[1]->fill(pl.p3().mod());
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  normalize(_h, 1.0, false);
}

/// @}


/// @name Histograms
/// @{
Histo1DPtr _h[2];
/// @}

};

RIVET_DECLARE_PLUGIN(ARGUS_1995_I374784);

} ```