2 #ifndef RIVET_Analysis_HH
3 #define RIVET_Analysis_HH
5 #include "Rivet/Rivet.hh"
6 #include "Rivet/Analysis.fhh"
7 #include "Rivet/AnalysisInfo.hh"
8 #include "Rivet/Event.hh"
9 #include "Rivet/Projection.hh"
10 #include "Rivet/ProjectionApplier.hh"
11 #include "Rivet/ProjectionHandler.hh"
12 #include "Rivet/Constraints.hh"
13 #include "Rivet/AnalysisHandler.fhh"
14 #include "Rivet/AnalysisLoader.hh"
15 #include "Rivet/Tools/Logging.fhh"
16 #include "Rivet/RivetAIDA.fhh"
22 do { MSG_DEBUG("Vetoing event on line " << __LINE__ << " of " << __FILE__); return; } while(0)
26 #define DECLARE_RIVET_PLUGIN(clsname) Rivet::AnalysisBuilder<clsname> plugin_ ## clsname
109 assert(_info.get() != 0 &&
"No AnalysisInfo object :O");
118 virtual std::string
name()
const {
136 virtual std::vector<std::string>
authors()
const {
179 virtual std::string
year()
const {
204 virtual std::vector<std::string>
todos()
const {
249 assert(_info.get() != 0 &&
"No AnalysisInfo object :O");
257 return setRequiredBeams(std::vector<PdgIdPair>(1, make_pair(beam1, beam2)));
273 double sqrtS()
const;
305 void normalize(AIDA::IHistogram1D*& histo,
double norm=1.0,
bool includeoverflows=
true);
312 void scale(AIDA::IHistogram1D*& histo,
double scale);
321 void normalize(AIDA::IHistogram2D*& histo,
double norm=1.0);
328 void scale(AIDA::IHistogram2D*& histo,
double scale);
375 const std::string
histoPath(
const std::string& hname)
const;
378 const std::string
histoPath(
size_t datasetId,
size_t xAxisId,
size_t yAxisId)
const;
381 const std::string
makeAxisCode(
size_t datasetId,
size_t xAxisId,
size_t yAxisId)
const;
393 const BinEdges&
binEdges(
size_t datasetId,
size_t xAxisId,
size_t yAxisId)
const;
405 size_t nbins,
double lower,
double upper,
406 const std::string& title=
"",
407 const std::string& xtitle=
"",
const std::string& ytitle=
"");
414 const std::vector<double>& binedges,
const std::string& title=
"",
415 const std::string& xtitle=
"",
const std::string& ytitle=
"");
426 size_t nxbins,
double xlower,
double xupper,
427 size_t nybins,
double ylower,
double yupper,
428 const std::string& title=
"",
const std::string& xtitle=
"",
429 const std::string& ytitle=
"",
const std::string& ztitle=
"");
439 const std::vector<double>& xbinedges,
440 const std::vector<double>& ybinedges,
441 const std::string& title=
"",
const std::string& xtitle=
"",
442 const std::string& ytitle=
"",
const std::string& ztitle=
"");
448 const std::string& xtitle=
"",
const std::string& ytitle=
"");
453 AIDA::IHistogram1D*
bookHistogram1D(
size_t datasetId,
size_t xAxisId,
size_t yAxisId,
454 const std::string& title=
"",
455 const std::string& xtitle=
"",
const std::string& ytitle=
"");
468 size_t nbins,
double lower,
double upper,
469 const std::string& title=
"",
470 const std::string& xtitle=
"",
const std::string& ytitle=
"");
477 const std::vector<double>& binedges,
478 const std::string& title=
"",
479 const std::string& xtitle=
"",
const std::string& ytitle=
"");
484 AIDA::IProfile1D*
bookProfile1D(
const std::string&
name,
const std::string& title=
"",
485 const std::string& xtitle=
"",
const std::string& ytitle=
"");
490 AIDA::IProfile1D*
bookProfile1D(
size_t datasetId,
size_t xAxisId,
size_t yAxisId,
491 const std::string& title=
"",
492 const std::string& xtitle=
"",
const std::string& ytitle=
"");
504 const std::string& xtitle=
"",
const std::string& ytitle=
"");
512 size_t npts,
double lower,
double upper,
513 const std::string& title=
"",
514 const std::string& xtitle=
"",
const std::string& ytitle=
"");
525 AIDA::IDataPointSet*
bookDataPointSet(
size_t datasetId,
size_t xAxisId,
size_t yAxisId,
526 const std::string& title=
"",
527 const std::string& xtitle=
"",
const std::string& ytitle=
"");
538 void _makeHistoDir();
541 void _cacheBinEdges()
const;
544 void _cacheXAxisData()
const;
555 shared_ptr<AnalysisInfo> _info;
562 double _crossSection;
563 bool _gotCrossSection;
570 mutable bool _madeHistoDir;
575 mutable map<string, vector<DPSXPoint> > _dpsData;
580 mutable map<string, BinEdges> _histBinEdges;
596 #include "Rivet/AnalysisBuilder.hh"