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
| // -*- C++ -*-
#include <iostream>
#include <string>
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ImpactParameterProjection.hh"
#include "Rivet/Projections/SingleValueProjection.hh"
#include "Rivet/Tools/Percentile.hh"
#include "Rivet/Tools/RHICCommon.hh"
namespace Rivet {
class STAR_BES_CALIB : public Analysis {
public:
STAR_BES_CALIB() : Analysis("STAR_BES_CALIB") {}
void init() {
declare(STAR_BES_Centrality(), "Centrality");
declare(ImpactParameterProjection(), "IMP");
// The calibrationhistogram:
book(_calib, "CMULT", 100, 0.0, 200.0);
// The alternative histogram based on impact parameter. Note
// that it MUST be named the same as the histogram for the
// experimental observable with an added _IMP suffix for the
// Pecentile<> binning to work properly.
book(_impcalib, "CMULT_IMP", 400, 0.0, 20.0);
}
void analyze(const Event& event) {
_impcalib->fill(apply<SingleValueProjection>(event, "IMP")());
_calib->fill(apply<STAR_BES_Centrality>(event, "Centrality")());
}
void finalize() {
_calib->normalize();
_impcalib->normalize();
}
private:
/// The calibration histograms.
Histo1DPtr _calib;
Histo1DPtr _impcalib;
};
RIVET_DECLARE_PLUGIN(STAR_BES_CALIB);
}
|