// PiecewiseInterpolation
// END_HTML
#include "RooFit.h"
#include "Riostream.h"
#include "Riostream.h"
#include <math.h>
#include "RooStats/HistFactory/PiecewiseInterpolation.h"
#include "RooAbsReal.h"
#include "RooAbsPdf.h"
#include "RooErrorHandler.h"
#include "RooArgSet.h"
#include "RooNLLVar.h"
#include "RooChi2Var.h"
#include "RooMsgService.h"
ClassImp(PiecewiseInterpolation)
;
PiecewiseInterpolation::PiecewiseInterpolation()
{
_lowIter = _lowSet.createIterator() ;
_highIter = _highSet.createIterator() ;
_paramIter = _paramSet.createIterator() ;
}
PiecewiseInterpolation::PiecewiseInterpolation(const char* name, const char* title, const RooAbsReal& nominal,
const RooArgList& lowSet,
const RooArgList& highSet,
const RooArgList& paramSet,
Bool_t takeOwnership) :
RooAbsReal(name, title),
_nominal("!nominal","nominal value", this, (RooAbsReal&)nominal),
_lowSet("!lowSet","low-side variation",this),
_highSet("!highSet","high-side variation",this),
_paramSet("!paramSet","high-side variation",this)
{
_lowIter = _lowSet.createIterator() ;
_highIter = _highSet.createIterator() ;
_paramIter = _paramSet.createIterator() ;
if (lowSet.getSize() != highSet.getSize()) {
coutE(InputArguments) << "PiecewiseInterpolation::ctor(" << GetName() << ") ERROR: input lists should be of equal length" << endl ;
RooErrorHandler::softAbort() ;
}
TIterator* inputIter1 = lowSet.createIterator() ;
RooAbsArg* comp ;
while((comp = (RooAbsArg*)inputIter1->Next())) {
if (!dynamic_cast<RooAbsReal*>(comp)) {
coutE(InputArguments) << "PiecewiseInterpolation::ctor(" << GetName() << ") ERROR: component " << comp->GetName()
<< " in first list is not of type RooAbsReal" << endl ;
RooErrorHandler::softAbort() ;
}
_lowSet.add(*comp) ;
if (takeOwnership) {
_ownedList.addOwned(*comp) ;
}
}
delete inputIter1 ;
TIterator* inputIter2 = highSet.createIterator() ;
while((comp = (RooAbsArg*)inputIter2->Next())) {
if (!dynamic_cast<RooAbsReal*>(comp)) {
coutE(InputArguments) << "PiecewiseInterpolation::ctor(" << GetName() << ") ERROR: component " << comp->GetName()
<< " in first list is not of type RooAbsReal" << endl ;
RooErrorHandler::softAbort() ;
}
_highSet.add(*comp) ;
if (takeOwnership) {
_ownedList.addOwned(*comp) ;
}
}
delete inputIter2 ;
TIterator* inputIter3 = paramSet.createIterator() ;
while((comp = (RooAbsArg*)inputIter3->Next())) {
if (!dynamic_cast<RooAbsReal*>(comp)) {
coutE(InputArguments) << "PiecewiseInterpolation::ctor(" << GetName() << ") ERROR: component " << comp->GetName()
<< " in first list is not of type RooAbsReal" << endl ;
RooErrorHandler::softAbort() ;
}
_paramSet.add(*comp) ;
if (takeOwnership) {
_ownedList.addOwned(*comp) ;
}
}
delete inputIter3 ;
}
PiecewiseInterpolation::PiecewiseInterpolation(const PiecewiseInterpolation& other, const char* name) :
RooAbsReal(other, name),
_nominal("!nominal",this,other._nominal),
_lowSet("!lowSet",this,other._lowSet),
_highSet("!highSet",this,other._highSet),
_paramSet("!paramSet",this,other._paramSet)
{
_lowIter = _lowSet.createIterator() ;
_highIter = _highSet.createIterator() ;
_paramIter = _paramSet.createIterator() ;
}
PiecewiseInterpolation::~PiecewiseInterpolation()
{
if (_lowIter) delete _lowIter ;
if (_highIter) delete _highIter ;
if (_paramIter) delete _paramIter ;
}
Double_t PiecewiseInterpolation::evaluate() const
{
Double_t nominal = _nominal;
Double_t sum(nominal) ;
_lowIter->Reset() ;
_highIter->Reset() ;
_paramIter->Reset() ;
RooAbsReal* param ;
RooAbsReal* high ;
RooAbsReal* low ;
int i=0;
while((param=(RooAbsReal*)_paramIter->Next())) {
low = (RooAbsReal*)_lowIter->Next() ;
high = (RooAbsReal*)_highIter->Next() ;
if(param->getVal()>0)
sum += param->getVal()*(high->getVal() - nominal );
else
sum += param->getVal()*(nominal - low->getVal());
++i;
}
return sum;
}
PiecewiseInterpolation.cxx:1 PiecewiseInterpolation.cxx:2 PiecewiseInterpolation.cxx:3 PiecewiseInterpolation.cxx:4 PiecewiseInterpolation.cxx:5 PiecewiseInterpolation.cxx:6 PiecewiseInterpolation.cxx:7 PiecewiseInterpolation.cxx:8 PiecewiseInterpolation.cxx:9 PiecewiseInterpolation.cxx:10 PiecewiseInterpolation.cxx:11 PiecewiseInterpolation.cxx:12 PiecewiseInterpolation.cxx:13 PiecewiseInterpolation.cxx:14 PiecewiseInterpolation.cxx:15 PiecewiseInterpolation.cxx:16 PiecewiseInterpolation.cxx:17 PiecewiseInterpolation.cxx:18 PiecewiseInterpolation.cxx:19 PiecewiseInterpolation.cxx:20 PiecewiseInterpolation.cxx:21 PiecewiseInterpolation.cxx:22 PiecewiseInterpolation.cxx:23 PiecewiseInterpolation.cxx:24 PiecewiseInterpolation.cxx:25 PiecewiseInterpolation.cxx:26 PiecewiseInterpolation.cxx:27 PiecewiseInterpolation.cxx:28 PiecewiseInterpolation.cxx:29 PiecewiseInterpolation.cxx:30 PiecewiseInterpolation.cxx:31 PiecewiseInterpolation.cxx:32 PiecewiseInterpolation.cxx:33 PiecewiseInterpolation.cxx:34 PiecewiseInterpolation.cxx:35 PiecewiseInterpolation.cxx:36 PiecewiseInterpolation.cxx:37 PiecewiseInterpolation.cxx:38 PiecewiseInterpolation.cxx:39 PiecewiseInterpolation.cxx:40 PiecewiseInterpolation.cxx:41 PiecewiseInterpolation.cxx:42 PiecewiseInterpolation.cxx:43 PiecewiseInterpolation.cxx:44 PiecewiseInterpolation.cxx:45 PiecewiseInterpolation.cxx:46 PiecewiseInterpolation.cxx:47 PiecewiseInterpolation.cxx:48 PiecewiseInterpolation.cxx:49 PiecewiseInterpolation.cxx:50 PiecewiseInterpolation.cxx:51 PiecewiseInterpolation.cxx:52 PiecewiseInterpolation.cxx:53 PiecewiseInterpolation.cxx:54 PiecewiseInterpolation.cxx:55 PiecewiseInterpolation.cxx:56 PiecewiseInterpolation.cxx:57 PiecewiseInterpolation.cxx:58 PiecewiseInterpolation.cxx:59 PiecewiseInterpolation.cxx:60 PiecewiseInterpolation.cxx:61 PiecewiseInterpolation.cxx:62 PiecewiseInterpolation.cxx:63 PiecewiseInterpolation.cxx:64 PiecewiseInterpolation.cxx:65 PiecewiseInterpolation.cxx:66 PiecewiseInterpolation.cxx:67 PiecewiseInterpolation.cxx:68 PiecewiseInterpolation.cxx:69 PiecewiseInterpolation.cxx:70 PiecewiseInterpolation.cxx:71 PiecewiseInterpolation.cxx:72 PiecewiseInterpolation.cxx:73 PiecewiseInterpolation.cxx:74 PiecewiseInterpolation.cxx:75 PiecewiseInterpolation.cxx:76 PiecewiseInterpolation.cxx:77 PiecewiseInterpolation.cxx:78 PiecewiseInterpolation.cxx:79 PiecewiseInterpolation.cxx:80 PiecewiseInterpolation.cxx:81 PiecewiseInterpolation.cxx:82 PiecewiseInterpolation.cxx:83 PiecewiseInterpolation.cxx:84 PiecewiseInterpolation.cxx:85 PiecewiseInterpolation.cxx:86 PiecewiseInterpolation.cxx:87 PiecewiseInterpolation.cxx:88 PiecewiseInterpolation.cxx:89 PiecewiseInterpolation.cxx:90 PiecewiseInterpolation.cxx:91 PiecewiseInterpolation.cxx:92 PiecewiseInterpolation.cxx:93 PiecewiseInterpolation.cxx:94 PiecewiseInterpolation.cxx:95 PiecewiseInterpolation.cxx:96 PiecewiseInterpolation.cxx:97 PiecewiseInterpolation.cxx:98 PiecewiseInterpolation.cxx:99 PiecewiseInterpolation.cxx:100 PiecewiseInterpolation.cxx:101 PiecewiseInterpolation.cxx:102 PiecewiseInterpolation.cxx:103 PiecewiseInterpolation.cxx:104 PiecewiseInterpolation.cxx:105 PiecewiseInterpolation.cxx:106 PiecewiseInterpolation.cxx:107 PiecewiseInterpolation.cxx:108 PiecewiseInterpolation.cxx:109 PiecewiseInterpolation.cxx:110 PiecewiseInterpolation.cxx:111 PiecewiseInterpolation.cxx:112 PiecewiseInterpolation.cxx:113 PiecewiseInterpolation.cxx:114 PiecewiseInterpolation.cxx:115 PiecewiseInterpolation.cxx:116 PiecewiseInterpolation.cxx:117 PiecewiseInterpolation.cxx:118 PiecewiseInterpolation.cxx:119 PiecewiseInterpolation.cxx:120 PiecewiseInterpolation.cxx:121 PiecewiseInterpolation.cxx:122 PiecewiseInterpolation.cxx:123 PiecewiseInterpolation.cxx:124 PiecewiseInterpolation.cxx:125 PiecewiseInterpolation.cxx:126 PiecewiseInterpolation.cxx:127 PiecewiseInterpolation.cxx:128 PiecewiseInterpolation.cxx:129 PiecewiseInterpolation.cxx:130 PiecewiseInterpolation.cxx:131 PiecewiseInterpolation.cxx:132 PiecewiseInterpolation.cxx:133 PiecewiseInterpolation.cxx:134 PiecewiseInterpolation.cxx:135 PiecewiseInterpolation.cxx:136 PiecewiseInterpolation.cxx:137 PiecewiseInterpolation.cxx:138 PiecewiseInterpolation.cxx:139 PiecewiseInterpolation.cxx:140 PiecewiseInterpolation.cxx:141 PiecewiseInterpolation.cxx:142 PiecewiseInterpolation.cxx:143 PiecewiseInterpolation.cxx:144 PiecewiseInterpolation.cxx:145 PiecewiseInterpolation.cxx:146 PiecewiseInterpolation.cxx:147 PiecewiseInterpolation.cxx:148 PiecewiseInterpolation.cxx:149 PiecewiseInterpolation.cxx:150 PiecewiseInterpolation.cxx:151 PiecewiseInterpolation.cxx:152 PiecewiseInterpolation.cxx:153 PiecewiseInterpolation.cxx:154 PiecewiseInterpolation.cxx:155 PiecewiseInterpolation.cxx:156 PiecewiseInterpolation.cxx:157 PiecewiseInterpolation.cxx:158 PiecewiseInterpolation.cxx:159 PiecewiseInterpolation.cxx:160 PiecewiseInterpolation.cxx:161 PiecewiseInterpolation.cxx:162 PiecewiseInterpolation.cxx:163 PiecewiseInterpolation.cxx:164 PiecewiseInterpolation.cxx:165 PiecewiseInterpolation.cxx:166 PiecewiseInterpolation.cxx:167 PiecewiseInterpolation.cxx:168 PiecewiseInterpolation.cxx:169 PiecewiseInterpolation.cxx:170 PiecewiseInterpolation.cxx:171 PiecewiseInterpolation.cxx:172 PiecewiseInterpolation.cxx:173 PiecewiseInterpolation.cxx:174 PiecewiseInterpolation.cxx:175 PiecewiseInterpolation.cxx:176 PiecewiseInterpolation.cxx:177 PiecewiseInterpolation.cxx:178 PiecewiseInterpolation.cxx:179 PiecewiseInterpolation.cxx:180 PiecewiseInterpolation.cxx:181 PiecewiseInterpolation.cxx:182 PiecewiseInterpolation.cxx:183 PiecewiseInterpolation.cxx:184 PiecewiseInterpolation.cxx:185 PiecewiseInterpolation.cxx:186 PiecewiseInterpolation.cxx:187 PiecewiseInterpolation.cxx:188 PiecewiseInterpolation.cxx:189 PiecewiseInterpolation.cxx:190 PiecewiseInterpolation.cxx:191 PiecewiseInterpolation.cxx:192 PiecewiseInterpolation.cxx:193 PiecewiseInterpolation.cxx:194 PiecewiseInterpolation.cxx:195 PiecewiseInterpolation.cxx:196 PiecewiseInterpolation.cxx:197 PiecewiseInterpolation.cxx:198 PiecewiseInterpolation.cxx:199 PiecewiseInterpolation.cxx:200 PiecewiseInterpolation.cxx:201 PiecewiseInterpolation.cxx:202 PiecewiseInterpolation.cxx:203 PiecewiseInterpolation.cxx:204 PiecewiseInterpolation.cxx:205 PiecewiseInterpolation.cxx:206 PiecewiseInterpolation.cxx:207 PiecewiseInterpolation.cxx:208 PiecewiseInterpolation.cxx:209 PiecewiseInterpolation.cxx:210 PiecewiseInterpolation.cxx:211 PiecewiseInterpolation.cxx:212 PiecewiseInterpolation.cxx:213 PiecewiseInterpolation.cxx:214 PiecewiseInterpolation.cxx:215 PiecewiseInterpolation.cxx:216 PiecewiseInterpolation.cxx:217 PiecewiseInterpolation.cxx:218 PiecewiseInterpolation.cxx:219 PiecewiseInterpolation.cxx:220 PiecewiseInterpolation.cxx:221 PiecewiseInterpolation.cxx:222 PiecewiseInterpolation.cxx:223 PiecewiseInterpolation.cxx:224 PiecewiseInterpolation.cxx:225 PiecewiseInterpolation.cxx:226 PiecewiseInterpolation.cxx:227 PiecewiseInterpolation.cxx:228 PiecewiseInterpolation.cxx:229