rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

OPAL_2004_I631361

Gluon jet charged multiplicities and fragmentation functions
Experiment: OPAL (LEP)
Inspire ID: 631361
Status: VALIDATED
Authors:
  • Daniel Reichelt [d.reichelt@cern.ch]
References:
  • Phys. Rev. D69, 032002,2004
  • hep-ex/0310048
Beams: e+ e-
Beam energies: (5.2, 5.2); (6.0, 6.0); (7.0, 7.0); (8.4, 8.4); (10.9, 10.9); (14.2, 14.2); (17.7, 17.7) GeV
Run details:
  • The fictonal $e^+e^-\to gg$ process is required.

Measurement of gluon jet properties using the jet boost algorithm, a technique to select unbiased samples of gluon jets in $e^+e^-$ annihilation, i.e. gluon jets free of biases introduced by event selection or jet finding criteria. This analysis requires the fictional $e^+e^-\to g g $ process to be used due to the corrections applied to the data. It allows the study of gluon jet properties. This analysis can be used for tuning etc..

Source code: OPAL_2004_I631361.cc
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ChargedFinalState.hh"

namespace Rivet {


  class OPAL_2004_I631361 : public Analysis {
  public:

    /// Constructor
    OPAL_2004_I631361()
      : Analysis("OPAL_2004_I631361"), _sumW(0.0)
    {    }


    /// @name Analysis methods
    //@{
    void init() {
      declare(FinalState(), "FS");
      declare(ChargedFinalState(), "CFS");
      int ih(0), iy(0);
      if (inRange(0.5*sqrtS()/GeV, 5.0, 5.5)) {
        ih = 1;
	iy = 1;
      } else if (inRange(0.5*sqrtS()/GeV, 5.5, 6.5)) {
        ih = 1;
	iy = 2;
      } else if (inRange(0.5*sqrtS()/GeV, 6.5, 7.5)) {
        ih = 1;
	iy = 3;
      } else if (inRange(0.5*sqrtS()/GeV, 7.5, 9.5)) {
        ih = 2;
	iy = 1;
      } else if (inRange(0.5*sqrtS()/GeV, 9.5, 13.0)) {
        ih = 2;
	iy = 2;
      } else if (inRange(0.5*sqrtS()/GeV, 13.0, 16.0)) {
        ih = 3;
	iy = 1;
      } else if (inRange(0.5*sqrtS()/GeV, 16.0, 20.0)) {
        ih = 3;
	iy = 2;
      }
      assert(ih>0);
      _h_chMult     = bookHisto1D(ih,1,iy);
      if(ih==3)
	_h_chFragFunc = bookHisto1D(5,1,iy);
      else
	_h_chFragFunc = NULL;
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      const double weight = event.weight();
      // find the initial gluons
      ParticleVector initial;
      for (const GenParticle* p : Rivet::particles(event.genEvent())) {
	const GenVertex* pv = p->production_vertex();
	const PdgId pid = p->pdg_id();
	if(pid!=21) continue;
	bool passed = false;
	for (const GenParticle* pp : particles_in(pv)) {
	  const PdgId ppid = abs(pp->pdg_id());
	  passed = (ppid == PID::ELECTRON || ppid == PID::HIGGS || 
		    ppid == PID::ZBOSON   || ppid == PID::GAMMA);
	  if(passed) break;
	}
	if(passed) initial.push_back(Particle(*p));
      }
      if(initial.size()!=2) vetoEvent;
      // use the direction for the event axis
      Vector3 axis = initial[0].momentum().p3().unit();
      // fill histograms
      const Particles& chps = applyProjection<FinalState>(event, "CFS").particles();
      unsigned int nMult[2] = {0,0};
      _sumW += 2.*weight;
      // distribution
      foreach(const Particle& p, chps) {
        double xE = 2.*p.E()/sqrtS();
	if(_h_chFragFunc) _h_chFragFunc->fill(xE, weight);
	if(p.momentum().p3().dot(axis)>0.)
	  ++nMult[0];
	else
	  ++nMult[1];
      }
      // multiplcities in jet
      _h_chMult->fill(nMult[0],weight);
      _h_chMult->fill(nMult[1],weight);
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      normalize(_h_chMult);
      if(_h_chFragFunc) scale(_h_chFragFunc, 1./_sumW);
    }

    //@}


  private:

    double _sumW;

    /// @name Histograms
    //@{
    Histo1DPtr _h_chMult;
    Histo1DPtr _h_chFragFunc;
    //@}
  };

  // The hook for the plugin system
  DECLARE_RIVET_PLUGIN(OPAL_2004_I631361);


}