Commit dfdb56be authored by Tomas Dado's avatar Tomas Dado Committed by Nils Erik Krumnack
Browse files

AnalysisTop: Support for matching of multi object non-global triggers

parent e9bbdc1a
......@@ -1366,34 +1366,34 @@ namespace top {
systematicTree->makeOutputVariable(m_selectionDecisions[index], branchName);
// Add all triggers to a map so we don't get any duplicates
for (auto& trigger_name : m_config->allTriggers_Tight(branchName)) {
m_triggerDecisions [trigger_name] = 0;
m_triggerDecisions [trigger_name.first] = 0;
}
for (auto& trigger_name : m_config->allTriggers_Loose(branchName)) {
// let's make sure this isn't done twice
if (m_triggerDecisions.find(trigger_name) != m_triggerDecisions.end()
&& m_triggerPrescales.find(trigger_name) != m_triggerPrescales.end()) continue;
m_triggerDecisions [trigger_name] = 0;
if (m_triggerDecisions.find(trigger_name.first) != m_triggerDecisions.end()
&& m_triggerPrescales.find(trigger_name.first) != m_triggerPrescales.end()) continue;
m_triggerDecisions [trigger_name.first] = 0;
}
for (auto& trigger_name : m_config->electronTriggers_Tight(branchName))
m_el_trigMatched [trigger_name] = std::vector<char>();
m_el_trigMatched [trigger_name.first] = std::vector<char>();
for (auto& trigger_name : m_config->electronTriggers_Loose(branchName)) {
// let's make sure this isn't done twice
if (m_el_trigMatched.find(trigger_name) != m_el_trigMatched.end()) continue;
m_el_trigMatched [trigger_name] = std::vector<char>();
if (m_el_trigMatched.find(trigger_name.first) != m_el_trigMatched.end()) continue;
m_el_trigMatched [trigger_name.first] = std::vector<char>();
}
for (auto& trigger_name : m_config->muonTriggers_Tight(branchName))
m_mu_trigMatched [trigger_name] = std::vector<char>();
m_mu_trigMatched [trigger_name.first] = std::vector<char>();
for (auto& trigger_name : m_config->muonTriggers_Loose(branchName)) {
// let's make sure this isn't done twice
if (m_mu_trigMatched.find(trigger_name) != m_mu_trigMatched.end()) continue;
m_mu_trigMatched [trigger_name] = std::vector<char>();
if (m_mu_trigMatched.find(trigger_name.first) != m_mu_trigMatched.end()) continue;
m_mu_trigMatched [trigger_name.first] = std::vector<char>();
}
for (auto& trigger_name : m_config->photonTriggers_Tight(branchName))
m_ph_trigMatched [trigger_name] = std::vector<char>();
m_ph_trigMatched [trigger_name.first] = std::vector<char>();
for (auto& trigger_name : m_config->photonTriggers_Loose(branchName)) {
// let's make sure this isn't done twice
if (m_ph_trigMatched.find(trigger_name) != m_ph_trigMatched.end()) continue;
m_ph_trigMatched [trigger_name] = std::vector<char>();
if (m_ph_trigMatched.find(trigger_name.first) != m_ph_trigMatched.end()) continue;
m_ph_trigMatched [trigger_name.first] = std::vector<char>();
}
++index;
}
......
......@@ -140,16 +140,16 @@ namespace top {
}
}
auto getTriggerLegs =
[&](std::unordered_map<std::string, std::vector<std::string> > const& triggerCombination,
[&](std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > const& triggerCombination,
std::unordered_map<std::string, std::set<std::string> >& electronLegsByPeriod,
std::unordered_map<std::string, std::set<std::string> >& photonLegsByPeriod) {
for (auto&& kv : triggerCombination) {
std::string const& period = kv.first;
for (auto const& trigKey : kv.second) {
auto triggerDefsIt = triggerDefs.find(trigKey);
auto triggerDefsIt = triggerDefs.find(trigKey.first);
if (triggerDefsIt == triggerDefs.end()) {
statusCode = StatusCode::FAILURE;
ATH_MSG_ERROR("unrecognized trigger `" << trigKey << "'");
ATH_MSG_ERROR("unrecognized trigger `" << trigKey.first << "'");
continue;
}
auto const& trigDef = triggerDefsIt->second;
......@@ -190,8 +190,8 @@ namespace top {
// Get trigger strings from configuration
std::map<std::string, std::string> triggerCombination, triggerCombinationLoose;
std::vector<std::string> electronSystematics, muonSystematics, electronToolNames, muonToolNames;
std::unordered_map<std::string, std::vector<std::string> > const emptymap;
std::unordered_map<std::string, std::vector<std::string> > const&
std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > const emptymap;
std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > const&
triggersByPeriod = (m_config->doTightEvents() ? m_config->getGlobalTriggers() : emptymap),
triggersByPeriodLoose = (m_config->doLooseEvents() ? m_config->getGlobalTriggersLoose() : emptymap);
......@@ -401,13 +401,21 @@ namespace top {
}
}
auto combineStrings = [](const std::vector<std::pair<std::string, int> >& input ) {
std::vector<std::string> tmp;
for (const auto& i : input) {
tmp.push_back(i.first);
}
return boost::algorithm::join(tmp, " || ");
};
for (auto& key : triggersByPeriod) {
if (triggerCombination.find(key.first) == triggerCombination.end()) {
triggerCombination[key.first] = "";
} else {
triggerCombination[key.first] += " || ";
}
triggerCombination[key.first] += boost::algorithm::join(key.second, " || ");
triggerCombination[key.first] += combineStrings(key.second);
}
for (auto& key : triggersByPeriodLoose) {
if (triggerCombinationLoose.find(key.first) == triggerCombinationLoose.end()) {
......@@ -415,7 +423,7 @@ namespace top {
} else {
triggerCombinationLoose[key.first] += " || ";
}
triggerCombinationLoose[key.first] += boost::algorithm::join(key.second, " || ");
triggerCombinationLoose[key.first] += combineStrings(key.second);
}
// Print out what we configured
......@@ -489,7 +497,7 @@ namespace top {
return working_point;
}
std::string TriggerCPTools::PhotonKeys(const std::unordered_map<std::string, std::vector<std::string> >& map) const {
std::string TriggerCPTools::PhotonKeys(const std::unordered_map<std::string, std::vector<std::pair<std::string, int> > >& map) const {
// check of the trigger names are one of the supported
std::string result("");
......@@ -503,8 +511,8 @@ namespace top {
for (const auto& isupported : supported) {
auto it = map.find(isupported.first);
if (it == map.end()) continue;
const std::vector<std::string> keys = it->second;
if (std::find(keys.begin(), keys.end(), isupported.second) == keys.end()) {
const std::vector<std::pair<std::string, int> > keys = it->second;
if (std::find_if(keys.begin(), keys.end(), [&isupported](const std::pair<std::string, int>& pair){return isupported.second == pair.first;}) == keys.end()) {
isPhoton = false;
}
}
......
......@@ -47,7 +47,7 @@ namespace top {
StatusCode initialiseGlobalTriggerEff();
std::string mapWorkingPoints(const std::string& type);
// check of the trigger names are one of the supported
std::string PhotonKeys(const std::unordered_map<std::string, std::vector<std::string> >& map) const;
std::string PhotonKeys(const std::unordered_map<std::string, std::vector<std::pair<std::string, int> > >& map) const;
// check if the photon isolation is supported by the global triggers
StatusCode CheckPhotonIsolation(const std::string& isol) const;
......
......@@ -482,7 +482,7 @@ namespace top {
m_badBatmanCleaningMax(311481),
m_useEventLevelJetCleaningTool(false),
m_year("UNKNOWN") {
m_allSelectionNames = std::shared_ptr<std::vector<std::string> > (new std::vector<std::string> );
m_allSelectionNames = std::shared_ptr<std::vector<std::string > > (new std::vector<std::string> );
m_systHashPhotons = std::shared_ptr<std::unordered_set<std::size_t> > (new std::unordered_set<std::size_t> );
m_systHashElectrons = std::shared_ptr<std::unordered_set<std::size_t> > (new std::unordered_set<std::size_t> );
......@@ -1816,10 +1816,10 @@ namespace top {
//--- Check for configuration on the global lepton triggers ---//
if (settings->value("UseGlobalLeptonTriggerSF") == "True") {
auto parseTriggerString =
[settings](std::unordered_map<std::string, std::vector<std::string> >& triggersByPeriod,
[settings](std::unordered_map<std::string, std::vector<std::pair<std::string, int> > >& triggersByPeriod,
std::string const& key) {
/* parse a string of the form "2015@triggerfoo,triggerbar,... 2016@triggerfoo,triggerbaz,... ..." */
std::unordered_map<std::string, std::vector<std::string> > result;
std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > result;
std::vector<std::string> pairs;
boost::split(pairs, settings->value(key), boost::is_any_of(" "));
for (std::string const& pair : pairs) {
......@@ -1833,16 +1833,30 @@ namespace top {
if (!triggers.empty()) throw std::invalid_argument(
std::string() + "Period `" + period + "' appears multiple times in configuration item `" + key +
"'");
boost::split(triggers, triggerstr, boost::is_any_of(","));
// get the vector of strings split by ","
std::vector<std::string> tmp;
for (const auto& i : triggers) {
tmp.push_back(i.first);
}
boost::split(tmp, triggerstr, boost::is_any_of(","));
// attach a dummy 1 to the pair
std::vector<std::pair<std::string, int> > modified;
for (const auto& i : tmp) {
modified.emplace_back(i, 1);
}
// pass it to the triggers vector
std::swap(triggers, modified);
}
/* merge trigger map from this configuration line into triggersByPeriod */
for (auto&& kv : result) {
auto&& src = kv.second;
auto&& dst = triggersByPeriod[kv.first];
for (std::string const& trigger : src) {
for (std::pair<std::string, int> const& trigger : src) {
if (std::find(dst.begin(), dst.end(),
trigger) != dst.end()) throw std::invalid_argument(
std::string() + "Trigger `" + trigger + "' was specified multiple times");
std::string() + "Trigger `" + trigger.first + "' was specified multiple times");
dst.push_back(trigger);
}
}
......@@ -3411,17 +3425,17 @@ namespace top {
return index;
}
const std::vector<std::string>& TopConfig::allTriggers_Tight(const std::string& selection) const {
const std::vector<std::pair<std::string, int> >& TopConfig::allTriggers_Tight(const std::string& selection) const {
std::unordered_map<std::string,
std::vector<std::string> >::const_iterator key = m_allTriggers_Tight->find(selection);
std::vector<std::pair<std::string, int> > >::const_iterator key = m_allTriggers_Tight->find(selection);
if (key != m_allTriggers_Tight->end()) {
return (*key).second;
}
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::electronTriggers_Tight(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::string> >::const_iterator key = m_electronTriggers_Tight->find(
const std::vector<std::pair<std::string, int> >& TopConfig::electronTriggers_Tight(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::pair<std::string, int> > >::const_iterator key = m_electronTriggers_Tight->find(
selection);
if (key != m_electronTriggers_Tight->end()) {
return (*key).second;
......@@ -3429,8 +3443,8 @@ namespace top {
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::muonTriggers_Tight(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::string> >::const_iterator key = m_muonTriggers_Tight->find(
const std::vector<std::pair<std::string, int> >& TopConfig::muonTriggers_Tight(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::pair<std::string, int> > >::const_iterator key = m_muonTriggers_Tight->find(
selection);
if (key != m_muonTriggers_Tight->end()) {
return (*key).second;
......@@ -3438,35 +3452,35 @@ namespace top {
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::tauTriggers_Tight(const std::string& selection) const {
const std::vector<std::pair<std::string, int> >& TopConfig::tauTriggers_Tight(const std::string& selection) const {
std::unordered_map<std::string,
std::vector<std::string> >::const_iterator key = m_tauTriggers_Tight->find(selection);
std::vector<std::pair<std::string, int> > >::const_iterator key = m_tauTriggers_Tight->find(selection);
if (key != m_tauTriggers_Tight->end()) {
return (*key).second;
}
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::photonTriggers_Tight(const std::string& selection) const {
const std::vector<std::pair<std::string, int> >& TopConfig::photonTriggers_Tight(const std::string& selection) const {
std::unordered_map<std::string,
std::vector<std::string> >::const_iterator key = m_photonTriggers_Tight->find(selection);
std::vector<std::pair<std::string, int> > >::const_iterator key = m_photonTriggers_Tight->find(selection);
if (key != m_photonTriggers_Tight->end()) {
return (*key).second;
}
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::allTriggers_Loose(const std::string& selection) const {
const std::vector<std::pair<std::string, int> >& TopConfig::allTriggers_Loose(const std::string& selection) const {
std::unordered_map<std::string,
std::vector<std::string> >::const_iterator key = m_allTriggers_Loose->find(selection);
std::vector<std::pair<std::string, int> > >::const_iterator key = m_allTriggers_Loose->find(selection);
if (key != m_allTriggers_Loose->end()) {
return (*key).second;
}
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::electronTriggers_Loose(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::string> >::const_iterator key = m_electronTriggers_Loose->find(
const std::vector<std::pair<std::string, int> >& TopConfig::electronTriggers_Loose(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::pair<std::string, int> > >::const_iterator key = m_electronTriggers_Loose->find(
selection);
if (key != m_electronTriggers_Loose->end()) {
return (*key).second;
......@@ -3474,8 +3488,8 @@ namespace top {
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::muonTriggers_Loose(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::string> >::const_iterator key = m_muonTriggers_Loose->find(
const std::vector<std::pair<std::string, int> >& TopConfig::muonTriggers_Loose(const std::string& selection) const {
std::unordered_map<std::string, std::vector<std::pair<std::string, int> > >::const_iterator key = m_muonTriggers_Loose->find(
selection);
if (key != m_muonTriggers_Loose->end()) {
return (*key).second;
......@@ -3483,18 +3497,18 @@ namespace top {
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::tauTriggers_Loose(const std::string& selection) const {
const std::vector<std::pair<std::string, int> >& TopConfig::tauTriggers_Loose(const std::string& selection) const {
std::unordered_map<std::string,
std::vector<std::string> >::const_iterator key = m_tauTriggers_Loose->find(selection);
std::vector<std::pair<std::string, int> > >::const_iterator key = m_tauTriggers_Loose->find(selection);
if (key != m_tauTriggers_Loose->end()) {
return (*key).second;
}
return m_dummyTrigger;
}
const std::vector<std::string>& TopConfig::photonTriggers_Loose(const std::string& selection) const {
const std::vector<std::pair<std::string, int> >& TopConfig::photonTriggers_Loose(const std::string& selection) const {
std::unordered_map<std::string,
std::vector<std::string> >::const_iterator key = m_photonTriggers_Loose->find(selection);
std::vector<std::pair<std::string, int> > >::const_iterator key = m_photonTriggers_Loose->find(selection);
if (key != m_photonTriggers_Loose->end()) {
return (*key).second;
}
......@@ -3800,17 +3814,17 @@ namespace top {
i != settings->m_allSelectionNames.end(); ++i)
m_allSelectionNames->push_back(*i);
m_allTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_electronTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_muonTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_tauTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_photonTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_allTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_electronTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_muonTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_tauTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_photonTriggers_Tight = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_allTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_electronTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_muonTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_tauTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_photonTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::string> > >();
m_allTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_electronTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_muonTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_tauTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
m_photonTriggers_Loose = std::make_shared<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > >();
for (auto i : settings->m_allTriggers_Tight) {
m_allTriggers_Tight->insert(i);
......@@ -3947,7 +3961,7 @@ namespace top {
if (isMC && m_year == "2015") year2 = "2016";
if (isMC && m_year == "2016") year2 = "2015";
auto removeYears = [](std::unordered_map<std::string,std::vector<std::string> >& trig, const std::string& year1, const std::string& year2) {
auto removeYears = [](std::unordered_map<std::string,std::vector<std::pair<std::string, int> > >& trig, const std::string& year1, const std::string& year2) {
auto itr = trig.begin();
while (itr != trig.end()) {
if ((*itr).first != year1 && (*itr).first != year2) {
......
......@@ -477,87 +477,87 @@ namespace top {
// Triggers
inline virtual void allTriggers_Tight(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_allTriggers_Tight = triggers;
}
}
inline virtual void electronTriggers_Tight(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_electronTriggers_Tight = triggers;
}
}
inline virtual void muonTriggers_Tight(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_muonTriggers_Tight = triggers;
}
}
inline virtual void tauTriggers_Tight(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_tauTriggers_Tight = triggers;
}
}
inline virtual void photonTriggers_Tight(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_photonTriggers_Tight = triggers;
}
}
inline virtual void allTriggers_Loose(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_allTriggers_Loose = triggers;
}
}
inline virtual void electronTriggers_Loose(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_electronTriggers_Loose = triggers;
}
}
inline virtual void muonTriggers_Loose(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_muonTriggers_Loose = triggers;
}
}
inline virtual void tauTriggers_Loose(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_tauTriggers_Loose = triggers;
}
}
inline virtual void photonTriggers_Loose(std::shared_ptr<std::unordered_map<std::string,
std::vector<std::string> > > triggers) {
std::vector<std::pair<std::string, int> > > > triggers) {
if (!m_configFixed) {
m_photonTriggers_Loose = triggers;
}
}
inline std::shared_ptr<std::vector<std::string> > allSelectionNames() const {return m_allSelectionNames;}
virtual const std::vector<std::string>& allTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::string>& electronTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::string>& muonTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::string>& tauTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::string>& photonTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::string>& allTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::string>& electronTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::string>& muonTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::string>& tauTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::string>& photonTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& allTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& electronTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& muonTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& tauTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& photonTriggers_Tight(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& allTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& electronTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& muonTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& tauTriggers_Loose(const std::string& selection) const;
virtual const std::vector<std::pair<std::string, int> >& photonTriggers_Loose(const std::string& selection) const;
// StoreGate Keys
virtual void sgKeyMCParticle(const std::string& s);
......@@ -2643,7 +2643,7 @@ namespace top {
// manage systematic variations through this tool
struct {
typedef std::unordered_map<std::string, std::vector<std::string> > triggermap_t;
typedef std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > triggermap_t;
// -- Set from cutfile --//
// Boolean to be set to true if the user activates a flag
bool isActivated = false;
......@@ -2672,17 +2672,17 @@ namespace top {
std::shared_ptr<std::vector<std::string> > m_allSelectionNames;
// Trigger configuration
// First string is the selection name, second string is the trigger
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_allTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_electronTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_muonTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_tauTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_photonTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_allTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_electronTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_muonTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_tauTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::string> > > m_photonTriggers_Loose;
std::vector<std::string> m_dummyTrigger;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_allTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_electronTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_muonTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_tauTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_photonTriggers_Tight;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_allTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_electronTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_muonTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_tauTriggers_Loose;
std::shared_ptr<std::unordered_map<std::string, std::vector<std::pair<std::string, int> > > > m_photonTriggers_Loose;
std::vector<std::pair<std::string, int> > m_dummyTrigger;
// Where the sum of event weights
// before derivation framework is kept
......
......@@ -107,17 +107,17 @@ namespace top {
std::vector<std::string> m_allSelectionNames;
std::unordered_map<std::string, std::vector<std::string> > m_allTriggers_Tight;
std::unordered_map<std::string, std::vector<std::string> > m_electronTriggers_Tight;
std::unordered_map<std::string, std::vector<std::string> > m_muonTriggers_Tight;
std::unordered_map<std::string, std::vector<std::string> > m_tauTriggers_Tight;
std::unordered_map<std::string, std::vector<std::string> > m_photonTriggers_Tight;
std::unordered_map<std::string, std::vector<std::string> > m_allTriggers_Loose;
std::unordered_map<std::string, std::vector<std::string> > m_electronTriggers_Loose;
std::unordered_map<std::string, std::vector<std::string> > m_muonTriggers_Loose;
std::unordered_map<std::string, std::vector<std::string> > m_tauTriggers_Loose;
std::unordered_map<std::