// grab the initial parameters and errors for making pull distributions: // Take these from a fit file to the data themselves void fillInitialParams(RooArgSet *args, std::map<std::string, std::pair<double,double> > &vals){ TIterator* iter(args->createIterator()); for (TObject *a = iter->Next(); a != 0; a = iter->Next()) { RooRealVar *rrv = dynamic_cast<RooRealVar *>(a); std::string name = rrv->GetName(); std::pair<double,double> valE(rrv->getVal(),rrv->getError()); vals.insert( std::pair<std::string,std::pair<double ,double> > (name,valE)) ; } }
// grab the initial normalization from a datacard converted in workspace // with: scripts/text2workspace.py -b -o model.root datacards/hww-12.1fb.mH125.comb_0j1j2j_shape.txt void fillInitialNorms(RooArgSet *args, std::map<std::string, std::pair<double,double> > &vals, std::string workspace){ TFile *fw_ = TFile::Open(workspace.c_str()); RooWorkspace *ws = (RooWorkspace*)fw_->Get("w"); TIterator* iter(args->createIterator()); for (TObject *a = iter->Next(); a != 0; a = iter->Next()) { RooAbsReal *rar = (RooAbsReal*)ws->obj(a->GetName()); std::string name = rar->GetName(); std::pair<double,double> valE(rar->getVal(),0.0); vals.insert( std::pair<std::string,std::pair<double ,double> > (name,valE)) ; } }