Skip to content
Snippets Groups Projects
Commit 351f3065 authored by Joosep Pata's avatar Joosep Pata
Browse files

npoints integration test

parent 59066855
No related branches found
No related tags found
No related merge requests found
...@@ -60,7 +60,8 @@ int main(){ ...@@ -60,7 +60,8 @@ int main(){
}, },
{}, {},
{}, {},
lv_met lv_met,
-1
); );
std::cout << "mem=" << res.p << std::endl; std::cout << "mem=" << res.p << std::endl;
} }
......
...@@ -87,7 +87,8 @@ int main(){ ...@@ -87,7 +87,8 @@ int main(){
}, },
{}, {},
{}, {},
lv_met lv_met,
-1
); );
std::cout << "mem=" << res.p << std::endl; std::cout << "mem=" << res.p << std::endl;
} }
......
No preview for this file type
...@@ -54,6 +54,7 @@ class MEMClassifier { ...@@ -54,6 +54,7 @@ class MEMClassifier {
//The constructor loads the transfer functions and b-tag PDF-s //The constructor loads the transfer functions and b-tag PDF-s
MEMClassifier(); MEMClassifier();
MEMClassifier(MEM::MEMConfig _cfg);
~MEMClassifier(); ~MEMClassifier();
// Call this method to return the MEM output, provide all necessary inputs. // Call this method to return the MEM output, provide all necessary inputs.
...@@ -68,7 +69,8 @@ class MEMClassifier { ...@@ -68,7 +69,8 @@ class MEMClassifier {
const std::vector<JetType>& selectedJetType, const std::vector<JetType>& selectedJetType,
const std::vector<TLorentzVector>& looseSelectedJetP4, const std::vector<TLorentzVector>& looseSelectedJetP4,
const std::vector<double>& looseSelectedJetCSV, const std::vector<double>& looseSelectedJetCSV,
TLorentzVector& metP4 TLorentzVector& metP4,
int ncalls=1
); );
void setup_mem( void setup_mem(
......
...@@ -7,7 +7,7 @@ if [ -e "${CMSSW_BASE}" ]; then ...@@ -7,7 +7,7 @@ if [ -e "${CMSSW_BASE}" ]; then
cd src/TTH cd src/TTH
#get the MEM code #get the MEM code
git clone https://github.com/bianchini/Code.git MEIntegratorStandalone git clone https://github.com/bianchini/Code.git MEIntegratorStandalone --branch v0.1
#copy the OpenLoops ME libraries #copy the OpenLoops ME libraries
cp $CMSSW_BASE/src/TTH/MEIntegratorStandalone/libs/*.so $CMSSW_BASE/lib/$SCRAM_ARCH/ cp $CMSSW_BASE/src/TTH/MEIntegratorStandalone/libs/*.so $CMSSW_BASE/lib/$SCRAM_ARCH/
......
...@@ -87,7 +87,7 @@ void MEMClassifier::setup_mem( ...@@ -87,7 +87,7 @@ void MEMClassifier::setup_mem(
// Fallback // Fallback
default: { default: {
std::cout << "Warning! Fallback case reached. Invalid MEM Hypo!!!" << std::endl; std::cerr << "Warning! Fallback case reached. Invalid MEM Hypo!!!" << std::endl;
throw 1; throw 1;
} }
...@@ -152,7 +152,7 @@ void MEMClassifier::setup_mem_sl_0w2h2t( ...@@ -152,7 +152,7 @@ void MEMClassifier::setup_mem_sl_0w2h2t(
for (auto* jet : tagged) { for (auto* jet : tagged) {
objs.push_back(jet); objs.push_back(jet);
integrand->push_back_object(jet); integrand->push_back_object(jet);
std::cout << "adding jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl; //std::cout << "adding jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl;
} }
for (unsigned int il=0; il < selectedLeptonP4.size(); il++) { for (unsigned int il=0; il < selectedLeptonP4.size(); il++) {
...@@ -222,14 +222,14 @@ void MEMClassifier::setup_mem_sl_2w2h2t( ...@@ -222,14 +222,14 @@ void MEMClassifier::setup_mem_sl_2w2h2t(
for (auto* jet : tagged) { for (auto* jet : tagged) {
objs.push_back(jet); objs.push_back(jet);
integrand->push_back_object(jet); integrand->push_back_object(jet);
std::cout << "adding tagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl; //std::cout << "adding tagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl;
} }
assert(untagged.size() >= 2); assert(untagged.size() >= 2);
for (auto* jet : untagged) { for (auto* jet : untagged) {
objs.push_back(jet); objs.push_back(jet);
integrand->push_back_object(jet); integrand->push_back_object(jet);
std::cout << "adding untagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl; //std::cout << "adding untagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl;
} }
for (unsigned int il=0; il < selectedLeptonP4.size(); il++) { for (unsigned int il=0; il < selectedLeptonP4.size(); il++) {
...@@ -296,7 +296,7 @@ void MEMClassifier::setup_mem_dl_0w2h2t( ...@@ -296,7 +296,7 @@ void MEMClassifier::setup_mem_dl_0w2h2t(
for (auto* jet : tagged) { for (auto* jet : tagged) {
objs.push_back(jet); objs.push_back(jet);
integrand->push_back_object(jet); integrand->push_back_object(jet);
std::cout << "adding jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl; //std::cout << "adding jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl;
} }
for (unsigned int il=0; il < selectedLeptonP4.size(); il++) { for (unsigned int il=0; il < selectedLeptonP4.size(); il++) {
...@@ -399,13 +399,13 @@ void MEMClassifier::setup_mem_sl_2w2h2t_sj( ...@@ -399,13 +399,13 @@ void MEMClassifier::setup_mem_sl_2w2h2t_sj(
for (auto* jet : tagged) { for (auto* jet : tagged) {
objs.push_back(jet); objs.push_back(jet);
integrand->push_back_object(jet); integrand->push_back_object(jet);
std::cout << "adding tagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl; //std::cout << "adding tagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl;
} }
for (auto* jet : untagged) { for (auto* jet : untagged) {
objs.push_back(jet); objs.push_back(jet);
integrand->push_back_object(jet); integrand->push_back_object(jet);
std::cout << "adding untagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl; //std::cout << "adding untagged jet " << jet->p4().Pt() << " btag " << jet->getObs(MEM::Observable::BTAG) << std::endl;
} }
for (unsigned int il=0; il < selectedLeptonP4.size(); il++) { for (unsigned int il=0; il < selectedLeptonP4.size(); il++) {
...@@ -414,16 +414,15 @@ void MEMClassifier::setup_mem_sl_2w2h2t_sj( ...@@ -414,16 +414,15 @@ void MEMClassifier::setup_mem_sl_2w2h2t_sj(
MEM::Object* lep = make_lepton(lep_p4.Pt(), lep_p4.Eta(), lep_p4.Phi(), lep_p4.M(), selectedLeptonCharge[il]); MEM::Object* lep = make_lepton(lep_p4.Pt(), lep_p4.Eta(), lep_p4.Phi(), lep_p4.M(), selectedLeptonCharge[il]);
objs.push_back(lep); objs.push_back(lep);
integrand->push_back_object(lep); integrand->push_back_object(lep);
std::cout << "adding lep " << lep->p4().Pt() << " charge " << lep->getObs(MEM::Observable::CHARGE) << std::endl; //std::cout << "adding lep " << lep->p4().Pt() << " charge " << lep->getObs(MEM::Observable::CHARGE) << std::endl;
} }
assert(metP4.Pt() > 0); assert(metP4.Pt() > 0);
MEM::Object* met = new MEM::Object(metP4, MEM::ObjectType::MET ); MEM::Object* met = new MEM::Object(metP4, MEM::ObjectType::MET );
std::cout << "adding met pt " << met->p4().Pt() << " phi " << met->p4().Phi() << std::endl; //std::cout << "adding met pt " << met->p4().Pt() << " phi " << met->p4().Phi() << std::endl;
integrand->push_back_object(met); integrand->push_back_object(met);
} }
MEMResult MEMClassifier::GetOutput( MEMResult MEMClassifier::GetOutput(
const Hypothesis hypo, const Hypothesis hypo,
const std::vector<TLorentzVector>& selectedLeptonP4, const std::vector<TLorentzVector>& selectedLeptonP4,
...@@ -433,7 +432,8 @@ MEMResult MEMClassifier::GetOutput( ...@@ -433,7 +432,8 @@ MEMResult MEMClassifier::GetOutput(
const std::vector<JetType>& selectedJetType, const std::vector<JetType>& selectedJetType,
const std::vector<TLorentzVector>& looseSelectedJetP4, const std::vector<TLorentzVector>& looseSelectedJetP4,
const std::vector<double>& looseSelectedJetCSV, const std::vector<double>& looseSelectedJetCSV,
TLorentzVector& metP4 TLorentzVector& metP4,
int ncalls
) { ) {
// Make sure vector sizes match up // Make sure vector sizes match up
...@@ -471,48 +471,48 @@ MEMResult MEMClassifier::GetOutput( ...@@ -471,48 +471,48 @@ MEMResult MEMClassifier::GetOutput(
// Single Lepton - Boosted 222 // Single Lepton - Boosted 222
case SL_2W2H2T_SJ: { case SL_2W2H2T_SJ: {
std::cout << "MEM running signal" << std::endl; //std::cout << "MEM running signal" << std::endl;
res_sig = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTH, {}, {}); res_sig = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTH, {}, {}, ncalls);
std::cout << "MEM running background" << std::endl; //std::cout << "MEM running background" << std::endl;
res_bkg = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTBB, {}, {}); res_bkg = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTBB, {}, {}, ncalls);
break; break;
} }
// Single Lepton - Boosted 222 // Single Lepton - Boosted 222
case SL_2W2H2T: { case SL_2W2H2T: {
std::cout << "MEM running signal" << std::endl; //std::cout << "MEM running signal" << std::endl;
res_sig = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTH, {}, {}); res_sig = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTH, {}, {}, ncalls);
std::cout << "MEM running background" << std::endl; //std::cout << "MEM running background" << std::endl;
res_bkg = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTBB, {}, {}); res_bkg = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTBB, {}, {}, ncalls);
break; break;
} }
// Single Lepton - Resolved 022 // Single Lepton - Resolved 022
case SL_0W2H2T: { case SL_0W2H2T: {
std::cout << "MEM running signal" << std::endl; //std::cout << "MEM running signal" << std::endl;
res_sig = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTH, {}, res_sig = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTH, {},
{MEM::PSVar::cos_q1, MEM::PSVar::phi_q1, MEM::PSVar::cos_qbar1, MEM::PSVar::phi_qbar1}); {MEM::PSVar::cos_q1, MEM::PSVar::phi_q1, MEM::PSVar::cos_qbar1, MEM::PSVar::phi_qbar1}, ncalls);
std::cout << "MEM running background" << std::endl; //std::cout << "MEM running background" << std::endl;
res_bkg = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTBB, {}, res_bkg = integrand->run(MEM::FinalState::LH, MEM::Hypothesis::TTBB, {},
{MEM::PSVar::cos_q1, MEM::PSVar::phi_q1, MEM::PSVar::cos_qbar1, MEM::PSVar::phi_qbar1}); {MEM::PSVar::cos_q1, MEM::PSVar::phi_q1, MEM::PSVar::cos_qbar1, MEM::PSVar::phi_qbar1}, ncalls);
break; break;
} }
// Di Lepton - Resolved 022 // Di Lepton - Resolved 022
case DL_0W2H2T: { case DL_0W2H2T: {
std::cout << "MEM running signal" << std::endl; //std::cout << "MEM running signal" << std::endl;
res_sig = integrand->run(MEM::FinalState::LL, MEM::Hypothesis::TTH, {}, res_sig = integrand->run(MEM::FinalState::LL, MEM::Hypothesis::TTH, {},
{}); {}, ncalls);
std::cout << "MEM running background" << std::endl; //std::cout << "MEM running background" << std::endl;
res_bkg = integrand->run(MEM::FinalState::LL, MEM::Hypothesis::TTBB, {}, res_bkg = integrand->run(MEM::FinalState::LL, MEM::Hypothesis::TTBB, {},
{}); {}, ncalls);
break; break;
} }
...@@ -586,7 +586,11 @@ TF1* MEMClassifier::getTransferFunction(const char* flavour, double eta) const { ...@@ -586,7 +586,11 @@ TF1* MEMClassifier::getTransferFunction(const char* flavour, double eta) const {
return tf; return tf;
} }
MEMClassifier::MEMClassifier() : cfg(MEM::MEMConfig()) { MEMClassifier::MEMClassifier() : MEMClassifier(MEM::MEMConfig()) {
}
MEMClassifier::MEMClassifier(MEM::MEMConfig _cfg) :
cfg(_cfg) {
const string cmssw_path(std::getenv("CMSSW_BASE")); const string cmssw_path(std::getenv("CMSSW_BASE"));
...@@ -602,11 +606,11 @@ MEMClassifier::MEMClassifier() : cfg(MEM::MEMConfig()) { ...@@ -602,11 +606,11 @@ MEMClassifier::MEMClassifier() : cfg(MEM::MEMConfig()) {
string("/src/TTH/CommonClassifier/data/btag_pdfs.root") string("/src/TTH/CommonClassifier/data/btag_pdfs.root")
).c_str(); ).c_str();
cout << "opening " << transfers_path << endl; //cout << "opening " << transfers_path << endl;
transfers = new TFile(transfers_path.c_str()); transfers = new TFile(transfers_path.c_str());
assert(transfers != nullptr); assert(transfers != nullptr);
cout << "opening " << btagfile_path << endl; //cout << "opening " << btagfile_path << endl;
btagfile = new TFile(btagfile_path.c_str()); btagfile = new TFile(btagfile_path.c_str());
assert(btagfile != nullptr); assert(btagfile != nullptr);
......
import ROOT, json import ROOT, json, sys
ROOT.gSystem.Load("libTTHCommonClassifier") ROOT.gSystem.Load("libTTHCommonClassifier")
ROOT.gSystem.Load("libTTHMEIntegratorStandalone")
CvectorLorentz = getattr(ROOT, "std::vector<TLorentzVector>") CvectorLorentz = getattr(ROOT, "std::vector<TLorentzVector>")
Cvectordouble = getattr(ROOT, "std::vector<double>") Cvectordouble = getattr(ROOT, "std::vector<double>")
CvectorJetType = getattr(ROOT, "std::vector<int>") CvectorJetType = getattr(ROOT, "std::vector<int>")
ncalls = [1000, 2000, 4000, 8000, 16000, 32000]
f = ROOT.MEMClassifier() f = ROOT.MEMClassifier()
inf = open("root/events_6j.json") if len(sys.argv)==2:
data = inf.read() inf = open(sys.argv[1])
events = data.split("\n\n\n")[:-1] else:
inf = sys.stdin
def make_p4(pt, eta, phi, m): def make_p4(pt, eta, phi, m):
v = ROOT.TLorentzVector() v = ROOT.TLorentzVector()
v.SetPtEtaPhiM(pt, eta, phi, m) v.SetPtEtaPhiM(pt, eta, phi, m)
return v return v
for ev in events: for ev in inf.readlines():
print "----" print "----"
print ev
jsev = json.loads(ev) jsev = json.loads(ev)
jets_p4 = jsev["input"]["selectedJetsP4"] jets_p4 = jsev["input"]["selectedJetsP4"]
jets_csv = jsev["input"]["selectedJetsCSV"] jets_csv = jsev["input"]["selectedJetsCSV"]
...@@ -42,17 +46,20 @@ for ev in events: ...@@ -42,17 +46,20 @@ for ev in events:
c_loosejets_p4 = CvectorLorentz() c_loosejets_p4 = CvectorLorentz()
c_loosejets_csv = Cvectordouble() c_loosejets_csv = Cvectordouble()
out = {}
print "tthbb13 code cat={0}".format(jsev["event"]["cat"])
for _ncalls in ncalls:
if jsev["output"]["mem_cfg"] == "SL_2w2h2t":
ret = f.GetOutput(f.SL_2W2H2T, c_leps_p4, c_leps_charge, c_jets_p4, c_jets_csv, c_jets_jettype, c_loosejets_p4, c_loosejets_csv, met_p4, _ncalls)
elif jsev["output"]["mem_cfg"] == "SL_1w2h2t":
ret = f.GetOutput(f.SL_1W2H2T, c_leps_p4, c_leps_charge, c_jets_p4, c_jets_csv, c_jets_jettype, c_loosejets_p4, c_loosejets_csv, met_p4, _ncalls)
elif jsev["output"]["mem_cfg"] == "SL_0w2h2t":
ret = f.GetOutput(f.SL_0W2H2T, c_leps_p4, c_leps_charge, c_jets_p4, c_jets_csv, c_jets_jettype, c_loosejets_p4, c_loosejets_csv, met_p4, _ncalls)
out["output__{0}".format(_ncalls)] = {
"p_sig": ret.p_sig,
"p_err_sig": ret.p_err_sig,
"p_bkg": ret.p_bkg,
"p_err_bkg": ret.p_err_bkg
}
print "out:", json.dumps(out)
print "tthbb13 code blr=", jsev["event"]["blr"], "mem=", jsev["output"]["p_tth"], jsev["output"]["p_ttbb"], jsev["output"]["p"]
if jsev["event"]["cat"].startswith("dl"):
print "DL_0w2h2t"
ret = f.GetOutput(f.DL_0W2H2T, c_leps_p4, c_leps_charge, c_jets_p4, c_jets_csv, c_jets_jettype, c_loosejets_p4, c_loosejets_csv, met_p4)
print "mem.py blr=", ret.blr_4b/(ret.blr_4b + ret.blr_2b), "mem=", ret.p_sig, ret.p_bkg, ret.p
elif jsev["event"]["cat"].startswith("sl_jge6"):
print "SL_2w2h2t"
ret = f.GetOutput(f.SL_2W2H2T, c_leps_p4, c_leps_charge, c_jets_p4, c_jets_csv, c_jets_jettype, c_loosejets_p4, c_loosejets_csv, met_p4)
print "mem.py blr=", ret.blr_4b/(ret.blr_4b + ret.blr_2b), "mem=", ret.p_sig, ret.p_bkg, ret.p
elif jsev["event"]["cat"].startswith("sl"):
print "SL_0w2h2t"
ret = f.GetOutput(f.SL_0W2H2T, c_leps_p4, c_leps_charge, c_jets_p4, c_jets_csv, c_jets_jettype, c_loosejets_p4, c_loosejets_csv, met_p4)
print "mem.py blr=", ret.blr_4b/(ret.blr_4b + ret.blr_2b), "mem=", ret.p_sig, ret.p_bkg, ret.p
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment