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