File indexing completed on 2024-11-25 02:29:47
0001
0002 import FWCore.ParameterSet.Config as cms
0003 import FWCore.ParameterSet.VarParsing as VarParsing
0004 import sys
0005
0006 options = VarParsing.VarParsing()
0007
0008 options.register('producerType',
0009 'static_DDD',
0010 VarParsing.VarParsing.multiplicity.singleton,
0011 VarParsing.VarParsing.varType.string,
0012 "MF producer to use. Valid values: 'static_DDD', 'static_DD4hep', 'fromDB', 'fromDB_DD4hep'")
0013
0014 options.register('era',
0015 'RunII',
0016 VarParsing.VarParsing.multiplicity.singleton,
0017 VarParsing.VarParsing.varType.string,
0018 "'RunI'or 'RunII'")
0019
0020 options.register('current',
0021 18000,
0022 VarParsing.VarParsing.multiplicity.singleton,
0023 VarParsing.VarParsing.varType.float,
0024 "Magnet current (nominal values: 18164=3.8T; 16730=3.5T; 14340=3T; 9500=2T; -1=loop in different IOVs, to test switching currents in the same job")
0025
0026 options.parseArguments()
0027
0028
0029 process = cms.Process("MAGNETICFIELDTEST")
0030
0031 process.source = cms.Source("EmptySource")
0032
0033 process.maxEvents = cms.untracked.PSet(
0034 input = cms.untracked.int32(1)
0035 )
0036
0037 REFERENCEFILE = 'none'
0038
0039 if options.current < 0 :
0040
0041
0042
0043
0044 REFERENCEFILE = ''
0045
0046 if options.producerType == 'static_DDD' or options.producerType == 'static_DD4hep' :
0047 sys.exit('Invalid configuration: current=-1 mode is not supported with static prouducers')
0048 process.source.numberEventsInLuminosityBlock =cms.untracked.uint32(1)
0049
0050 if options.era=='RunI':
0051 process.source.firstLuminosityBlockForEachRun = cms.untracked.VLuminosityBlockID(
0052 cms.LuminosityBlockID(10,1),
0053 cms.LuminosityBlockID(20,2),
0054 cms.LuminosityBlockID(30,3),
0055 cms.LuminosityBlockID(40,4),
0056 cms.LuminosityBlockID(50,5),
0057 )
0058
0059 process.riSource = cms.ESSource("EmptyESSource", recordName = cms.string("RunInfoRcd"),
0060 iovIsRunNotTime = cms.bool(True),
0061 firstValid = cms.vuint32(10,20,30,40,50))
0062
0063 process.add_( cms.ESProducer("RunInfoTestESProducer",
0064 runInfos = cms.VPSet(cms.PSet(run = cms.int32(10), avg_current = cms.double(18000.)),
0065 cms.PSet(run = cms.int32(20), avg_current = cms.double(16000.)),
0066 cms.PSet(run = cms.int32(30), avg_current = cms.double(14000.)),
0067 cms.PSet(run = cms.int32(40), avg_current = cms.double(10000.)),
0068 cms.PSet(run = cms.int32(50), avg_current = cms.double(0.)),
0069 ) ) )
0070 else :
0071 process.source.firstLuminosityBlockForEachRun = cms.untracked.VLuminosityBlockID(
0072 cms.LuminosityBlockID(300001,1),
0073 cms.LuminosityBlockID(300002,2),
0074 cms.LuminosityBlockID(300003,3),
0075 cms.LuminosityBlockID(300004,4),
0076 cms.LuminosityBlockID(300005,5),
0077 )
0078 process.add_( cms.ESProducer("RunInfoTestESProducer",
0079 runInfos = cms.VPSet(cms.PSet(run = cms.int32(300001), avg_current = cms.double(18000.)),
0080 cms.PSet(run = cms.int32(300002), avg_current = cms.double(16000.)),
0081 cms.PSet(run = cms.int32(300003), avg_current = cms.double(14000.)),
0082 cms.PSet(run = cms.int32(300004), avg_current = cms.double(10000.)),
0083 cms.PSet(run = cms.int32(300005), avg_current = cms.double(0.)),
0084 ) ) )
0085
0086
0087 process.maxEvents.input = len(process.source.firstLuminosityBlockForEachRun)
0088
0089
0090 if options.current > 18765 or (options.current <= 4779 and options.current>0) :
0091 sys.exit('ERROR: invalid current value: ' + str(options.current))
0092 elif options.current > 17543 :
0093 if options.era == 'RunII' :
0094 REFERENCEFILE = 'MagneticField/Engine/data/Regression/referenceField_160812_RII_3_8T.bin'
0095 elif options.era == 'RunI' :
0096 REFERENCEFILE = 'MagneticField/Engine/data/Regression/referenceField_160812_RI_3_8T.bin'
0097 else:
0098 sys.exit('ERROR: Invalid era: ' + options.era)
0099 elif options.current > 15617 :
0100 REFERENCEFILE = 'MagneticField/Engine/data/Regression/referenceField_160812_3_5T.bin'
0101 elif options.current > 11987 :
0102 REFERENCEFILE = 'MagneticField/Engine/data/Regression/referenceField_160812_3T.bin'
0103 elif options.current > 4779 :
0104 REFERENCEFILE = 'MagneticField/Engine/data/Regression/referenceField_71212_2T.bin'
0105
0106
0107 if options.producerType == 'static_DDD':
0108 if options.current > 17543 :
0109 process.load("MagneticField.Engine.volumeBasedMagneticField_160812_cfi")
0110 if options.era == 'RunI' :
0111 process.VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3_8t_Run1')
0112 elif options.current > 15617 :
0113 process.load("MagneticField.Engine.volumeBasedMagneticField_160812_cfi")
0114 process.VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3_5t')
0115 process.ParametrizedMagneticFieldProducer.parameters.BValue = cms.string('3_5T')
0116 elif options.current > 11987 :
0117 process.load("MagneticField.Engine.volumeBasedMagneticField_160812_cfi")
0118 process.VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3t')
0119 process.ParametrizedMagneticFieldProducer.parameters.BValue = cms.string('3_0T')
0120 elif options.current > 4779 :
0121 process.load("MagneticField.Engine.volumeBasedMagneticField_71212_cfi")
0122
0123
0124 elif options.producerType == 'static_DD4hep' :
0125 process.load("MagneticField.Engine.volumeBasedMagneticField_dd4hep_160812_cfi")
0126 if options.current > 17543 :
0127 if options.era == 'RunI' :
0128 process.VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3_8t_Run1')
0129 elif options.current > 15617 :
0130 process.VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3_5t')
0131 process.ParametrizedMagneticFieldProducer.parameters.BValue = cms.string('3_5T')
0132 elif options.current > 11987 :
0133 process.VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3t')
0134 process.ParametrizedMagneticFieldProducer.parameters.BValue = cms.string('3_0T')
0135 elif options.current > 4779 :
0136 sys.exit('ERROR: Unsupported current for static_DD4hep: ' + str(options.current))
0137
0138
0139 elif options.producerType == 'fromDB' or options.producerType == 'fromDB_DD4hep':
0140 if options.producerType == 'fromDB':
0141 process.load("Configuration.StandardSequences.MagneticField_cff")
0142 elif options.producerType == 'fromDB_DD4hep':
0143 process.load("MagneticField.Engine.volumeBasedMagneticFieldFromDB_dd4hep_cfi")
0144
0145 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0146 from Configuration.AlCa.GlobalTag import GlobalTag
0147 process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_data', '')
0148
0149 if options.era == 'RunII' :
0150 process.source.firstRun = cms.untracked.uint32(300000)
0151 elif options.era == 'RunI' :
0152 process.source.firstRun = cms.untracked.uint32(100)
0153
0154
0155 if options.current > 17543:
0156 process.VolumeBasedMagneticFieldESProducer.valueOverride = -1
0157 elif options.current > 15617 :
0158 process.VolumeBasedMagneticFieldESProducer.valueOverride = 17000
0159 elif options.current > 11987 :
0160 process.VolumeBasedMagneticFieldESProducer.valueOverride = 14000
0161 elif options.current > 4779 :
0162 process.VolumeBasedMagneticFieldESProducer.valueOverride = 10000
0163
0164
0165
0166 else :
0167 print('\nERROR: invalid producerType', producerType,'\n')
0168
0169
0170 print('\nRegression for MF built with', options.producerType, 'era:', options.era, 'current:', options.current,'\n')
0171
0172
0173 process.testMagneticField = cms.EDAnalyzer("testMagneticField",
0174
0175
0176
0177
0178
0179 inputTable = cms.untracked.string(REFERENCEFILE),
0180
0181
0182 inputTableType = cms.untracked.string("xyz"),
0183
0184
0185 resolution = cms.untracked.double(0.0001),
0186 numberOfPoints = cms.untracked.int32(1000000),
0187
0188
0189 InnerRadius = cms.untracked.double(0),
0190 OuterRadius = cms.untracked.double(900),
0191 minZ = cms.untracked.double(-2400),
0192 maxZ = cms.untracked.double(2400)
0193
0194 )
0195
0196 process.p1 = cms.Path(process.testMagneticField)
0197
0198