File indexing completed on 2025-12-16 10:29:45
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ROOSTATS_NumEventsTestStat
0012 #define ROOSTATS_NumEventsTestStat
0013
0014
0015
0016 #include "Rtypes.h"
0017
0018
0019 #include "RooRealVar.h"
0020
0021 #include "RooAbsData.h"
0022
0023 #include "RooAbsPdf.h"
0024
0025 #include "RooStats/TestStatistic.h"
0026
0027
0028
0029
0030
0031 namespace RooStats {
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 class NumEventsTestStat : public TestStatistic{
0042
0043 public:
0044 NumEventsTestStat() : fPdf(nullptr) { }
0045 NumEventsTestStat(RooAbsPdf &pdf) : fPdf(&pdf) {}
0046
0047
0048 double Evaluate(RooAbsData& data, RooArgSet& ) override {
0049
0050 if(data.isWeighted()) {
0051 return data.sumEntries();
0052 }
0053
0054
0055 if (!fPdf || fPdf->canBeExtended()) {
0056 return data.numEntries();
0057 }
0058
0059
0060 if(data.numEntries() == 1) {
0061 double numEvents = 0.0;
0062 for (auto const *obs : static_range_cast<RooRealVar *>(*data.get(0))) {
0063 numEvents += obs->getValV();
0064 }
0065 return numEvents;
0066 }
0067
0068 std::cout << "Data set is invalid" << std::endl;
0069 return 0;
0070 }
0071
0072
0073 virtual const RooAbsArg* GetTestStatistic() const {return fPdf;}
0074
0075 const TString GetVarName() const override {return "Number of events";}
0076
0077
0078 private:
0079 RooAbsPdf* fPdf;
0080
0081 protected:
0082 ClassDefOverride(NumEventsTestStat,1)
0083 };
0084
0085 }
0086
0087
0088 #endif