rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

DELPHI_1996_S3430090

Delphi MC tuning on event shapes and identified particles.
Experiment: DELPHI (LEP 1)
Inspire ID: 424112
Status: VALIDATED
Authors:
  • Andy Buckley
  • Hendrik Hoeth
References: Beams: e+ e-
Beam energies: (45.6, 45.6) GeV
Run details:
  • $\sqrt{s} = 91.2$ GeV, $e^+ e^- -> Z^0$ production with hadronic decays only

Event shape and charged particle inclusive distributions measured using 750000 decays of Z bosons to hadrons from the DELPHI detector at LEP. This data, combined with identified particle distributions from all LEP experiments, was used for tuning of shower-hadronisation event generators by the original PROFESSOR method. This is a critical analysis for MC event generator tuning of final state radiation and both flavour and kinematic aspects of hadronisation models.

Source code: DELPHI_1996_S3430090.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/Sphericity.hh"
  5#include "Rivet/Projections/Thrust.hh"
  6#include "Rivet/Projections/FastJets.hh"
  7#include "Rivet/Projections/ParisiTensor.hh"
  8#include "Rivet/Projections/Hemispheres.hh"
  9#include "Rivet/Projections/FinalState.hh"
 10#include "Rivet/Projections/ChargedFinalState.hh"
 11#include "Rivet/Projections/UnstableParticles.hh"
 12
 13namespace Rivet {
 14
 15
 16  /// @brief DELPHI event shapes and identified particle spectra
 17  /// @author Andy Buckley
 18  /// @author Hendrik Hoeth
 19  ///
 20  /// This is the paper which was used for the original PROFESSOR MC tuning
 21  /// study. It studies a wide range of e+ e- event shape variables, differential
 22  /// jet rates in the Durham and JADE schemes, and incorporates identified
 23  /// particle spectra, from other LEP analyses.
 24  ///
 25  /// @par Run conditions
 26  ///
 27  /// @arg LEP1 beam energy: \f$ \sqrt{s} = \f$ 91.2 GeV
 28  /// @arg Run with generic QCD events.
 29  /// @arg No \f$ p_\perp^\text{min} \f$ cutoff is required
 30  class DELPHI_1996_S3430090 : public Analysis {
 31  public:
 32
 33    RIVET_DEFAULT_ANALYSIS_CTOR(DELPHI_1996_S3430090);
 34
 35
 36    /// @name Analysis methods
 37    /// @{
 38
 39    void init() {
 40      declare(Beam(), "Beams");
 41      // Don't try to introduce a pT or eta cut here. It's all corrected
 42      // back. (See Section 2 of the paper.)
 43      const ChargedFinalState cfs;
 44      declare(cfs, "FS");
 45      declare(UnstableParticles(), "UFS");
 46      declare(FastJets(cfs, FastJets::JADE, 0.7), "JadeJets");
 47      declare(FastJets(cfs, FastJets::DURHAM, 0.7), "DurhamJets");
 48      declare(Sphericity(cfs), "Sphericity");
 49      declare(ParisiTensor(cfs), "Parisi");
 50      const Thrust thrust(cfs);
 51      declare(thrust, "Thrust");
 52      declare(Hemispheres(thrust), "Hemispheres");
 53
 54      book(_histPtTIn, 1, 1, 1);
 55      book(_histPtTOut,2, 1, 1);
 56      book(_histPtSIn, 3, 1, 1);
 57      book(_histPtSOut,4, 1, 1);
 58
 59      book(_histRapidityT, 5, 1, 1);
 60      book(_histRapidityS, 6, 1, 1);
 61      book(_histScaledMom, 7, 1, 1);
 62      book(_histLogScaledMom, 8, 1, 1);
 63
 64      book(_histPtTOutVsXp ,9,  1, 1);
 65      book(_histPtVsXp ,10, 1, 1);
 66
 67      book(_hist1MinusT, 11, 1, 1);
 68      book(_histTMajor, 12, 1, 1);
 69      book(_histTMinor, 13, 1, 1);
 70      book(_histOblateness, 14, 1, 1);
 71
 72      book(_histSphericity, 15, 1, 1);
 73      book(_histAplanarity, 16, 1, 1);
 74      book(_histPlanarity, 17, 1, 1);
 75
 76      book(_histCParam, 18, 1, 1);
 77      book(_histDParam, 19, 1, 1);
 78
 79      book(_histHemiMassH, 20, 1, 1);
 80      book(_histHemiMassL, 21, 1, 1);
 81      book(_histHemiMassD, 22, 1, 1);
 82
 83      book(_histHemiBroadW, 23, 1, 1);
 84      book(_histHemiBroadN, 24, 1, 1);
 85      book(_histHemiBroadT, 25, 1, 1);
 86      book(_histHemiBroadD, 26, 1, 1);
 87
 88      // Binned in y_cut
 89      book(_histDiffRate2Durham, 27, 1, 1);
 90      book(_histDiffRate2Jade, 28, 1, 1);
 91      book(_histDiffRate3Durham, 29, 1, 1);
 92      book(_histDiffRate3Jade, 30, 1, 1);
 93      book(_histDiffRate4Durham, 31, 1, 1);
 94      book(_histDiffRate4Jade, 32, 1, 1);
 95
 96      // Binned in cos(chi)
 97      book(_histEEC, 33, 1, 1);
 98      book(_histAEEC, 34, 1, 1);
 99
100      book(_histMultiCharged, 35, 1, 1);
101
102      book(_histMultiPiPlus, 36, 1, 1);
103      book(_histMultiPi0, 36, 1, 2);
104      book(_histMultiKPlus, 36, 1, 3);
105      book(_histMultiK0, 36, 1, 4);
106      book(_histMultiEta, 36, 1, 5);
107      book(_histMultiEtaPrime, 36, 1, 6);
108      book(_histMultiDPlus, 36, 1, 7);
109      book(_histMultiD0, 36, 1, 8);
110      book(_histMultiBPlus0, 36, 1, 9);
111
112      book(_histMultiF0, 37, 1, 1);
113
114      book(_histMultiRho, 38, 1, 1);
115      book(_histMultiKStar892Plus, 38, 1, 2);
116      book(_histMultiKStar892_0, 38, 1, 3);
117      book(_histMultiPhi, 38, 1, 4);
118      book(_histMultiDStar2010Plus, 38, 1, 5);
119
120      book(_histMultiF2, 39, 1, 1);
121      book(_histMultiK2Star1430_0, 39, 1, 2);
122
123      book(_histMultiP, 40, 1, 1);
124      book(_histMultiLambda0, 40, 1, 2);
125      book(_histMultiXiMinus, 40, 1, 3);
126      book(_histMultiOmegaMinus, 40, 1, 4);
127      book(_histMultiDeltaPlusPlus, 40, 1, 5);
128      book(_histMultiSigma1385Plus, 40, 1, 6);
129      book(_histMultiXi1530_0, 40, 1, 7);
130      book(_histMultiLambdaB0, 40, 1, 8);
131
132      book(_weightedTotalPartNum,"_TotalPartNum");
133      book(_passedCutWeightSum, "_passedCutWeightSum");
134      book(_passedCut3WeightSum, "_passedCut3WeightSum");
135      book(_passedCut4WeightSum, "_passedCut4WeightSum");
136      book(_passedCut5WeightSum, "_passedCut5WeightSum");
137
138    }
139
140
141    void analyze(const Event& e) {
142      // First, veto on leptonic events by requiring at least 4 charged FS particles
143      const FinalState& fs = apply<FinalState>(e, "FS");
144      const size_t numParticles = fs.particles().size();
145      // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
146      if (numParticles < 2) {
147        MSG_DEBUG("Failed leptonic event cut");
148        vetoEvent;
149      }
150      MSG_DEBUG("Passed leptonic event cut");
151
152      _passedCutWeightSum->fill();
153      _weightedTotalPartNum->fill(numParticles);
154
155      // Get beams and average beam momentum
156      const ParticlePair& beams = apply<Beam>(e, "Beams").beams();
157      const double meanBeamMom = ( beams.first.p3().mod() +
158                                   beams.second.p3().mod() ) / 2.0;
159      MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
160
161      // Thrusts
162      MSG_DEBUG("Calculating thrust");
163      const Thrust& thrust = apply<Thrust>(e, "Thrust");
164      _hist1MinusT->fill(1 - thrust.thrust());
165      _histTMajor->fill(thrust.thrustMajor());
166      _histTMinor->fill(thrust.thrustMinor());
167      _histOblateness->fill(thrust.oblateness());
168
169      // Jets
170      const FastJets& durjet = apply<FastJets>(e, "DurhamJets");
171      const FastJets& jadejet = apply<FastJets>(e, "JadeJets");
172      if (numParticles >= 3) {
173        _passedCut3WeightSum->fill();
174        if (durjet.clusterSeq()) _histDiffRate2Durham->fill(durjet.clusterSeq()->exclusive_ymerge_max(2));
175        if (jadejet.clusterSeq()) _histDiffRate2Jade->fill(jadejet.clusterSeq()->exclusive_ymerge_max(2));
176      }
177      if (numParticles >= 4) {
178        _passedCut4WeightSum->fill();
179        if (durjet.clusterSeq()) _histDiffRate3Durham->fill(durjet.clusterSeq()->exclusive_ymerge_max(3));
180        if (jadejet.clusterSeq()) _histDiffRate3Jade->fill(jadejet.clusterSeq()->exclusive_ymerge_max(3));
181      }
182      if (numParticles >= 5) {
183        _passedCut5WeightSum->fill();
184        if (durjet.clusterSeq()) _histDiffRate4Durham->fill(durjet.clusterSeq()->exclusive_ymerge_max(4));
185        if (jadejet.clusterSeq()) _histDiffRate4Jade->fill(jadejet.clusterSeq()->exclusive_ymerge_max(4));
186      }
187
188      // Sphericities
189      MSG_DEBUG("Calculating sphericity");
190      const Sphericity& sphericity = apply<Sphericity>(e, "Sphericity");
191      _histSphericity->fill(sphericity.sphericity());
192      _histAplanarity->fill(sphericity.aplanarity());
193      _histPlanarity->fill(sphericity.planarity());
194
195      // C & D params
196      MSG_DEBUG("Calculating Parisi params");
197      const ParisiTensor& parisi = apply<ParisiTensor>(e, "Parisi");
198      _histCParam->fill(parisi.C());
199      _histDParam->fill(parisi.D());
200
201      // Hemispheres
202      MSG_DEBUG("Calculating hemisphere variables");
203      const Hemispheres& hemi = apply<Hemispheres>(e, "Hemispheres");
204      _histHemiMassH->fill(hemi.scaledM2high());
205      _histHemiMassL->fill(hemi.scaledM2low());
206      _histHemiMassD->fill(hemi.scaledM2diff());
207      _histHemiBroadW->fill(hemi.Bmax());
208      _histHemiBroadN->fill(hemi.Bmin());
209      _histHemiBroadT->fill(hemi.Bsum());
210      _histHemiBroadD->fill(hemi.Bdiff());
211
212      // Iterate over all the charged final state particles.
213      double Evis = 0.0;
214      double Evis2 = 0.0;
215      MSG_DEBUG("About to iterate over charged FS particles");
216      for (const Particle& p : fs.particles()) {
217        // Get momentum and energy of each particle.
218        const Vector3 mom3 = p.p3();
219        const double energy = p.E();
220        Evis += energy;
221
222        // Scaled momenta.
223        const double mom = mom3.mod();
224        const double scaledMom = mom/meanBeamMom;
225        const double logInvScaledMom = -std::log(scaledMom);
226        _histLogScaledMom->fill(logInvScaledMom);
227        _histScaledMom->fill(scaledMom);
228
229        // Get momenta components w.r.t. thrust and sphericity.
230        const double momT = dot(thrust.thrustAxis(), mom3);
231        const double momS = dot(sphericity.sphericityAxis(), mom3);
232        const double pTinT = dot(mom3, thrust.thrustMajorAxis());
233        const double pToutT = dot(mom3, thrust.thrustMinorAxis());
234        const double pTinS = dot(mom3, sphericity.sphericityMajorAxis());
235        const double pToutS = dot(mom3, sphericity.sphericityMinorAxis());
236        const double pT = sqrt(pow(pTinT, 2) + pow(pToutT, 2));
237        _histPtTIn->fill(fabs(pTinT/GeV));
238        _histPtTOut->fill(fabs(pToutT/GeV));
239        _histPtSIn->fill(fabs(pTinS/GeV));
240        _histPtSOut->fill(fabs(pToutS/GeV));
241        _histPtVsXp->fill(scaledMom, fabs(pT/GeV));
242        _histPtTOutVsXp->fill(scaledMom, fabs(pToutT/GeV));
243
244        // Calculate rapidities w.r.t. thrust and sphericity.
245        const double rapidityT = 0.5 * std::log((energy + momT) / (energy - momT));
246        const double rapidityS = 0.5 * std::log((energy + momS) / (energy - momS));
247        _histRapidityT->fill(fabs(rapidityT));
248        _histRapidityS->fill(fabs(rapidityS));
249        MSG_TRACE(fabs(rapidityT) << " " << scaledMom/GeV);
250      }
251      Evis2 = Evis*Evis;
252
253      // (A)EEC
254      // Need iterators since second loop starts at current outer loop iterator, i.e. no "for" here!
255      for (Particles::const_iterator p_i = fs.particles().begin(); p_i != fs.particles().end(); ++p_i) {
256        for (Particles::const_iterator p_j = p_i; p_j != fs.particles().end(); ++p_j) {
257          if (p_i == p_j) continue;
258          const Vector3 mom3_i = p_i->momentum().p3();
259          const Vector3 mom3_j = p_j->momentum().p3();
260          const double energy_i = p_i->momentum().E();
261          const double energy_j = p_j->momentum().E();
262          const double cosij = dot(mom3_i.unit(), mom3_j.unit());
263          const double eec = (energy_i*energy_j) / Evis2;
264          _histEEC->fill(cosij, eec);
265          if (cosij < 0)
266            _histAEEC->fill( cosij,  eec);
267          else
268            _histAEEC->fill(-cosij, -eec);
269        }
270      }
271
272      _histMultiCharged->fill(_histMultiCharged->bin(0).xMid(), numParticles);
273
274
275      // Final state of unstable particles to get particle spectra
276      const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");
277      for (const Particle& p : ufs.particles()) {
278        int id = p.abspid();
279        switch (id) {
280        case 211:
281          _histMultiPiPlus->fill(_histMultiPiPlus->bin(0).xMid());
282          break;
283        case 111:
284          _histMultiPi0->fill(_histMultiPi0->bin(0).xMid());
285          break;
286        case 321:
287          _histMultiKPlus->fill(_histMultiKPlus->bin(0).xMid());
288          break;
289        case 130:
290        case 310:
291          _histMultiK0->fill(_histMultiK0->bin(0).xMid());
292          break;
293        case 221:
294          _histMultiEta->fill(_histMultiEta->bin(0).xMid());
295          break;
296        case 331:
297          _histMultiEtaPrime->fill(_histMultiEtaPrime->bin(0).xMid());
298          break;
299        case 411:
300          _histMultiDPlus->fill(_histMultiDPlus->bin(0).xMid());
301          break;
302        case 421:
303          _histMultiD0->fill(_histMultiD0->bin(0).xMid());
304          break;
305        case 511:
306        case 521:
307        case 531:
308          _histMultiBPlus0->fill(_histMultiBPlus0->bin(0).xMid());
309          break;
310        case 9010221:
311          _histMultiF0->fill(_histMultiF0->bin(0).xMid());
312          break;
313        case 113:
314          _histMultiRho->fill(_histMultiRho->bin(0).xMid());
315          break;
316        case 323:
317          _histMultiKStar892Plus->fill(_histMultiKStar892Plus->bin(0).xMid());
318          break;
319        case 313:
320          _histMultiKStar892_0->fill(_histMultiKStar892_0->bin(0).xMid());
321          break;
322        case 333:
323          _histMultiPhi->fill(_histMultiPhi->bin(0).xMid());
324          break;
325        case 413:
326          _histMultiDStar2010Plus->fill(_histMultiDStar2010Plus->bin(0).xMid());
327          break;
328        case 225:
329          _histMultiF2->fill(_histMultiF2->bin(0).xMid());
330          break;
331        case 315:
332          _histMultiK2Star1430_0->fill(_histMultiK2Star1430_0->bin(0).xMid());
333          break;
334        case 2212:
335          _histMultiP->fill(_histMultiP->bin(0).xMid());
336          break;
337        case 3122:
338          _histMultiLambda0->fill(_histMultiLambda0->bin(0).xMid());
339          break;
340        case 3312:
341          _histMultiXiMinus->fill(_histMultiXiMinus->bin(0).xMid());
342          break;
343        case 3334:
344          _histMultiOmegaMinus->fill(_histMultiOmegaMinus->bin(0).xMid());
345          break;
346        case 2224:
347          _histMultiDeltaPlusPlus->fill(_histMultiDeltaPlusPlus->bin(0).xMid());
348          break;
349        case 3114:
350          _histMultiSigma1385Plus->fill(_histMultiSigma1385Plus->bin(0).xMid());
351          break;
352        case 3324:
353          _histMultiXi1530_0->fill(_histMultiXi1530_0->bin(0).xMid());
354          break;
355        case 5122:
356          _histMultiLambdaB0->fill(_histMultiLambdaB0->bin(0).xMid());
357          break;
358        }
359      }
360    }
361
362
363    // Finalize
364    void finalize() {
365      // Normalize inclusive single particle distributions to the average number
366      // of charged particles per event.
367      const double avgNumParts = dbl(*_weightedTotalPartNum / *_passedCutWeightSum);
368
369      normalize(_histPtTIn, avgNumParts);
370      normalize(_histPtTOut, avgNumParts);
371      normalize(_histPtSIn, avgNumParts);
372      normalize(_histPtSOut, avgNumParts);
373
374      normalize(_histRapidityT, avgNumParts);
375      normalize(_histRapidityS, avgNumParts);
376
377      normalize(_histLogScaledMom, avgNumParts);
378      normalize(_histScaledMom, avgNumParts);
379
380      scale(_histEEC, 1.0 / *_passedCutWeightSum);
381      scale(_histAEEC, 1.0 / *_passedCutWeightSum);
382      scale(_histMultiCharged, 1.0 / *_passedCutWeightSum);
383
384      scale(_histMultiPiPlus, 1.0 / *_passedCutWeightSum);
385      scale(_histMultiPi0, 1.0 / *_passedCutWeightSum);
386      scale(_histMultiKPlus, 1.0 / *_passedCutWeightSum);
387      scale(_histMultiK0, 1.0 / *_passedCutWeightSum);
388      scale(_histMultiEta, 1.0 / *_passedCutWeightSum);
389      scale(_histMultiEtaPrime, 1.0 / *_passedCutWeightSum);
390      scale(_histMultiDPlus, 1.0 / *_passedCutWeightSum);
391      scale(_histMultiD0, 1.0 / *_passedCutWeightSum);
392      scale(_histMultiBPlus0, 1.0 / *_passedCutWeightSum);
393
394      scale(_histMultiF0, 1.0 / *_passedCutWeightSum);
395
396      scale(_histMultiRho, 1.0 / *_passedCutWeightSum);
397      scale(_histMultiKStar892Plus, 1.0 / *_passedCutWeightSum);
398      scale(_histMultiKStar892_0, 1.0 / *_passedCutWeightSum);
399      scale(_histMultiPhi, 1.0 / *_passedCutWeightSum);
400      scale(_histMultiDStar2010Plus, 1.0 / *_passedCutWeightSum);
401
402      scale(_histMultiF2, 1.0 / *_passedCutWeightSum);
403      scale(_histMultiK2Star1430_0, 1.0 / *_passedCutWeightSum);
404
405      scale(_histMultiP, 1.0 / *_passedCutWeightSum);
406      scale(_histMultiLambda0, 1.0 / *_passedCutWeightSum);
407      scale(_histMultiXiMinus, 1.0 / *_passedCutWeightSum);
408      scale(_histMultiOmegaMinus, 1.0 / *_passedCutWeightSum);
409      scale(_histMultiDeltaPlusPlus, 1.0 / *_passedCutWeightSum);
410      scale(_histMultiSigma1385Plus, 1.0 / *_passedCutWeightSum);
411      scale(_histMultiXi1530_0, 1.0 / *_passedCutWeightSum);
412      scale(_histMultiLambdaB0, 1.0 / *_passedCutWeightSum);
413
414      scale(_hist1MinusT, 1.0 / *_passedCutWeightSum);
415      scale(_histTMajor, 1.0 / *_passedCutWeightSum);
416      scale(_histTMinor, 1.0 / *_passedCutWeightSum);
417      scale(_histOblateness, 1.0 / *_passedCutWeightSum);
418
419      scale(_histSphericity, 1.0 / *_passedCutWeightSum);
420      scale(_histAplanarity, 1.0 / *_passedCutWeightSum);
421      scale(_histPlanarity, 1.0 / *_passedCutWeightSum);
422
423      scale(_histHemiMassD, 1.0 / *_passedCutWeightSum);
424      scale(_histHemiMassH, 1.0 / *_passedCutWeightSum);
425      scale(_histHemiMassL, 1.0 / *_passedCutWeightSum);
426
427      scale(_histHemiBroadW, 1.0 / *_passedCutWeightSum);
428      scale(_histHemiBroadN, 1.0 / *_passedCutWeightSum);
429      scale(_histHemiBroadT, 1.0 / *_passedCutWeightSum);
430      scale(_histHemiBroadD, 1.0 / *_passedCutWeightSum);
431
432      scale(_histCParam, 1.0 / *_passedCutWeightSum);
433      scale(_histDParam, 1.0 / *_passedCutWeightSum);
434
435      scale(_histDiffRate2Durham, 1.0 / *_passedCut3WeightSum);
436      scale(_histDiffRate2Jade, 1.0 / *_passedCut3WeightSum);
437      scale(_histDiffRate3Durham, 1.0 / *_passedCut4WeightSum);
438      scale(_histDiffRate3Jade, 1.0 / *_passedCut4WeightSum);
439      scale(_histDiffRate4Durham, 1.0 / *_passedCut5WeightSum);
440      scale(_histDiffRate4Jade, 1.0 / *_passedCut5WeightSum);
441    }
442
443    /// @}
444
445
446  private:
447
448    /// Store the weighted sums of numbers of charged / charged+neutral
449    /// particles - used to calculate average number of particles for the
450    /// inclusive single particle distributions' normalisations.
451    CounterPtr _weightedTotalPartNum;
452
453    /// @name Sums of weights past various cuts
454    /// @{
455    CounterPtr _passedCutWeightSum;
456    CounterPtr _passedCut3WeightSum;
457    CounterPtr _passedCut4WeightSum;
458    CounterPtr _passedCut5WeightSum;
459    /// @}
460
461    /// @name Histograms
462    /// @{
463    Histo1DPtr _histPtTIn;
464    Histo1DPtr _histPtTOut;
465    Histo1DPtr _histPtSIn;
466    Histo1DPtr _histPtSOut;
467
468    Histo1DPtr _histRapidityT;
469    Histo1DPtr _histRapidityS;
470
471    Histo1DPtr _histScaledMom, _histLogScaledMom;
472
473    Profile1DPtr   _histPtTOutVsXp, _histPtVsXp;
474
475    Histo1DPtr _hist1MinusT;
476    Histo1DPtr _histTMajor;
477    Histo1DPtr _histTMinor;
478    Histo1DPtr _histOblateness;
479
480    Histo1DPtr _histSphericity;
481    Histo1DPtr _histAplanarity;
482    Histo1DPtr _histPlanarity;
483
484    Histo1DPtr _histCParam;
485    Histo1DPtr _histDParam;
486
487    Histo1DPtr _histHemiMassD;
488    Histo1DPtr _histHemiMassH;
489    Histo1DPtr _histHemiMassL;
490
491    Histo1DPtr _histHemiBroadW;
492    Histo1DPtr _histHemiBroadN;
493    Histo1DPtr _histHemiBroadT;
494    Histo1DPtr _histHemiBroadD;
495
496    Histo1DPtr _histDiffRate2Durham;
497    Histo1DPtr _histDiffRate2Jade;
498    Histo1DPtr _histDiffRate3Durham;
499    Histo1DPtr _histDiffRate3Jade;
500    Histo1DPtr _histDiffRate4Durham;
501    Histo1DPtr _histDiffRate4Jade;
502
503    Histo1DPtr _histEEC, _histAEEC;
504
505    Histo1DPtr _histMultiCharged;
506
507    Histo1DPtr _histMultiPiPlus;
508    Histo1DPtr _histMultiPi0;
509    Histo1DPtr _histMultiKPlus;
510    Histo1DPtr _histMultiK0;
511    Histo1DPtr _histMultiEta;
512    Histo1DPtr _histMultiEtaPrime;
513    Histo1DPtr _histMultiDPlus;
514    Histo1DPtr _histMultiD0;
515    Histo1DPtr _histMultiBPlus0;
516
517    Histo1DPtr _histMultiF0;
518
519    Histo1DPtr _histMultiRho;
520    Histo1DPtr _histMultiKStar892Plus;
521    Histo1DPtr _histMultiKStar892_0;
522    Histo1DPtr _histMultiPhi;
523    Histo1DPtr _histMultiDStar2010Plus;
524
525    Histo1DPtr _histMultiF2;
526    Histo1DPtr _histMultiK2Star1430_0;
527
528    Histo1DPtr _histMultiP;
529    Histo1DPtr _histMultiLambda0;
530    Histo1DPtr _histMultiXiMinus;
531    Histo1DPtr _histMultiOmegaMinus;
532    Histo1DPtr _histMultiDeltaPlusPlus;
533    Histo1DPtr _histMultiSigma1385Plus;
534    Histo1DPtr _histMultiXi1530_0;
535    Histo1DPtr _histMultiLambdaB0;
536    /// @}
537
538  };
539
540
541
542  RIVET_DECLARE_ALIASED_PLUGIN(DELPHI_1996_S3430090, DELPHI_1996_I424112);
543
544}