Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
# The purpose of this configuration is to prepare
# input for a test of the noRunLumiSort configuration
# parameter that has non-contiguous sequences of
# events from the same run (and the same lumi).

# It is expected there are 6 warnings that
# print out while this runs related to merging.
# The test should pass with these warnings.

import FWCore.ParameterSet.Config as cms

process = cms.Process("MERGE")

process.source = cms.Source("PoolSource",
    fileNames = cms.untracked.vstring(
        'file:testRunMerge1.root',
        'file:testRunMerge2.root',
        'file:testRunMerge3.root'
    ),
    inputCommands = cms.untracked.vstring(
        'keep *',
        'drop *_A_*_*',
        'drop *_B_*_*',
        'drop *_C_*_*',
        'drop *_D_*_*',
        'drop *_E_*_*',
        'drop *_F_*_*',
        'drop *_G_*_*',
        'drop *_H_*_*',
        'drop *_I_*_*',
        'drop *_J_*_*',
        'drop *_K_*_*',
        'drop *_L_*_*',
        'drop *_tryNoPut_*_*',
        'drop *_aliasForThingToBeDropped2_*_*',
        'drop *_dependsOnThingToBeDropped1_*_*',
        'drop *_makeThingToBeDropped_*_*',
        'drop edmtestThingWithMerge_makeThingToBeDropped1_*_*',
        'drop edmtestThing_*_*_*'
    )
)

process.thingWithMergeProducer = cms.EDProducer("ThingWithMergeProducer")

process.test = cms.EDAnalyzer("TestMergeResults",

    #   Check to see that the value we read matches what we know
    #   was written. Expected values listed below come in sets of three
    #      value expected in Thing
    #      value expected in ThingWithMerge
    #      value expected in ThingWithIsEqual
    #   Each set of 3 is tested at endRun for the expected
    #   run values or at endLuminosityBlock for the expected
    #   lumi values. And then the next set of three values
    #   is tested at the next endRun or endLuminosityBlock.
    #   When the sequence of parameter values is exhausted it stops checking
    #   0's are just placeholders, if the value is a "0" the check is not made.

    expectedBeginRunProd = cms.untracked.vint32(
        0,   20004,  10003,   # File boundary before this causing merge
        0,   10002,  10003,
        0,   10002,  10004
    ),
    expectedEndRunProd = cms.untracked.vint32(
        0, 200004, 100003,   # File boundary before this causing merge
        0, 100002, 100003,
        0, 100002, 100004
    ),
    expectedBeginLumiProd = cms.untracked.vint32(
        0,       204,    103,   # File boundary before this causing merge
        0,       102,    103,
        0,       102,    104
    ),
    expectedEndLumiProd = cms.untracked.vint32(
        0,     2004,   1003,   # File boundary before this causing merge
        0,     1002,   1003,
        0,     1002,   1004
    ),
    expectedBeginRunNew = cms.untracked.vint32(
        0,   10002,  10003,
        0,   10002,  10003,
        0,   10002,  10003
    ),
    expectedEndRunNew = cms.untracked.vint32(
        0,   100002,  100003,
        0,   100002,  100003,
        0,   100002,  100003
    ),
    expectedBeginLumiNew = cms.untracked.vint32(
        0,   102,  103,
        0,   102,  103,
        0,   102,  103
    ),
    expectedEndLumiNew = cms.untracked.vint32(
        0,   1002,  1003,
        0,   1002,  1003,
        0,   1002,  1003
    )
)

process.out = cms.OutputModule("PoolOutputModule",
    fileName = cms.untracked.string('testRunMergeMERGE6.root')
)

process.path1 = cms.Path(process.thingWithMergeProducer + process.test)
process.e = cms.EndPath(process.out)