rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

TASSO_1989_I266893

Spectra for $\Lambda^0,\bar{\Lambda}^0$ and $\Xi^-,\bar{\Xi}^-$ at 34.8 and 42.1 GeV
Experiment: TASSO (Petra)
Inspire ID: 266893
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Z.Phys. C45 (1989) 209, 1989
Beams: e+ e-
Beam energies: (17.4, 17.4); (21.1, 21.1) GeV
Run details:
  • e+ e- to hadrons. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Measurement of the $\Lambda^0,\bar{\Lambda}^0$ and $\Xi^-,\bar{\Xi}^-$ spectra at 34.8 and 42.1 GeV by the TASSO experiment at Petra. In addition to the spectra $p_l$, $p_\perp^{\text{in}}$, $p_\perp^{\text{out}}$ and the rapidity of the $\Lambda^0,\bar{\Lambda}^0$ are measured with respect to the sphericity axis. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: TASSO_1989_I266893.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/Sphericity.hh"
  5#include "Rivet/Projections/UnstableParticles.hh"
  6#include "Rivet/Projections/ChargedFinalState.hh"
  7
  8namespace Rivet {
  9
 10
 11  /// @brief baryons at 34.8 and 42.1 GeV
 12  class TASSO_1989_I266893 : public Analysis {
 13  public:
 14
 15    /// Constructor
 16    RIVET_DEFAULT_ANALYSIS_CTOR(TASSO_1989_I266893);
 17
 18    /// @name Analysis methods
 19    //@{
 20
 21    /// Book histograms and initialise projections before the run
 22    void init() {
 23
 24      // Initialise and register projections
 25      declare(Beam(), "Beams");
 26      declare(UnstableParticles(), "UFS");
 27      const ChargedFinalState cfs;
 28      declare(cfs, "CFS");
 29      declare(Sphericity(cfs), "Sphericity");
 30      // Book histograms
 31      _ih=-1;
 32      sqs = 1.0;
 33      if(isCompatibleWithSqrtS(34.8)) {
 34	_ih=0;
 35	sqs = 34.8;
 36      }
 37      else if (isCompatibleWithSqrtS(42.1)) {
 38	_ih=1;
 39	sqs = 42.1;
 40
 41      }
 42      else
 43	MSG_ERROR("Beam energy " << sqrtS() << " not supported!");
 44
 45      book(_h_lam_p    ,6*_ih+3,1,1);
 46      book(_h_lam_pL   ,6*_ih+4,1,1);
 47      book(_h_lam_pTIn ,6*_ih+5,1,1);
 48      book(_h_lam_pTOut,6*_ih+6,1,1);
 49      book(_h_lam_rap  ,6*_ih+7,1,1);
 50      book(_h_lam_x    ,6*_ih+8,1,1);
 51      book(_p_lam_S_1  ,15+_ih,1,1);
 52      book(_p_lam_S_2  ,15+_ih,1,2);
 53      if(_ih==0) {
 54      	book(_h_xi_p    ,18,1,1);
 55      	book(_h_xi_pL   ,19,1,1);
 56      	book(_h_xi_pTIn ,20,1,1);
 57      	book(_h_xi_pTOut,21,1,1);
 58      	book(_h_xi_rap  ,22,1,1);
 59      	book(_h_xi_x    ,23,1,1);
 60      }
 61    }
 62
 63
 64    /// Perform the per-event analysis
 65    void analyze(const Event& event) {
 66      const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
 67      const size_t numParticles = cfs.particles().size();
 68
 69      // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
 70      if (numParticles < 2) {
 71        MSG_DEBUG("Failed leptonic event cut");
 72        vetoEvent;
 73      }
 74      MSG_DEBUG("Passed leptonic event cut");
 75
 76      // Get beams and average beam momentum
 77      const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
 78      const double meanBeamMom = ( beams.first.p3().mod() +
 79      				   beams.second.p3().mod() ) / 2.0;
 80      const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
 81      unsigned int nLam(0);
 82      UnstableParticles ufs = apply<UnstableParticles>(event,"UFS");
 83      for(const Particle & p : ufs.particles(Cuts::abspid==3122 or Cuts::abspid==3312)) {
 84      	int id = abs(p.pid());
 85      	double xE = p.E()/meanBeamMom;
 86      	Vector3 mom3 = p.p3();
 87        const double energy = p.E();
 88      	double modp = mom3.mod();
 89      	double beta = modp/energy;
 90        const double momS = dot(sphericity.sphericityAxis(), mom3);
 91        const double pTinS = dot(mom3, sphericity.sphericityMajorAxis());
 92        const double pToutS = dot(mom3, sphericity.sphericityMinorAxis());
 93        const double rapidityS = 0.5 * std::log((energy + momS) / (energy - momS));
 94      	if(id==3122) {
 95      	  _h_lam_x->fill(xE,1./beta);
 96      	  _h_lam_p->fill(modp/GeV);
 97      	  _h_lam_pL   ->fill(abs(momS)/GeV  );
 98      	  _h_lam_pTIn ->fill(abs(pTinS)/GeV );
 99      	  _h_lam_pTOut->fill(abs(pToutS)/GeV);
100      	  _h_lam_rap  ->fill(abs(rapidityS) );
101	  ++nLam;
102      	}
103      	else if(_h_xi_x) {
104      	  _h_xi_x->fill(xE,1./beta);
105      	  _h_xi_p->fill(modp/GeV);
106      	  _h_xi_pL   ->fill(abs(momS)/GeV  );
107      	  _h_xi_pTIn ->fill(abs(pTinS)/GeV );
108      	  _h_xi_pTOut->fill(abs(pToutS)/GeV);
109      	  _h_xi_rap  ->fill(abs(rapidityS) );
110      	}
111      }
112      double sphere = sphericity.sphericity();
113      _p_lam_S_1->fill(sphere,nLam);
114      _p_lam_S_2->fill(sphere,cfs.particles().size());
115    }
116
117
118    /// Normalise histograms etc., after the run
119    void finalize() {
120      scale( _h_lam_p    , crossSection()/nanobarn/sumOfWeights());
121      scale( _h_lam_pL   , crossSection()/nanobarn/sumOfWeights());
122      scale( _h_lam_pTIn , crossSection()/nanobarn/sumOfWeights());
123      scale( _h_lam_pTOut, crossSection()/nanobarn/sumOfWeights());
124      scale( _h_lam_rap  , crossSection()/nanobarn/sumOfWeights());
125      scale( _h_lam_x    , sqr(sqs)*crossSection()/nanobarn/sumOfWeights());
126      Scatter2DPtr temp;
127      book(temp,15+_ih,1,3);
128      divide(_p_lam_S_1,_p_lam_S_2,temp);
129      if(_ih==0) {
130      	scale( _h_xi_p    , crossSection()/nanobarn/sumOfWeights());
131      	scale( _h_xi_pL   , crossSection()/nanobarn/sumOfWeights());
132      	scale( _h_xi_pTIn , crossSection()/nanobarn/sumOfWeights());
133      	scale( _h_xi_pTOut, crossSection()/nanobarn/sumOfWeights());
134      	scale( _h_xi_rap  , crossSection()/nanobarn/sumOfWeights());
135      	scale( _h_xi_x    , sqr(sqs)*crossSection()/nanobarn/sumOfWeights());
136      }
137    }
138
139    //@}
140
141
142    /// @name Histograms
143    //@{
144    Histo1DPtr _h_lam_p, _h_lam_pL, _h_lam_pTIn, _h_lam_pTOut, _h_lam_rap, _h_lam_x;
145    Profile1DPtr _p_lam_S_1, _p_lam_S_2;
146    Histo1DPtr _h_xi_p, _h_xi_pL, _h_xi_pTIn, _h_xi_pTOut, _h_xi_rap, _h_xi_x;
147    int _ih;
148    double sqs;
149    //@}
150
151
152  };
153
154
155  // The hook for the plugin system
156  RIVET_DECLARE_PLUGIN(TASSO_1989_I266893);
157
158
159}