rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

HRS_1985_I201482

Event shapes in $e^+e^-$ collisions at 29 GeV
Experiment: HRS (PEP)
Inspire ID: 201482
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D31 (1985) 1, 1985
Beams: e+ e-
Beam energies: (14.5, 14.5) GeV
Run details:
  • Hadronic e+e- events at $\sqrt{s} = 29.$ GeV

Measurement of a range of event shapes at 29 GeV by the HRS experiment. The event are seperate into two ($S\leq0.25$, $A\leq0.1$) and jet three($S>0.25$, $A\leq0.1$) jet regions. The mean values of event shapes are not implemented.

Source code: HRS_1985_I201482.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/ChargedFinalState.hh"
  5#include "Rivet/Projections/Sphericity.hh"
  6#include "Rivet/Projections/Thrust.hh"
  7
  8namespace Rivet {
  9
 10
 11  /// @brief event shapes at 29 GeV
 12  class HRS_1985_I201482 : public Analysis {
 13  public:
 14
 15    /// Constructor
 16    RIVET_DEFAULT_ANALYSIS_CTOR(HRS_1985_I201482);
 17
 18
 19    /// @name Analysis methods
 20    //@{
 21
 22    /// Book histograms and initialise projections before the run
 23    void init() {
 24
 25      // Initialise and register projections
 26      declare(Beam(), "Beams");
 27      const ChargedFinalState cfs;
 28      declare(cfs, "FS");
 29      declare(Sphericity(cfs), "Sphericity");
 30      const Thrust thrust(cfs);
 31      declare(thrust, "Thrust");
 32
 33      // Book histograms
 34      book(_histSphericity,  1, 1, 1);
 35      book(_histThrust    ,  3, 1, 1);
 36      book(_histThrust2Jet,  4, 1, 1);
 37      book(_histAplanarity,  6, 1, 1);
 38      book(_histZ         , 10, 1, 1);
 39      book(_histZ2Jet     , 11, 1, 1);
 40      book(_histZScale    , 12, 1, 1);
 41      book(_histZJet[0]   , 13, 1, 1);
 42      book(_histZJet[1]   , 14, 1, 1);
 43      book(_histZJet[2]   , 15, 1, 1);
 44      book(_histXFeyn     , 16, 1, 1);
 45      book(_histXFeyn2Jet , 17, 1, 1);
 46      book(_histRap       , 19, 1, 1);
 47      book(_histRap2Jet   , 20, 1, 1);
 48      book(_histPtT       , 22, 1, 1);
 49      book(_histPtT2Jet   , 23, 1, 1);
 50      book(_histPtTIn     , 24, 1, 1);
 51      book(_histPtTOut    , 25, 1, 1);
 52      book(_wSum ,"TMP/wSum");
 53      book(_wSum2,"TMP/wSum2");
 54    }
 55
 56
 57    /// Perform the per-event analysis
 58    void analyze(const Event& event) {
 59      // require 5 charged particles
 60      const FinalState& fs = apply<FinalState>(event, "FS");
 61      const size_t numParticles = fs.particles().size();
 62      if(numParticles<5) vetoEvent;
 63      // Get beams and average beam momentum
 64      const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
 65      const double meanBeamMom = ( beams.first.p3().mod() +
 66                                   beams.second.p3().mod() ) / 2.0;
 67      MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
 68      // calc thrust and sphericity
 69      const Thrust& thrust = apply<Thrust>(event, "Thrust");
 70      Vector3 axis = thrust.thrustAxis();
 71      const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
 72      // identify two and three jet regions
 73      bool twoJet   = sphericity.sphericity()<=0.25 && sphericity.aplanarity()<=0.1;
 74      //bool threeJet = sphericity.sphericity() >0.25 && sphericity.aplanarity()<=0.1;
 75      _wSum->fill();
 76      if(twoJet) _wSum2->fill();
 77      // basic event shapes
 78      _histSphericity->fill(sphericity.sphericity());
 79      _histThrust    ->fill(thrust.thrust());
 80      _histAplanarity->fill(sphericity.aplanarity());
 81      if(twoJet)
 82	_histThrust2Jet->fill(thrust.thrust());
 83      double pTSqIn  = 0.;
 84      double pTSqOut = 0.;
 85      unsigned int iPlus(0),iMinus(0);
 86      // single particle  dists
 87      for(const Particle & p : sortBy(fs.particles(),cmpMomByP)) {
 88	const double z  = p.p3().mod()/meanBeamMom;
 89	const double momT = axis.dot(p.p3());
 90	const double xF = fabs(momT)/meanBeamMom;
 91        const double energy = p.E();
 92        const double rap = 0.5 * std::log((energy + momT) / (energy - momT));
 93        const double pTin  = dot(p.p3(), thrust.thrustMajorAxis());
 94        const double pTout = dot(p.p3(), thrust.thrustMinorAxis());
 95	const double pT2 = sqr(pTin)+sqr(pTout);
 96	pTSqIn  += sqr(dot(p.p3(), sphericity.sphericityMajorAxis()));
 97	pTSqOut += sqr(dot(p.p3(), sphericity.sphericityMinorAxis()));
 98	_histZ     ->fill(z         );
 99	_histZScale->fill(z         );
100	_histXFeyn ->fill(xF        ,z);
101	_histRap   ->fill(rap       );
102	_histPtT   ->fill(pT2       );
103	if(twoJet) {
104	  _histZ2Jet    ->fill(z  );
105	  _histXFeyn2Jet->fill(xF ,z);
106	  _histRap2Jet  ->fill(rap);
107	  _histPtT2Jet  ->fill(pT2);
108	  if(momT>0.&&iPlus<3) {
109	    _histZJet[iPlus]->fill(z);
110	    iPlus+=1;
111	  }
112	  else if(momT<0.&&iMinus<3) {
113	    _histZJet[iMinus]->fill(z);
114	    iMinus+=1;
115	  }
116	}
117      }
118      _histPtTIn ->fill(pTSqIn /numParticles);
119      _histPtTOut->fill(pTSqOut/numParticles);
120    }
121
122
123    /// Normalise histograms etc., after the run
124    void finalize() {
125
126      normalize(_histSphericity);
127      normalize(_histThrust);
128      normalize(_histThrust2Jet);
129      normalize(_histAplanarity);
130      scale(_histZ        ,1./ *_wSum);
131      scale(_histZScale   , sqr(sqrtS())*crossSection()/microbarn/sumOfWeights());
132      scale(_histXFeyn    ,1./M_PI/ *_wSum);
133      scale(_histRap      ,1./ *_wSum);
134      scale(_histZ2Jet    ,1./ *_wSum2);
135      scale(_histXFeyn2Jet,1./M_PI/ *_wSum2);
136      scale(_histRap2Jet  ,1./ *_wSum2);
137      scale(_histPtT      ,1./ *_wSum);
138      scale(_histPtT2Jet  ,1./ *_wSum2);
139      scale(_histPtTIn    ,1./ *_wSum);
140      scale(_histPtTOut   ,1./ *_wSum);
141      for(unsigned int i=0;i<3;++i)
142	scale(_histZJet[i]   ,0.5/ *_wSum2);
143    }
144
145    //@}
146
147
148    /// @name Histograms
149    //@{      
150    Histo1DPtr _histSphericity, _histThrust, _histThrust2Jet, _histAplanarity,
151      _histZ, _histZ2Jet, _histZScale, _histXFeyn, _histXFeyn2Jet, _histRap,
152      _histRap2Jet, _histPtT, _histPtT2Jet, _histPtTIn, _histPtTOut ,_histZJet[3];
153    CounterPtr _wSum,_wSum2;
154    //@}
155
156
157  };
158
159
160  // The hook for the plugin system
161  RIVET_DECLARE_PLUGIN(HRS_1985_I201482);
162
163
164}