StandardHistFactoryPlotsWithCategories.C: | Roostats tutorials | StandardProfileInspectorDemo.C: Standard demo of the ProfileInspector class |
/* -*- mode: c++ -*- */ // Standard tutorial macro for performing an inverted hypothesis test // // This macro will perform a scan of tehe p-values for computing the limit // #include "TFile.h" #include "RooWorkspace.h" #include "RooAbsPdf.h" #include "RooRealVar.h" #include "RooDataSet.h" #include "RooStats/ModelConfig.h" #include "TGraphErrors.h" #include "TGraphAsymmErrors.h" #include "TCanvas.h" #include "TLine.h" #include "TROOT.h" #include "RooStats/AsymptoticCalculator.h" #include "RooStats/HybridCalculator.h" #include "RooStats/FrequentistCalculator.h" #include "RooStats/ToyMCSampler.h" #include "RooStats/HypoTestPlot.h" #include "RooStats/NumEventsTestStat.h" #include "RooStats/ProfileLikelihoodTestStat.h" #include "RooStats/SimpleLikelihoodRatioTestStat.h" #include "RooStats/RatioOfProfiledLikelihoodsTestStat.h" #include "RooStats/MaxLikelihoodEstimateTestStat.h" #include "RooStats/HypoTestInverter.h" #include "RooStats/HypoTestInverterResult.h" #include "RooStats/HypoTestInverterPlot.h" using namespace RooFit; using namespace RooStats; bool plotHypoTestResult = true; // plot test statistic result at each point bool writeResult = true; // write HypoTestInverterResult in a file bool optimize = true; // optmize evaluation of test statistic bool useVectorStore = true; // convert data to use new roofit data store bool generateBinned = false; // generate binned data sets bool noSystematics = false; // force all systematics to be off (i.e. set all nuisance parameters as constat // to their nominal values) double nToysRatio = 2; // ratio Ntoys S+b/ntoysB double maxPOI = -1; // max value used of POI (in case of auto scan) bool useProof = false; // use Proof Light when using toys (for freq or hybrid) int nworkers = 4; // number of worker for Proof bool rebuild = false; // re-do extra toys for computing expected limits and rebuild test stat // distributions (N.B this requires much more CPU (factor is equivalent to nToyToRebuild) int nToyToRebuild = 100; // number of toys used to rebuild std::string massValue = ""; // extra string to tag output file of result std::string minimizerType = ""; // minimizer type (default is what is in ROOT::Math::MinimizerOptions::DefaultMinimizerType() int printLevel = 0; // print level for debugging PL test statistics and calculators // internal class to run the inverter and more namespace RooStats { class HypoTestInvTool{ public: HypoTestInvTool(); ~HypoTestInvTool(){}; HypoTestInverterResult * RunInverter(RooWorkspace * w, const char * modelSBName, const char * modelBName, const char * dataName, int type, int testStatType, bool useCLs, int npoints, double poimin, double poimax, int ntoys, bool useNumberCounting = false, const char * nuisPriorName = 0); void AnalyzeResult( HypoTestInverterResult * r, int calculatorType, int testStatType, bool useCLs, int npoints, const char * fileNameBase = 0 ); void SetParameter(const char * name, const char * value); void SetParameter(const char * name, bool value); void SetParameter(const char * name, int value); void SetParameter(const char * name, double value); private: bool mPlotHypoTestResult; bool mWriteResult; bool mOptimize; bool mUseVectorStore; bool mGenerateBinned; bool mUseProof; bool mRebuild; int mNWorkers; int mNToyToRebuild; int mPrintLevel; double mNToysRatio; double mMaxPoi; std::string mMassValue; std::string mMinimizerType; // minimizer type (default is what is in ROOT::Math::MinimizerOptions::DefaultMinimizerType() }; } // end namespace RooStats RooStats::HypoTestInvTool::HypoTestInvTool() : mPlotHypoTestResult(true), mWriteResult(false), mOptimize(true), mUseVectorStore(true), mGenerateBinned(false), mUseProof(false), mRebuild(false), mNWorkers(4), mNToyToRebuild(100), mPrintLevel(0), mNToysRatio(2), mMaxPoi(-1), mMassValue(""), mMinimizerType(""){ } void RooStats::HypoTestInvTool::SetParameter(const char * name, bool value){ // // set boolean parameters // std::string s_name(name); if (s_name.find("PlotHypoTestResult") != std::string::npos) mPlotHypoTestResult = value; if (s_name.find("WriteResult") != std::string::npos) mWriteResult = value; if (s_name.find("Optimize") != std::string::npos) mOptimize = value; if (s_name.find("UseVectorStore") != std::string::npos) mUseVectorStore = value; if (s_name.find("GenerateBinned") != std::string::npos) mGenerateBinned = value; if (s_name.find("UseProof") != std::string::npos) mUseProof = value; if (s_name.find("Rebuild") != std::string::npos) mRebuild = value; return; } void RooStats::HypoTestInvTool::SetParameter(const char * name, int value){ // // set integer parameters // std::string s_name(name); if (s_name.find("NWorkers") != std::string::npos) mNWorkers = value; if (s_name.find("NToyToRebuild") != std::string::npos) mNToyToRebuild = value; if (s_name.find("PrintLevel") != std::string::npos) mPrintLevel = value; return; } void RooStats::HypoTestInvTool::SetParameter(const char * name, double value){ // // set double precision parameters // std::string s_name(name); if (s_name.find("NToysRatio") != std::string::npos) mNToysRatio = value; if (s_name.find("MaxPoi") != std::string::npos) mMaxPoi = value; return; } void RooStats::HypoTestInvTool::SetParameter(const char * name, const char * value){ // // set string parameters // std::string s_name(name); if (s_name.find("MassValue") != std::string::npos) mMassValue.assign(value); if (s_name.find("MinimizerType") != std::string::npos) mMinimizerType.assign(value); return; } void StandardHypoTestInvDemo(const char * infile = 0, const char * wsName = "combined", const char * modelSBName = "ModelConfig", const char * modelBName = "", const char * dataName = "obsData", int calculatorType = 0, int testStatType = 0, bool useCLs = true , int npoints = 6, double poimin = 0, double poimax = 5, int ntoys=1000, bool useNumberCounting = false, const char * nuisPriorName = 0){ /* Other Parameter to pass in tutorial apart from standard for filename, ws, modelconfig and data type = 0 Freq calculator type = 1 Hybrid calculator type = 2 Asymptotic calculator testStatType = 0 LEP = 1 Tevatron = 2 Profile Likelihood = 3 Profile Likelihood one sided (i.e. = 0 if mu < mu_hat) useCLs scan for CLs (otherwise for CLs+b) npoints: number of points to scan , for autoscan set npoints = -1 poimin,poimax: min/max value to scan in case of fixed scans (if min >= max, try to find automatically) ntoys: number of toys to use useNumberCounting: set to true when using number counting events nuisPriorName: name of prior for the nnuisance. This is often expressed as constraint term in the global model It is needed only when using the HybridCalculator (type=1) If not given by default the prior pdf from ModelConfig is used. extra options are available as global paramwters of the macro. They major ones are: plotHypoTestResult plot result of tests at each point (TS distributions) (defauly is true) useProof use Proof (default is true) writeResult write result of scan (default is true) rebuild rebuild scan for expected limits (require extra toys) (default is false) generateBinned generate binned data sets for toys (default is false) - be careful not to activate with a too large (>=3) number of observables nToyRatio ratio of S+B/B toys (default is 2) */ TString fileName(infile); if (fileName.IsNull()) { fileName = "results/example_combined_GaussExample_model.root"; std::cout << "Use standard file generated with HistFactory : " << fileName << std::endl; } // open file and check if input file exists TFile * file = TFile::Open(fileName); // if input file was specified but not found, quit if(!file && !TString(infile).IsNull()){ cout <<"file " << fileName << " not found" << endl; return; } // if default file not found, try to create it if(!file ){ // Normally this would be run on the command line cout <<"will run standard hist2workspace example"<<endl; gROOT->ProcessLine(".! prepareHistFactory ."); gROOT->ProcessLine(".! hist2workspace config/example.xml"); cout <<"\n\n---------------------"<<endl; cout <<"Done creating example input"<<endl; cout <<"---------------------\n\n"<<endl; // now try to access the file again file = TFile::Open(fileName); } if(!file){ // if it is still not there, then we can't continue cout << "Not able to run hist2workspace to create example input" <<endl; return; } HypoTestInvTool calc; // set parameters calc.SetParameter("PlotHypoTestResult", plotHypoTestResult); calc.SetParameter("WriteResult", writeResult); calc.SetParameter("Optimize", optimize); calc.SetParameter("UseVectorStore", useVectorStore); calc.SetParameter("GenerateBinned", generateBinned); calc.SetParameter("NToysRatio", nToysRatio); calc.SetParameter("MaxPOI", maxPOI); calc.SetParameter("UseProof", useProof); calc.SetParameter("Nworkers", nworkers); calc.SetParameter("Rebuild", rebuild); calc.SetParameter("NToyToRebuild", nToyToRebuild); calc.SetParameter("MassValue", massValue.c_str()); calc.SetParameter("MinimizerType", minimizerType.c_str()); calc.SetParameter("PrintLevel", printLevel); RooWorkspace * w = dynamic_cast<RooWorkspace*>( file->Get(wsName) ); HypoTestInverterResult * r = 0; std::cout << w << "\t" << fileName << std::endl; if (w != NULL) { r = calc.RunInverter(w, modelSBName, modelBName, dataName, calculatorType, testStatType, useCLs, npoints, poimin, poimax, ntoys, useNumberCounting, nuisPriorName ); if (!r) { std::cerr << "Error running the HypoTestInverter - Exit " << std::endl; return; } } else { // case workspace is not present look for the inverter result std::cout << "Reading an HypoTestInverterResult with name " << wsName << " from file " << fileName << std::endl; r = dynamic_cast<HypoTestInverterResult*>( file->Get(wsName) ); // if (!r) { std::cerr << "File " << fileName << " does not contain a workspace or an HypoTestInverterResult - Exit " << std::endl; file->ls(); return; } } calc.AnalyzeResult( r, calculatorType, testStatType, useCLs, npoints, infile ); return; } void RooStats::HypoTestInvTool::AnalyzeResult( HypoTestInverterResult * r, int calculatorType, int testStatType, bool useCLs, int npoints, const char * fileNameBase ){ // analyize result produced by the inverter, optionally save it in a file double upperLimit = r->UpperLimit(); double ulError = r->UpperLimitEstimatedError(); std::cout << "The computed upper limit is: " << upperLimit << " +/- " << ulError << std::endl; // compute expected limit std::cout << " expected limit (median) " << r->GetExpectedUpperLimit(0) << std::endl; std::cout << " expected limit (-1 sig) " << r->GetExpectedUpperLimit(-1) << std::endl; std::cout << " expected limit (+1 sig) " << r->GetExpectedUpperLimit(1) << std::endl; std::cout << " expected limit (-2 sig) " << r->GetExpectedUpperLimit(-2) << std::endl; std::cout << " expected limit (+2 sig) " << r->GetExpectedUpperLimit(2) << std::endl; // write result in a file if (r != NULL && mWriteResult) { // write to a file the results const char * calcType = (calculatorType == 0) ? "Freq" : (calculatorType == 1) ? "Hybr" : "Asym"; const char * limitType = (useCLs) ? "CLs" : "Cls+b"; const char * scanType = (npoints < 0) ? "auto" : "grid"; TString resultFileName = TString::Format("%s_%s_%s_ts%d_",calcType,limitType,scanType,testStatType); //strip the / from the filename if (mMassValue.size()>0) { resultFileName += mMassValue.c_str(); resultFileName += "_"; } TString name = fileNameBase; name.Replace(0, name.Last('/')+1, ""); resultFileName += name; TFile * fileOut = new TFile(resultFileName,"RECREATE"); r->Write(); fileOut->Close(); } // plot the result ( p values vs scan points) std::string typeName = ""; if (calculatorType == 0 ) typeName = "Frequentist"; if (calculatorType == 1 ) typeName = "Hybrid"; else if (calculatorType == 2 ) { typeName = "Asymptotic"; mPlotHypoTestResult = false; } const char * resultName = r->GetName(); TString plotTitle = TString::Format("%s CL Scan for workspace %s",typeName.c_str(),resultName); HypoTestInverterPlot *plot = new HypoTestInverterPlot("HTI_Result_Plot",plotTitle,r); plot->Draw("CLb 2CL"); // plot all and Clb const int nEntries = r->ArraySize(); // plot test statistics distributions for the two hypothesis if (mPlotHypoTestResult) { TCanvas * c2 = new TCanvas(); if (nEntries > 1) { int ny = TMath::CeilNint( sqrt(nEntries) ); int nx = TMath::CeilNint(double(nEntries)/ny); c2->Divide( nx,ny); } for (int i=0; i<nEntries; i++) { if (nEntries > 1) c2->cd(i+1); SamplingDistPlot * pl = plot->MakeTestStatPlot(i); pl->SetLogYaxis(true); pl->Draw(); } } } // internal routine to run the inverter HypoTestInverterResult * RooStats::HypoTestInvTool::RunInverter(RooWorkspace * w, const char * modelSBName, const char * modelBName, const char * dataName, int type, int testStatType, bool useCLs, int npoints, double poimin, double poimax, int ntoys, bool useNumberCounting, const char * nuisPriorName ){ std::cout << "Running HypoTestInverter on the workspace " << w->GetName() << std::endl; w->Print(); RooAbsData * data = w->data(dataName); if (!data) { Error("StandardHypoTestDemo","Not existing data %s",dataName); return 0; } else std::cout << "Using data set " << dataName << std::endl; if (mUseVectorStore) { RooAbsData::defaultStorageType = RooAbsData::Vector; data->convertToVectorStore() ; } // get models from WS // get the modelConfig out of the file ModelConfig* bModel = (ModelConfig*) w->obj(modelBName); ModelConfig* sbModel = (ModelConfig*) w->obj(modelSBName); if (!sbModel) { Error("StandardHypoTestDemo","Not existing ModelConfig %s",modelSBName); return 0; } // check the model if (!sbModel->GetPdf()) { Error("StandardHypoTestDemo","Model %s has no pdf ",modelSBName); return 0; } if (!sbModel->GetParametersOfInterest()) { Error("StandardHypoTestDemo","Model %s has no poi ",modelSBName); return 0; } if (!sbModel->GetObservables()) { Error("StandardHypoTestInvDemo","Model %s has no observables ",modelSBName); return 0; } if (!sbModel->GetSnapshot() ) { Info("StandardHypoTestInvDemo","Model %s has no snapshot - make one using model poi",modelSBName); sbModel->SetSnapshot( *sbModel->GetParametersOfInterest() ); } // case of no systematics // remove nuisance parameters from model if (noSystematics) { const RooArgSet * nuisPar = sbModel->GetNuisanceParameters(); if (nuisPar && nuisPar->getSize() > 0) { std::cout << "StandardHypoTestInvDemo" << " - Switch off all systematics by setting them constant to their initial values" << std::endl; RooStats::SetAllConstant(*nuisPar); } if (bModel) { const RooArgSet * bnuisPar = bModel->GetNuisanceParameters(); if (bnuisPar) RooStats::SetAllConstant(*bnuisPar); } } if (!bModel || bModel == sbModel) { Info("StandardHypoTestInvDemo","The background model %s does not exist",modelBName); Info("StandardHypoTestInvDemo","Copy it from ModelConfig %s and set POI to zero",modelSBName); bModel = (ModelConfig*) sbModel->Clone(); bModel->SetName(TString(modelSBName)+TString("_with_poi_0")); RooRealVar * var = dynamic_cast<RooRealVar*>(bModel->GetParametersOfInterest()->first()); if (!var) return 0; double oldval = var->getVal(); var->setVal(0); bModel->SetSnapshot( RooArgSet(*var) ); var->setVal(oldval); } else { if (!bModel->GetSnapshot() ) { Info("StandardHypoTestInvDemo","Model %s has no snapshot - make one using model poi and 0 values ",modelBName); RooRealVar * var = dynamic_cast<RooRealVar*>(bModel->GetParametersOfInterest()->first()); if (var) { double oldval = var->getVal(); var->setVal(0); bModel->SetSnapshot( RooArgSet(*var) ); var->setVal(oldval); } else { Error("StandardHypoTestInvDemo","Model %s has no valid poi",modelBName); return 0; } } } // run first a data fit const RooArgSet * poiSet = sbModel->GetParametersOfInterest(); RooRealVar *poi = (RooRealVar*)poiSet->first(); std::cout << "StandardHypoTestInvDemo : POI initial value: " << poi->GetName() << " = " << poi->getVal() << std::endl; // fit the data first (need to use constraint ) Info( "StandardHypoTestInvDemo"," Doing a first fit to the observed data "); if (minimizerType.size()==0) minimizerType = ROOT::Math::MinimizerOptions::DefaultMinimizerType(); else ROOT::Math::MinimizerOptions::SetDefaultMinimizer(minimizerType.c_str()); Info("StandardHypoTestInvDemo","Using %s as minimizer for computing the test statistic", ROOT::Math::MinimizerOptions::DefaultMinimizerType().c_str() ); RooArgSet constrainParams; if (sbModel->GetNuisanceParameters() ) constrainParams.add(*sbModel->GetNuisanceParameters()); RooStats::RemoveConstantParameters(&constrainParams); TStopwatch tw; tw.Start(); RooFitResult * fitres = sbModel->GetPdf()->fitTo(*data,InitialHesse(false), Hesse(false), Minimizer(minimizerType.c_str(),"Migrad"), Strategy(0), PrintLevel(mPrintLevel+1), Constrain(constrainParams), Save(true) ); if (fitres->status() != 0) { Warning("StandardHypoTestInvDemo","Fit to the model failed - try with strategy 1 and perform first an Hesse computation"); fitres = sbModel->GetPdf()->fitTo(*data,InitialHesse(true), Hesse(false),Minimizer(minimizerType.c_str(),"Migrad"), Strategy(1), PrintLevel(mPrintLevel+1), Constrain(constrainParams), Save(true) ); } if (fitres->status() != 0) Warning("StandardHypoTestInvDemo"," Fit still failed - continue anyway....."); double poihat = poi->getVal(); std::cout << "StandardHypoTestInvDemo - Best Fit value : " << poi->GetName() << " = " << poihat << " +/- " << poi->getError() << std::endl; std::cout << "Time for fitting : "; tw.Print(); //save best fit value in the poi snapshot sbModel->SetSnapshot(*sbModel->GetParametersOfInterest()); std::cout << "StandardHypoTestInvo: snapshot of S+B Model " << sbModel->GetName() << " is set to the best fit value" << std::endl; // build test statistics and hypotest calculators for running the inverter SimpleLikelihoodRatioTestStat slrts(*sbModel->GetPdf(),*bModel->GetPdf()); if (sbModel->GetSnapshot()) slrts.SetNullParameters(*sbModel->GetSnapshot()); if (bModel->GetSnapshot()) slrts.SetAltParameters(*bModel->GetSnapshot()); // ratio of profile likelihood - need to pass snapshot for the alt RatioOfProfiledLikelihoodsTestStat ropl(*sbModel->GetPdf(), *bModel->GetPdf(), bModel->GetSnapshot()); ropl.SetSubtractMLE(false); ropl.SetPrintLevel(mPrintLevel); ropl.SetMinimizer(minimizerType.c_str()); ProfileLikelihoodTestStat profll(*sbModel->GetPdf()); if (testStatType == 3) profll.SetOneSided(1); profll.SetMinimizer(minimizerType.c_str()); profll.SetPrintLevel(mPrintLevel); profll.SetReuseNLL(mOptimize); slrts.SetReuseNLL(mOptimize); ropl.SetReuseNLL(mOptimize); if (mOptimize) { profll.SetStrategy(0); ropl.SetStrategy(0); } if (mMaxPoi > 0) poi->setMax(mMaxPoi); // increase limit MaxLikelihoodEstimateTestStat maxll(*sbModel->GetPdf(),*poi); // create the HypoTest calculator class HypoTestCalculatorGeneric * hc = 0; if (type == 0) hc = new FrequentistCalculator(*data, *bModel, *sbModel); else if (type == 1) hc = new HybridCalculator(*data, *bModel, *sbModel); else if (type == 2) hc = new AsymptoticCalculator(*data, *bModel, *sbModel); else { Error("StandardHypoTestInvDemo","Invalid - calculator type = %d supported values are only :\n\t\t\t 0 (Frequentist) , 1 (Hybrid) , 2 (Asymptotic) ",type); return 0; } // set the test statistic TestStatistic * testStat = 0; if (testStatType == 0) testStat = &slrts; if (testStatType == 1) testStat = &ropl; if (testStatType == 2 || testStatType == 3) testStat = &profll; if (testStatType == 4) testStat = &maxll; if (testStat == 0) { Error("StandardHypoTestInvDemo","Invalid - test statistic type = %d supported values are only :\n\t\t\t 0 (SLR) , 1 (Tevatron) , 2 (PLR), 3 (PLR1), 4(MLE)",testStatType); return 0; } ToyMCSampler *toymcs = (ToyMCSampler*)hc->GetTestStatSampler(); if (toymcs) { if (useNumberCounting) toymcs->SetNEventsPerToy(1); toymcs->SetTestStatistic(testStat); if (data->isWeighted() && !mGenerateBinned) { Info("StandardHypoTestInvDemo","Data set is weighted, nentries = %d and sum of weights = %8.1f but toy generation is unbinned - it would be faster to set mGenerateBinned to true\n",data->numEntries(), data->sumEntries()); } toymcs->SetGenerateBinned(mGenerateBinned); toymcs->SetUseMultiGen(mOptimize); if (mGenerateBinned && sbModel->GetObservables()->getSize() > 2) { Warning("StandardHypoTestInvDemo","generate binned is activated but the number of ovservable is %d. Too much memory could be needed for allocating all the bins",sbModel->GetObservables()->getSize() ); } } if (type == 1) { HybridCalculator *hhc = dynamic_cast<HybridCalculator*> (hc); assert(hhc); hhc->SetToys(ntoys,ntoys/mNToysRatio); // can use less ntoys for b hypothesis // remove global observables from ModelConfig (this is probably not needed anymore in 5.32) bModel->SetGlobalObservables(RooArgSet() ); sbModel->SetGlobalObservables(RooArgSet() ); // check for nuisance prior pdf in case of nuisance parameters if (bModel->GetNuisanceParameters() || sbModel->GetNuisanceParameters() ) { RooAbsPdf * nuisPdf = 0; if (nuisPriorName) nuisPdf = w->pdf(nuisPriorName); // use prior defined first in bModel (then in SbModel) if (!nuisPdf) { Info("StandardHypoTestInvDemo","No nuisance pdf given for the HybridCalculator - try to deduce pdf from the model"); if (bModel->GetPdf() && bModel->GetObservables() ) nuisPdf = RooStats::MakeNuisancePdf(*bModel,"nuisancePdf_bmodel"); else nuisPdf = RooStats::MakeNuisancePdf(*sbModel,"nuisancePdf_sbmodel"); } if (!nuisPdf ) { if (bModel->GetPriorPdf()) { nuisPdf = bModel->GetPriorPdf(); Info("StandardHypoTestInvDemo","No nuisance pdf given - try to use %s that is defined as a prior pdf in the B model",nuisPdf->GetName()); } else { Error("StandardHypoTestInvDemo","Cannnot run Hybrid calculator because no prior on the nuisance parameter is specified or can be derived"); return 0; } } assert(nuisPdf); Info("StandardHypoTestInvDemo","Using as nuisance Pdf ... " ); nuisPdf->Print(); const RooArgSet * nuisParams = (bModel->GetNuisanceParameters() ) ? bModel->GetNuisanceParameters() : sbModel->GetNuisanceParameters(); RooArgSet * np = nuisPdf->getObservables(*nuisParams); if (np->getSize() == 0) { Warning("StandardHypoTestInvDemo","Prior nuisance does not depend on nuisance parameters. They will be smeared in their full range"); } delete np; hhc->ForcePriorNuisanceAlt(*nuisPdf); hhc->ForcePriorNuisanceNull(*nuisPdf); } } else if (type == 2) { ((AsymptoticCalculator*) hc)->SetOneSided(true); // ((AsymptoticCalculator*) hc)->SetQTilde(true); // not needed should be done automatically now ((AsymptoticCalculator*) hc)->SetPrintLevel(mPrintLevel+1); } else if (type != 2) ((FrequentistCalculator*) hc)->SetToys(ntoys,ntoys/mNToysRatio); // Get the result RooMsgService::instance().getStream(1).removeTopic(RooFit::NumIntegration); HypoTestInverter calc(*hc); calc.SetConfidenceLevel(0.95); calc.UseCLs(useCLs); calc.SetVerbose(true); // can speed up using proof-lite if (mUseProof && mNWorkers > 1) { ProofConfig pc(*w, mNWorkers, "", kFALSE); toymcs->SetProofConfig(&pc); // enable proof } if (npoints > 0) { if (poimin > poimax) { // if no min/max given scan between MLE and +4 sigma poimin = int(poihat); poimax = int(poihat + 4 * poi->getError()); } std::cout << "Doing a fixed scan in interval : " << poimin << " , " << poimax << std::endl; calc.SetFixedScan(npoints,poimin,poimax); } else { //poi->setMax(10*int( (poihat+ 10 *poi->getError() )/10 ) ); std::cout << "Doing an automatic scan in interval : " << poi->getMin() << " , " << poi->getMax() << std::endl; } tw.Start(); HypoTestInverterResult * r = calc.GetInterval(); std::cout << "Time to perform limit scan \n"; tw.Print(); if (mRebuild) { calc.SetCloseProof(1); tw.Start(); SamplingDistribution * limDist = calc.GetUpperLimitDistribution(true,mNToyToRebuild); std::cout << "Time to rebuild distributions " << std::endl; tw.Print(); if (limDist) { std::cout << "expected up limit " << limDist->InverseCDF(0.5) << " +/- " << limDist->InverseCDF(0.16) << " " << limDist->InverseCDF(0.84) << "\n"; //update r to a new updated result object containing the rebuilt expected p-values distributions // (it will not recompute the expected limit) if (r) delete r; // need to delete previous object since GetInterval will return a cloned copy r = calc.GetInterval(); } else std::cout << "ERROR : failed to re-build distributions " << std::endl; } return r; } void ReadResult(const char * fileName, const char * resultName="", bool useCLs=true) { // read a previous stored result from a file given the result name StandardHypoTestInvDemo(fileName, resultName,"","","",0,0,useCLs); } #ifdef USE_AS_MAIN int main() { StandardHypoTestInvDemo(); } #endif StandardHypoTestInvDemo.C:1 StandardHypoTestInvDemo.C:2 StandardHypoTestInvDemo.C:3 StandardHypoTestInvDemo.C:4 StandardHypoTestInvDemo.C:5 StandardHypoTestInvDemo.C:6 StandardHypoTestInvDemo.C:7 StandardHypoTestInvDemo.C:8 StandardHypoTestInvDemo.C:9 StandardHypoTestInvDemo.C:10 StandardHypoTestInvDemo.C:11 StandardHypoTestInvDemo.C:12 StandardHypoTestInvDemo.C:13 StandardHypoTestInvDemo.C:14 StandardHypoTestInvDemo.C:15 StandardHypoTestInvDemo.C:16 StandardHypoTestInvDemo.C:17 StandardHypoTestInvDemo.C:18 StandardHypoTestInvDemo.C:19 StandardHypoTestInvDemo.C:20 StandardHypoTestInvDemo.C:21 StandardHypoTestInvDemo.C:22 StandardHypoTestInvDemo.C:23 StandardHypoTestInvDemo.C:24 StandardHypoTestInvDemo.C:25 StandardHypoTestInvDemo.C:26 StandardHypoTestInvDemo.C:27 StandardHypoTestInvDemo.C:28 StandardHypoTestInvDemo.C:29 StandardHypoTestInvDemo.C:30 StandardHypoTestInvDemo.C:31 StandardHypoTestInvDemo.C:32 StandardHypoTestInvDemo.C:33 StandardHypoTestInvDemo.C:34 StandardHypoTestInvDemo.C:35 StandardHypoTestInvDemo.C:36 StandardHypoTestInvDemo.C:37 StandardHypoTestInvDemo.C:38 StandardHypoTestInvDemo.C:39 StandardHypoTestInvDemo.C:40 StandardHypoTestInvDemo.C:41 StandardHypoTestInvDemo.C:42 StandardHypoTestInvDemo.C:43 StandardHypoTestInvDemo.C:44 StandardHypoTestInvDemo.C:45 StandardHypoTestInvDemo.C:46 StandardHypoTestInvDemo.C:47 StandardHypoTestInvDemo.C:48 StandardHypoTestInvDemo.C:49 StandardHypoTestInvDemo.C:50 StandardHypoTestInvDemo.C:51 StandardHypoTestInvDemo.C:52 StandardHypoTestInvDemo.C:53 StandardHypoTestInvDemo.C:54 StandardHypoTestInvDemo.C:55 StandardHypoTestInvDemo.C:56 StandardHypoTestInvDemo.C:57 StandardHypoTestInvDemo.C:58 StandardHypoTestInvDemo.C:59 StandardHypoTestInvDemo.C:60 StandardHypoTestInvDemo.C:61 StandardHypoTestInvDemo.C:62 StandardHypoTestInvDemo.C:63 StandardHypoTestInvDemo.C:64 StandardHypoTestInvDemo.C:65 StandardHypoTestInvDemo.C:66 StandardHypoTestInvDemo.C:67 StandardHypoTestInvDemo.C:68 StandardHypoTestInvDemo.C:69 StandardHypoTestInvDemo.C:70 StandardHypoTestInvDemo.C:71 StandardHypoTestInvDemo.C:72 StandardHypoTestInvDemo.C:73 StandardHypoTestInvDemo.C:74 StandardHypoTestInvDemo.C:75 StandardHypoTestInvDemo.C:76 StandardHypoTestInvDemo.C:77 StandardHypoTestInvDemo.C:78 StandardHypoTestInvDemo.C:79 StandardHypoTestInvDemo.C:80 StandardHypoTestInvDemo.C:81 StandardHypoTestInvDemo.C:82 StandardHypoTestInvDemo.C:83 StandardHypoTestInvDemo.C:84 StandardHypoTestInvDemo.C:85 StandardHypoTestInvDemo.C:86 StandardHypoTestInvDemo.C:87 StandardHypoTestInvDemo.C:88 StandardHypoTestInvDemo.C:89 StandardHypoTestInvDemo.C:90 StandardHypoTestInvDemo.C:91 StandardHypoTestInvDemo.C:92 StandardHypoTestInvDemo.C:93 StandardHypoTestInvDemo.C:94 StandardHypoTestInvDemo.C:95 StandardHypoTestInvDemo.C:96 StandardHypoTestInvDemo.C:97 StandardHypoTestInvDemo.C:98 StandardHypoTestInvDemo.C:99 StandardHypoTestInvDemo.C:100 StandardHypoTestInvDemo.C:101 StandardHypoTestInvDemo.C:102 StandardHypoTestInvDemo.C:103 StandardHypoTestInvDemo.C:104 StandardHypoTestInvDemo.C:105 StandardHypoTestInvDemo.C:106 StandardHypoTestInvDemo.C:107 StandardHypoTestInvDemo.C:108 StandardHypoTestInvDemo.C:109 StandardHypoTestInvDemo.C:110 StandardHypoTestInvDemo.C:111 StandardHypoTestInvDemo.C:112 StandardHypoTestInvDemo.C:113 StandardHypoTestInvDemo.C:114 StandardHypoTestInvDemo.C:115 StandardHypoTestInvDemo.C:116 StandardHypoTestInvDemo.C:117 StandardHypoTestInvDemo.C:118 StandardHypoTestInvDemo.C:119 StandardHypoTestInvDemo.C:120 StandardHypoTestInvDemo.C:121 StandardHypoTestInvDemo.C:122 StandardHypoTestInvDemo.C:123 StandardHypoTestInvDemo.C:124 StandardHypoTestInvDemo.C:125 StandardHypoTestInvDemo.C:126 StandardHypoTestInvDemo.C:127 StandardHypoTestInvDemo.C:128 StandardHypoTestInvDemo.C:129 StandardHypoTestInvDemo.C:130 StandardHypoTestInvDemo.C:131 StandardHypoTestInvDemo.C:132 StandardHypoTestInvDemo.C:133 StandardHypoTestInvDemo.C:134 StandardHypoTestInvDemo.C:135 StandardHypoTestInvDemo.C:136 StandardHypoTestInvDemo.C:137 StandardHypoTestInvDemo.C:138 StandardHypoTestInvDemo.C:139 StandardHypoTestInvDemo.C:140 StandardHypoTestInvDemo.C:141 StandardHypoTestInvDemo.C:142 StandardHypoTestInvDemo.C:143 StandardHypoTestInvDemo.C:144 StandardHypoTestInvDemo.C:145 StandardHypoTestInvDemo.C:146 StandardHypoTestInvDemo.C:147 StandardHypoTestInvDemo.C:148 StandardHypoTestInvDemo.C:149 StandardHypoTestInvDemo.C:150 StandardHypoTestInvDemo.C:151 StandardHypoTestInvDemo.C:152 StandardHypoTestInvDemo.C:153 StandardHypoTestInvDemo.C:154 StandardHypoTestInvDemo.C:155 StandardHypoTestInvDemo.C:156 StandardHypoTestInvDemo.C:157 StandardHypoTestInvDemo.C:158 StandardHypoTestInvDemo.C:159 StandardHypoTestInvDemo.C:160 StandardHypoTestInvDemo.C:161 StandardHypoTestInvDemo.C:162 StandardHypoTestInvDemo.C:163 StandardHypoTestInvDemo.C:164 StandardHypoTestInvDemo.C:165 StandardHypoTestInvDemo.C:166 StandardHypoTestInvDemo.C:167 StandardHypoTestInvDemo.C:168 StandardHypoTestInvDemo.C:169 StandardHypoTestInvDemo.C:170 StandardHypoTestInvDemo.C:171 StandardHypoTestInvDemo.C:172 StandardHypoTestInvDemo.C:173 StandardHypoTestInvDemo.C:174 StandardHypoTestInvDemo.C:175 StandardHypoTestInvDemo.C:176 StandardHypoTestInvDemo.C:177 StandardHypoTestInvDemo.C:178 StandardHypoTestInvDemo.C:179 StandardHypoTestInvDemo.C:180 StandardHypoTestInvDemo.C:181 StandardHypoTestInvDemo.C:182 StandardHypoTestInvDemo.C:183 StandardHypoTestInvDemo.C:184 StandardHypoTestInvDemo.C:185 StandardHypoTestInvDemo.C:186 StandardHypoTestInvDemo.C:187 StandardHypoTestInvDemo.C:188 StandardHypoTestInvDemo.C:189 StandardHypoTestInvDemo.C:190 StandardHypoTestInvDemo.C:191 StandardHypoTestInvDemo.C:192 StandardHypoTestInvDemo.C:193 StandardHypoTestInvDemo.C:194 StandardHypoTestInvDemo.C:195 StandardHypoTestInvDemo.C:196 StandardHypoTestInvDemo.C:197 StandardHypoTestInvDemo.C:198 StandardHypoTestInvDemo.C:199 StandardHypoTestInvDemo.C:200 StandardHypoTestInvDemo.C:201 StandardHypoTestInvDemo.C:202 StandardHypoTestInvDemo.C:203 StandardHypoTestInvDemo.C:204 StandardHypoTestInvDemo.C:205 StandardHypoTestInvDemo.C:206 StandardHypoTestInvDemo.C:207 StandardHypoTestInvDemo.C:208 StandardHypoTestInvDemo.C:209 StandardHypoTestInvDemo.C:210 StandardHypoTestInvDemo.C:211 StandardHypoTestInvDemo.C:212 StandardHypoTestInvDemo.C:213 StandardHypoTestInvDemo.C:214 StandardHypoTestInvDemo.C:215 StandardHypoTestInvDemo.C:216 StandardHypoTestInvDemo.C:217 StandardHypoTestInvDemo.C:218 StandardHypoTestInvDemo.C:219 StandardHypoTestInvDemo.C:220 StandardHypoTestInvDemo.C:221 StandardHypoTestInvDemo.C:222 StandardHypoTestInvDemo.C:223 StandardHypoTestInvDemo.C:224 StandardHypoTestInvDemo.C:225 StandardHypoTestInvDemo.C:226 StandardHypoTestInvDemo.C:227 StandardHypoTestInvDemo.C:228 StandardHypoTestInvDemo.C:229 StandardHypoTestInvDemo.C:230 StandardHypoTestInvDemo.C:231 StandardHypoTestInvDemo.C:232 StandardHypoTestInvDemo.C:233 StandardHypoTestInvDemo.C:234 StandardHypoTestInvDemo.C:235 StandardHypoTestInvDemo.C:236 StandardHypoTestInvDemo.C:237 StandardHypoTestInvDemo.C:238 StandardHypoTestInvDemo.C:239 StandardHypoTestInvDemo.C:240 StandardHypoTestInvDemo.C:241 StandardHypoTestInvDemo.C:242 StandardHypoTestInvDemo.C:243 StandardHypoTestInvDemo.C:244 StandardHypoTestInvDemo.C:245 StandardHypoTestInvDemo.C:246 StandardHypoTestInvDemo.C:247 StandardHypoTestInvDemo.C:248 StandardHypoTestInvDemo.C:249 StandardHypoTestInvDemo.C:250 StandardHypoTestInvDemo.C:251 StandardHypoTestInvDemo.C:252 StandardHypoTestInvDemo.C:253 StandardHypoTestInvDemo.C:254 StandardHypoTestInvDemo.C:255 StandardHypoTestInvDemo.C:256 StandardHypoTestInvDemo.C:257 StandardHypoTestInvDemo.C:258 StandardHypoTestInvDemo.C:259 StandardHypoTestInvDemo.C:260 StandardHypoTestInvDemo.C:261 StandardHypoTestInvDemo.C:262 StandardHypoTestInvDemo.C:263 StandardHypoTestInvDemo.C:264 StandardHypoTestInvDemo.C:265 StandardHypoTestInvDemo.C:266 StandardHypoTestInvDemo.C:267 StandardHypoTestInvDemo.C:268 StandardHypoTestInvDemo.C:269 StandardHypoTestInvDemo.C:270 StandardHypoTestInvDemo.C:271 StandardHypoTestInvDemo.C:272 StandardHypoTestInvDemo.C:273 StandardHypoTestInvDemo.C:274 StandardHypoTestInvDemo.C:275 StandardHypoTestInvDemo.C:276 StandardHypoTestInvDemo.C:277 StandardHypoTestInvDemo.C:278 StandardHypoTestInvDemo.C:279 StandardHypoTestInvDemo.C:280 StandardHypoTestInvDemo.C:281 StandardHypoTestInvDemo.C:282 StandardHypoTestInvDemo.C:283 StandardHypoTestInvDemo.C:284 StandardHypoTestInvDemo.C:285 StandardHypoTestInvDemo.C:286 StandardHypoTestInvDemo.C:287 StandardHypoTestInvDemo.C:288 StandardHypoTestInvDemo.C:289 StandardHypoTestInvDemo.C:290 StandardHypoTestInvDemo.C:291 StandardHypoTestInvDemo.C:292 StandardHypoTestInvDemo.C:293 StandardHypoTestInvDemo.C:294 StandardHypoTestInvDemo.C:295 StandardHypoTestInvDemo.C:296 StandardHypoTestInvDemo.C:297 StandardHypoTestInvDemo.C:298 StandardHypoTestInvDemo.C:299 StandardHypoTestInvDemo.C:300 StandardHypoTestInvDemo.C:301 StandardHypoTestInvDemo.C:302 StandardHypoTestInvDemo.C:303 StandardHypoTestInvDemo.C:304 StandardHypoTestInvDemo.C:305 StandardHypoTestInvDemo.C:306 StandardHypoTestInvDemo.C:307 StandardHypoTestInvDemo.C:308 StandardHypoTestInvDemo.C:309 StandardHypoTestInvDemo.C:310 StandardHypoTestInvDemo.C:311 StandardHypoTestInvDemo.C:312 StandardHypoTestInvDemo.C:313 StandardHypoTestInvDemo.C:314 StandardHypoTestInvDemo.C:315 StandardHypoTestInvDemo.C:316 StandardHypoTestInvDemo.C:317 StandardHypoTestInvDemo.C:318 StandardHypoTestInvDemo.C:319 StandardHypoTestInvDemo.C:320 StandardHypoTestInvDemo.C:321 StandardHypoTestInvDemo.C:322 StandardHypoTestInvDemo.C:323 StandardHypoTestInvDemo.C:324 StandardHypoTestInvDemo.C:325 StandardHypoTestInvDemo.C:326 StandardHypoTestInvDemo.C:327 StandardHypoTestInvDemo.C:328 StandardHypoTestInvDemo.C:329 StandardHypoTestInvDemo.C:330 StandardHypoTestInvDemo.C:331 StandardHypoTestInvDemo.C:332 StandardHypoTestInvDemo.C:333 StandardHypoTestInvDemo.C:334 StandardHypoTestInvDemo.C:335 StandardHypoTestInvDemo.C:336 StandardHypoTestInvDemo.C:337 StandardHypoTestInvDemo.C:338 StandardHypoTestInvDemo.C:339 StandardHypoTestInvDemo.C:340 StandardHypoTestInvDemo.C:341 StandardHypoTestInvDemo.C:342 StandardHypoTestInvDemo.C:343 StandardHypoTestInvDemo.C:344 StandardHypoTestInvDemo.C:345 StandardHypoTestInvDemo.C:346 StandardHypoTestInvDemo.C:347 StandardHypoTestInvDemo.C:348 StandardHypoTestInvDemo.C:349 StandardHypoTestInvDemo.C:350 StandardHypoTestInvDemo.C:351 StandardHypoTestInvDemo.C:352 StandardHypoTestInvDemo.C:353 StandardHypoTestInvDemo.C:354 StandardHypoTestInvDemo.C:355 StandardHypoTestInvDemo.C:356 StandardHypoTestInvDemo.C:357 StandardHypoTestInvDemo.C:358 StandardHypoTestInvDemo.C:359 StandardHypoTestInvDemo.C:360 StandardHypoTestInvDemo.C:361 StandardHypoTestInvDemo.C:362 StandardHypoTestInvDemo.C:363 StandardHypoTestInvDemo.C:364 StandardHypoTestInvDemo.C:365 StandardHypoTestInvDemo.C:366 StandardHypoTestInvDemo.C:367 StandardHypoTestInvDemo.C:368 StandardHypoTestInvDemo.C:369 StandardHypoTestInvDemo.C:370 StandardHypoTestInvDemo.C:371 StandardHypoTestInvDemo.C:372 StandardHypoTestInvDemo.C:373 StandardHypoTestInvDemo.C:374 StandardHypoTestInvDemo.C:375 StandardHypoTestInvDemo.C:376 StandardHypoTestInvDemo.C:377 StandardHypoTestInvDemo.C:378 StandardHypoTestInvDemo.C:379 StandardHypoTestInvDemo.C:380 StandardHypoTestInvDemo.C:381 StandardHypoTestInvDemo.C:382 StandardHypoTestInvDemo.C:383 StandardHypoTestInvDemo.C:384 StandardHypoTestInvDemo.C:385 StandardHypoTestInvDemo.C:386 StandardHypoTestInvDemo.C:387 StandardHypoTestInvDemo.C:388 StandardHypoTestInvDemo.C:389 StandardHypoTestInvDemo.C:390 StandardHypoTestInvDemo.C:391 StandardHypoTestInvDemo.C:392 StandardHypoTestInvDemo.C:393 StandardHypoTestInvDemo.C:394 StandardHypoTestInvDemo.C:395 StandardHypoTestInvDemo.C:396 StandardHypoTestInvDemo.C:397 StandardHypoTestInvDemo.C:398 StandardHypoTestInvDemo.C:399 StandardHypoTestInvDemo.C:400 StandardHypoTestInvDemo.C:401 StandardHypoTestInvDemo.C:402 StandardHypoTestInvDemo.C:403 StandardHypoTestInvDemo.C:404 StandardHypoTestInvDemo.C:405 StandardHypoTestInvDemo.C:406 StandardHypoTestInvDemo.C:407 StandardHypoTestInvDemo.C:408 StandardHypoTestInvDemo.C:409 StandardHypoTestInvDemo.C:410 StandardHypoTestInvDemo.C:411 StandardHypoTestInvDemo.C:412 StandardHypoTestInvDemo.C:413 StandardHypoTestInvDemo.C:414 StandardHypoTestInvDemo.C:415 StandardHypoTestInvDemo.C:416 StandardHypoTestInvDemo.C:417 StandardHypoTestInvDemo.C:418 StandardHypoTestInvDemo.C:419 StandardHypoTestInvDemo.C:420 StandardHypoTestInvDemo.C:421 StandardHypoTestInvDemo.C:422 StandardHypoTestInvDemo.C:423 StandardHypoTestInvDemo.C:424 StandardHypoTestInvDemo.C:425 StandardHypoTestInvDemo.C:426 StandardHypoTestInvDemo.C:427 StandardHypoTestInvDemo.C:428 StandardHypoTestInvDemo.C:429 StandardHypoTestInvDemo.C:430 StandardHypoTestInvDemo.C:431 StandardHypoTestInvDemo.C:432 StandardHypoTestInvDemo.C:433 StandardHypoTestInvDemo.C:434 StandardHypoTestInvDemo.C:435 StandardHypoTestInvDemo.C:436 StandardHypoTestInvDemo.C:437 StandardHypoTestInvDemo.C:438 StandardHypoTestInvDemo.C:439 StandardHypoTestInvDemo.C:440 StandardHypoTestInvDemo.C:441 StandardHypoTestInvDemo.C:442 StandardHypoTestInvDemo.C:443 StandardHypoTestInvDemo.C:444 StandardHypoTestInvDemo.C:445 StandardHypoTestInvDemo.C:446 StandardHypoTestInvDemo.C:447 StandardHypoTestInvDemo.C:448 StandardHypoTestInvDemo.C:449 StandardHypoTestInvDemo.C:450 StandardHypoTestInvDemo.C:451 StandardHypoTestInvDemo.C:452 StandardHypoTestInvDemo.C:453 StandardHypoTestInvDemo.C:454 StandardHypoTestInvDemo.C:455 StandardHypoTestInvDemo.C:456 StandardHypoTestInvDemo.C:457 StandardHypoTestInvDemo.C:458 StandardHypoTestInvDemo.C:459 StandardHypoTestInvDemo.C:460 StandardHypoTestInvDemo.C:461 StandardHypoTestInvDemo.C:462 StandardHypoTestInvDemo.C:463 StandardHypoTestInvDemo.C:464 StandardHypoTestInvDemo.C:465 StandardHypoTestInvDemo.C:466 StandardHypoTestInvDemo.C:467 StandardHypoTestInvDemo.C:468 StandardHypoTestInvDemo.C:469 StandardHypoTestInvDemo.C:470 StandardHypoTestInvDemo.C:471 StandardHypoTestInvDemo.C:472 StandardHypoTestInvDemo.C:473 StandardHypoTestInvDemo.C:474 StandardHypoTestInvDemo.C:475 StandardHypoTestInvDemo.C:476 StandardHypoTestInvDemo.C:477 StandardHypoTestInvDemo.C:478 StandardHypoTestInvDemo.C:479 StandardHypoTestInvDemo.C:480 StandardHypoTestInvDemo.C:481 StandardHypoTestInvDemo.C:482 StandardHypoTestInvDemo.C:483 StandardHypoTestInvDemo.C:484 StandardHypoTestInvDemo.C:485 StandardHypoTestInvDemo.C:486 StandardHypoTestInvDemo.C:487 StandardHypoTestInvDemo.C:488 StandardHypoTestInvDemo.C:489 StandardHypoTestInvDemo.C:490 StandardHypoTestInvDemo.C:491 StandardHypoTestInvDemo.C:492 StandardHypoTestInvDemo.C:493 StandardHypoTestInvDemo.C:494 StandardHypoTestInvDemo.C:495 StandardHypoTestInvDemo.C:496 StandardHypoTestInvDemo.C:497 StandardHypoTestInvDemo.C:498 StandardHypoTestInvDemo.C:499 StandardHypoTestInvDemo.C:500 StandardHypoTestInvDemo.C:501 StandardHypoTestInvDemo.C:502 StandardHypoTestInvDemo.C:503 StandardHypoTestInvDemo.C:504 StandardHypoTestInvDemo.C:505 StandardHypoTestInvDemo.C:506 StandardHypoTestInvDemo.C:507 StandardHypoTestInvDemo.C:508 StandardHypoTestInvDemo.C:509 StandardHypoTestInvDemo.C:510 StandardHypoTestInvDemo.C:511 StandardHypoTestInvDemo.C:512 StandardHypoTestInvDemo.C:513 StandardHypoTestInvDemo.C:514 StandardHypoTestInvDemo.C:515 StandardHypoTestInvDemo.C:516 StandardHypoTestInvDemo.C:517 StandardHypoTestInvDemo.C:518 StandardHypoTestInvDemo.C:519 StandardHypoTestInvDemo.C:520 StandardHypoTestInvDemo.C:521 StandardHypoTestInvDemo.C:522 StandardHypoTestInvDemo.C:523 StandardHypoTestInvDemo.C:524 StandardHypoTestInvDemo.C:525 StandardHypoTestInvDemo.C:526 StandardHypoTestInvDemo.C:527 StandardHypoTestInvDemo.C:528 StandardHypoTestInvDemo.C:529 StandardHypoTestInvDemo.C:530 StandardHypoTestInvDemo.C:531 StandardHypoTestInvDemo.C:532 StandardHypoTestInvDemo.C:533 StandardHypoTestInvDemo.C:534 StandardHypoTestInvDemo.C:535 StandardHypoTestInvDemo.C:536 StandardHypoTestInvDemo.C:537 StandardHypoTestInvDemo.C:538 StandardHypoTestInvDemo.C:539 StandardHypoTestInvDemo.C:540 StandardHypoTestInvDemo.C:541 StandardHypoTestInvDemo.C:542 StandardHypoTestInvDemo.C:543 StandardHypoTestInvDemo.C:544 StandardHypoTestInvDemo.C:545 StandardHypoTestInvDemo.C:546 StandardHypoTestInvDemo.C:547 StandardHypoTestInvDemo.C:548 StandardHypoTestInvDemo.C:549 StandardHypoTestInvDemo.C:550 StandardHypoTestInvDemo.C:551 StandardHypoTestInvDemo.C:552 StandardHypoTestInvDemo.C:553 StandardHypoTestInvDemo.C:554 StandardHypoTestInvDemo.C:555 StandardHypoTestInvDemo.C:556 StandardHypoTestInvDemo.C:557 StandardHypoTestInvDemo.C:558 StandardHypoTestInvDemo.C:559 StandardHypoTestInvDemo.C:560 StandardHypoTestInvDemo.C:561 StandardHypoTestInvDemo.C:562 StandardHypoTestInvDemo.C:563 StandardHypoTestInvDemo.C:564 StandardHypoTestInvDemo.C:565 StandardHypoTestInvDemo.C:566 StandardHypoTestInvDemo.C:567 StandardHypoTestInvDemo.C:568 StandardHypoTestInvDemo.C:569 StandardHypoTestInvDemo.C:570 StandardHypoTestInvDemo.C:571 StandardHypoTestInvDemo.C:572 StandardHypoTestInvDemo.C:573 StandardHypoTestInvDemo.C:574 StandardHypoTestInvDemo.C:575 StandardHypoTestInvDemo.C:576 StandardHypoTestInvDemo.C:577 StandardHypoTestInvDemo.C:578 StandardHypoTestInvDemo.C:579 StandardHypoTestInvDemo.C:580 StandardHypoTestInvDemo.C:581 StandardHypoTestInvDemo.C:582 StandardHypoTestInvDemo.C:583 StandardHypoTestInvDemo.C:584 StandardHypoTestInvDemo.C:585 StandardHypoTestInvDemo.C:586 StandardHypoTestInvDemo.C:587 StandardHypoTestInvDemo.C:588 StandardHypoTestInvDemo.C:589 StandardHypoTestInvDemo.C:590 StandardHypoTestInvDemo.C:591 StandardHypoTestInvDemo.C:592 StandardHypoTestInvDemo.C:593 StandardHypoTestInvDemo.C:594 StandardHypoTestInvDemo.C:595 StandardHypoTestInvDemo.C:596 StandardHypoTestInvDemo.C:597 StandardHypoTestInvDemo.C:598 StandardHypoTestInvDemo.C:599 StandardHypoTestInvDemo.C:600 StandardHypoTestInvDemo.C:601 StandardHypoTestInvDemo.C:602 StandardHypoTestInvDemo.C:603 StandardHypoTestInvDemo.C:604 StandardHypoTestInvDemo.C:605 StandardHypoTestInvDemo.C:606 StandardHypoTestInvDemo.C:607 StandardHypoTestInvDemo.C:608 StandardHypoTestInvDemo.C:609 StandardHypoTestInvDemo.C:610 StandardHypoTestInvDemo.C:611 StandardHypoTestInvDemo.C:612 StandardHypoTestInvDemo.C:613 StandardHypoTestInvDemo.C:614 StandardHypoTestInvDemo.C:615 StandardHypoTestInvDemo.C:616 StandardHypoTestInvDemo.C:617 StandardHypoTestInvDemo.C:618 StandardHypoTestInvDemo.C:619 StandardHypoTestInvDemo.C:620 StandardHypoTestInvDemo.C:621 StandardHypoTestInvDemo.C:622 StandardHypoTestInvDemo.C:623 StandardHypoTestInvDemo.C:624 StandardHypoTestInvDemo.C:625 StandardHypoTestInvDemo.C:626 StandardHypoTestInvDemo.C:627 StandardHypoTestInvDemo.C:628 StandardHypoTestInvDemo.C:629 StandardHypoTestInvDemo.C:630 StandardHypoTestInvDemo.C:631 StandardHypoTestInvDemo.C:632 StandardHypoTestInvDemo.C:633 StandardHypoTestInvDemo.C:634 StandardHypoTestInvDemo.C:635 StandardHypoTestInvDemo.C:636 StandardHypoTestInvDemo.C:637 StandardHypoTestInvDemo.C:638 StandardHypoTestInvDemo.C:639 StandardHypoTestInvDemo.C:640 StandardHypoTestInvDemo.C:641 StandardHypoTestInvDemo.C:642 StandardHypoTestInvDemo.C:643 StandardHypoTestInvDemo.C:644 StandardHypoTestInvDemo.C:645 StandardHypoTestInvDemo.C:646 StandardHypoTestInvDemo.C:647 StandardHypoTestInvDemo.C:648 StandardHypoTestInvDemo.C:649 StandardHypoTestInvDemo.C:650 StandardHypoTestInvDemo.C:651 StandardHypoTestInvDemo.C:652 StandardHypoTestInvDemo.C:653 StandardHypoTestInvDemo.C:654 StandardHypoTestInvDemo.C:655 StandardHypoTestInvDemo.C:656 StandardHypoTestInvDemo.C:657 StandardHypoTestInvDemo.C:658 StandardHypoTestInvDemo.C:659 StandardHypoTestInvDemo.C:660 StandardHypoTestInvDemo.C:661 StandardHypoTestInvDemo.C:662 StandardHypoTestInvDemo.C:663 StandardHypoTestInvDemo.C:664 StandardHypoTestInvDemo.C:665 StandardHypoTestInvDemo.C:666 StandardHypoTestInvDemo.C:667 StandardHypoTestInvDemo.C:668 StandardHypoTestInvDemo.C:669 StandardHypoTestInvDemo.C:670 StandardHypoTestInvDemo.C:671 StandardHypoTestInvDemo.C:672 StandardHypoTestInvDemo.C:673 StandardHypoTestInvDemo.C:674 StandardHypoTestInvDemo.C:675 StandardHypoTestInvDemo.C:676 StandardHypoTestInvDemo.C:677 StandardHypoTestInvDemo.C:678 StandardHypoTestInvDemo.C:679 StandardHypoTestInvDemo.C:680 StandardHypoTestInvDemo.C:681 StandardHypoTestInvDemo.C:682 StandardHypoTestInvDemo.C:683 StandardHypoTestInvDemo.C:684 StandardHypoTestInvDemo.C:685 StandardHypoTestInvDemo.C:686 StandardHypoTestInvDemo.C:687 StandardHypoTestInvDemo.C:688 StandardHypoTestInvDemo.C:689 StandardHypoTestInvDemo.C:690 StandardHypoTestInvDemo.C:691 StandardHypoTestInvDemo.C:692 StandardHypoTestInvDemo.C:693 StandardHypoTestInvDemo.C:694 StandardHypoTestInvDemo.C:695 StandardHypoTestInvDemo.C:696 StandardHypoTestInvDemo.C:697 StandardHypoTestInvDemo.C:698 StandardHypoTestInvDemo.C:699 StandardHypoTestInvDemo.C:700 StandardHypoTestInvDemo.C:701 StandardHypoTestInvDemo.C:702 StandardHypoTestInvDemo.C:703 StandardHypoTestInvDemo.C:704 StandardHypoTestInvDemo.C:705 StandardHypoTestInvDemo.C:706 StandardHypoTestInvDemo.C:707 StandardHypoTestInvDemo.C:708 StandardHypoTestInvDemo.C:709 StandardHypoTestInvDemo.C:710 StandardHypoTestInvDemo.C:711 StandardHypoTestInvDemo.C:712 StandardHypoTestInvDemo.C:713 StandardHypoTestInvDemo.C:714 StandardHypoTestInvDemo.C:715 StandardHypoTestInvDemo.C:716 StandardHypoTestInvDemo.C:717 StandardHypoTestInvDemo.C:718 StandardHypoTestInvDemo.C:719 StandardHypoTestInvDemo.C:720 StandardHypoTestInvDemo.C:721 StandardHypoTestInvDemo.C:722 StandardHypoTestInvDemo.C:723 StandardHypoTestInvDemo.C:724 StandardHypoTestInvDemo.C:725 StandardHypoTestInvDemo.C:726 StandardHypoTestInvDemo.C:727 StandardHypoTestInvDemo.C:728 StandardHypoTestInvDemo.C:729 StandardHypoTestInvDemo.C:730 StandardHypoTestInvDemo.C:731 StandardHypoTestInvDemo.C:732 StandardHypoTestInvDemo.C:733 StandardHypoTestInvDemo.C:734 StandardHypoTestInvDemo.C:735 StandardHypoTestInvDemo.C:736 StandardHypoTestInvDemo.C:737 StandardHypoTestInvDemo.C:738 StandardHypoTestInvDemo.C:739 StandardHypoTestInvDemo.C:740 StandardHypoTestInvDemo.C:741 StandardHypoTestInvDemo.C:742 StandardHypoTestInvDemo.C:743 StandardHypoTestInvDemo.C:744 StandardHypoTestInvDemo.C:745 StandardHypoTestInvDemo.C:746 StandardHypoTestInvDemo.C:747 StandardHypoTestInvDemo.C:748 StandardHypoTestInvDemo.C:749 StandardHypoTestInvDemo.C:750 StandardHypoTestInvDemo.C:751 StandardHypoTestInvDemo.C:752 StandardHypoTestInvDemo.C:753 StandardHypoTestInvDemo.C:754 StandardHypoTestInvDemo.C:755 StandardHypoTestInvDemo.C:756 StandardHypoTestInvDemo.C:757 StandardHypoTestInvDemo.C:758 StandardHypoTestInvDemo.C:759 StandardHypoTestInvDemo.C:760 StandardHypoTestInvDemo.C:761 StandardHypoTestInvDemo.C:762 StandardHypoTestInvDemo.C:763 StandardHypoTestInvDemo.C:764 StandardHypoTestInvDemo.C:765 StandardHypoTestInvDemo.C:766 StandardHypoTestInvDemo.C:767 StandardHypoTestInvDemo.C:768 StandardHypoTestInvDemo.C:769 StandardHypoTestInvDemo.C:770 StandardHypoTestInvDemo.C:771 StandardHypoTestInvDemo.C:772 StandardHypoTestInvDemo.C:773 StandardHypoTestInvDemo.C:774 StandardHypoTestInvDemo.C:775 StandardHypoTestInvDemo.C:776 StandardHypoTestInvDemo.C:777 StandardHypoTestInvDemo.C:778 StandardHypoTestInvDemo.C:779 StandardHypoTestInvDemo.C:780 StandardHypoTestInvDemo.C:781 StandardHypoTestInvDemo.C:782 StandardHypoTestInvDemo.C:783 StandardHypoTestInvDemo.C:784 StandardHypoTestInvDemo.C:785 StandardHypoTestInvDemo.C:786 StandardHypoTestInvDemo.C:787 |
|