2
#include "Rivet/Analysis.hh"
3
#include "Rivet/RivetAIDA.hh"
4
#include "Rivet/Tools/Logging.hh"
5
#include "Rivet/Projections/ChargedFinalState.hh"
10
/// TOTEM elastic and total cross-section measurement
11
class TOTEM_2012_002 : public Analysis {
15
: Analysis("TOTEM_2012_002")
22
addProjection(ChargedFinalState(), "CFS");
23
_hist_tlow = bookHistogram1D(1, 1, 1);
24
_hist_thigh = bookHistogram1D(2, 1, 1);
25
_hist_sigma = bookHistogram1D(3, 1, 1);
29
void analyze(const Event& event) {
30
const double weight = event.weight();
32
const ChargedFinalState& cfs = applyProjection<ChargedFinalState>(event, "CFS");
33
if (cfs.size() > 2) MSG_WARNING("Final state includes more than two charged particles !");
34
_hist_sigma->fill(sqrtS()/GeV, weight);
36
foreach (const Particle& p, cfs.particles()) {
37
if (p.momentum().eta() > 0. && p.pdgId() == PROTON) {
38
double t = sqr(p.momentum().pT());
39
_hist_tlow->fill(t, weight);
40
_hist_thigh->fill(t, weight);
47
normalize(_hist_tlow, crossSection()/millibarn);
48
normalize(_hist_thigh, crossSection()/millibarn);
49
normalize(_hist_sigma, crossSection()/millibarn);
55
AIDA::IHistogram1D *_hist_tlow, *_hist_thigh, *_hist_sigma;
60
DECLARE_RIVET_PLUGIN(TOTEM_2012_002);