Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions MagneticField/Engine/python/MF-170812_cfi.py
Original file line number Diff line number Diff line change
@@ -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'),
),
)
)
Original file line number Diff line number Diff line change
@@ -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'),
),


)
)


Original file line number Diff line number Diff line change
@@ -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'),
),

)
)


89 changes: 89 additions & 0 deletions MagneticField/Engine/python/volumeBasedMagneticField_170812_cfi.py
Original file line number Diff line number Diff line change
@@ -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')
6 changes: 6 additions & 0 deletions MagneticField/Engine/test/coords_Run1.txt
Original file line number Diff line number Diff line change
@@ -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
Loading