Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:12:30

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 process = cms.Process("A")
0004 
0005 process.maxEvents.input = 8
0006 process.source = cms.Source("EmptySource")
0007 
0008 #process.Tracer = cms.Service("Tracer")
0009 
0010 # Process tree
0011 # A (Process)
0012 # ^
0013 # \- B
0014 # |  ^
0015 # |  \- BA
0016 # |
0017 # \- C
0018 # |
0019 # \- D
0020 #    ^
0021 #    \- DA
0022 
0023 # Cases to test
0024 # - event/lumi/run/process product consumed in B or C, module kept
0025 # - event/lumi/run/process product consumed in BA, module kept
0026 # - event/lumi/run/process product not consumed anywhere, module deleted
0027 # - event(/lumi/run) product produced in A and any SubProcess, consumed with empty process name, module kept
0028 # - event(/lumi/run) product produced in A and any SubProcess, consumed with SubProcess name, A module deleted
0029 # - event(/lumi/run) product produced in A and any SubProcess, consumed with A name or skipProcess, SubProcess module deleted
0030 # - event(/lumi/run) product produced in B and consumed in BA, module kept
0031 # - event(/lumi/run) product produced in B and consumed in C, module deleted (and product not found)
0032 # - event(/lumi/run) product producer in A and dropped for SubProcess, module deleted
0033 
0034 intEventProducer = cms.EDProducer("IntProducer", ivalue = cms.int32(1))
0035 intNonEventProducer = cms.EDProducer("NonEventIntProducer", ivalue = cms.int32(1))
0036 intEventProducerMustRun = cms.EDProducer("edmtest::MustRunIntProducer", ivalue = cms.int32(1), mustRunEvent = cms.bool(True))
0037 intEventConsumer = cms.EDAnalyzer("IntTestAnalyzer",
0038     moduleLabel = cms.untracked.InputTag("producerEventConsumed"),
0039     valueMustMatch = cms.untracked.int32(1)
0040 )
0041 intGenericConsumer = cms.EDAnalyzer("edmtest::GenericIntsAnalyzer",
0042     srcEvent = cms.untracked.VInputTag(),
0043     inputShouldExist = cms.untracked.bool(True)
0044 )
0045 uint64GenericConsumer = cms.EDAnalyzer("edmtest::GenericUInt64Analyzer",
0046     srcEvent = cms.untracked.VInputTag(),
0047     inputShouldExist = cms.untracked.bool(True)
0048 )
0049 
0050 def nonEventConsumer(transition, sourcePattern, expected):
0051     transCap = transition[0].upper() + transition[1:]
0052     blockName = transCap
0053     if "Lumi" in blockName:
0054         blockName = blockName+"nosityBlock"
0055     ret = intNonEventProducer.clone()
0056     setattr(ret, "consumes%s"%blockName, cms.InputTag(sourcePattern%transCap, transition))
0057     setattr(ret, "expect%s"%blockName, cms.untracked.int32(expected))
0058     return ret
0059 
0060 process.producerAEventConsumedInB = intEventProducer.clone(ivalue = 1)
0061 process.producerABeginLumiConsumedInB = intNonEventProducer.clone(ivalue = 2)
0062 process.producerAEndRunConsumedInB = intNonEventProducer.clone(ivalue = 5)
0063 process.producerABeginProcessBlockConsumedInB = intNonEventProducer.clone(ivalue = 6)
0064 process.producerAEndLumiConsumedInC = intNonEventProducer.clone(ivalue = 3)
0065 process.producerABeginRunConsumedInC = intNonEventProducer.clone(ivalue = 4)
0066 process.producerAEndProcessBlockConsumedInC = intNonEventProducer.clone(ivalue = 7)
0067 
0068 process.producerAEventConsumedInBA = intEventProducer.clone(ivalue = 10)
0069 process.producerABeginLumiConsumedInBA = intNonEventProducer.clone(ivalue = 20)
0070 process.producerAEndLumiConsumedInBA = intNonEventProducer.clone(ivalue = 30)
0071 process.producerABeginRunConsumedInBA = intNonEventProducer.clone(ivalue = 40)
0072 process.producerAEndRunConsumedInBA = intNonEventProducer.clone(ivalue = 50)
0073 process.producerABeginProcessBlockConsumedInBA = intNonEventProducer.clone(ivalue = 60)
0074 process.producerAEndProcessBlockConsumedInBA = intNonEventProducer.clone(ivalue = 70)
0075 
0076 process.producerEventNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0077 process.producerBeginLumiNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteInLumiProducer")
0078 process.producerBeginRunNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteInRunProducer")
0079 process.producerBeginProcessBlockNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteInProcessProducer")
0080 
0081 # These producers do not get the event transitions for the events
0082 # where the same-name producers in the SubProcesses produce a product.
0083 # Nevertheless, these producers must not be deleted early, because
0084 # their event transitions might get called.
0085 process.producerEventMaybeConsumedInB = intEventProducerMustRun.clone(mustRunEvent=False)
0086 process.producerEventMaybeConsumedInBA = intEventProducerMustRun.clone(mustRunEvent=False)
0087 process.producerEventMaybeConsumedInC = intEventProducerMustRun.clone(mustRunEvent=False)
0088 
0089 process.producerAEventNotConsumedInB = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0090 process.producerAEventNotConsumedInBA = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0091 process.producerAEventNotConsumedInC = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0092 process.producerAEventNotConsumedInD = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0093 
0094 process.producerEventConsumedInB1 = intEventProducerMustRun.clone()
0095 process.producerEventConsumedInB2 = intEventProducerMustRun.clone()
0096 process.producerEventConsumedInBA1 = intEventProducerMustRun.clone()
0097 process.producerEventConsumedInBA2 = intEventProducerMustRun.clone()
0098 process.producerEventConsumedInC1 = intEventProducerMustRun.clone()
0099 process.producerEventConsumedInC2 = intEventProducerMustRun.clone()
0100 
0101 process.producerANotConsumedChainEvent = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0102 process.producerANotConsumedChainLumi = cms.EDProducer("edmtest::TestModuleDeleteInLumiProducer",
0103     srcEvent = cms.untracked.VInputTag("producerANotConsumedChainEvent")
0104 )
0105 process.producerANotConsumedChainRun = cms.EDProducer("edmtest::TestModuleDeleteInRunProducer",
0106     srcEvent = cms.untracked.VInputTag("producerANotConsumedChainEvent")
0107 )
0108 
0109 process.intAnalyzerDelete = cms.EDAnalyzer("edmtest::TestModuleDeleteAnalyzer")
0110 
0111 process.t = cms.Task(
0112     process.producerAEventConsumedInB,
0113     process.producerABeginLumiConsumedInB,
0114     process.producerAEndRunConsumedInB,
0115     process.producerABeginProcessBlockConsumedInB,
0116     process.producerAEndLumiConsumedInC,
0117     process.producerABeginRunConsumedInC,
0118     process.producerAEndProcessBlockConsumedInC,
0119     #
0120     process.producerAEventConsumedInBA,
0121     process.producerABeginLumiConsumedInBA,
0122     process.producerAEndLumiConsumedInBA,
0123     process.producerABeginRunConsumedInBA,
0124     process.producerAEndRunConsumedInBA,
0125     process.producerABeginProcessBlockConsumedInBA,
0126     process.producerAEndProcessBlockConsumedInBA,
0127     #
0128     process.producerEventNotConsumed,
0129     process.producerBeginLumiNotConsumed,
0130     process.producerBeginRunNotConsumed,
0131     process.producerBeginProcessBlockNotConsumed,
0132     #
0133     process.producerEventMaybeConsumedInB,
0134     process.producerEventMaybeConsumedInBA,
0135     process.producerEventMaybeConsumedInC,
0136     #
0137     process.producerAEventNotConsumedInB,
0138     process.producerAEventNotConsumedInBA,
0139     process.producerAEventNotConsumedInC,
0140     #
0141     process.producerEventConsumedInB1,
0142     process.producerEventConsumedInB2,
0143     process.producerEventConsumedInBA1,
0144     process.producerEventConsumedInBA2,
0145     process.producerEventConsumedInC1,
0146     process.producerEventConsumedInC2,
0147     #
0148     process.producerANotConsumedChainEvent,
0149     process.producerANotConsumedChainLumi,
0150     process.producerANotConsumedChainRun,
0151 )
0152 
0153 
0154 process.p = cms.Path(
0155     process.intAnalyzerDelete
0156     ,
0157     process.t
0158 )
0159 
0160 ####################
0161 subprocessB = cms.Process("B")
0162 process.addSubProcess( cms.SubProcess(
0163     process = subprocessB,
0164     SelectEvents = cms.untracked.PSet(),
0165     outputCommands = cms.untracked.vstring()
0166 ) )
0167 
0168 subprocessB.consumerEventFromA = intEventConsumer.clone(moduleLabel = "producerAEventConsumedInB", valueMustMatch = 1)
0169 subprocessB.consumerBeginLumiFromA = nonEventConsumer("beginLumi", "producerA%sConsumedInB", 2)
0170 subprocessB.consumerEndRunFromA = nonEventConsumer("endRun", "producerA%sConsumedInB", 5)
0171 subprocessB.consumerBeginProcessBlockFromA = intNonEventProducer.clone(
0172     consumesAccessInputProcessBlock = cms.InputTag("producerABeginProcessBlockConsumedInB", "beginProcessBlock"),
0173     expectAccessInputProcessBlock = cms.untracked.int32(6)
0174 )
0175 
0176 subprocessB.consumerAEventNotConsumed = intGenericConsumer.clone(
0177     srcEvent = [
0178         "producerEventNotConsumed:doesNotExist",
0179         "producerEventNotConsumed:doesNotExist:A",
0180         cms.InputTag("producerEventNotConsumed", "doesNotExist", cms.InputTag.skipCurrentProcess())
0181     ],
0182     inputShouldExist = False,
0183 )
0184 subprocessB.consumerAEventNotConsumed2 = uint64GenericConsumer.clone(
0185     srcEvent = [
0186         "producerEventNotConsumed",
0187         "producerEventNotConsumed::A",
0188         cms.InputTag("producerEventNotConsumed", "", cms.InputTag.skipCurrentProcess())
0189     ],
0190     inputShouldExist = False,
0191 )
0192 subprocessB.producerEventNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0193 subprocessB.producerBeginLumiNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteInLumiProducer")
0194 subprocessB.producerBeginRunNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteInRunProducer")
0195 subprocessB.producerBeginProcessBlockNotConsumed = cms.EDProducer("edmtest::TestModuleDeleteInProcessProducer")
0196 
0197 subprocessB.producerEventMaybeConsumedInB = intEventProducerMustRun.clone()
0198 subprocessB.producerEventMaybeConsumedInBA = intEventProducerMustRun.clone(mustRunEvent=False)
0199 subprocessB.consumerEventMaybeInB = intGenericConsumer.clone(srcEvent = ["producerEventMaybeConsumedInB"])
0200 
0201 subprocessB.producerAEventNotConsumedInB = intEventProducerMustRun.clone()
0202 subprocessB.producerAEventNotConsumedInBA = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0203 subprocessB.consumerAEventNotConsumedInB = intGenericConsumer.clone(srcEvent = ["producerAEventNotConsumedInB::B"])
0204 
0205 subprocessB.producerEventConsumedInB1 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0206 subprocessB.producerEventConsumedInB2 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0207 subprocessB.consumerEventNotConsumedInB1 = intGenericConsumer.clone(srcEvent = ["producerEventConsumedInB1::A"])
0208 subprocessB.consumerEventNotConsumedInB2 = intGenericConsumer.clone(srcEvent = [cms.InputTag("producerEventConsumedInB2", "", cms.InputTag.skipCurrentProcess())])
0209 subprocessB.producerBEventConsumedInBA1 = intEventProducerMustRun.clone()
0210 subprocessB.producerBEventConsumedInBA2 = intEventProducerMustRun.clone()
0211 
0212 subprocessB.producerBEventConsumedInC1 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0213 subprocessB.producerBEventConsumedInC2 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0214 
0215 subprocessB.producerBEventConsumedInB1 = intEventProducerMustRun.clone()
0216 subprocessB.producerBEventConsumedInB2 = intEventProducerMustRun.clone()
0217 subprocessB.producerBEventConsumedInB3 = intEventProducerMustRun.clone()
0218 subprocessB.consumerBEventConsumedInB1 = intGenericConsumer.clone(srcEvent = ["producerBEventConsumedInB1"])
0219 subprocessB.consumerBEventConsumedInB2 = intGenericConsumer.clone(srcEvent = ["producerBEventConsumedInB2::B"])
0220 subprocessB.consumerBEventConsumedInB3 = intGenericConsumer.clone(srcEvent = [cms.InputTag("producerBEventConsumedInB3", "", cms.InputTag.currentProcess())])
0221 
0222 subprocessB.producerBNotConsumedChainEvent = cms.EDProducer("edmtest::TestModuleDeleteProducer",
0223     srcBeginRun = cms.untracked.VInputTag("producerANotConsumedChainRun")
0224 )
0225 subprocessB.producerBNotConsumedChainLumi = cms.EDProducer("edmtest::TestModuleDeleteInLumiProducer",
0226     srcEvent = cms.untracked.VInputTag("producerANotConsumedChainEvent")
0227 )
0228 subprocessB.producerBNotConsumedChainRun = cms.EDProducer("edmtest::TestModuleDeleteInRunProducer",
0229     srcBeginLumi = cms.untracked.VInputTag("producerANotConsumedChainLumi")
0230 )
0231 
0232 subprocessB.t = cms.Task(
0233     subprocessB.producerEventNotConsumed,
0234     subprocessB.producerBeginLumiNotConsumed,
0235     subprocessB.producerBeginRunNotConsumed,
0236     subprocessB.producerBeginProcessBlockNotConsumed,
0237     #
0238     subprocessB.producerEventMaybeConsumedInB,
0239     subprocessB.producerEventMaybeConsumedInBA,
0240     #
0241     subprocessB.producerAEventNotConsumedInB,
0242     subprocessB.producerAEventNotConsumedInBA,
0243     #
0244     subprocessB.producerEventConsumedInB1,
0245     subprocessB.producerEventConsumedInB2,
0246     subprocessB.producerBEventConsumedInBA1,
0247     subprocessB.producerBEventConsumedInBA2,
0248     #
0249     subprocessB.producerBEventConsumedInC1,
0250     subprocessB.producerBEventConsumedInC2,
0251     #
0252     subprocessB.producerBEventConsumedInB1,
0253     subprocessB.producerBEventConsumedInB2,
0254     subprocessB.producerBEventConsumedInB3,
0255     #
0256     subprocessB.producerBNotConsumedChainEvent,
0257     subprocessB.producerBNotConsumedChainLumi,
0258     subprocessB.producerBNotConsumedChainRun,
0259 )
0260 subprocessB.p = cms.Path(
0261     subprocessB.consumerEventFromA+
0262     subprocessB.consumerBeginLumiFromA+
0263     subprocessB.consumerEndRunFromA+
0264     subprocessB.consumerBeginProcessBlockFromA+
0265     #
0266     subprocessB.consumerAEventNotConsumed+
0267     subprocessB.consumerAEventNotConsumed2+
0268     #
0269     subprocessB.consumerEventMaybeInB+
0270     #
0271     subprocessB.consumerAEventNotConsumedInB+
0272     subprocessB.consumerEventNotConsumedInB1+
0273     subprocessB.consumerEventNotConsumedInB2+
0274     #
0275     subprocessB.consumerBEventConsumedInB1+
0276     subprocessB.consumerBEventConsumedInB2+
0277     subprocessB.consumerBEventConsumedInB3
0278     ,subprocessB.t
0279 )
0280 
0281 ####################
0282 subprocessBA = cms.Process("BA")
0283 subprocessB.addSubProcess( cms.SubProcess(
0284     process = subprocessBA,
0285     SelectEvents = cms.untracked.PSet(),
0286     outputCommands = cms.untracked.vstring()
0287 ) )
0288 
0289 subprocessBA.consumerEventFromA = intEventConsumer.clone(moduleLabel = "producerAEventConsumedInBA", valueMustMatch = 10)
0290 subprocessBA.consumerBeginLumiFromA = nonEventConsumer("beginLumi", "producerA%sConsumedInBA", 20)
0291 subprocessBA.consumerEndLumiFromA = nonEventConsumer("endLumi", "producerA%sConsumedInBA", 30)
0292 subprocessBA.consumerBeginRunFromA = nonEventConsumer("beginRun", "producerA%sConsumedInBA", 40)
0293 subprocessBA.consumerEndRunFromA = nonEventConsumer("endRun", "producerA%sConsumedInBA", 50)
0294 subprocessBA.consumerBeginProcessBlockFromA = intNonEventProducer.clone(
0295     consumesAccessInputProcessBlock = cms.InputTag("producerABeginProcessBlockConsumedInBA", "beginProcessBlock"),
0296     expectAccessInputProcessBlock = cms.untracked.int32(60)
0297 )
0298 subprocessBA.consumerEndProcessBlockFromA = intNonEventProducer.clone(
0299     consumesAccessInputProcessBlock = cms.InputTag("producerAEndProcessBlockConsumedInBA", "endProcessBlock"),
0300     expectAccessInputProcessBlock = cms.untracked.int32(70)
0301 )
0302 
0303 subprocessBA.consumerABEventNotConsumed = intGenericConsumer.clone(
0304     srcEvent = [
0305         "producerEventNotConsumed:doesNotExist",
0306         "producerEventNotConsumed:doesNotExist:A",
0307         "producerEventNotConsumed:doesNotExist:B",
0308         cms.InputTag("producerEventNotConsumed", "doesNotExist", cms.InputTag.skipCurrentProcess())
0309     ],
0310     inputShouldExist = False,
0311 )
0312 subprocessBA.consumerABEventNotConsumed2 = uint64GenericConsumer.clone(
0313     srcEvent = [
0314         "producerEventNotConsumed",
0315         "producerEventNotConsumed::A",
0316         "producerEventNotConsumed::B",
0317         cms.InputTag("producerEventNotConsumed", "", cms.InputTag.skipCurrentProcess())
0318     ],
0319     inputShouldExist = False,
0320 )
0321 
0322 subprocessBA.producerEventMaybeConsumedInBA = intEventProducerMustRun.clone()
0323 subprocessBA.consumerEventMaybeInBA = intGenericConsumer.clone(srcEvent = ["producerEventMaybeConsumedInBA"])
0324 
0325 subprocessBA.producerAEventNotConsumedInBA = intEventProducerMustRun.clone()
0326 subprocessBA.consumerAEventNotConsumedInBA = intGenericConsumer.clone(srcEvent = ["producerAEventNotConsumedInBA::BA"])
0327 
0328 subprocessBA.producerEventConsumedInBA1 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0329 subprocessBA.producerEventConsumedInBA2 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0330 subprocessBA.producerBEventConsumedInBA1 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0331 subprocessBA.producerBEventConsumedInBA2 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0332 subprocessBA.consumerEventNotConsumedInBA1 = intGenericConsumer.clone(srcEvent = ["producerEventConsumedInBA1::A",
0333                                                                                   "producerBEventConsumedInBA1::B"])
0334 subprocessBA.consumerEventNotConsumedInBA2 = intGenericConsumer.clone(srcEvent = [
0335     cms.InputTag("producerEventConsumedInBA2", "", cms.InputTag.skipCurrentProcess()),
0336     cms.InputTag("producerBEventConsumedInBA2", "", cms.InputTag.skipCurrentProcess())
0337 ])
0338 
0339 subprocessBA.producerBANotConsumedChainEvent = cms.EDProducer("edmtest::TestModuleDeleteProducer",
0340     srcBeginLumi = cms.untracked.VInputTag("producerBNotConsumedChainLumi")
0341 )
0342 subprocessBA.producerBANotConsumedChainLumi = cms.EDProducer("edmtest::TestModuleDeleteInLumiProducer",
0343     srcBeginRun = cms.untracked.VInputTag("producerBNotConsumedChainRun")
0344 )
0345 subprocessBA.producerBANotConsumedChainRun = cms.EDProducer("edmtest::TestModuleDeleteInRunProducer",
0346     srcEvent = cms.untracked.VInputTag("producerBNotConsumedChainEvent")
0347 )
0348 subprocessBA.producerBANotConsumedChainEvent2 = cms.EDProducer("edmtest::TestModuleDeleteProducer",
0349     srcBeginRun = cms.untracked.VInputTag("producerANotConsumedChainRun"),
0350     srcBeginLumi = cms.untracked.VInputTag("producerANotConsumedChainLumi"),
0351     srcEvent = cms.untracked.VInputTag("producerANotConsumedChainEvent"),
0352 )
0353 
0354 
0355 subprocessBA.t = cms.Task(
0356     subprocessBA.producerEventMaybeConsumedInBA,
0357     #
0358     subprocessBA.producerAEventNotConsumedInBA,
0359     #
0360     subprocessBA.producerEventConsumedInBA1,
0361     subprocessBA.producerEventConsumedInBA2,
0362     subprocessBA.producerBEventConsumedInBA1,
0363     subprocessBA.producerBEventConsumedInBA2,
0364     #
0365     subprocessBA.producerBANotConsumedChainEvent,
0366     subprocessBA.producerBANotConsumedChainLumi,
0367     subprocessBA.producerBANotConsumedChainRun,
0368     subprocessBA.producerBANotConsumedChainEvent2,
0369 )
0370 subprocessBA.p = cms.Path(
0371     subprocessBA.consumerEventFromA+
0372     subprocessBA.consumerBeginLumiFromA+
0373     subprocessBA.consumerEndLumiFromA+
0374     subprocessBA.consumerBeginRunFromA+
0375     subprocessBA.consumerEndRunFromA+
0376     subprocessBA.consumerBeginProcessBlockFromA+
0377     subprocessBA.consumerEndProcessBlockFromA+
0378     #
0379     subprocessBA.consumerABEventNotConsumed+
0380     subprocessBA.consumerABEventNotConsumed2+
0381     #
0382     subprocessBA.consumerEventMaybeInBA+
0383     #
0384     subprocessBA.consumerAEventNotConsumedInBA+
0385     #
0386     subprocessBA.consumerEventNotConsumedInBA1+
0387     subprocessBA.consumerEventNotConsumedInBA2
0388     , subprocessBA.t
0389 )
0390 
0391 ####################
0392 subprocessC = cms.Process("C")
0393 process.addSubProcess( cms.SubProcess(
0394     process = subprocessC,
0395     SelectEvents = cms.untracked.PSet(),
0396     outputCommands = cms.untracked.vstring()
0397 ) )
0398 
0399 subprocessC.consumerEndLumiFromA = nonEventConsumer("endLumi", "producerA%sConsumedInC", 3)
0400 subprocessC.consumerBeginRunFromA = nonEventConsumer("beginRun", "producerA%sConsumedInC", 4)
0401 subprocessC.consumerEndProcessBlockFromA = intNonEventProducer.clone(
0402     consumesAccessInputProcessBlock = cms.InputTag("producerAEndProcessBlockConsumedInC", "endProcessBlock"),
0403     expectAccessInputProcessBlock = cms.untracked.int32(7)
0404 )
0405 
0406 subprocessC.consumerAEventNotConsumed = intGenericConsumer.clone(
0407     srcEvent = [
0408         "producerEventNotConsumed:doesNotExist",
0409         "producerEventNotConsumed:doesNotExist:A",
0410         cms.InputTag("producerEventNotConsumed", "doesNotExist", cms.InputTag.skipCurrentProcess())
0411     ],
0412     inputShouldExist = False,
0413 )
0414 subprocessC.consumerAEventNotConsumed2 = uint64GenericConsumer.clone(
0415     srcEvent = [
0416         "producerEventNotConsumed",
0417         "producerEventNotConsumed::A",
0418         cms.InputTag("producerEventNotConsumed", "", cms.InputTag.skipCurrentProcess())
0419     ],
0420     inputShouldExist = False,
0421 )
0422 
0423 subprocessC.producerEventMaybeConsumedInC = intEventProducerMustRun.clone()
0424 subprocessC.consumerEventMaybeInC = intGenericConsumer.clone(srcEvent = ["producerEventMaybeConsumedInC"])
0425 
0426 subprocessC.producerAEventNotConsumedInC = intEventProducerMustRun.clone()
0427 subprocessC.consumerAEventNotConsumedInC = intGenericConsumer.clone(srcEvent = ["producerAEventNotConsumedInC::C"])
0428 
0429 subprocessC.producerEventConsumedInC1 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0430 subprocessC.producerEventConsumedInC2 = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0431 subprocessC.consumerEventNotConsumedInC1 = intGenericConsumer.clone(srcEvent = ["producerEventConsumedInC1::A"])
0432 subprocessC.consumerEventNotConsumedInC2 = intGenericConsumer.clone(srcEvent = [cms.InputTag("producerEventConsumedInC2", "", cms.InputTag.skipCurrentProcess())])
0433 
0434 subprocessC.consumerBEventConsumedInC1 = intGenericConsumer.clone(srcEvent = ["producerBEventConsumedInC1"], inputShouldExist=False)
0435 subprocessC.consumerBEventConsumedInC2 = intGenericConsumer.clone(srcEvent = ["producerBEventConsumedInC1::B"], inputShouldExist=False)
0436 
0437 subprocessC.producerCNotConsumedChainEvent = cms.EDProducer("edmtest::TestModuleDeleteProducer",
0438     srcEvent = cms.untracked.VInputTag("producerANotConsumedChainEvent")
0439 )
0440 subprocessC.producerCNotConsumedChainLumi = cms.EDProducer("edmtest::TestModuleDeleteInLumiProducer",
0441     srcBeginLumi = cms.untracked.VInputTag("producerANotConsumedChainLumi")
0442 )
0443 subprocessC.producerCNotConsumedChainRun = cms.EDProducer("edmtest::TestModuleDeleteInRunProducer",
0444     srcBeginRun = cms.untracked.VInputTag("producerANotConsumedChainRun")
0445 )
0446 
0447 subprocessC.t = cms.Task(
0448     subprocessC.producerEventMaybeConsumedInC,
0449     #
0450     subprocessC.producerAEventNotConsumedInC,
0451     #
0452     subprocessC.producerEventConsumedInC1,
0453     subprocessC.producerEventConsumedInC2,
0454     #
0455     subprocessC.producerCNotConsumedChainEvent,
0456     subprocessC.producerCNotConsumedChainLumi,
0457     subprocessC.producerCNotConsumedChainRun,
0458 )
0459 subprocessC.p = cms.Path(
0460     subprocessC.consumerEndLumiFromA+
0461     subprocessC.consumerBeginRunFromA+
0462     subprocessC.consumerEndProcessBlockFromA+
0463     #
0464     subprocessC.consumerAEventNotConsumed+
0465     subprocessC.consumerAEventNotConsumed2+
0466     #
0467     subprocessC.consumerEventMaybeInC+
0468     subprocessC.consumerAEventNotConsumedInC+
0469     #
0470     subprocessC.consumerEventNotConsumedInC1+
0471     subprocessC.consumerEventNotConsumedInC2+
0472     #
0473     subprocessC.consumerBEventConsumedInC1+
0474     subprocessC.consumerBEventConsumedInC2
0475     , subprocessC.t
0476 )
0477 
0478 ####################
0479 subprocessD = cms.Process("D")
0480 process.addSubProcess( cms.SubProcess(
0481     process = subprocessD,
0482     SelectEvents = cms.untracked.PSet(),
0483     outputCommands = cms.untracked.vstring(
0484         "drop *_producerAEventNotConsumedInD_*_*",
0485     )
0486 ) )
0487 
0488 subprocessD.consumerAEventNotConsumedInD = intGenericConsumer.clone(
0489     srcEvent = [
0490         "producerAEvenNotConsumedInD",
0491         "producerAEvenNotConsumedInD::A",
0492         cms.InputTag("producerEventANotConsumedInD", "", cms.InputTag.skipCurrentProcess())
0493     ],
0494     inputShouldExist = False,
0495 )
0496 
0497 subprocessD.producerDEventNotConsumedInDA = cms.EDProducer("edmtest::TestModuleDeleteProducer")
0498 
0499 subprocessD.t = cms.Task(
0500     subprocessD.producerDEventNotConsumedInDA
0501 )
0502 subprocessD.p = cms.Path(
0503     subprocessD.consumerAEventNotConsumedInD,
0504     subprocessD.t
0505 )
0506 
0507 ####################
0508 subprocessDA = cms.Process("BA")
0509 subprocessD.addSubProcess( cms.SubProcess(
0510     process = subprocessDA,
0511     SelectEvents = cms.untracked.PSet(),
0512     outputCommands = cms.untracked.vstring(
0513         "drop *_producerDEventNotConsumedInDA_*_*",
0514     )
0515 ) )
0516 
0517 subprocessDA.consumerAEventNotConsumedInD = intGenericConsumer.clone(
0518     srcEvent = [
0519         "producerAEvenNotConsumedInD",
0520         "producerAEvenNotConsumedInD::A",
0521         cms.InputTag("producerEventANotConsumedInD", "", cms.InputTag.skipCurrentProcess())
0522     ],
0523     inputShouldExist = False,
0524 )
0525 subprocessDA.consumerDEventNotConsumedInDA = intGenericConsumer.clone(
0526     srcEvent = [
0527         "producerDEvenNotConsumedInDA",
0528         "producerDEvenNotConsumedInDA::D",
0529         cms.InputTag("producerEventDNotConsumedInDA", "", cms.InputTag.skipCurrentProcess())
0530     ],
0531     inputShouldExist = False,
0532 )
0533 
0534 subprocessDA.producerDNotConsumedChainRun = cms.EDProducer("edmtest::TestModuleDeleteInRunProducer",
0535     srcBeginRun = cms.untracked.VInputTag("producerANotConsumedChainRun"),
0536     srcBeginLumi = cms.untracked.VInputTag("producerANotConsumedChainLumi"),
0537     srcEvent = cms.untracked.VInputTag("producerANotConsumedChainEvent"),
0538 )
0539 
0540 subprocessDA.t = cms.Task(
0541     subprocessDA.producerDNotConsumedChainRun
0542 )
0543 
0544 subprocessDA.p = cms.Path(
0545     subprocessDA.consumerAEventNotConsumedInD+
0546     subprocessDA.consumerDEventNotConsumedInDA,
0547     subprocessDA.t
0548 )