rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### EXAMPLE

A demo to show aspects of writing a Rivet analysis
Experiment: ()
Status: EXAMPLE
Authors:
• Andy Buckley
No references listed
Beams: * *
Beam energies: ANY
Run details:
• All event types will be accepted.

This analysis is a demonstration of the Rivet analysis structure and functionality: booking histograms; the initialisation, analysis and finalisation phases; and a simple loop over event particles. It has no physical meaning, but can be used as a simple pedagogical template for writing real analyses.

Source code: EXAMPLE.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 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Projections/FastJets.hh" #include "Rivet/Projections/Thrust.hh" #include "Rivet/Projections/Sphericity.hh" namespace Rivet { /// @brief Just measures a few observables as a demo class EXAMPLE : public Analysis { public: /// Constructor DEFAULT_RIVET_ANALYSIS_CTOR(EXAMPLE); /// @name Analysis methods //@{ /// Set up projections and book histograms void init() { // Projections const FinalState cnfs(Cuts::abseta < 2.5 && Cuts::pT > 500*MeV); const ChargedFinalState cfs(cnfs); declare(cnfs, "FS"); declare(cfs, "CFS"); declare(FastJets(cnfs, FastJets::ANTIKT, 0.4), "Jets"); declare(Thrust(cfs), "Thrust"); declare(Sphericity(cfs), "Sphericity"); // Histograms book(_histTot ,"TotalMult", 100, -0.5, 99.5); book(_histChTot ,"TotalChMult", 50, -1.0, 99.0); book(_histHadrTot ,"HadrTotalMult", 100, -0.5, 99.5); book(_histHadrChTot ,"HadrTotalChMult", 50, -1.0, 99.0); book(_histMajor ,"Major", 10, 0.0, 0.6); book(_histSphericity ,"Sphericity", 10, 0.0, 0.8); book(_histAplanarity ,"Aplanarity", 10, 0.0, 0.3); book(_histThrust ,"Thrust", { 0.5, 0.6, 0.7, 0.80, 0.85, 0.9, 0.92, 0.94, 0.96, 0.98, 1.0 }); } /// Do the analysis void analyze(const Event& event) { const Particles& cnparticles = apply(event, "FS").particles(); MSG_DEBUG("Total multiplicity = " << cnparticles.size()); _histTot->fill(cnparticles.size()); int cnhadronmult = 0; for (const Particle& p : cnparticles) if (isHadron(p)) cnhadronmult += 1; MSG_DEBUG("Hadron multiplicity = " << cnhadronmult); _histHadrTot->fill(cnhadronmult); const Particles& cparticles = apply(event, "CFS").particles(); MSG_DEBUG("Total charged multiplicity = " << cparticles.size()); _histChTot->fill(cparticles.size()); int chadronmult = 0; for (const Particle& p : cparticles) if (isHadron(p)) chadronmult += 1; MSG_DEBUG("Hadron charged multiplicity = " << chadronmult); _histHadrChTot->fill(chadronmult); const Thrust& t = apply(event, "Thrust"); MSG_DEBUG("Thrust = " << t.thrust()); _histThrust->fill(t.thrust()); _histMajor->fill(t.thrustMajor()); const Sphericity& s = apply(event, "Sphericity"); MSG_DEBUG("Sphericity = " << s.sphericity()); _histSphericity->fill(s.sphericity()); MSG_DEBUG("Aplanarity = " << s.aplanarity()); _histAplanarity->fill(s.aplanarity()); const Jets jets = apply(event, "Jets").jets(Cuts::pT > 5*GeV); const size_t num_b_jets = count_if(jets.begin(), jets.end(), hasBTag(Cuts::pT > 500*MeV)); MSG_DEBUG("Num B-jets with pT > 5 GeV = " << num_b_jets); } /// Finalize void finalize() { normalize(_histTot); normalize(_histChTot); normalize(_histHadrTot); normalize(_histHadrChTot); normalize(_histThrust); normalize(_histMajor); normalize(_histSphericity); normalize(_histAplanarity); } //@} //@{ /// Histograms Histo1DPtr _histTot, _histChTot, _histHadrTot, _histHadrChTot, _histThrust, _histMajor, _histSphericity, _histAplanarity; //@} }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(EXAMPLE); }