Magnetic Field Maps for Solenoid
Several field maps exists for the GlueX superconducting solenoidal magnet. This page lists them along with some notes for each and how to specify one in the simulation/reconstruction software.
Location of the Field Maps
The map files themselves are stored as JANA resources, accessible via the web on a JLab server. The exact location is contained in an entry in the CCDB. Generally, retrieval and storage of the appropriate map files to the local computer is done automatically when a sim-recon program is run so users don't need to do anything special to get these. A typical situation would have one or more files in the local directory $JANA_RESOURCE_DIR/Magnets/Solenoid.
Specifying a different field map
Numerous field maps exist for the solenoid and a system is in place where one can specify the map of choice when running the simulation/reconstruction software. To specify a different field map for hdgeant to use, use
Technical details require that a recompile of hdgeant be done when specifying a different map for the simulation, but any existing reconstruction program can be reconfigured to use a different map without recompiling. Here I'm referring only to full maps, not the special field types of "Const" and "Spoiled" described below.
It should be noted that the *easiest* way to switch fields is really just to replace the default file in the calib directory tree with the desired map. Just be careful if you go that route since it will be easy to get confused since the file name will no longer be indicative of the content of the file.
To change the map used in the simulation, edit the control.in file to indicate the alternate field map. This is in a section that looks like this:
c The magnetic field map is accessed through the HDGEOMETRY library c so that the same map can be used for both simulation and reconstruction. c There are multiple map types and for each type, more than one map may c exist. The map types consist of the default type of "CalibDB", the c constant type of "Const" and the spoiled field type of "Spoiled". c The type is set using the BFIELDTYPE card. If no BFIELDTYPE card is c present, then no the default type "CalibDB" is used. c The specific parameters used for the field can be specified using the c BFIELDMAP card. If undefined, then the default that is hardcoded into c the HDGEOMETRY library is used. Note that these correspond to the c similarly named configuration parameters used in the econstruction. c The difference being that underscores are not allowed here. To c specify the values to the reconstruction code used here, use the c -PBFIELD_TYPE=CalibDB and -PBFIELD_MAP=Magents/Solenoid/solenoid_1500 c BFIELDMAP 'Magnets/Solenoid/solenoid_0750_poisson_20091123_03' c BFIELDTYPE 'Const'
The "c" in the first character indicates a comment. The default control.in file has this commented out and so used the default map.
To specify a different map, you will want to uncomment the BFIELDMAP line and set the desired map. For example, to use the standard 1500A map, add this line to control.in
Note that this will only have access to maps the current CCDB has available. To see a list of available maps do the following:
ccdb ls Magnets/Solenoid
You will see a lot of maps listed. Ignore any with names that include "_parms_". Look to the table below for details on individual maps.
For reconstruction, one simply needs to specify the BFIELD_MAP configuration parameter either on the command line or through a configuration file. For example, using the command line one passes a "-PBFIELD_MAP=Magnets/Solenoid/solenoid_1500_poisson_20090814_01" argument as follows:
hdview2 -PBFIELD_MAP=Magnets/Solenoid/solenoid_1500_poisson_20090814_01 hdgeant.hddm
Special Field Types
There are 2 special field types available also. They are the "Const" and "Spoiled" fields.
The "Const" field type is a uniform-everywhere-in-the-universe field. The parameters are set in the Magnets/Solenoid/solenoid_const calibration parameters. One can specify the 3 components of the field in cylindrical coordinates so the field is necessarily radially symmetric. The default values are just a 2T field in the -z direction. To specify this field in simulation, one needs to set the "BFIELD" parameter in the control.in file to "'Const'". This already exists, but is commented out, in the default control.in file one gets from the repository with the HDGeant package. To specify the "Const" map in a reconstruction program, one just needs to se the BFIELD_TYPE configuration parameter. This can be done by adding the "-PBFIELD_TYPE=Const" argument to the command line when the reconstruction program is started.
The "Spoiled" field type uses a full field map, but spoils it by scaling the amplitude with some combination of r, phi, and z dependences. Each of the dependences has both an amplitude and an angular frequency that are set using configuration parameters. The relevant configuration parameters are:
BFIELD:PHI_AMP BFIELD:PHI_OMEGA BFIELD:R_AMP BFIELD:R_OMEGA BFIELD:Z_AMP BFIELD:Z_OMEGA
The underlying unspoiled map that is determined using the BFIELD_MAP configuration parameter as is normally done when using an unspoiled field.
Known field maps
The following are in chronological order. Look to the bottom of the table for the most recent maps.
|solenoid_1400||TOSCA||9/21/2001||From Paul Brindza's original map "dsolenoid.table". This was very probably generated at 1400A, though there is a small question regarding that.|
|solenoid_1500||TOSCA||4/19/2007|| From Paul Brindza's original map "smoothsolenoid1500.table". This was the default map used up until 6/22/2009. Comment from Paul's e-mail regarding this:
"I used integral coil and integral mesh fields to compute the grid. There may be places like in the iron or near the coils where the results will be different than before. The region inside the useful volume of the Solenoid where the detectors are should be more accurate and smoother."
|solenoid_1500kinked||TOSCA||~2006||From Paul Brindza's map "largegridat1500.table". This map had an unintentional kink in it due to a change in the grid size for the inner and outer parts of the solenoid. I beieve it was used for some time before being replaced in spring 2007 when "smoothsolenoid1500.table" was generated after finally noticing the kink. Since the kink appeared outside of the active tracking area, it didn't really affect the tracking at all.|
|solenoid_1500spoiledA||TOSCA||3/19/2007||This map was generated by Paul Brindza at Elke's request to study the effect of having a field with distortions at the 10-3 level from our best guess of what the field is. The nature of the distortions was kept secret so Paul or Elke would need to be contacted for details.|
|solenoid_1500_20081112-1||ANSYS||11/12/2008|| One of Floyd Martins original ANSYS-generated maps. This was never used for anything but to check that the map was roughly consistent with TOSCA. From the e-mail sent by George Biallas regarding this and the following 3 maps:
"David and Elton, The results are in the folder below. 1. Note that because of the FEA calcultion doesn't do well on the sharp corner of a wedge, we don't have a field value on the Magnet Axis 2. We have changed the Z axis to the standard Z axis origin for the experiment, the inner surface of the Upstream Front Yoke. 3. We have solutions at 1500 to 1800 A. So far, the nominal current is 1500A. I don't know how we want to characterize beyond that. 4. ANSYS output is in comma delimited EXCEL files. I didn't want to cram more huge, translated files in our folders, so I will let you do the translations to what you need. 5. We will title the files by date and run on that date. The translation file to what the run consisted of is in the main folder. 6. We don't have the FCAL steel plate in these runs. 7. As more runs accumulate, we will have to maintain configuration control with a designation of what is the OFFICIAL RUN and notify everyone if the run changes. "
|solenoid_1600_20081112-2||ANSYS||11/12/2008||See notes for solenoid_1500_20081112-1 above.|
|solenoid_1700_20081112-3||ANSYS||11/12/2008||See notes for solenoid_1500_20081112-1 above.|
|solenoid_1800_20081112-4||ANSYS||11/12/2008||See notes for solenoid_1500_20081112-1 above.|
|solenoid_const||none||11/10/2008||This is not actually a field map, but holds constants that are used when the BFIELD_TYPE configuration parameter is set to "Const". This is useful in simulation studies using a perfectly uniform magnetic field.|
|solenoid_1500_20090312-2||ANSYS||3/12/2009|| From Floyd's e-mail describing the differences between the 20090312 maps and the 20081209 maps:
The differences I can see are: On the initial 20081209-1 tabulation (pg 9): 1) The small upstream yoke bore liner was 1.5" 2) Coil locations and sizes were at room temperature. On the latest 20090312-2 tabulation (pg 14): 1) The small upstream yoke bore liner is 1.25" 2) Coil locations & sizes are at a liquid Helium state. I think that's the only differences between the two dates.
|solenoid_1600_20090312-2||ANSYS||3/12/2009||See notes for solenoid_1500_20090312-2 above.|
|solenoid_1500_poisson_20090814_01||POISSON||8/14/2009||Nominal geometry and current as calculated by POISSON|
|solenoid_1200_poisson_20091123_01||POISSON||11/23/2009||80% field (uses same geometry as solenoid_1500_poisson_20090814_01)|
|solenoid_1050_poisson_20091123_02||POISSON||11/23/2009||70% field (uses same geometry as solenoid_1500_poisson_20090814_01)|
|solenoid_0750_poisson_20091123_03||POISSON||11/23/2009||50% field (uses same geometry as solenoid_1500_poisson_20090814_01)|
|solenoid_1500_poisson_20100622_01||POISSON||6/22/2010||Simple, single coil configuration using the same cross-sectional area and total current as in solenoid_1500_poisson_20090814_01. Baffles have been removed, but iron yoke is the same.|
|solenoid_1500_poisson_20100622_02||POISSON||6/22/2010||Similar to solenoid_1500_poisson_20100622_01, but following BaBar model as specified in babar_transv_3_4.am file Eugene sent me on 6/22/2010. Namely, three sections where outer ones are half as long as middle but all 3 carry the same amount of current (outer ones have higher current density).|
|solenoid_1500_poisson_20100622_03||POISSON||6/22/2010||Similar to solenoid_1500_poisson_20100622_01, but with additional coils outside of long, inner coil. The outer coils are 30cm long in z. The inner coil thickness in r is reduced such that the total cross-sectional area and total current are the same as the solenoid_1500_poisson_20090814_01 configuration.|
|solenoid_1500_poisson_20100701_03||POISSON||7/7/2010||This map is a multi coil design, but much simpler than the LASS magnet design. It is symmetric in z about the magnet center. It has a central coil that is ~33cm long, 2 inner coils that are upstream and downstream of that that are 150cm long, and 2 outer coils that are flush with the upstream and downstream ends of the inner coils that are 20cm long. The currents were adjusted by hand to give a flat, uniform field in the central region of the magnet.|
|solenoid_1500_poisson_MIT20111104_01||POISSON||11/4/2011||This map implements the 3-coil MIT design.|
|solenoid_1300_20130508||POISSON||5/8/2013||This map implements the standard LASS design but was generated for a 1300A current. It was generated to use for comparison to the magnet mapping efforts (May,Aug.) in 2013|
|solenoid_1350_poisson_20130925||POISSON||9/25/2013|| This map implements the standard LASS design but was generated for a 1350A current. It is the first map to have the current produced in the opposite direction from previously generated maps. The current direction of this map is now consistent with how the solenoid has been physically wired |
(this is currently the default map used by the offline software)
|solenoid_50A_poisson_20140819||POISSON||8/19/2014||Nominal geometry with 50A forward current as calculated by POISSON|
|solenoid_100A_poisson_20140819||POISSON||8/19/2014||Nominal geometry with 100A forward current as calculated by POISSON|
|solenoid_200A_poisson_20140819||POISSON||8/19/2014||Nominal geometry with 200A forward current as calculated by POISSON|
|solenoid_300A_poisson_20140819||POISSON||8/19/2014||Nominal geometry with 300A forward current as calculated by POISSON|
|solenoid_1000A_poisson_20141104||POISSON||11/4/2014||Nominal geometry with 1000A forward current as calculated by POISSON|
|solenoid_600A_poisson_20141118||POISSON||11/18/2014||Nominal geometry with 600A forward current as calculated by POISSON|
|solenoid_1300A_poisson_20150213||POISSON||2/13/2015||Nominal geometry with 1300A forward current as calculated by POISSON|
|solenoid_1300A_poisson_20150330||POISSON||3/30/2015||Nominal geometry with 1300A forward current as calculated by POISSON but extended out to z=700cm for DIRC studies|
|solenoid_800A_poisson_20150427||POISSON||4/27/2015||Nominal geometry with 800A forward current as calculated by POISSON|
Creating a ROOT file of the magnetic field
The bfield2root program can be used to create a ROOT file of the magnetic field map as is used by the simulation/reconstruction code. The ROOT file will contain a TTree with entries from several points in the map. It is important to note that the values going into the TTree come from interpolating the map whose grid is determined by the ASCII file. The bfield2root program has default settings to match the default grid of the ASCII files. If a map with different grid spacing is generated then the bfield2root program will still work but one should be aware that the resulting ROOT file will contain interpolated values.
Another "gotcha" is that the origin of the lab coordinate system used by the original field maps is not in the same location as is currently used. The TOSCA generated maps have the origin close to the center of the target, 26 inches (=66.04 cm) offset from the modern coordinate system. As of svn revision 5316 on June 22, 2009, the reconstruction code no longer assumes this offset is there and so one must correct for it when using a TOSCA map. In the mean time, the bfield2root program must be told about this offset via a command line parameter (see below).
The following instructions are for doing this on the JLab CUE system (e.g. ifarml3). However, one can of course do this on another system where the Hall-D software is compiled and the desired map is located in the directory indicated by the JANA_CALIB_URL environment variable (note: this is set in step 1 below for the CUE).
- Make sure bfield2root is in your path. If it's not, then source a setup script for a pre-built Hall-D software release.
- e.g. source /group/halld/Software/builds/release-2009-05-27/setenv.csh
- Run bfield2root specifying the specific map
- e.g. bfield2root -PBFIELD_MAP=Magnets/Solenoid/solenoid_1500_20090312-2
- Run bfield2root using an older, TOSCA generated map
- e.g. bfield2root -PBFIELD_MAP=Magnets/Solenoid/solenoid_1500 -Z0 -66.04