diff --git a/MagneticField/Engine/python/MF-170812_cfi.py b/MagneticField/Engine/python/MF-170812_cfi.py new file mode 100644 index 0000000000000..dce182faa5176 --- /dev/null +++ b/MagneticField/Engine/python/MF-170812_cfi.py @@ -0,0 +1,96 @@ +""" +Custom map setup for MF accuracy studies, based on CMS TOSCA Model 170812. + +*** Set up instructions *** + +git cms-addpkg MagneticField/Interpolation +git cms-addpkg MagneticField/Engine +ln -s /eos/cms/store/group/alca_magfield/CMSSW/grid_170812_3_8t* $CMSSW_BASE/src/MagneticField/Interpolation/data/ +cp ~namapane/public/MF170812/MF-170812_cfi.py $CMSSW_BASE/src/MagneticField/Engine/python + +In your cfg.py, use: +process.load("MagneticField.Engine.MF-170812_cfi") + +*** Switching between eras *** +By default, the model for Run2 is used. + +For the Run I model, set: +process.VolumeBasedMagneticFieldESProducer.version = 'grid_170812_3_8t_Run1' + +For the 2006 SX5 model (tracker region only). set: +process.VolumeBasedMagneticFieldESProducer.version = 'grid_170812_3_8t_SX5' +process.VolumeBasedMagneticFieldESProducer.gridFiles = cms.VPSet( + cms.PSet( + volumes = cms.string('1001-1005,2001-2005'), + sectors = cms.string('0') , + master = cms.int32(0), + path = cms.string('s[s]/grid.[v].bin'), + ), + cms.PSet( + volumes = cms.string('1006-1464,2006-2464'), + sectors = cms.string('0') , + master = cms.int32(1), + path = cms.string('fake'), + ), +) + +Note that by default, the parametrization for the tracker region is disabled, in order to get B from the interpolation +of TOSCA tables. In order to use the default parametrization used in CMSSW, set: +process.VolumeBasedMagneticFieldESProducer.useParametrizedTrackerField = True + +""" + +import FWCore.ParameterSet.Config as cms + +magfield = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring('Geometry/CMSCommonData/data/normal/cmsextent.xml', + 'Geometry/CMSCommonData/data/cms.xml', + 'Geometry/CMSCommonData/data/cmsMagneticField.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_160812_1.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_160812_2.xml', + 'Geometry/CMSCommonData/data/materials.xml'), + rootNodeName = cms.string('cmsMagneticField:MAGF') +) + +es_prefer_magfield = cms.ESPrefer("XMLIdealGeometryESSource","magfield") + + +ParametrizedMagneticFieldProducer = cms.ESProducer("ParametrizedMagneticFieldProducer", + version = cms.string('OAE_1103l_071212'), + parameters = cms.PSet( + BValue = cms.string('3_8T') + ), + label = cms.untracked.string('parametrizedField') +) + + +VolumeBasedMagneticFieldESProducer = cms.ESProducer("VolumeBasedMagneticFieldESProducer", + useParametrizedTrackerField = cms.bool(False), + label = cms.untracked.string(''), + paramLabel = cms.string('parametrizedField'), + version = cms.string('grid_170812_3_8t'), + geometryVersion = cms.int32(170812), + debugBuilder = cms.untracked.bool(False), + scalingVolumes = cms.vint32(), + scalingFactors = cms.vdouble(), + gridFiles = cms.VPSet( + cms.PSet( + volumes = cms.string('1001-1010,1012-1027,1030-1033,1036-1041,1044-1049,1052-1057,1060-1063,1066-1071,1074-1077,1080-1097,1102-1129,1138-1402,1415-1416,' + + '2001-2010,2012-2027,2030-2033,2036-2041,2044-2049,2052-2057,2060-2063,2066-2071,2074-2077,2080-2097,2102-2129,2138-2402,2415-2416'), + sectors = cms.string('0') , + master = cms.int32(0), + path = cms.string('s[s]/grid.[v].bin'), + ), + cms.PSet( + volumes = cms.string('1011,1028-1029,1034-1035,1042-1043,1050-1051,1058-1059,1064-1065,1072-1073,1078-1079,'+ # volumes extending from R~7.6 m to to R=9 m, + '1098-1101,1130-1137,' + # Forward volumes, ouside CASTOR/HF + '1403-1414,1417-1464,' # Volumes beyond |Z|>17.74 + '2011,2028-2029,2034-2035,2042-2043,2050-2051,2058-2059,2064-2065,2072-2073,2078-2079,'+ + '2098-2101,2130-2137,'+ + '2403-2414,2417-2464'), + sectors = cms.string('0'), + master = cms.int32(1), + path = cms.string('s01/grid.[v].bin'), + ), + ) +) diff --git a/MagneticField/Engine/python/volumeBasedMagneticField_120812_smallYE4_cfi.py b/MagneticField/Engine/python/volumeBasedMagneticField_120812_smallYE4_cfi.py new file mode 100644 index 0000000000000..ea78f12d1ca25 --- /dev/null +++ b/MagneticField/Engine/python/volumeBasedMagneticField_120812_smallYE4_cfi.py @@ -0,0 +1,117 @@ +import FWCore.ParameterSet.Config as cms + + +# This cfi contains everything needed to use the VolumeBased magnetic +# field engine version 120812 + +magfield = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring('Geometry/CMSCommonData/data/normal/cmsextent.xml', + 'Geometry/CMSCommonData/data/cms.xml', + 'Geometry/CMSCommonData/data/cmsMagneticField.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_1_v7_large.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_2_v7_large.xml', + 'Geometry/CMSCommonData/data/materials.xml'), + rootNodeName = cms.string('cmsMagneticField:MAGF') +) + +# avoid interference with EmptyESSource in uniformMagneticField.cfi +es_prefer_magfield = cms.ESPrefer("XMLIdealGeometryESSource","magfield") + + +ParametrizedMagneticFieldProducer = cms.ESProducer("ParametrizedMagneticFieldProducer", + version = cms.string('OAE_1103l_071212'), + parameters = cms.PSet( + BValue = cms.string('3_8T') + ), + label = cms.untracked.string('parametrizedField') +) + + +VolumeBasedMagneticFieldESProducer = cms.ESProducer("VolumeBasedMagneticFieldESProducer", + useParametrizedTrackerField = cms.bool(True), + label = cms.untracked.string(''), + paramLabel = cms.string('parametrizedField'), + version = cms.string('grid_120812_3_8t_v7_small'), + geometryVersion = cms.int32(120812), + debugBuilder = cms.untracked.bool(False), + cacheLastVolume = cms.untracked.bool(True), + scalingVolumes = cms.vint32(), + scalingFactors = cms.vdouble(), + + + gridFiles = cms.VPSet( + # Default: specific tables for all volumes +# cms.PSet( +# volumes = cms.string('1001-1360'), +# sectors = cms.string('0') , +# master = cms.int32(0), +# path = cms.string('s[s]_1/grid.[v].bin'), +# ), +# cms.PSet( +# volumes = cms.string('2001-2360'), +# sectors = cms.string('0'), +# master = cms.int32(0), +# path = cms.string('s[s]_2/grid.[v].bin'), +# ), + + # Specific tables for each sector + cms.PSet( + volumes = cms.string('1001-1010,1012-1027,1030-1033,1036-1041,1044-1049,1052-1057,1060-1063,1066-1071,1074-1077,1080-1083,1130-1133,1138-1360'), + sectors = cms.string('0') , + master = cms.int32(0), + path = cms.string('s[s]_1/grid.[v].bin'), + ), + cms.PSet( + volumes = cms.string('2001-2010,2012-2027,2030-2033,2036-2041,2044-2049,2052-2057,2060-2063,2066-2071,2074-2077,2080-2083,2130-2133,2138-2360'), + sectors = cms.string('0'), + master = cms.int32(0), + path = cms.string('s[s]_2/grid.[v].bin'), + ), + + # Replicate sector 1 for volumes outside any detector +# cms.PSet( +# volumes = cms.string('1011,1028-1029,1034-1035,1042-1043,1050-1051,1058-1059,1064-1065,1072-1073,1078-1079,1084-1129,1134-1137'), +# sectors = cms.string('0'), +# master = cms.int32(1), +# path = cms.string('s01_1/grid.[v].bin'), +# ), +# cms.PSet( +# volumes = cms.string('2011,2028-2029,2034-2035,2042-2043,2050-2051,2058-2059,2064-2065,2072-2073,2078-2079,2084-2129,2134-2137'), +# sectors = cms.string('0'), +# master = cms.int32(1), +# path = cms.string('s01_2/grid.[v].bin'), +# ), + + cms.PSet( + volumes = cms.string('1011,1028-1029,1034-1035,1042-1043,1050-1051,1058-1059,1064-1065,1072-1073,1078-1079,1084-1129,1136-1137'), + sectors = cms.string('0'), + master = cms.int32(1), + path = cms.string('s01_1/grid.[v].bin'), + ), + cms.PSet( + volumes = cms.string('2011,2028-2029,2034-2035,2042-2043,2050-2051,2058-2059,2064-2065,2072-2073,2078-2079,2084-2129,2136-2137'), + sectors = cms.string('0'), + master = cms.int32(1), + path = cms.string('s01_2/grid.[v].bin'), + ), + + # Replicate sector 4 for the volume outside CASTOR, to avoid aliasing due to the plates in the cylinder gap + # between the collar and the rotating shielding. + cms.PSet( + volumes = cms.string('1134-1135'), + sectors = cms.string('0'), + master = cms.int32(4), + path = cms.string('s04_1/grid.[v].bin'), + ), + cms.PSet( + volumes = cms.string('2134-2135'), + sectors = cms.string('0'), + master = cms.int32(4), + path = cms.string('s04_2/grid.[v].bin'), + ), + + + ) +) + + diff --git a/MagneticField/Engine/python/volumeBasedMagneticField_130503_smallYE4_cfi.py b/MagneticField/Engine/python/volumeBasedMagneticField_130503_smallYE4_cfi.py new file mode 100644 index 0000000000000..0c8c64654a8a0 --- /dev/null +++ b/MagneticField/Engine/python/volumeBasedMagneticField_130503_smallYE4_cfi.py @@ -0,0 +1,82 @@ +import FWCore.ParameterSet.Config as cms + + +# This cfi contains everything needed to use the VolumeBased magnetic +# field engine version 120812 + +magfield = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring('Geometry/CMSCommonData/data/normal/cmsextent.xml', + 'Geometry/CMSCommonData/data/cms.xml', + 'Geometry/CMSCommonData/data/cmsMagneticField.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_1_v9_large.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_2_v9_large.xml', + 'Geometry/CMSCommonData/data/materials.xml'), + rootNodeName = cms.string('cmsMagneticField:MAGF') +) + +# avoid interference with EmptyESSource in uniformMagneticField.cfi +es_prefer_magfield = cms.ESPrefer("XMLIdealGeometryESSource","magfield") + + +ParametrizedMagneticFieldProducer = cms.ESProducer("ParametrizedMagneticFieldProducer", + version = cms.string('OAE_1103l_071212'), + parameters = cms.PSet( + BValue = cms.string('3_8T') + ), + label = cms.untracked.string('parametrizedField') +) + + +VolumeBasedMagneticFieldESProducer = cms.ESProducer("VolumeBasedMagneticFieldESProducer", + useParametrizedTrackerField = cms.bool(True), + label = cms.untracked.string(''), + paramLabel = cms.string('parametrizedField'), + version = cms.string('grid_130503_3_8t_v9_small'), + geometryVersion = cms.int32(120812), + debugBuilder = cms.untracked.bool(False), + cacheLastVolume = cms.untracked.bool(True), + scalingVolumes = cms.vint32(), + scalingFactors = cms.vdouble(), + + + gridFiles = cms.VPSet( + ### Specs for using specific tables for every volume +# cms.PSet( +# volumes = cms.string('1001-1402,2001-2402'), +# sectors = cms.string('0') , +# master = cms.int32(1), +# path = cms.string('s[s]/grid.[v].bin'), +# ), + ### + + # Volumes for which specific tables are used for each sector + cms.PSet( + volumes = cms.string('1001-1010,1012-1027,1030-1033,1036-1041,1044-1049,1052-1057,1060-1063,1066-1071,1074-1077,1080-1083,1130-1133,1138-1402,' + + '2001-2010,2012-2027,2030-2033,2036-2041,2044-2049,2052-2057,2060-2063,2066-2071,2074-2077,2080-2083,2130-2133,2138-2402'), + sectors = cms.string('0') , + master = cms.int32(0), + path = cms.string('s[s]/grid.[v].bin'), + ), + + # Replicate sector 1 for volumes outside any detector + cms.PSet( + volumes = cms.string('1011,1028-1029,1034-1035,1042-1043,1050-1051,1058-1059,1064-1065,1072-1073,1078-1079,1084-1129,1136-1137,' + + '2011,2028-2029,2034-2035,2042-2043,2050-2051,2058-2059,2064-2065,2072-2073,2078-2079,2084-2129,2136-2137'), + sectors = cms.string('0'), + master = cms.int32(1), + path = cms.string('s01/grid.[v].bin'), + ), + + # Replicate sector 4 for the volume outside CASTOR, to avoid aliasing due to the plates in the cylinder gap + # between the collar and the rotating shielding. + cms.PSet( + volumes = cms.string('1134-1135,2134-2135'), + sectors = cms.string('0'), + master = cms.int32(4), + path = cms.string('s04/grid.[v].bin'), + ), + + ) +) + + diff --git a/MagneticField/Engine/python/volumeBasedMagneticField_170812_cfi.py b/MagneticField/Engine/python/volumeBasedMagneticField_170812_cfi.py new file mode 100644 index 0000000000000..c4df1bf0ab94a --- /dev/null +++ b/MagneticField/Engine/python/volumeBasedMagneticField_170812_cfi.py @@ -0,0 +1,89 @@ +import FWCore.ParameterSet.Config as cms + + +# This cfi contains everything needed to use the VolumeBased magnetic +# field engine version 170812 + +magfield = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring('Geometry/CMSCommonData/data/normal/cmsextent.xml', + 'Geometry/CMSCommonData/data/cms.xml', + 'Geometry/CMSCommonData/data/cmsMagneticField.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_160812_1.xml', + 'MagneticField/GeomBuilder/data/MagneticFieldVolumes_160812_2.xml', + 'Geometry/CMSCommonData/data/materials.xml'), + rootNodeName = cms.string('cmsMagneticField:MAGF') +) + +# avoid interference with EmptyESSource in uniformMagneticField.cfi +es_prefer_magfield = cms.ESPrefer("XMLIdealGeometryESSource","magfield") + + +ParametrizedMagneticFieldProducer = cms.ESProducer("ParametrizedMagneticFieldProducer", + version = cms.string('OAE_1103l_071212'), + parameters = cms.PSet( + BValue = cms.string('3_8T') + ), + label = cms.untracked.string('parametrizedField') +) + +VolumeBasedMagneticFieldESProducer = cms.ESProducer("VolumeBasedMagneticFieldESProducer", + useParametrizedTrackerField = cms.bool(True), + label = cms.untracked.string(''), + paramLabel = cms.string('parametrizedField'), + version = cms.string('grid_170812_3_8t'), # grid_170812_3_8t, grid_170812_3_8t_Run1, grid_170812_3_8t_SX5 + geometryVersion = cms.int32(170812), + debugBuilder = cms.untracked.bool(False), + scalingVolumes = cms.vint32(), + scalingFactors = cms.vdouble(), + gridFiles = cms.VPSet( + cms.PSet( + volumes = cms.string('1001-1010,1012-1027,1030-1033,1036-1041,1044-1049,1052-1057,1060-1063,1066-1071,1074-1077,1080-1097,1102-1129,1138-1402,1415-1416,' + + '2001-2010,2012-2027,2030-2033,2036-2041,2044-2049,2052-2057,2060-2063,2066-2071,2074-2077,2080-2097,2102-2129,2138-2402,2415-2416'), + sectors = cms.string('0') , + master = cms.int32(0), + path = cms.string('s[s]/grid.[v].bin'), + ), + cms.PSet( + volumes = cms.string('1011,1028-1029,1034-1035,1042-1043,1050-1051,1058-1059,1064-1065,1072-1073,1078-1079,'+ # volumes extending from R~7.6 m to to R=9 m, + '1098-1101,1130-1137,' + # Forward volumes, ouside CASTOR/HF + '1403-1414,1417-1464,' # Volumes beyond |Z|>17.74 + '2011,2028-2029,2034-2035,2042-2043,2050-2051,2058-2059,2064-2065,2072-2073,2078-2079,'+ + '2098-2101,2130-2137,'+ + '2403-2414,2417-2464'), + sectors = cms.string('0'), + master = cms.int32(1), + path = cms.string('s01/grid.[v].bin'), + ), + ) + # # this is for the surface model, i.e.: version = cms.string('grid_170812_3_8t_SX5') + # gridFiles = cms.VPSet( + # cms.PSet( + # volumes = cms.string('1001-1010,2001-2010'), + # sectors = cms.string('0') , + # master = cms.int32(0), + # path = cms.string('s[s]/grid.[v].bin'), + # ), + # cms.PSet( + # volumes = cms.string('1011-1464,2011-2464'), + # sectors = cms.string('0') , + # master = cms.int32(1), + # path = cms.string('fake'), + # ), + # ) +) + + + +### To set a different nominal map, set the following in your .py: + +### 3T +#VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3t') +#ParametrizedMagneticFieldProducer.parameters.BValue = cms.string('3_0T') + +### 3.5T +#VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3_5t') +#ParametrizedMagneticFieldProducer.parameters.BValue = cms.string('3_5T') + + +### Run I, 3.8T +#VolumeBasedMagneticFieldESProducer.version = cms.string('grid_160812_3_8t_Run1') diff --git a/MagneticField/Engine/test/coords_Run1.txt b/MagneticField/Engine/test/coords_Run1.txt new file mode 100644 index 0000000000000..f61c557707239 --- /dev/null +++ b/MagneticField/Engine/test/coords_Run1.txt @@ -0,0 +1,6 @@ +-206.345 -205.87 -0.6 +-206.345 205.87 0.6 +71.3 0 -283.35 +70.9 0 282.95 +0 0 0 +0 0 1.6 diff --git a/MagneticField/Engine/test/coords_Run2.txt b/MagneticField/Engine/test/coords_Run2.txt new file mode 100644 index 0000000000000..a203cd20119eb --- /dev/null +++ b/MagneticField/Engine/test/coords_Run2.txt @@ -0,0 +1,6 @@ +-206.345 -205.87 -0.6 +-206.345 205.87 0.6 +64.25 10.517 -283.5 +64.25 10.517 283.1 +0 0 0 +0 0 1.6 diff --git a/MagneticField/Engine/test/queryField.cc b/MagneticField/Engine/test/queryField.cc index 45c0626785387..64a7fd386c071 100644 --- a/MagneticField/Engine/test/queryField.cc +++ b/MagneticField/Engine/test/queryField.cc @@ -25,6 +25,7 @@ #include #include #include +#include using namespace edm; using namespace Geom; @@ -43,6 +44,7 @@ class queryField : public edm::EDAnalyzer { field = magfield.product(); + cout << fixed << setprecision(10); cout << "Field Nominal Value: " << field->nominalValue() << endl; double x,y,z; @@ -50,12 +52,27 @@ class queryField : public edm::EDAnalyzer { while (1) { cout << "Enter X Y Z (cm): "; + // cout << "Enter R Phi Z (cm): "; + if (!(cin >> x >> y >> z)) exit(0); - if (!(cin >> x >> y >> z)) exit(0); + GlobalPoint g(x,y,z); + // GlobalPoint g(GlobalPoint::Cylindrical(x,y,z)); - GlobalPoint g(x,y,z); - - cout << "At R=" << g.perp() << " phi=" << g.phi()<< " B=" << field->inTesla(g) << endl; + GlobalPoint gx(x+0.1,y,z); + GlobalPoint gy(x,y+0.1,z); + GlobalPoint gz(x,y,z+0.1); + + GlobalVector b = field->inTesla(g); + + const double bmag = b.mag() ; + + const double bx = field->inTesla(gx).mag(); + const double by = field->inTesla(gy).mag(); + const double bz = field->inTesla(gz).mag(); + + const double berr = std::sqrt(std::pow(bmag-bx,2) + std::pow(bmag-by,2) + std::pow(bmag-bz,2)); + + cout << "At R=" << g.perp() << " phi=" << g.phi()<< " B=" << b << " |B|=" << b.mag() << " dB=" << berr << endl;// << " BR " << b.transverse() << " BPhi " << b.phi() << endl; } } diff --git a/MagneticField/Engine/test/queryField.py b/MagneticField/Engine/test/queryField.py index 2c59dc66b41d3..14b0ff217c8c3 100644 --- a/MagneticField/Engine/test/queryField.py +++ b/MagneticField/Engine/test/queryField.py @@ -6,7 +6,7 @@ process.source = cms.Source("EmptySource") process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(1) + input = cms.untracked.int32(1), ) # Example configuration for the magnetic field @@ -18,26 +18,77 @@ #process.localUniform.ZFieldInTesla = 3.8 -### Full field map, static configuration for each field value +### Full field map, static configuration for each field value -> dynamic map? #process.load("Configuration.StandardSequences.MagneticField_20T_cff") #process.load("Configuration.StandardSequences.MagneticField_30T_cff") #process.load("Configuration.StandardSequences.MagneticField_35T_cff") -#process.load("Configuration.StandardSequences.MagneticField_38T_cff") +# process.load("Configuration.StandardSequences.MagneticField_38T_cff") #process.load("Configuration.StandardSequences.MagneticField_40T_cff") -#process.load("MagneticField.Engine.volumeBasedMagneticField_1103l_cfi") -#process.load("MagneticField.Engine.volumeBasedMagneticField_090322_2pi_scaled_cfi") -#process.load("MagneticField.Engine.volumeBasedMagneticField_120812_cfi") +# # instead of standard sequence: +# # process.VolumeBasedMagneticFieldESProducer = cms.ESProducer("VolumeBasedMagneticFieldESProducerFromDB", +# process.VolumeBasedMagneticFieldESProducer = cms.ESProducer("VolumeBasedMagneticFieldESProducer", +# label = cms.untracked.string(''), +# debugBuilder = cms.untracked.bool(False), +# valueOverride = cms.int32(-1), # Force value of current (in A); take the value from DB if < 0. +# useParametrizedTrackerField = cms.untracked.bool(False), +# version = cms.string('grid_160812_3_8t_Run1'), +# geometryVersion = cms.int32(160812), +# ) + +# process.idealMagneticFieldRecordSource = cms.ESSource("EmptyESSource", +# recordName = cms.string('IdealMagneticFieldRecord'), +# iovIsRunNotTime = cms.bool(True), +# firstValid = cms.vuint32(1) +# ) + +# # Parabolic parametrized magnetic field used for track building (scaled to nominal map closest to current from runInfo) +# process.ParabolicParametrizedMagneticFieldProducer = cms.ESProducer("AutoParametrizedMagneticFieldProducer", +# version = cms.string('Parabolic'), +# label = cms.untracked.string('ParabolicMf'), +# valueOverride = cms.int32(-1) +# ) + +# process.VolumeBasedMagneticFieldESProducer.valueOverride = 18268 +# process.ParabolicParametrizedMagneticFieldProducer.valueOverride = 18268 + + +# -> static map? +# process.load("MagneticField.Engine.volumeBasedMagneticField_090322_2pi_scaled_cfi") + +# process.load("MagneticField.Engine.volumeBasedMagneticField_1103l_cfi") + +# process.load("MagneticField.Engine.volumeBasedMagneticField_120812_smallYE4_cfi") +# process.load("MagneticField.Engine.volumeBasedMagneticField_120812_largeYE4_cfi") + +# process.load("MagneticField.Engine.volumeBasedMagneticField_130503_smallYE4_cfi") +# process.load("MagneticField.Engine.volumeBasedMagneticField_130503_largeYE4_cfi") + +process.load("MagneticField.Engine.volumeBasedMagneticField_160812_cfi") +process.VolumeBasedMagneticFieldESProducer.version = "grid_160812_3_8t" # grid_160812_3_8t, grid_160812_3_8t_Run1 + +# process.load("MagneticField.Engine.volumeBasedMagneticField_170812_cfi") +# process.VolumeBasedMagneticFieldESProducer.version = "grid_170812_3_8t" # grid_170812_3_8t, grid_170812_3_8t_Run1, grid_170812_3_8t_SX5 + +# disable 2D parameterization in tracker and use slower but more accurate 3D splines of original data +process.VolumeBasedMagneticFieldESProducer.useParametrizedTrackerField = cms.bool(False) + +# activate MTCC field map data +# process.load("MagneticField.ParametrizedEngine.parametrizedMagneticField_PolyFit2D_cfi") +# process.load("MagneticField.ParametrizedEngine.parametrizedMagneticField_PolyFit3D_cfi") + ### Configuration to select map based on recorded current in the DB process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") from Configuration.AlCa.GlobalTag import GlobalTag process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_data', '') + + #process.GlobalTag = GlobalTag(process.GlobalTag,'auto:phase1_2017_realistic', '') #process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic', '') -process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic', '') -process.load("MagneticField.Engine.autoMagneticFieldProducer_cfi") -process.AutoMagneticFieldESProducer.valueOverride = 18000 +# process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic', '') +# process.load("MagneticField.Engine.autoMagneticFieldProducer_cfi") +# process.AutoMagneticFieldESProducer.valueOverride = 18000 ### Set scaling factors diff --git a/MagneticField/Engine/test/queryField.sh b/MagneticField/Engine/test/queryField.sh new file mode 100644 index 0000000000000..0d5af7008ca31 --- /dev/null +++ b/MagneticField/Engine/test/queryField.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Input file with one line per set of coordinates +INPUT_FILE=$1 +OUTPUT_FILE="test.txt" + +# Run the program, feed coordinates, and save output +cmsRun queryField.py < "$INPUT_FILE" > "$OUTPUT_FILE" + +cat "$OUTPUT_FILE" \ No newline at end of file diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 8f90847918ca5..316ce467a30fe 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -472,11 +472,25 @@ def nanoAOD_customizeData(process): ), ) - # load 3d field map and use it for g4e propagator, geant4 internals via geometry producer and a few other places related to the track refit - from MagneticField.ParametrizedEngine.parametrizedMagneticField_PolyFit3D_cfi import ParametrizedMagneticFieldProducer as PolyFit3DMagneticFieldProducer - process.PolyFit3DMagneticFieldProducer = PolyFit3DMagneticFieldProducer - fieldlabel = "PolyFit3DMf" - process.PolyFit3DMagneticFieldProducer.label = fieldlabel + # # load 3d field map and use it for g4e propagator, geant4 internals via geometry producer and a few other places related to the track refit + # from MagneticField.ParametrizedEngine.parametrizedMagneticField_PolyFit3D_cfi import ParametrizedMagneticFieldProducer as PolyFit3DMagneticFieldProducer + # process.PolyFit3DMagneticFieldProducer = PolyFit3DMagneticFieldProducer + # fieldlabel = "PolyFit3DMf" + # process.PolyFit3DMagneticFieldProducer.label = fieldlabel + + # load latest TOSCA model (volumeBasedMagneticField_170812_cfi also provides the magfield XMLIdealGeometryESSource + # which supplies DDCompactView("magfield") needed by VolumeBasedMagneticFieldESProducer) + from MagneticField.Engine.volumeBasedMagneticField_170812_cfi import VolumeBasedMagneticFieldESProducer as MagneticFieldProducer + from MagneticField.Engine.volumeBasedMagneticField_170812_cfi import magfield as MagneticFieldGeometry + from MagneticField.Engine.volumeBasedMagneticField_170812_cfi import es_prefer_magfield + process.magfield = MagneticFieldGeometry + process.es_prefer_magfield = es_prefer_magfield + process.Opera3DMagneticFieldProducer = MagneticFieldProducer + fieldlabel = "grid_170812_3_8t" + process.Opera3DMagneticFieldProducer.label = fieldlabel + # disable 2D parameterization in tracker and use slower but more accurate 3D splines of original data + process.Opera3DMagneticFieldProducer.useParametrizedTrackerField = cms.bool(False) + process.geopro.MagneticFieldLabel = fieldlabel process.Geant4ePropagator.MagneticFieldLabel = fieldlabel process.stripCPEESProducer.MagneticFieldLabel = fieldlabel