/usr/include/root/RooStats/HybridCalculator.h is in libroot-roofit-dev 5.34.30-0ubuntu8.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | // @(#)root/roostats:$Id$
// Author: Sven Kreiss, Kyle Cranmer Nov 2010
/*************************************************************************
* Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOSTATS_HybridCalculator
#define ROOSTATS_HybridCalculator
//_________________________________________________
/*
BEGIN_HTML
<p>
This class extends the HybridCalculator with Importance Sampling. The use
of ToyMCSampler as the TestStatSampler is assumed.
</p>
END_HTML
*/
//
#ifndef ROOSTATS_HypoTestCalculatorGeneric
#include "RooStats/HypoTestCalculatorGeneric.h"
#endif
#ifndef ROOSTATS_ToyMCSampler
#include "RooStats/ToyMCSampler.h"
#endif
namespace RooStats {
class HybridCalculator : public HypoTestCalculatorGeneric {
public:
HybridCalculator(
const RooAbsData &data,
const ModelConfig &altModel,
const ModelConfig &nullModel,
TestStatSampler* sampler=0
) :
HypoTestCalculatorGeneric(data, altModel, nullModel, sampler),
fPriorNuisanceNull(MakeNuisancePdf(nullModel, "PriorNuisanceNull")),
fPriorNuisanceAlt(MakeNuisancePdf(altModel, "PriorNuisanceAlt")),
fPriorNuisanceNullExternal(false),
fPriorNuisanceAltExternal(false),
fNToysNull(-1),
fNToysAlt(-1),
fNToysNullTail(0),
fNToysAltTail(0)
{
}
~HybridCalculator() {
if(fPriorNuisanceNullExternal == false) delete fPriorNuisanceNull;
if(fPriorNuisanceAltExternal == false) delete fPriorNuisanceAlt;
}
// Override the distribution used for marginalizing nuisance parameters that is inferred from ModelConfig
virtual void ForcePriorNuisanceNull(RooAbsPdf& priorNuisance) {
if(fPriorNuisanceNullExternal == false) delete fPriorNuisanceNull;
fPriorNuisanceNull = &priorNuisance; fPriorNuisanceNullExternal = true;
}
virtual void ForcePriorNuisanceAlt(RooAbsPdf& priorNuisance) {
if(fPriorNuisanceAltExternal == false) delete fPriorNuisanceAlt;
fPriorNuisanceAlt = &priorNuisance; fPriorNuisanceAltExternal = true;
}
virtual void SetNullModel(const ModelConfig &nullModel) {
fNullModel = &nullModel;
if(fPriorNuisanceNullExternal == false) {
delete fPriorNuisanceNull;
fPriorNuisanceNull = MakeNuisancePdf(nullModel, "PriorNuisanceNull");
}
}
virtual void SetAlternateModel(const ModelConfig &altModel) {
fAltModel = &altModel;
if(fPriorNuisanceAltExternal == false) {
delete fPriorNuisanceAlt;
fPriorNuisanceAlt = MakeNuisancePdf(altModel, "PriorNuisanceAlt");
}
}
// set number of toys
void SetToys(int toysNull, int toysAlt) { fNToysNull = toysNull; fNToysAlt = toysAlt; }
// set least number of toys in tails
void SetNToysInTails(int toysNull, int toysAlt) { fNToysNullTail = toysNull; fNToysAltTail = toysAlt; }
protected:
// check whether all input is consistent
int CheckHook(void) const;
// configure TestStatSampler for the Null run
int PreNullHook(RooArgSet* /*parameterPoint*/, double obsTestStat) const;
// configure TestStatSampler for the Alt run
int PreAltHook(RooArgSet* /*parameterPoint*/, double obsTestStat) const;
protected:
RooAbsPdf *fPriorNuisanceNull;
RooAbsPdf *fPriorNuisanceAlt;
// these flags tell us if the nuisance pdfs came from an external resource (via ForcePriorNuisance)
// or were created internally and should be deleted
Bool_t fPriorNuisanceNullExternal;
Bool_t fPriorNuisanceAltExternal;
// different number of toys for null and alt
int fNToysNull;
int fNToysAlt;
// adaptive sampling
int fNToysNullTail;
int fNToysAltTail;
protected:
ClassDef(HybridCalculator,2)
};
}
#endif
|