ssize_t proto_encode(const struct proto* proto, char* out, ssize_t length) { if (proto->type != PROTO_DATA) { struct wcontext context; context.p = out; context.e = out + length; if (setjmp(context.error) > 0) { return 0; } wchar(&context, 'd'); wlv(&context, "id", &proto->id); wlv(&context, "key", &proto->key); wlv(&context, "rid", &proto->rid); wstring(&context, "type"); winteger(&context, proto->type); if (proto->type == PROTO_CONFIRM) { wstring(&context, "weight"); winteger(&context, proto->parameters.weight); wstring(&context, "priority"); winteger(&context, proto->parameters.priority); wstring(&context, "hwaddr"); wbstring(&context, &proto->parameters.hwaddr, sizeof(proto->parameters.hwaddr)); } wchar(&context, 'e'); return context.p - out; } else { *out++ = 'p'; memcpy(out, proto->data.value, proto->data.length); return proto->data.length + 1; } }
void makeAndImportDataSets(TFile *fin, RooWorkspace *wspace, RooRealVar &x){ // Get TTrees from input files and fill RooDataSets! //const char *name = x.GetName(); RooRealVar weight("weight","weight",0,100); weight.removeRange(); RooArgSet treevariables(x,weight); // List all branches in the tree and add them as variables TObjArray *branches = (TObjArray*) ((TTree*)fin->Get("data_obs"))->GetListOfBranches(); TIter next(branches); TBranch *br; while ( (br = (TBranch*)next()) ){ const char *brname = br->GetName(); std::cout << brname << std::endl; if ( *brname==*weight.GetName() ) continue; if ( *brname==*x.GetName() ) continue; RooRealVar *vartmp = new RooRealVar(brname,brname,0,1); vartmp->removeRange(); treevariables.add(*vartmp); } // RooRealVar cvar(cutvar.c_str(),cutvar.c_str(),0,100); // cvar.removeRange(); std::cout << "Building RooDataSets " << std::endl; treevariables.Print("V"); //assert(0); // Zvv Signal region MC sample RooDataSet zvv("DY","DY",treevariables,RooFit::Import(*((TTree*)fin->Get("DY"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); // Zvv Control sample // Data ... (double mu) Zvv_control RooDataSet zvvcontrol("Zvv_control","Zvv_control",treevariables,RooFit::Import(*((TTree*)fin->Get("Zvv_control"))),RooFit::Cut(cutstring.c_str())); // Backgrounds ... Zvv_control_bkg_mc RooDataSet zvvcontrolbkgmc("Zvv_control_bkg_mc","Zvv_control_bkg_mc",treevariables,RooFit::Import(*((TTree*)fin->Get("T_control_bkg_mc"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet zvvcontrolbkgmc_1("1","1",treevariables,RooFit::Import(*(TTree*)fin->Get("TT_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet zvvcontrolbkgmc_2("2","2",treevariables,RooFit::Import(*(TTree*)fin->Get("WW_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet zvvcontrolbkgmc_3("3","3",treevariables,RooFit::Import(*(TTree*)fin->Get("WZ_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet zvvcontrolbkgmc_4("4","4",treevariables,RooFit::Import(*(TTree*)fin->Get("ZZ_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); zvvcontrolbkgmc.append(zvvcontrolbkgmc_1); zvvcontrolbkgmc.append(zvvcontrolbkgmc_2); zvvcontrolbkgmc.append(zvvcontrolbkgmc_3); zvvcontrolbkgmc.append(zvvcontrolbkgmc_4); // MC ... Zvv_control_mc RooDataSet zvvcontrolmc("Zvv_control_mc","Zvv_control_mc",treevariables,RooFit::Import(*((TTree*)fin->Get("Zvv_control_mc"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); std::cout << " Weighs of datasets " << std::endl; std::cout << " Zvv_control " << zvvcontrol.sumEntries() << std::endl; std::cout << " Zvv_control_mc " << zvvcontrolmc.sumEntries() << std::endl; // Wlv Control sample (single mu) // Data ... (double mu) // Backgrounds ... //.append() // MC ... // Store these to the output workspace wspace->import(zvvcontrol); wspace->import(zvvcontrolmc); wspace->import(zvvcontrolbkgmc); wspace->import(zvv); // Wlv Signal region MC sample RooDataSet wlv("W","W",treevariables,RooFit::Import(*((TTree*)fin->Get("W"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet wlv_ht("WHT","WHT",treevariables,RooFit::Import(*((TTree*)fin->Get("WHT"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); wlv.append(wlv_ht); // Wlv Control sample // Data ... (single mu) Wlv_control RooDataSet wlvcontrol("Wlv_control","Wlv_control",treevariables,RooFit::Import(*((TTree*)fin->Get("Wlv_control"))),RooFit::Cut(cutstring.c_str())); // Backgrounds ... Wlv_control_bkg_mc RooDataSet wlvcontrolbkgmc("Wlv_control_bkg_mc","Wlv_control_bkg_mc",treevariables,RooFit::Import(*((TTree*)fin->Get("T_sl_control_bkg_mc"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet wlvcontrolbkgmc_1("1","1",treevariables,RooFit::Import(*(TTree*)fin->Get("TT_sl_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet wlvcontrolbkgmc_2("2","2",treevariables,RooFit::Import(*(TTree*)fin->Get("DY_sl_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet wlvcontrolbkgmc_3("3","3",treevariables,RooFit::Import(*(TTree*)fin->Get("WZ_sl_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet wlvcontrolbkgmc_4("4","4",treevariables,RooFit::Import(*(TTree*)fin->Get("ZZ_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet wlvcontrolbkgmc_5("5","5",treevariables,RooFit::Import(*(TTree*)fin->Get("WW_control_bkg_mc")),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); wlvcontrolbkgmc.append(wlvcontrolbkgmc_1); wlvcontrolbkgmc.append(wlvcontrolbkgmc_2); wlvcontrolbkgmc.append(wlvcontrolbkgmc_3); wlvcontrolbkgmc.append(wlvcontrolbkgmc_4); wlvcontrolbkgmc.append(wlvcontrolbkgmc_5); // MC ... Zvv_control_mc RooDataSet wlvcontrolmc("Wlv_control_mc","Wlv_control_mc",treevariables,RooFit::Import(*((TTree*)fin->Get("Wlv_control_mc_1"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); RooDataSet wlvcontrolmc_2("Wlv_control_mc_2","Wlv_control_mc_2",treevariables,RooFit::Import(*((TTree*)fin->Get("Wlv_control_mc_2"))),RooFit::Cut(cutstring.c_str()),RooFit::WeightVar("weight")); wlvcontrolmc.append(wlvcontrolmc_2); std::cout << " Weighs of datasets " << std::endl; std::cout << " Wlv_control " << wlvcontrol.sumEntries() << std::endl; std::cout << " Wlv_control_mc " << wlvcontrolmc.sumEntries() << std::endl; // Wlv Control sample (single mu) // Data ... (double mu) // Backgrounds ... //.append() // MC ... // Store these to the output workspace wspace->import(wlvcontrol); wspace->import(wlvcontrolmc); wspace->import(wlvcontrolbkgmc); wspace->import(wlv); }