Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:03:07

0001 # Test for thinning collections and redirecting Refs
0002 # with SubProcesses. The basic strategy here is to
0003 # repeat tests ThinningTest1_cfg.py, ThinningTest2_cfg.py
0004 # and ThinningTest3_cfg.py except run them in one
0005 # process with SubProcesses.  There is one possibly
0006 # surprising feature here.  Refs to dropped products
0007 # will still succeed to find elements in containers
0008 # the were dropped in earlier SubProcesses even though
0009 # a getByToken call will not find the product. This
0010 # is because Refs contain direct pointers to the
0011 # product or the ProductGetter and do not use
0012 # the lookup mechanism that respects the product
0013 # drops. So the expected values in the test
0014 # below must all reflect that. We have to
0015 # run a separate process to actually test that
0016 # the redirection of Refs is working.
0017 # See ThinningTestSubProcessRead_cfg.py.
0018 
0019 import FWCore.ParameterSet.Config as cms
0020 
0021 process = cms.Process("FIRST")
0022 
0023 #process.Tracer = cms.Service('Tracer')
0024 
0025 process.load("FWCore.MessageLogger.MessageLogger_cfi")
0026 
0027 process.MessageLogger.cerr.threshold = 'INFO'
0028 process.MessageLogger.cerr.INFO.limit = 100
0029 
0030 process.options = cms.untracked.PSet(
0031     numberOfStreams = cms.untracked.uint32(1)
0032 )
0033 
0034 process.maxEvents = cms.untracked.PSet(
0035     input = cms.untracked.int32(3)
0036 )
0037 
0038 process.source = cms.Source("EmptySource")
0039 
0040 process.WhatsItESProducer = cms.ESProducer("WhatsItESProducer")
0041 
0042 process.DoodadESSource = cms.ESSource("DoodadESSource")
0043 
0044 process.thingProducer = cms.EDProducer("ThingProducer",
0045                                        offsetDelta = cms.int32(100),
0046                                        nThings = cms.int32(50)
0047 )
0048 
0049 process.trackOfThingsProducerA = cms.EDProducer("TrackOfThingsProducer",
0050     inputTag = cms.InputTag('thingProducer'),
0051     keysToReference = cms.vuint32(0, 1, 2, 3, 4, 5, 6, 7, 8)
0052 )
0053 
0054 process.trackOfThingsProducerB = cms.EDProducer("TrackOfThingsProducer",
0055     inputTag = cms.InputTag('thingProducer'),
0056     keysToReference = cms.vuint32(0, 1, 2, 3)
0057 )
0058 
0059 process.trackOfThingsProducerC = cms.EDProducer("TrackOfThingsProducer",
0060     inputTag = cms.InputTag('thingProducer'),
0061     keysToReference = cms.vuint32(4, 5, 6, 7)
0062 )
0063 
0064 process.trackOfThingsProducerD = cms.EDProducer("TrackOfThingsProducer",
0065     inputTag = cms.InputTag('thingProducer'),
0066     keysToReference = cms.vuint32(10, 11, 12, 13, 14, 15, 16, 17, 18)
0067 )
0068 
0069 process.trackOfThingsProducerE = cms.EDProducer("TrackOfThingsProducer",
0070     inputTag = cms.InputTag('thingProducer'),
0071     keysToReference = cms.vuint32(10, 11, 12, 13)
0072 )
0073 
0074 process.trackOfThingsProducerF = cms.EDProducer("TrackOfThingsProducer",
0075     inputTag = cms.InputTag('thingProducer'),
0076     keysToReference = cms.vuint32(14, 15, 16, 17)
0077 )
0078 
0079 process.trackOfThingsProducerG = cms.EDProducer("TrackOfThingsProducer",
0080     inputTag = cms.InputTag('thingProducer'),
0081     keysToReference = cms.vuint32(20, 21, 22, 23, 24, 25, 26, 27, 28)
0082 )
0083 
0084 process.trackOfThingsProducerH = cms.EDProducer("TrackOfThingsProducer",
0085     inputTag = cms.InputTag('thingProducer'),
0086     keysToReference = cms.vuint32(20, 21, 22, 23)
0087 )
0088 
0089 process.trackOfThingsProducerI = cms.EDProducer("TrackOfThingsProducer",
0090     inputTag = cms.InputTag('thingProducer'),
0091     keysToReference = cms.vuint32(24, 25, 26, 27)
0092 )
0093 
0094 process.trackOfThingsProducerJ = cms.EDProducer("TrackOfThingsProducer",
0095     inputTag = cms.InputTag('thingProducer'),
0096     keysToReference = cms.vuint32(30, 31, 32, 33, 34, 35, 36, 37, 38)
0097 )
0098 
0099 process.trackOfThingsProducerK = cms.EDProducer("TrackOfThingsProducer",
0100     inputTag = cms.InputTag('thingProducer'),
0101     keysToReference = cms.vuint32(30, 31, 32, 33)
0102 )
0103 
0104 process.trackOfThingsProducerL = cms.EDProducer("TrackOfThingsProducer",
0105     inputTag = cms.InputTag('thingProducer'),
0106     keysToReference = cms.vuint32(34, 35, 36, 37)
0107 )
0108 
0109 process.trackOfThingsProducerM = cms.EDProducer("TrackOfThingsProducer",
0110     inputTag = cms.InputTag('thingProducer'),
0111     keysToReference = cms.vuint32(40, 41, 42, 43, 44, 45, 46, 47, 48)
0112 )
0113 
0114 process.trackOfThingsProducerN = cms.EDProducer("TrackOfThingsProducer",
0115     inputTag = cms.InputTag('thingProducer'),
0116     keysToReference = cms.vuint32(40, 41, 42, 43)
0117 )
0118 
0119 process.trackOfThingsProducerO = cms.EDProducer("TrackOfThingsProducer",
0120     inputTag = cms.InputTag('thingProducer'),
0121     keysToReference = cms.vuint32(44, 45, 46, 47)
0122 )
0123 
0124 process.thinningThingProducerA = cms.EDProducer("ThinningThingProducer",
0125     inputTag = cms.InputTag('thingProducer'),
0126     trackTag = cms.InputTag('trackOfThingsProducerA'),
0127     offsetToThinnedKey = cms.uint32(0),
0128     expectedCollectionSize = cms.uint32(50)
0129 )
0130 
0131 process.thinningThingProducerB = cms.EDProducer("ThinningThingProducer",
0132     inputTag = cms.InputTag('thinningThingProducerA'),
0133     trackTag = cms.InputTag('trackOfThingsProducerB'),
0134     offsetToThinnedKey = cms.uint32(0),
0135     expectedCollectionSize = cms.uint32(9)
0136 )
0137 
0138 process.thinningThingProducerC = cms.EDProducer("ThinningThingProducer",
0139     inputTag = cms.InputTag('thinningThingProducerA'),
0140     trackTag = cms.InputTag('trackOfThingsProducerC'),
0141     offsetToThinnedKey = cms.uint32(0),
0142     expectedCollectionSize = cms.uint32(9)
0143 )
0144 
0145 process.thinningThingProducerD = cms.EDProducer("ThinningThingProducer",
0146     inputTag = cms.InputTag('thingProducer'),
0147     trackTag = cms.InputTag('trackOfThingsProducerD'),
0148     offsetToThinnedKey = cms.uint32(0),
0149     expectedCollectionSize = cms.uint32(50)
0150 )
0151 
0152 process.thinningThingProducerE = cms.EDProducer("ThinningThingProducer",
0153     inputTag = cms.InputTag('thinningThingProducerD'),
0154     trackTag = cms.InputTag('trackOfThingsProducerE'),
0155     offsetToThinnedKey = cms.uint32(10),
0156     expectedCollectionSize = cms.uint32(9)
0157 )
0158 
0159 process.thinningThingProducerF = cms.EDProducer("ThinningThingProducer",
0160     inputTag = cms.InputTag('thinningThingProducerD'),
0161     trackTag = cms.InputTag('trackOfThingsProducerF'),
0162     offsetToThinnedKey = cms.uint32(10),
0163     expectedCollectionSize = cms.uint32(9)
0164 )
0165 
0166 process.thinningThingProducerG = cms.EDProducer("ThinningThingProducer",
0167     inputTag = cms.InputTag('thingProducer'),
0168     trackTag = cms.InputTag('trackOfThingsProducerG'),
0169     offsetToThinnedKey = cms.uint32(0),
0170     expectedCollectionSize = cms.uint32(50)
0171 )
0172 
0173 process.thinningThingProducerH = cms.EDProducer("ThinningThingProducer",
0174     inputTag = cms.InputTag('thinningThingProducerG'),
0175     trackTag = cms.InputTag('trackOfThingsProducerH'),
0176     offsetToThinnedKey = cms.uint32(20),
0177     expectedCollectionSize = cms.uint32(9)
0178 )
0179 
0180 process.thinningThingProducerI = cms.EDProducer("ThinningThingProducer",
0181     inputTag = cms.InputTag('thinningThingProducerG'),
0182     trackTag = cms.InputTag('trackOfThingsProducerI'),
0183     offsetToThinnedKey = cms.uint32(20),
0184     expectedCollectionSize = cms.uint32(9)
0185 )
0186 
0187 process.thinningThingProducerJ = cms.EDProducer("ThinningThingProducer",
0188     inputTag = cms.InputTag('thingProducer'),
0189     trackTag = cms.InputTag('trackOfThingsProducerJ'),
0190     offsetToThinnedKey = cms.uint32(0),
0191     expectedCollectionSize = cms.uint32(50)
0192 )
0193 
0194 process.thinningThingProducerK = cms.EDProducer("ThinningThingProducer",
0195     inputTag = cms.InputTag('thinningThingProducerJ'),
0196     trackTag = cms.InputTag('trackOfThingsProducerK'),
0197     offsetToThinnedKey = cms.uint32(30),
0198     expectedCollectionSize = cms.uint32(9)
0199 )
0200 
0201 process.thinningThingProducerL = cms.EDProducer("ThinningThingProducer",
0202     inputTag = cms.InputTag('thinningThingProducerJ'),
0203     trackTag = cms.InputTag('trackOfThingsProducerL'),
0204     offsetToThinnedKey = cms.uint32(30),
0205     expectedCollectionSize = cms.uint32(9)
0206 )
0207 
0208 process.thinningThingProducerM = cms.EDProducer("ThinningThingProducer",
0209     inputTag = cms.InputTag('thingProducer'),
0210     trackTag = cms.InputTag('trackOfThingsProducerM'),
0211     offsetToThinnedKey = cms.uint32(0),
0212     expectedCollectionSize = cms.uint32(50)
0213 )
0214 
0215 process.aliasM = cms.EDAlias(
0216   thinningThingProducerM = cms.VPSet(
0217     cms.PSet(type = cms.string('edmtestThings')),
0218     # the next one should get ignored
0219     cms.PSet(type = cms.string('edmThinnedAssociation')) 
0220   )
0221 )
0222 
0223 process.thinningThingProducerN = cms.EDProducer("ThinningThingProducer",
0224     inputTag = cms.InputTag('thinningThingProducerM'),
0225     trackTag = cms.InputTag('trackOfThingsProducerN'),
0226     offsetToThinnedKey = cms.uint32(40),
0227     expectedCollectionSize = cms.uint32(9)
0228 )
0229 
0230 process.aliasN = cms.EDAlias(
0231   thinningThingProducerN = cms.VPSet(
0232     cms.PSet(type = cms.string('edmtestThings')),
0233     # the next one should get ignored
0234     cms.PSet(type = cms.string('edmThinnedAssociation')) 
0235   )
0236 )
0237 
0238 process.thinningThingProducerO = cms.EDProducer("ThinningThingProducer",
0239     inputTag = cms.InputTag('thinningThingProducerM'),
0240     trackTag = cms.InputTag('trackOfThingsProducerO'),
0241     offsetToThinnedKey = cms.uint32(40),
0242     expectedCollectionSize = cms.uint32(9)
0243 )
0244 
0245 process.aliasO = cms.EDAlias(
0246   thinningThingProducerO = cms.VPSet(
0247     cms.PSet(type = cms.string('edmtestThings')),
0248     # the next one should get ignored
0249     cms.PSet(type = cms.string('edmThinnedAssociation')) 
0250   )
0251 )
0252 
0253 process.testFirstA = cms.EDAnalyzer("ThinningTestAnalyzer",
0254     parentTag = cms.InputTag('thingProducer'),
0255     thinnedTag = cms.InputTag('thinningThingProducerA'),
0256     associationTag = cms.InputTag('thinningThingProducerA'),
0257     trackTag = cms.InputTag('trackOfThingsProducerA'),
0258     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
0259                                        10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
0260                                        20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
0261                                        30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
0262                                        40, 41, 42, 43, 44, 45, 46, 47, 48, 49
0263     ),
0264     expectedThinnedContent = cms.vint32(0, 1, 2, 3, 4, 5, 6, 7, 8),
0265     expectedIndexesIntoParent = cms.vuint32(0, 1, 2, 3, 4, 5, 6, 7, 8),
0266     expectedValues = cms.vint32(0, 1, 2, 3, 4, 5, 6, 7, 8)
0267 )
0268 
0269 process.testFirstB = cms.EDAnalyzer("ThinningTestAnalyzer",
0270     parentTag = cms.InputTag('thinningThingProducerA'),
0271     thinnedTag = cms.InputTag('thinningThingProducerB'),
0272     associationTag = cms.InputTag('thinningThingProducerB'),
0273     trackTag = cms.InputTag('trackOfThingsProducerB'),
0274     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8),
0275     expectedThinnedContent = cms.vint32(0, 1, 2, 3),
0276     expectedIndexesIntoParent = cms.vuint32(0, 1, 2, 3),
0277     expectedValues = cms.vint32(0, 1, 2, 3)
0278 )
0279 
0280 process.testFirstC = cms.EDAnalyzer("ThinningTestAnalyzer",
0281     parentTag = cms.InputTag('thinningThingProducerA'),
0282     thinnedTag = cms.InputTag('thinningThingProducerC'),
0283     associationTag = cms.InputTag('thinningThingProducerC'),
0284     trackTag = cms.InputTag('trackOfThingsProducerC'),
0285     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8),
0286     expectedThinnedContent = cms.vint32(4, 5, 6, 7),
0287     expectedIndexesIntoParent = cms.vuint32(4, 5, 6, 7),
0288     expectedValues = cms.vint32(4, 5, 6, 7)
0289 )
0290 
0291 process.out = cms.OutputModule("PoolOutputModule",
0292     fileName = cms.untracked.string('testThinningTestSubProcess1.root'),
0293     outputCommands = cms.untracked.vstring(
0294         'keep *',
0295         'drop *_thinningThingProducerM_*_*',
0296         'drop *_thinningThingProducerN_*_*',
0297         'drop *_thinningThingProducerO_*_*'
0298     )
0299 )
0300 
0301 process.p = cms.Path(process.thingProducer * process.trackOfThingsProducerA
0302                                            * process.trackOfThingsProducerB
0303                                            * process.trackOfThingsProducerC
0304                                            * process.trackOfThingsProducerD
0305                                            * process.trackOfThingsProducerE
0306                                            * process.trackOfThingsProducerF
0307                                            * process.trackOfThingsProducerG
0308                                            * process.trackOfThingsProducerH
0309                                            * process.trackOfThingsProducerI
0310                                            * process.trackOfThingsProducerJ
0311                                            * process.trackOfThingsProducerK
0312                                            * process.trackOfThingsProducerL
0313                                            * process.trackOfThingsProducerM
0314                                            * process.trackOfThingsProducerN
0315                                            * process.trackOfThingsProducerO
0316                                            * process.thinningThingProducerA
0317                                            * process.thinningThingProducerB
0318                                            * process.thinningThingProducerC
0319                                            * process.thinningThingProducerD
0320                                            * process.thinningThingProducerE
0321                                            * process.thinningThingProducerF
0322                                            * process.thinningThingProducerG
0323                                            * process.thinningThingProducerH
0324                                            * process.thinningThingProducerI
0325                                            * process.thinningThingProducerJ
0326                                            * process.thinningThingProducerK
0327                                            * process.thinningThingProducerL
0328                                            * process.thinningThingProducerM
0329                                            * process.thinningThingProducerN
0330                                            * process.thinningThingProducerO
0331                                            * process.testFirstA
0332                                            * process.testFirstB
0333                                            * process.testFirstC
0334                     )
0335 
0336 process.endPath = cms.EndPath(process.out)
0337 
0338 # ---------------------------------------------------------------
0339 
0340 secondProcess = cms.Process("SECOND")
0341 process.addSubProcess(cms.SubProcess(secondProcess,
0342     outputCommands = cms.untracked.vstring(
0343         'keep *',
0344         'drop *_thinningThingProducerM_*_*',
0345         'drop *_thinningThingProducerN_*_*',
0346         'drop *_thinningThingProducerO_*_*',
0347     )
0348 ))
0349 
0350 secondProcess.testSecondA = cms.EDAnalyzer("ThinningTestAnalyzer",
0351     parentTag = cms.InputTag('thingProducer'),
0352     thinnedTag = cms.InputTag('thinningThingProducerA'),
0353     associationTag = cms.InputTag('thinningThingProducerA'),
0354     trackTag = cms.InputTag('trackOfThingsProducerA'),
0355     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
0356                                        10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
0357                                        20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
0358                                        30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
0359                                        40, 41, 42, 43, 44, 45, 46, 47, 48, 49
0360     ),
0361     expectedThinnedContent = cms.vint32(0, 1, 2, 3, 4, 5, 6, 7, 8),
0362     expectedIndexesIntoParent = cms.vuint32(0, 1, 2, 3, 4, 5, 6, 7, 8),
0363     expectedValues = cms.vint32(0, 1, 2, 3, 4, 5, 6, 7, 8)
0364 )
0365 
0366 secondProcess.testSecondB = cms.EDAnalyzer("ThinningTestAnalyzer",
0367     parentTag = cms.InputTag('thinningThingProducerA'),
0368     thinnedTag = cms.InputTag('thinningThingProducerB'),
0369     associationTag = cms.InputTag('thinningThingProducerB'),
0370     trackTag = cms.InputTag('trackOfThingsProducerB'),
0371     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8),
0372     expectedThinnedContent = cms.vint32(0, 1, 2, 3),
0373     expectedIndexesIntoParent = cms.vuint32(0, 1, 2, 3),
0374     expectedValues = cms.vint32(0, 1, 2, 3)
0375 )
0376 
0377 secondProcess.testSecondC = cms.EDAnalyzer("ThinningTestAnalyzer",
0378     parentTag = cms.InputTag('thinningThingProducerA'),
0379     thinnedTag = cms.InputTag('thinningThingProducerC'),
0380     associationTag = cms.InputTag('thinningThingProducerC'),
0381     trackTag = cms.InputTag('trackOfThingsProducerC'),
0382     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8),
0383     expectedThinnedContent = cms.vint32(4, 5, 6, 7),
0384     expectedIndexesIntoParent = cms.vuint32(4, 5, 6, 7),
0385     expectedValues = cms.vint32(4, 5, 6, 7)
0386 )
0387 
0388 secondProcess.out = cms.OutputModule("PoolOutputModule",
0389     fileName = cms.untracked.string('testThinningTestSubProcess2.root'),
0390     outputCommands = cms.untracked.vstring(
0391         'keep *',
0392         'drop *_thingProducer_*_*',
0393         'drop *_thinningThingProducerD_*_*',
0394         'drop *_thinningThingProducerH_*_*',
0395         'drop *_thinningThingProducerI_*_*',
0396         'drop *_thinningThingProducerJ_*_*',
0397         'drop *_thinningThingProducerK_*_*',
0398         'drop *_thinningThingProducerL_*_*',
0399         'drop *_aliasM_*_*',
0400         'drop *_aliasN_*_*',
0401     )
0402 )
0403 
0404 secondProcess.p = cms.Path(secondProcess.testSecondA * secondProcess.testSecondB * secondProcess.testSecondC)
0405 
0406 secondProcess.endPath = cms.EndPath(secondProcess.out)
0407 
0408 # ---------------------------------------------------------------
0409 
0410 thirdProcess = cms.Process("THIRD")
0411 secondProcess.addSubProcess(cms.SubProcess(thirdProcess,
0412     outputCommands = cms.untracked.vstring(
0413         'keep *',
0414         'drop *_thingProducer_*_*',
0415         'drop *_thinningThingProducerD_*_*',
0416         'drop *_thinningThingProducerH_*_*',
0417         'drop *_thinningThingProducerI_*_*',
0418         'drop *_thinningThingProducerJ_*_*',
0419         'drop *_thinningThingProducerK_*_*',
0420         'drop *_thinningThingProducerL_*_*',
0421         'drop *_aliasM_*_*',
0422         'drop *_aliasN_*_*',
0423     )
0424 ))
0425 
0426 thirdProcess.testThirdA = cms.EDAnalyzer("ThinningTestAnalyzer",
0427     parentTag = cms.InputTag('thingProducer'),
0428     thinnedTag = cms.InputTag('thinningThingProducerA'),
0429     associationTag = cms.InputTag('thinningThingProducerA'),
0430     trackTag = cms.InputTag('trackOfThingsProducerA'),
0431     parentWasDropped = cms.bool(True),
0432     expectedThinnedContent = cms.vint32(0, 1, 2, 3, 4, 5, 6, 7, 8),
0433     expectedIndexesIntoParent = cms.vuint32(0, 1, 2, 3, 4, 5, 6, 7, 8),
0434     expectedValues = cms.vint32(0, 1, 2, 3, 4, 5, 6, 7, 8)
0435 )
0436 
0437 thirdProcess.testThirdB = cms.EDAnalyzer("ThinningTestAnalyzer",
0438     parentTag = cms.InputTag('thinningThingProducerA'),
0439     thinnedTag = cms.InputTag('thinningThingProducerB'),
0440     associationTag = cms.InputTag('thinningThingProducerB'),
0441     trackTag = cms.InputTag('trackOfThingsProducerB'),
0442     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8),
0443     expectedThinnedContent = cms.vint32(0, 1, 2, 3),
0444     expectedIndexesIntoParent = cms.vuint32(0, 1, 2, 3),
0445     expectedValues = cms.vint32(0, 1, 2, 3)
0446 )
0447 
0448 thirdProcess.testThirdC = cms.EDAnalyzer("ThinningTestAnalyzer",
0449     parentTag = cms.InputTag('thinningThingProducerA'),
0450     thinnedTag = cms.InputTag('thinningThingProducerC'),
0451     associationTag = cms.InputTag('thinningThingProducerC'),
0452     trackTag = cms.InputTag('trackOfThingsProducerC'),
0453     expectedParentContent = cms.vint32( 0,  1,  2,  3,  4,  5,  6,  7,  8),
0454     expectedThinnedContent = cms.vint32(4, 5, 6, 7),
0455     expectedIndexesIntoParent = cms.vuint32(4, 5, 6, 7),
0456     expectedValues = cms.vint32(4, 5, 6, 7)
0457 )
0458 
0459 thirdProcess.testThirdD = cms.EDAnalyzer("ThinningTestAnalyzer",
0460     parentTag = cms.InputTag('thingProducer'),
0461     thinnedTag = cms.InputTag('thinningThingProducerD'),
0462     associationTag = cms.InputTag('thinningThingProducerD'),
0463     trackTag = cms.InputTag('trackOfThingsProducerD'),
0464     parentWasDropped = cms.bool(True),
0465     thinnedWasDropped = cms.bool(True),
0466     expectedIndexesIntoParent = cms.vuint32(10, 11, 12, 13, 14, 15, 16, 17, 18),
0467     expectedValues = cms.vint32(10, 11, 12, 13, 14, 15, 16, 17, 18)
0468 )
0469 
0470 thirdProcess.testThirdE = cms.EDAnalyzer("ThinningTestAnalyzer",
0471     parentTag = cms.InputTag('thinningThingProducerD'),
0472     thinnedTag = cms.InputTag('thinningThingProducerE'),
0473     associationTag = cms.InputTag('thinningThingProducerE'),
0474     trackTag = cms.InputTag('trackOfThingsProducerE'),
0475     parentWasDropped = cms.bool(True),
0476     expectedThinnedContent = cms.vint32(10, 11, 12, 13),
0477     expectedIndexesIntoParent = cms.vuint32(0, 1, 2, 3),
0478     expectedValues = cms.vint32(10, 11, 12, 13)
0479 )
0480 
0481 thirdProcess.testThirdF = cms.EDAnalyzer("ThinningTestAnalyzer",
0482     parentTag = cms.InputTag('thinningThingProducerD'),
0483     thinnedTag = cms.InputTag('thinningThingProducerF'),
0484     associationTag = cms.InputTag('thinningThingProducerF'),
0485     trackTag = cms.InputTag('trackOfThingsProducerF'),
0486     parentWasDropped = cms.bool(True),
0487     expectedThinnedContent = cms.vint32(14, 15, 16, 17),
0488     expectedIndexesIntoParent = cms.vuint32(4, 5, 6, 7),
0489     expectedValues = cms.vint32(14, 15, 16, 17)
0490 )
0491 
0492 thirdProcess.testThirdG = cms.EDAnalyzer("ThinningTestAnalyzer",
0493     parentTag = cms.InputTag('thingProducer'),
0494     thinnedTag = cms.InputTag('thinningThingProducerG'),
0495     associationTag = cms.InputTag('thinningThingProducerG'),
0496     trackTag = cms.InputTag('trackOfThingsProducerG'),
0497     parentWasDropped = cms.bool(True),
0498     expectedThinnedContent = cms.vint32(20, 21, 22, 23, 24, 25, 26, 27, 28),
0499     expectedIndexesIntoParent = cms.vuint32(20, 21, 22, 23, 24, 25, 26, 27, 28),
0500     expectedValues = cms.vint32(20, 21, 22, 23, 24, 25, 26, 27, 28)
0501 )
0502 
0503 thirdProcess.testThirdH = cms.EDAnalyzer("ThinningTestAnalyzer",
0504     parentTag = cms.InputTag('thinningThingProducerG'),
0505     thinnedTag = cms.InputTag('thinningThingProducerH'),
0506     associationTag = cms.InputTag('thinningThingProducerH'),
0507     trackTag = cms.InputTag('trackOfThingsProducerH'),
0508     thinnedWasDropped = cms.bool(True),
0509     expectedParentContent = cms.vint32( 20,  21,  22,  23,  24,  25,  26,  27,  28),
0510     associationShouldBeDropped = cms.bool(True),
0511     expectedValues = cms.vint32(20, 21, 22, 23)
0512 )
0513 
0514 thirdProcess.testThirdI = cms.EDAnalyzer("ThinningTestAnalyzer",
0515     parentTag = cms.InputTag('thinningThingProducerG'),
0516     thinnedTag = cms.InputTag('thinningThingProducerI'),
0517     associationTag = cms.InputTag('thinningThingProducerI'),
0518     trackTag = cms.InputTag('trackOfThingsProducerI'),
0519     thinnedWasDropped = cms.bool(True),
0520     associationShouldBeDropped = cms.bool(True),
0521     expectedParentContent = cms.vint32( 20,  21,  22,  23,  24,  25,  26,  27,  28),
0522     expectedValues = cms.vint32(24, 25, 26, 27)
0523 )
0524 
0525 thirdProcess.testThirdJ = cms.EDAnalyzer("ThinningTestAnalyzer",
0526     parentTag = cms.InputTag('thingProducer'),
0527     thinnedTag = cms.InputTag('thinningThingProducerJ'),
0528     associationTag = cms.InputTag('thinningThingProducerJ'),
0529     trackTag = cms.InputTag('trackOfThingsProducerJ'),
0530     parentWasDropped = cms.bool(True),
0531     thinnedWasDropped = cms.bool(True),
0532     associationShouldBeDropped = cms.bool(True),
0533     expectedValues = cms.vint32(30, 31, 32, 33, 34, 35, 36, 37, 38)
0534 )
0535 
0536 thirdProcess.testThirdK = cms.EDAnalyzer("ThinningTestAnalyzer",
0537     parentTag = cms.InputTag('thinningThingProducerJ'),
0538     thinnedTag = cms.InputTag('thinningThingProducerK'),
0539     associationTag = cms.InputTag('thinningThingProducerK'),
0540     trackTag = cms.InputTag('trackOfThingsProducerK'),
0541     parentWasDropped = cms.bool(True),
0542     thinnedWasDropped = cms.bool(True),
0543     associationShouldBeDropped = cms.bool(True),
0544     expectedValues = cms.vint32(30, 31, 32, 33)
0545 )
0546 
0547 thirdProcess.testThirdL = cms.EDAnalyzer("ThinningTestAnalyzer",
0548     parentTag = cms.InputTag('thinningThingProducerJ'),
0549     thinnedTag = cms.InputTag('thinningThingProducerL'),
0550     associationTag = cms.InputTag('thinningThingProducerL'),
0551     trackTag = cms.InputTag('trackOfThingsProducerL'),
0552     parentWasDropped = cms.bool(True),
0553     thinnedWasDropped = cms.bool(True),
0554     associationShouldBeDropped = cms.bool(True),
0555     expectedValues = cms.vint32(34, 35, 36, 37)
0556 )
0557 
0558 thirdProcess.testThirdM = cms.EDAnalyzer("ThinningTestAnalyzer",
0559     parentTag = cms.InputTag('thingProducer'),
0560     thinnedTag = cms.InputTag('thinningThingProducerM'),
0561     associationTag = cms.InputTag('thinningThingProducerM'),
0562     trackTag = cms.InputTag('trackOfThingsProducerM'),
0563     parentWasDropped = cms.bool(True),
0564     thinnedWasDropped = cms.bool(True),
0565     expectedIndexesIntoParent = cms.vuint32(40, 41, 42, 43, 44, 45, 46, 47, 48),
0566     expectedValues = cms.vint32(40, 41, 42, 43, 44, 45, 46, 47, 48)
0567 )
0568 
0569 thirdProcess.testThirdN = cms.EDAnalyzer("ThinningTestAnalyzer",
0570     parentTag = cms.InputTag('thinningThingProducerM'),
0571     thinnedTag = cms.InputTag('thinningThingProducerN'),
0572     associationTag = cms.InputTag('thinningThingProducerN'),
0573     trackTag = cms.InputTag('trackOfThingsProducerN'),
0574     parentWasDropped = cms.bool(True),
0575     thinnedWasDropped = cms.bool(True),
0576     associationShouldBeDropped = cms.bool(True),
0577     expectedValues = cms.vint32(40, 41, 42, 43)
0578 )
0579 
0580 thirdProcess.testThirdO = cms.EDAnalyzer("ThinningTestAnalyzer",
0581     parentTag = cms.InputTag('thinningThingProducerM'),
0582     thinnedTag = cms.InputTag('aliasO'),
0583     associationTag = cms.InputTag('thinningThingProducerO'),
0584     trackTag = cms.InputTag('trackOfThingsProducerO'),
0585     thinnedIsAlias = cms.bool(False), # See unaliased in SubProcess
0586     parentWasDropped = cms.bool(True),
0587     expectedThinnedContent = cms.vint32(44, 45, 46, 47),
0588     expectedIndexesIntoParent = cms.vuint32(4, 5, 6, 7),
0589     expectedValues = cms.vint32(44, 45, 46, 47)
0590 )
0591 
0592 thirdProcess.out = cms.OutputModule("PoolOutputModule",
0593     fileName = cms.untracked.string('testThinningTestSubProcess3.root')
0594 )
0595 
0596 thirdProcess.p = cms.Path(thirdProcess.testThirdA *
0597                      thirdProcess.testThirdB *
0598                      thirdProcess.testThirdC *
0599                      thirdProcess.testThirdD *
0600                      thirdProcess.testThirdE *
0601                      thirdProcess.testThirdF *
0602                      thirdProcess.testThirdG *
0603                      thirdProcess.testThirdH *
0604                      thirdProcess.testThirdI *
0605                      thirdProcess.testThirdJ *
0606                      thirdProcess.testThirdK *
0607                      thirdProcess.testThirdL *
0608                      thirdProcess.testThirdM *
0609                      thirdProcess.testThirdN *
0610                      thirdProcess.testThirdO
0611 )
0612 
0613 thirdProcess.endPath = cms.EndPath(thirdProcess.out)