Skip to content

Commit

Permalink
Fix EDAlias treatment for ConditionalTask
Browse files Browse the repository at this point in the history
  • Loading branch information
makortel committed Apr 13, 2022
1 parent 642a13f commit a964d75
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 16 deletions.
30 changes: 16 additions & 14 deletions FWCore/Framework/src/StreamSchedule.cc
Original file line number Diff line number Diff line change
Expand Up @@ -578,21 +578,23 @@ namespace edm {
auto aliasedToModuleLabels = info.getParameterNames();
for (auto const& mod : aliasedToModuleLabels) {
if (not mod.empty() and mod[0] != '@' and conditionalmods.find(mod) != conditionalmods.end()) {
auto aliasPSet = proc_pset.getParameter<edm::ParameterSet>(mod);
std::string type = star;
std::string instance = star;
std::string originalInstance = star;
if (aliasPSet.exists("type")) {
type = aliasPSet.getParameter<std::string>("type");
}
if (aliasPSet.exists("toProductInstance")) {
instance = aliasPSet.getParameter<std::string>("toProductInstance");
}
if (aliasPSet.exists("fromProductInstance")) {
originalInstance = aliasPSet.getParameter<std::string>("fromProductInstance");
}
auto aliasVPSet = info.getParameter<std::vector<edm::ParameterSet>>(mod);
for (auto const& aliasPSet : aliasVPSet) {
std::string type = star;
std::string instance = star;
std::string originalInstance = star;
if (aliasPSet.exists("type")) {
type = aliasPSet.getParameter<std::string>("type");
}
if (aliasPSet.exists("toProductInstance")) {
instance = aliasPSet.getParameter<std::string>("toProductInstance");
}
if (aliasPSet.exists("fromProductInstance")) {
originalInstance = aliasPSet.getParameter<std::string>("fromProductInstance");
}

aliasMap.emplace(alias, AliasInfo{type, instance, originalInstance, mod});
aliasMap.emplace(alias, AliasInfo{type, instance, originalInstance, mod});
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,20 @@ def __init__(self, **kargs):
outputCommands = cms.untracked.vstring(
'keep *_intProducerAlias_*_*',
'keep *_intProducerDep_*_*',
'keep *_intProducerDepAliasDep_*_*',
)
)

process.intProducer1 = cms.EDProducer("ManyIntProducer", ivalue = cms.int32(1))
process.intProducer2 = cms.EDProducer("ManyIntProducer", ivalue = cms.int32(2), values = cms.VPSet(cms.PSet(instance=cms.string("foo"),value=cms.int32(2))))
process.intProducer3 = cms.EDProducer("ManyIntProducer", ivalue = cms.int32(3))
process.intProducer4 = cms.EDProducer("ManyIntProducer", ivalue = cms.int32(4))
if enableTest2:
process.intProducer1.throw = cms.untracked.bool(True)
else:
process.intProducer2.throw = cms.untracked.bool(True)
process.intProducer3.throw = cms.untracked.bool(True)
process.intProducer4.throw = cms.untracked.bool(True)


process.intProducerAlias = SwitchProducerTest(
Expand All @@ -46,6 +51,19 @@ def __init__(self, **kargs):
if not enableTest2:
process.intProducerDep.labels = ["intProducer1"]

process.ct = cms.ConditionalTask(process.intProducer1, process.intProducer2)
process.p = cms.Path(process.intProducerAlias+process.intProducerDep,
process.intProducerDepAlias = SwitchProducerTest(
test1 = cms.EDProducer("AddIntsProducer", labels = cms.VInputTag("intProducerDep", "intProducerAlias")),
test2 = cms.EDAlias(intProducer3 = cms.VPSet(cms.PSet(type = cms.string("*"), fromProductInstance = cms.string(""), toProductInstance = cms.string(""))),
intProducer4 = cms.VPSet(cms.PSet(type = cms.string("*"), fromProductInstance = cms.string(""), toProductInstance = cms.string("other"))))
)
process.intProducerDepAliasDep = cms.EDProducer("AddIntsProducer", labels = cms.VInputTag("intProducer3", "intProducer4"))
if not enableTest2:
process.intProducerDepAliasDep.labels = ["intProducerAlias"]

process.ct = cms.ConditionalTask(process.intProducer1, process.intProducer2, process.intProducer3, process.intProducer4)
process.p = cms.Path(process.intProducerAlias+process.intProducerDep +
process.intProducerDepAlias + process.intProducerDepAliasDep,
process.ct)

process.ct2 = cms.ConditionalTask(process.intProducerAlias, process.intProducerDep, process.intProducerDepAlias, process.ct)
process.p2 = cms.Path(process.intProducerDepAliasDep, process.ct2)

0 comments on commit a964d75

Please sign in to comment.