#include "RooStats/ToyMCImportanceSampler.h"
#ifndef ROO_MSG_SERVICE
#include "RooMsgService.h"
#endif
#include "RooCategory.h"
#include "TMath.h"
using namespace RooFit;
using namespace std;
ClassImp(RooStats::ToyMCImportanceSampler)
namespace RooStats {
ToyMCImportanceSampler::~ToyMCImportanceSampler() {
for( unsigned int i=0; i < fImportanceSnapshots.size(); i++ ) if(fImportanceSnapshots[i]) delete fImportanceSnapshots[i];
for( unsigned int i=0; i < fNullSnapshots.size(); i++ ) if(fNullSnapshots[i]) delete fNullSnapshots[i];
}
void ToyMCImportanceSampler::ClearCache(void) {
ToyMCSampler::ClearCache();
for( unsigned int i=0; i < fImpNLLs.size(); i++ ) if(fImpNLLs[i]) { delete fImpNLLs[i]; fImpNLLs[i] = NULL; }
for( unsigned int i=0; i < fNullNLLs.size(); i++ ) if(fNullNLLs[i]) { delete fNullNLLs[i]; fNullNLLs[i] = NULL; }
}
RooDataSet* ToyMCImportanceSampler::GetSamplingDistributionsSingleWorker(RooArgSet& paramPoint) {
if( fNToys == 0 ) return NULL;
Int_t allToys = fNToys;
RooCategory densityLabel( "densityLabel", "densityLabel" );
densityLabel.defineType( "null", -1 );
for( unsigned int i=0; i < fImportanceDensities.size(); i++ )
densityLabel.defineType( TString::Format( "impDens_%d", i ), i );
RooDataSet* fullResult = NULL;
for( int i = -1; i < (int)fImportanceDensities.size(); i++ ) {
if( i < 0 ) {
oocoutP((TObject*)0,Generation) << endl << endl << " GENERATING FROM NULL DENSITY " << endl << endl;
SetDensityToGenerateFromByIndex( 0, true );
}else{
oocoutP((TObject*)0,Generation) << endl << endl << " GENERATING IMP DENS/SNAP "<<i+1<<" OUT OF "<<fImportanceDensities.size()<<endl<<endl;
SetDensityToGenerateFromByIndex( i, false );
}
RooRealVar reweight( "reweight", "reweight", 1.0 );
if( fToysStrategy == EQUALTOYSPERDENSITY ) {
fNToys = TMath::CeilNint( double(allToys)/(fImportanceDensities.size()+1) );
}else if(fToysStrategy == EXPONENTIALTOYDISTRIBUTION ) {
fNToys = TMath::CeilNint( double(allToys) * pow( double(2) , i+1 ) / (pow( double(2), int(fImportanceDensities.size()+1) )-1) );
int largestNToys = TMath::CeilNint( allToys * pow( double(2), int(fImportanceDensities.size()) ) / (pow( double(2), int(fImportanceDensities.size()+1) )-1) );
reweight.setVal( ((double)largestNToys) / fNToys );
}
ooccoutI((TObject*)NULL,InputArguments) << "Generating " << fNToys << " toys for this density." << endl;
ooccoutI((TObject*)NULL,InputArguments) << "Reweight is " << reweight.getVal() << endl;
RooDataSet* result = ToyMCSampler::GetSamplingDistributionsSingleWorker( paramPoint );
if (result->get()->getSize() > Int_t(fTestStatistics.size())) {
densityLabel.setIndex( i );
result->addColumn( densityLabel );
result->addColumn( reweight );
}
if( !fullResult ) {
RooArgSet columns( *result->get() );
RooRealVar weightVar ( "weight", "weight", 1.0 );
columns.add( weightVar );
fullResult = new RooDataSet( result->GetName(), result->GetTitle(), columns, "weight" );
}
for( int j=0; j < result->numEntries(); j++ ) {
const RooArgSet* row = result->get(j);
fullResult->add( *row, result->weight()*reweight.getVal() );
}
delete result;
}
fNToys = allToys;
return fullResult;
}
RooAbsData* ToyMCImportanceSampler::GenerateToyData(
RooArgSet& paramPoint,
double& weight
) const {
if( fNullDensities.size() > 1 ) {
ooccoutI((TObject*)NULL,InputArguments) << "Null Densities:" << endl;
for( unsigned int i=0; i < fNullDensities.size(); i++) {
ooccoutI((TObject*)NULL,InputArguments) << " null density["<<i<<"]: " << fNullDensities[i] << " \t null snapshot["<<i<<"]: " << fNullSnapshots[i] << endl;
}
ooccoutE((TObject*)NULL,InputArguments) << "Cannot use multiple null densities and only ask for one weight." << endl;
return NULL;
}
if( fNullDensities.size() == 0 && fPdf ) {
ooccoutI((TObject*)NULL,InputArguments) << "No explicit null densities specified. Going to add one based on the given paramPoint and the global fPdf. ... but cannot do that inside const function." << endl;
}
if( fNullSnapshots[0] != ¶mPoint ) {
ooccoutD((TObject*)NULL,InputArguments) << "Using given parameter point. Replaces snapshot for the only null currently defined." << endl;
if(fNullSnapshots[0]) delete fNullSnapshots[0];
fNullSnapshots.clear();
fNullSnapshots.push_back( (RooArgSet*)paramPoint.snapshot() );
}
vector<double> weights;
weights.push_back( weight );
vector<double> impNLLs;
for( unsigned int i=0; i < fImportanceDensities.size(); i++ ) impNLLs.push_back( 0.0 );
vector<double> nullNLLs;
for( unsigned int i=0; i < fNullDensities.size(); i++ ) nullNLLs.push_back( 0.0 );
RooAbsData *d = GenerateToyData( weights, impNLLs, nullNLLs );
weight = weights[0];
return d;
}
RooAbsData* ToyMCImportanceSampler::GenerateToyData(
RooArgSet& paramPoint,
double& weight,
vector<double>& impNLLs,
double& nullNLL
) const {
if( fNullDensities.size() > 1 ) {
ooccoutI((TObject*)NULL,InputArguments) << "Null Densities:" << endl;
for( unsigned int i=0; i < fNullDensities.size(); i++) {
ooccoutI((TObject*)NULL,InputArguments) << " null density["<<i<<"]: " << fNullDensities[i] << " \t null snapshot["<<i<<"]: " << fNullSnapshots[i] << endl;
}
ooccoutE((TObject*)NULL,InputArguments) << "Cannot use multiple null densities and only ask for one weight and NLL." << endl;
return NULL;
}
if( fNullDensities.size() == 0 && fPdf ) {
ooccoutI((TObject*)NULL,InputArguments) << "No explicit null densities specified. Going to add one based on the given paramPoint and the global fPdf. ... but cannot do that inside const function." << endl;
}
ooccoutI((TObject*)NULL,InputArguments) << "Using given parameter point. Overwrites snapshot for the only null currently defined." << endl;
if(fNullSnapshots[0]) delete fNullSnapshots[0];
fNullSnapshots.clear();
fNullSnapshots.push_back( (const RooArgSet*)paramPoint.snapshot() );
vector<double> weights;
weights.push_back( weight );
vector<double> nullNLLs;
nullNLLs.push_back( nullNLL );
RooAbsData *d = GenerateToyData( weights, impNLLs, nullNLLs );
weight = weights[0];
nullNLL = nullNLLs[0];
return d;
}
RooAbsData* ToyMCImportanceSampler::GenerateToyData(
vector<double>& weights
) const {
if( fNullDensities.size() != weights.size() ) {
ooccoutI((TObject*)NULL,InputArguments) << "weights.size() != nullDesnities.size(). You need to provide a vector with the correct size." << endl;
}
vector<double> impNLLs;
for( unsigned int i=0; i < fImportanceDensities.size(); i++ ) impNLLs.push_back( 0.0 );
vector<double> nullNLLs;
for( unsigned int i=0; i < fNullDensities.size(); i++ ) nullNLLs.push_back( 0.0 );
RooAbsData *d = GenerateToyData( weights, impNLLs, nullNLLs );
return d;
}
RooAbsData* ToyMCImportanceSampler::GenerateToyData(
vector<double>& weights,
vector<double>& impNLLVals,
vector<double>& nullNLLVals
) const {
ooccoutD((TObject*)0,InputArguments) << endl;
ooccoutD((TObject*)0,InputArguments) << "GenerateToyDataImportanceSampling" << endl;
if(!fObservables) {
ooccoutE((TObject*)NULL,InputArguments) << "Observables not set." << endl;
return NULL;
}
if( fNullDensities.size() == 0 ) {
oocoutE((TObject*)NULL,InputArguments) << "ToyMCImportanceSampler: Need to specify the null density explicitly." << endl;
return NULL;
}
if( fNullNLLs.size() == 0 && fNullDensities.size() > 0 ) {
for( unsigned int i = 0; i < fNullDensities.size(); i++ ) fNullNLLs.push_back( NULL );
}
if( fImpNLLs.size() == 0 && fImportanceDensities.size() > 0 ) {
for( unsigned int i = 0; i < fImportanceDensities.size(); i++ ) fImpNLLs.push_back( NULL );
}
if( fNullDensities.size() != fNullNLLs.size() ) {
oocoutE((TObject*)NULL,InputArguments) << "ToyMCImportanceSampler: Something wrong. NullNLLs must be of same size as null densities." << endl;
return NULL;
}
if( (!fGenerateFromNull && fIndexGenDensity >= fImportanceDensities.size()) ||
(fGenerateFromNull && fIndexGenDensity >= fNullDensities.size())
) {
oocoutE((TObject*)NULL,InputArguments) << "ToyMCImportanceSampler: no importance density given or index out of range." << endl;
return NULL;
}
RooArgSet paramPoint( *fNullSnapshots[0] );
RooArgSet* allVars = fPdf->getVariables();
*allVars = paramPoint;
if(!fNuisanceParametersSampler && fPriorNuisance && fNuisancePars)
fNuisanceParametersSampler = new NuisanceParametersSampler(fPriorNuisance, fNuisancePars, fNToys, fExpectedNuisancePar);
RooArgSet observables(*fObservables);
if(fGlobalObservables && fGlobalObservables->getSize()) {
observables.remove(*fGlobalObservables);
GenerateGlobalObservables(*fNullDensities[0]);
}
if( !fGenerateFromNull ) {
RooArgSet* allVarsImpDens = fImportanceDensities[fIndexGenDensity]->getVariables();
allVars->add(*allVarsImpDens);
delete allVarsImpDens;
}
const RooArgSet* saveVars = (const RooArgSet*)allVars->snapshot();
double globalWeight = 1.0;
if(fNuisanceParametersSampler) {
RooArgSet allVarsMinusParamPoint(*allVars);
allVarsMinusParamPoint.remove(paramPoint, kFALSE, kTRUE);
fNuisanceParametersSampler->NextPoint(allVarsMinusParamPoint, globalWeight);
}
for( unsigned int i=0; i < weights.size(); i++ ) weights[i] = globalWeight;
RooAbsData* data = NULL;
if( fGenerateFromNull ) {
*allVars = *fNullSnapshots[fIndexGenDensity];
data = Generate(*fNullDensities[fIndexGenDensity], observables);
}else{
if(fImportanceSnapshots[fIndexGenDensity]) *allVars = *fImportanceSnapshots[fIndexGenDensity];
data = Generate(*fImportanceDensities[fIndexGenDensity], observables);
}
if (!data) {
oocoutE((TObject*)0,InputArguments) << "ToyMCImportanceSampler: error generating data" << endl;
return NULL;
}
ooccoutD((TObject*)0,InputArguments) << "About to create/calculate all nullNLLs." << endl;
for( unsigned int i=0; i < fNullDensities.size(); i++ ) {
*allVars = *fNullSnapshots[i];
if( !fNullNLLs[i] ) {
RooArgSet* allParams = fNullDensities[i]->getParameters(*data);
fNullNLLs[i] = fNullDensities[i]->createNLL(*data, RooFit::CloneData(kFALSE), RooFit::Constrain(*allParams),
RooFit::ConditionalObservables(fConditionalObs));
delete allParams;
}else{
fNullNLLs[i]->setData( *data, kFALSE );
}
nullNLLVals[i] = fNullNLLs[i]->getVal();
if( !fReuseNLL ) { delete fNullNLLs[i]; fNullNLLs[i] = NULL; }
}
ooccoutD((TObject*)0,InputArguments) << "About to find the minimum NLLs." << endl;
vector<double> minNLLVals;
for( unsigned int i=0; i < nullNLLVals.size(); i++ ) minNLLVals.push_back( nullNLLVals[i] );
for( unsigned int i=0; i < fImportanceDensities.size(); i++ ) {
if( fImportanceSnapshots[i] ) *allVars = *fImportanceSnapshots[i];
if( !fImpNLLs[i] ) {
RooArgSet* allParams = fImportanceDensities[i]->getParameters(*data);
fImpNLLs[i] = fImportanceDensities[i]->createNLL(*data, RooFit::CloneData(kFALSE), RooFit::Constrain(*allParams),
RooFit::ConditionalObservables(fConditionalObs));
delete allParams;
}else{
fImpNLLs[i]->setData( *data, kFALSE );
}
impNLLVals[i] = fImpNLLs[i]->getVal();
if( !fReuseNLL ) { delete fImpNLLs[i]; fImpNLLs[i] = NULL; }
for( unsigned int j=0; j < nullNLLVals.size(); j++ ) {
if( impNLLVals[i] < minNLLVals[j] ) minNLLVals[j] = impNLLVals[i];
ooccoutD((TObject*)0,InputArguments) << "minNLLVals["<<j<<"]: " << minNLLVals[j] << " nullNLLVals["<<j<<"]: " << nullNLLVals[j] << " impNLLVals["<<i<<"]: " << impNLLVals[i] << endl;
}
}
ooccoutD((TObject*)0,InputArguments) << "About to apply vetos and calculate weights." << endl;
for( unsigned int j=0; j < nullNLLVals.size(); j++ ) {
if ( fApplyVeto && fGenerateFromNull && minNLLVals[j] != nullNLLVals[j] ) weights[j] = 0.0;
else if( fApplyVeto && !fGenerateFromNull && minNLLVals[j] != impNLLVals[fIndexGenDensity] ) weights[j] = 0.0;
else if( !fGenerateFromNull ) {
weights[j] *= exp(minNLLVals[j] - nullNLLVals[j]);
}
ooccoutD((TObject*)0,InputArguments) << "weights["<<j<<"]: " << weights[j] << endl;
}
*allVars = *saveVars;
delete allVars;
delete saveVars;
return data;
}
int ToyMCImportanceSampler::CreateImpDensitiesForOnePOIAdaptively( RooAbsPdf& pdf, const RooArgSet& allPOI, RooRealVar& poi, double nStdDevOverlap, double poiValueForBackground ) {
double impMaxMu = poi.getVal();
int n = 1;
if( poi.getError() > 0.01 && poi.getError() < 5.0 ) {
n = TMath::CeilNint( poi.getVal() / (2.*nStdDevOverlap*poi.getError()) );
oocoutI((TObject*)0,InputArguments) << "Using fitFavoredMu and error to set the number of imp points" << endl;
oocoutI((TObject*)0,InputArguments) << "muhat: " << poi.getVal() << " optimize for distance: " << 2.*nStdDevOverlap*poi.getError() << endl;
oocoutI((TObject*)0,InputArguments) << "n = " << n << endl;
oocoutI((TObject*)0,InputArguments) << "This results in a distance of: " << impMaxMu / n << endl;
}
return CreateNImpDensitiesForOnePOI( pdf, allPOI, poi, n-1, poiValueForBackground);
}
int ToyMCImportanceSampler::CreateNImpDensitiesForOnePOI( RooAbsPdf& pdf, const RooArgSet& allPOI, RooRealVar& poi, int n, double poiValueForBackground ) {
double impMaxMu = poi.getVal();
if( impMaxMu > poiValueForBackground && n > 0 ) {
for( int i=1; i <= n; i++ ) {
poi.setVal( poiValueForBackground + (double)i/(n)*(impMaxMu - poiValueForBackground) );
oocoutI((TObject*)0,InputArguments) << endl << "create point with poi: " << endl;
poi.Print();
AddImportanceDensity( &pdf, &allPOI );
}
}
return n;
}
}
ToyMCImportanceSampler.cxx:1 ToyMCImportanceSampler.cxx:2 ToyMCImportanceSampler.cxx:3 ToyMCImportanceSampler.cxx:4 ToyMCImportanceSampler.cxx:5 ToyMCImportanceSampler.cxx:6 ToyMCImportanceSampler.cxx:7 ToyMCImportanceSampler.cxx:8 ToyMCImportanceSampler.cxx:9 ToyMCImportanceSampler.cxx:10 ToyMCImportanceSampler.cxx:11 ToyMCImportanceSampler.cxx:12 ToyMCImportanceSampler.cxx:13 ToyMCImportanceSampler.cxx:14 ToyMCImportanceSampler.cxx:15 ToyMCImportanceSampler.cxx:16 ToyMCImportanceSampler.cxx:17 ToyMCImportanceSampler.cxx:18 ToyMCImportanceSampler.cxx:19 ToyMCImportanceSampler.cxx:20 ToyMCImportanceSampler.cxx:21 ToyMCImportanceSampler.cxx:22 ToyMCImportanceSampler.cxx:23 ToyMCImportanceSampler.cxx:24 ToyMCImportanceSampler.cxx:25 ToyMCImportanceSampler.cxx:26 ToyMCImportanceSampler.cxx:27 ToyMCImportanceSampler.cxx:28 ToyMCImportanceSampler.cxx:29 ToyMCImportanceSampler.cxx:30 ToyMCImportanceSampler.cxx:31 ToyMCImportanceSampler.cxx:32 ToyMCImportanceSampler.cxx:33 ToyMCImportanceSampler.cxx:34 ToyMCImportanceSampler.cxx:35 ToyMCImportanceSampler.cxx:36 ToyMCImportanceSampler.cxx:37 ToyMCImportanceSampler.cxx:38 ToyMCImportanceSampler.cxx:39 ToyMCImportanceSampler.cxx:40 ToyMCImportanceSampler.cxx:41 ToyMCImportanceSampler.cxx:42 ToyMCImportanceSampler.cxx:43 ToyMCImportanceSampler.cxx:44 ToyMCImportanceSampler.cxx:45 ToyMCImportanceSampler.cxx:46 ToyMCImportanceSampler.cxx:47 ToyMCImportanceSampler.cxx:48 ToyMCImportanceSampler.cxx:49 ToyMCImportanceSampler.cxx:50 ToyMCImportanceSampler.cxx:51 ToyMCImportanceSampler.cxx:52 ToyMCImportanceSampler.cxx:53 ToyMCImportanceSampler.cxx:54 ToyMCImportanceSampler.cxx:55 ToyMCImportanceSampler.cxx:56 ToyMCImportanceSampler.cxx:57 ToyMCImportanceSampler.cxx:58 ToyMCImportanceSampler.cxx:59 ToyMCImportanceSampler.cxx:60 ToyMCImportanceSampler.cxx:61 ToyMCImportanceSampler.cxx:62 ToyMCImportanceSampler.cxx:63 ToyMCImportanceSampler.cxx:64 ToyMCImportanceSampler.cxx:65 ToyMCImportanceSampler.cxx:66 ToyMCImportanceSampler.cxx:67 ToyMCImportanceSampler.cxx:68 ToyMCImportanceSampler.cxx:69 ToyMCImportanceSampler.cxx:70 ToyMCImportanceSampler.cxx:71 ToyMCImportanceSampler.cxx:72 ToyMCImportanceSampler.cxx:73 ToyMCImportanceSampler.cxx:74 ToyMCImportanceSampler.cxx:75 ToyMCImportanceSampler.cxx:76 ToyMCImportanceSampler.cxx:77 ToyMCImportanceSampler.cxx:78 ToyMCImportanceSampler.cxx:79 ToyMCImportanceSampler.cxx:80 ToyMCImportanceSampler.cxx:81 ToyMCImportanceSampler.cxx:82 ToyMCImportanceSampler.cxx:83 ToyMCImportanceSampler.cxx:84 ToyMCImportanceSampler.cxx:85 ToyMCImportanceSampler.cxx:86 ToyMCImportanceSampler.cxx:87 ToyMCImportanceSampler.cxx:88 ToyMCImportanceSampler.cxx:89 ToyMCImportanceSampler.cxx:90 ToyMCImportanceSampler.cxx:91 ToyMCImportanceSampler.cxx:92 ToyMCImportanceSampler.cxx:93 ToyMCImportanceSampler.cxx:94 ToyMCImportanceSampler.cxx:95 ToyMCImportanceSampler.cxx:96 ToyMCImportanceSampler.cxx:97 ToyMCImportanceSampler.cxx:98 ToyMCImportanceSampler.cxx:99 ToyMCImportanceSampler.cxx:100 ToyMCImportanceSampler.cxx:101 ToyMCImportanceSampler.cxx:102 ToyMCImportanceSampler.cxx:103 ToyMCImportanceSampler.cxx:104 ToyMCImportanceSampler.cxx:105 ToyMCImportanceSampler.cxx:106 ToyMCImportanceSampler.cxx:107 ToyMCImportanceSampler.cxx:108 ToyMCImportanceSampler.cxx:109 ToyMCImportanceSampler.cxx:110 ToyMCImportanceSampler.cxx:111 ToyMCImportanceSampler.cxx:112 ToyMCImportanceSampler.cxx:113 ToyMCImportanceSampler.cxx:114 ToyMCImportanceSampler.cxx:115 ToyMCImportanceSampler.cxx:116 ToyMCImportanceSampler.cxx:117 ToyMCImportanceSampler.cxx:118 ToyMCImportanceSampler.cxx:119 ToyMCImportanceSampler.cxx:120 ToyMCImportanceSampler.cxx:121 ToyMCImportanceSampler.cxx:122 ToyMCImportanceSampler.cxx:123 ToyMCImportanceSampler.cxx:124 ToyMCImportanceSampler.cxx:125 ToyMCImportanceSampler.cxx:126 ToyMCImportanceSampler.cxx:127 ToyMCImportanceSampler.cxx:128 ToyMCImportanceSampler.cxx:129 ToyMCImportanceSampler.cxx:130 ToyMCImportanceSampler.cxx:131 ToyMCImportanceSampler.cxx:132 ToyMCImportanceSampler.cxx:133 ToyMCImportanceSampler.cxx:134 ToyMCImportanceSampler.cxx:135 ToyMCImportanceSampler.cxx:136 ToyMCImportanceSampler.cxx:137 ToyMCImportanceSampler.cxx:138 ToyMCImportanceSampler.cxx:139 ToyMCImportanceSampler.cxx:140 ToyMCImportanceSampler.cxx:141 ToyMCImportanceSampler.cxx:142 ToyMCImportanceSampler.cxx:143 ToyMCImportanceSampler.cxx:144 ToyMCImportanceSampler.cxx:145 ToyMCImportanceSampler.cxx:146 ToyMCImportanceSampler.cxx:147 ToyMCImportanceSampler.cxx:148 ToyMCImportanceSampler.cxx:149 ToyMCImportanceSampler.cxx:150 ToyMCImportanceSampler.cxx:151 ToyMCImportanceSampler.cxx:152 ToyMCImportanceSampler.cxx:153 ToyMCImportanceSampler.cxx:154 ToyMCImportanceSampler.cxx:155 ToyMCImportanceSampler.cxx:156 ToyMCImportanceSampler.cxx:157 ToyMCImportanceSampler.cxx:158 ToyMCImportanceSampler.cxx:159 ToyMCImportanceSampler.cxx:160 ToyMCImportanceSampler.cxx:161 ToyMCImportanceSampler.cxx:162 ToyMCImportanceSampler.cxx:163 ToyMCImportanceSampler.cxx:164 ToyMCImportanceSampler.cxx:165 ToyMCImportanceSampler.cxx:166 ToyMCImportanceSampler.cxx:167 ToyMCImportanceSampler.cxx:168 ToyMCImportanceSampler.cxx:169 ToyMCImportanceSampler.cxx:170 ToyMCImportanceSampler.cxx:171 ToyMCImportanceSampler.cxx:172 ToyMCImportanceSampler.cxx:173 ToyMCImportanceSampler.cxx:174 ToyMCImportanceSampler.cxx:175 ToyMCImportanceSampler.cxx:176 ToyMCImportanceSampler.cxx:177 ToyMCImportanceSampler.cxx:178 ToyMCImportanceSampler.cxx:179 ToyMCImportanceSampler.cxx:180 ToyMCImportanceSampler.cxx:181 ToyMCImportanceSampler.cxx:182 ToyMCImportanceSampler.cxx:183 ToyMCImportanceSampler.cxx:184 ToyMCImportanceSampler.cxx:185 ToyMCImportanceSampler.cxx:186 ToyMCImportanceSampler.cxx:187 ToyMCImportanceSampler.cxx:188 ToyMCImportanceSampler.cxx:189 ToyMCImportanceSampler.cxx:190 ToyMCImportanceSampler.cxx:191 ToyMCImportanceSampler.cxx:192 ToyMCImportanceSampler.cxx:193 ToyMCImportanceSampler.cxx:194 ToyMCImportanceSampler.cxx:195 ToyMCImportanceSampler.cxx:196 ToyMCImportanceSampler.cxx:197 ToyMCImportanceSampler.cxx:198 ToyMCImportanceSampler.cxx:199 ToyMCImportanceSampler.cxx:200 ToyMCImportanceSampler.cxx:201 ToyMCImportanceSampler.cxx:202 ToyMCImportanceSampler.cxx:203 ToyMCImportanceSampler.cxx:204 ToyMCImportanceSampler.cxx:205 ToyMCImportanceSampler.cxx:206 ToyMCImportanceSampler.cxx:207 ToyMCImportanceSampler.cxx:208 ToyMCImportanceSampler.cxx:209 ToyMCImportanceSampler.cxx:210 ToyMCImportanceSampler.cxx:211 ToyMCImportanceSampler.cxx:212 ToyMCImportanceSampler.cxx:213 ToyMCImportanceSampler.cxx:214 ToyMCImportanceSampler.cxx:215 ToyMCImportanceSampler.cxx:216 ToyMCImportanceSampler.cxx:217 ToyMCImportanceSampler.cxx:218 ToyMCImportanceSampler.cxx:219 ToyMCImportanceSampler.cxx:220 ToyMCImportanceSampler.cxx:221 ToyMCImportanceSampler.cxx:222 ToyMCImportanceSampler.cxx:223 ToyMCImportanceSampler.cxx:224 ToyMCImportanceSampler.cxx:225 ToyMCImportanceSampler.cxx:226 ToyMCImportanceSampler.cxx:227 ToyMCImportanceSampler.cxx:228 ToyMCImportanceSampler.cxx:229 ToyMCImportanceSampler.cxx:230 ToyMCImportanceSampler.cxx:231 ToyMCImportanceSampler.cxx:232 ToyMCImportanceSampler.cxx:233 ToyMCImportanceSampler.cxx:234 ToyMCImportanceSampler.cxx:235 ToyMCImportanceSampler.cxx:236 ToyMCImportanceSampler.cxx:237 ToyMCImportanceSampler.cxx:238 ToyMCImportanceSampler.cxx:239 ToyMCImportanceSampler.cxx:240 ToyMCImportanceSampler.cxx:241 ToyMCImportanceSampler.cxx:242 ToyMCImportanceSampler.cxx:243 ToyMCImportanceSampler.cxx:244 ToyMCImportanceSampler.cxx:245 ToyMCImportanceSampler.cxx:246 ToyMCImportanceSampler.cxx:247 ToyMCImportanceSampler.cxx:248 ToyMCImportanceSampler.cxx:249 ToyMCImportanceSampler.cxx:250 ToyMCImportanceSampler.cxx:251 ToyMCImportanceSampler.cxx:252 ToyMCImportanceSampler.cxx:253 ToyMCImportanceSampler.cxx:254 ToyMCImportanceSampler.cxx:255 ToyMCImportanceSampler.cxx:256 ToyMCImportanceSampler.cxx:257 ToyMCImportanceSampler.cxx:258 ToyMCImportanceSampler.cxx:259 ToyMCImportanceSampler.cxx:260 ToyMCImportanceSampler.cxx:261 ToyMCImportanceSampler.cxx:262 ToyMCImportanceSampler.cxx:263 ToyMCImportanceSampler.cxx:264 ToyMCImportanceSampler.cxx:265 ToyMCImportanceSampler.cxx:266 ToyMCImportanceSampler.cxx:267 ToyMCImportanceSampler.cxx:268 ToyMCImportanceSampler.cxx:269 ToyMCImportanceSampler.cxx:270 ToyMCImportanceSampler.cxx:271 ToyMCImportanceSampler.cxx:272 ToyMCImportanceSampler.cxx:273 ToyMCImportanceSampler.cxx:274 ToyMCImportanceSampler.cxx:275 ToyMCImportanceSampler.cxx:276 ToyMCImportanceSampler.cxx:277 ToyMCImportanceSampler.cxx:278 ToyMCImportanceSampler.cxx:279 ToyMCImportanceSampler.cxx:280 ToyMCImportanceSampler.cxx:281 ToyMCImportanceSampler.cxx:282 ToyMCImportanceSampler.cxx:283 ToyMCImportanceSampler.cxx:284 ToyMCImportanceSampler.cxx:285 ToyMCImportanceSampler.cxx:286 ToyMCImportanceSampler.cxx:287 ToyMCImportanceSampler.cxx:288 ToyMCImportanceSampler.cxx:289 ToyMCImportanceSampler.cxx:290 ToyMCImportanceSampler.cxx:291 ToyMCImportanceSampler.cxx:292 ToyMCImportanceSampler.cxx:293 ToyMCImportanceSampler.cxx:294 ToyMCImportanceSampler.cxx:295 ToyMCImportanceSampler.cxx:296 ToyMCImportanceSampler.cxx:297 ToyMCImportanceSampler.cxx:298 ToyMCImportanceSampler.cxx:299 ToyMCImportanceSampler.cxx:300 ToyMCImportanceSampler.cxx:301 ToyMCImportanceSampler.cxx:302 ToyMCImportanceSampler.cxx:303 ToyMCImportanceSampler.cxx:304 ToyMCImportanceSampler.cxx:305 ToyMCImportanceSampler.cxx:306 ToyMCImportanceSampler.cxx:307 ToyMCImportanceSampler.cxx:308 ToyMCImportanceSampler.cxx:309 ToyMCImportanceSampler.cxx:310 ToyMCImportanceSampler.cxx:311 ToyMCImportanceSampler.cxx:312 ToyMCImportanceSampler.cxx:313 ToyMCImportanceSampler.cxx:314 ToyMCImportanceSampler.cxx:315 ToyMCImportanceSampler.cxx:316 ToyMCImportanceSampler.cxx:317 ToyMCImportanceSampler.cxx:318 ToyMCImportanceSampler.cxx:319 ToyMCImportanceSampler.cxx:320 ToyMCImportanceSampler.cxx:321 ToyMCImportanceSampler.cxx:322 ToyMCImportanceSampler.cxx:323 ToyMCImportanceSampler.cxx:324 ToyMCImportanceSampler.cxx:325 ToyMCImportanceSampler.cxx:326 ToyMCImportanceSampler.cxx:327 ToyMCImportanceSampler.cxx:328 ToyMCImportanceSampler.cxx:329 ToyMCImportanceSampler.cxx:330 ToyMCImportanceSampler.cxx:331 ToyMCImportanceSampler.cxx:332 ToyMCImportanceSampler.cxx:333 ToyMCImportanceSampler.cxx:334 ToyMCImportanceSampler.cxx:335 ToyMCImportanceSampler.cxx:336 ToyMCImportanceSampler.cxx:337 ToyMCImportanceSampler.cxx:338 ToyMCImportanceSampler.cxx:339 ToyMCImportanceSampler.cxx:340 ToyMCImportanceSampler.cxx:341 ToyMCImportanceSampler.cxx:342 ToyMCImportanceSampler.cxx:343 ToyMCImportanceSampler.cxx:344 ToyMCImportanceSampler.cxx:345 ToyMCImportanceSampler.cxx:346 ToyMCImportanceSampler.cxx:347 ToyMCImportanceSampler.cxx:348 ToyMCImportanceSampler.cxx:349 ToyMCImportanceSampler.cxx:350 ToyMCImportanceSampler.cxx:351 ToyMCImportanceSampler.cxx:352 ToyMCImportanceSampler.cxx:353 ToyMCImportanceSampler.cxx:354 ToyMCImportanceSampler.cxx:355 ToyMCImportanceSampler.cxx:356 ToyMCImportanceSampler.cxx:357 ToyMCImportanceSampler.cxx:358 ToyMCImportanceSampler.cxx:359 ToyMCImportanceSampler.cxx:360 ToyMCImportanceSampler.cxx:361 ToyMCImportanceSampler.cxx:362 ToyMCImportanceSampler.cxx:363 ToyMCImportanceSampler.cxx:364 ToyMCImportanceSampler.cxx:365 ToyMCImportanceSampler.cxx:366 ToyMCImportanceSampler.cxx:367 ToyMCImportanceSampler.cxx:368 ToyMCImportanceSampler.cxx:369 ToyMCImportanceSampler.cxx:370 ToyMCImportanceSampler.cxx:371 ToyMCImportanceSampler.cxx:372 ToyMCImportanceSampler.cxx:373 ToyMCImportanceSampler.cxx:374 ToyMCImportanceSampler.cxx:375 ToyMCImportanceSampler.cxx:376 ToyMCImportanceSampler.cxx:377 ToyMCImportanceSampler.cxx:378 ToyMCImportanceSampler.cxx:379 ToyMCImportanceSampler.cxx:380 ToyMCImportanceSampler.cxx:381 ToyMCImportanceSampler.cxx:382 ToyMCImportanceSampler.cxx:383 ToyMCImportanceSampler.cxx:384 ToyMCImportanceSampler.cxx:385 ToyMCImportanceSampler.cxx:386 ToyMCImportanceSampler.cxx:387 ToyMCImportanceSampler.cxx:388 ToyMCImportanceSampler.cxx:389 ToyMCImportanceSampler.cxx:390 ToyMCImportanceSampler.cxx:391 ToyMCImportanceSampler.cxx:392 ToyMCImportanceSampler.cxx:393 ToyMCImportanceSampler.cxx:394 ToyMCImportanceSampler.cxx:395 ToyMCImportanceSampler.cxx:396 ToyMCImportanceSampler.cxx:397 ToyMCImportanceSampler.cxx:398 ToyMCImportanceSampler.cxx:399 ToyMCImportanceSampler.cxx:400 ToyMCImportanceSampler.cxx:401 ToyMCImportanceSampler.cxx:402 ToyMCImportanceSampler.cxx:403 ToyMCImportanceSampler.cxx:404 ToyMCImportanceSampler.cxx:405 ToyMCImportanceSampler.cxx:406 ToyMCImportanceSampler.cxx:407 ToyMCImportanceSampler.cxx:408 ToyMCImportanceSampler.cxx:409 ToyMCImportanceSampler.cxx:410 ToyMCImportanceSampler.cxx:411 ToyMCImportanceSampler.cxx:412 ToyMCImportanceSampler.cxx:413 ToyMCImportanceSampler.cxx:414 ToyMCImportanceSampler.cxx:415 ToyMCImportanceSampler.cxx:416 ToyMCImportanceSampler.cxx:417 ToyMCImportanceSampler.cxx:418 ToyMCImportanceSampler.cxx:419 ToyMCImportanceSampler.cxx:420 ToyMCImportanceSampler.cxx:421 ToyMCImportanceSampler.cxx:422 ToyMCImportanceSampler.cxx:423 ToyMCImportanceSampler.cxx:424 ToyMCImportanceSampler.cxx:425 ToyMCImportanceSampler.cxx:426 ToyMCImportanceSampler.cxx:427 ToyMCImportanceSampler.cxx:428 ToyMCImportanceSampler.cxx:429 ToyMCImportanceSampler.cxx:430 ToyMCImportanceSampler.cxx:431 ToyMCImportanceSampler.cxx:432 ToyMCImportanceSampler.cxx:433 ToyMCImportanceSampler.cxx:434 ToyMCImportanceSampler.cxx:435 ToyMCImportanceSampler.cxx:436 ToyMCImportanceSampler.cxx:437 ToyMCImportanceSampler.cxx:438 ToyMCImportanceSampler.cxx:439 ToyMCImportanceSampler.cxx:440 ToyMCImportanceSampler.cxx:441 ToyMCImportanceSampler.cxx:442 ToyMCImportanceSampler.cxx:443 ToyMCImportanceSampler.cxx:444 ToyMCImportanceSampler.cxx:445 ToyMCImportanceSampler.cxx:446 ToyMCImportanceSampler.cxx:447 ToyMCImportanceSampler.cxx:448 ToyMCImportanceSampler.cxx:449 ToyMCImportanceSampler.cxx:450 ToyMCImportanceSampler.cxx:451 ToyMCImportanceSampler.cxx:452 ToyMCImportanceSampler.cxx:453 ToyMCImportanceSampler.cxx:454 ToyMCImportanceSampler.cxx:455 ToyMCImportanceSampler.cxx:456 ToyMCImportanceSampler.cxx:457 ToyMCImportanceSampler.cxx:458 ToyMCImportanceSampler.cxx:459 ToyMCImportanceSampler.cxx:460 ToyMCImportanceSampler.cxx:461 ToyMCImportanceSampler.cxx:462 ToyMCImportanceSampler.cxx:463 ToyMCImportanceSampler.cxx:464 ToyMCImportanceSampler.cxx:465 ToyMCImportanceSampler.cxx:466 ToyMCImportanceSampler.cxx:467 ToyMCImportanceSampler.cxx:468 ToyMCImportanceSampler.cxx:469 ToyMCImportanceSampler.cxx:470 ToyMCImportanceSampler.cxx:471 ToyMCImportanceSampler.cxx:472 ToyMCImportanceSampler.cxx:473 ToyMCImportanceSampler.cxx:474 ToyMCImportanceSampler.cxx:475 ToyMCImportanceSampler.cxx:476