# GMC Geometry Tables¶

Many of these tables are structured to resemble Geant4 classes used in its geometry. Some familiarity with these classes is useful for understanding these tables. The user's guide at http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/index.html is a useful reference for becoming familiar with how Geant4 handles its geometry.

## Elements¶

This table stores the elements that make up the materials in Geant4's geometry. An entry in this table contains the information needed to build the G4Element objects.

Column Name |
Variable Type |
Description |

eID | INT | Index for the table |

symbol | STRING | The symbol used in the periodic table. Special entries such as liquid deuterium have modified symbols |

z | INT | Atomic number |

n | INT | Atomic weight |

eName | INT | Name of the element |

## Materials¶

This table stores the materials that make up the objects in Geant4's geometry. An entry in this table contains the information needed to build the G4Material objects and is dependent on the Elements table.

Column Name |
Variable Type |
Description |

mID | INT | Index for the table |

mName | STRING | The name of the material |

density | FLOAT | density of the material (g/cm^3) |

numElements | INT | number of elements in the material |

element1 | INT | Name of the first element |

elementPercent1 | INT | Percent of the material by mass |

element2 | INT | Name of the second element |

elementPercent2 | INT | Percent of the material by mass |

etc | etc | etc |

element10 | INT | Name of the tenth element |

elementPercent10 | INT | Percent of the material by mass |

eID1 | INT | link to the Elements table for the first element |

eID2 | INT | link to the Elements table for the second element |

etc | etc | etc |

eID10 | INT | link to the Elements table for the tenth element |

## SolidBoxes¶

This table is used to build the G4Box objects, which inherit from G4VSolid and are rectangular prisms. The sID value is unique among SolidBoxes, SolidTubes, and SubtractionSolids. The entries in all of these tables are loaded into the same vector in GMC.

Column Name |
Variable Type |
Description |

sID | INT | Index for the table |

sName | STRING | The name of the solid |

xLength | FLOAT | Length of the box in the x direction (cm) |

yLength | FLOAT | Length of the box in the y direction (cm) |

zLength | FLOAT | Length of the box in the z direction (cm) |

## SolidTubes¶

This table is used to build the G4Tubs objects, which inherit from G4VSolid and are cylinders, possibly hollow.

Column Name |
Variable Type |
Description |

sID | INT | Index for the table |

sName | STRING | The name of the solid |

length | FLOAT | Length of the tube (cm) |

radiusMin | FLOAT | Inner radius of the tube (cm) |

radiusMax | FLOAT | Outer radius of the tube (cm) |

## SubtractionSolids¶

A subtraction solid is a combination of 2 basic solids used to make more complex shapes. One solid is the base solid, which provides the initial shape. The other solid hollows out the base solid where they overlap. This table is used to build some of the more complex solids used by Geant4.

Column Name |
Variable Type |
Description |

sID | INT | Index for the table |

sName | STRING | The name of the solid |

holeID | INT | sID of the solid that makes the hole |

shellID | INT | sID of the base solid |

rotX | FLOAT | Rotation about the x-axis of the hole inside the shell (radians) |

rotY | FLOAT | Rotation about the x-axis of the hole inside the shell (radians) |

rotZ | FLOAT | Rotation about the x-axis of the hole inside the shell (radians) |

posX | FLOAT | x coordinate position of the hole inside the shell (cm) |

posY | FLOAT | y coordinate position of the hole inside the shell (cm) |

posZ | FLOAT | z coordinate position of the hole inside the shell (cm) |

## LogicalVolumes¶

This table stores information to build G4LogicalVolume objects in Geant4. These depend on the Material and Solid tables.

Column Name |
Variable Type |
Description |

lvID | INT | Index for the table |

lvName | STRING | The name of the LogicalVolume |

sID | INT | Reference to the Solids tables |

mID | INT | Reference to the Materials table |

sensitiveDetector | BOOL | True if the volume records hits in GMC |

vID | INT | Reference to the visAttributes table. Gives the color of the object if GMC is drawing visuals |

## PhysicalVolumes¶

This table stores the information to build G4PhysicalVolumes. It depends on the LogicalVolumes table.

Column Name |
Variable Type |
Description |

pvID | INT | Index for the table |

pvName | STRING | The name of the PhysicalVolume |

xRel | FLOAT | x position of the PhysicalVolume, relative to the center of its mother volume (cm) |

yRel | FLOAT | y position of the PhysicalVolume, relative to the center of its mother volume (cm) |

zRel | FLOAT | z position of the PhysicalVolume, relative to the center of its mother volume (cm) |

lvID | INT | lvID of the LogicalVolume that the PhysicalVolume is built from |

motherID | INT | lvID of the LogicalVolume that the PhysicalVolume is placed in. This is NULL for and only for the world volume |

depth | INT | The world volume has a depth of 0. Volumes placed directly in it have a depth of 1. Volumes placed directly in those have a depth of 2, etc. |

rotX | FLOAT | How far to rotate the PhysicalVolume about the x-axis (radians) |

rotY | FLOAT | How far to rotate the PhysicalVolume about the y-axis (radians) |

rotZ | FLOAT | How far to rotate the PhysicalVolume about the z-axis (radians) |

sensitiveDetector | BOOL | True if this physical volume is used as a detector volume in GMC |

upstreamInteraction | BOOL | True if this physical volume is in the path of the beam and before the target. Must be set correctly if generating dimuons upstream |

zLength | FLOAT | Redundant and not used by GMC, part of the table to increase ease of use. Length in z of the volume |

mID | INT | Redundant and not used by GMC, part of the table to increase ease of use. Reference to the Materials table |

sID | INT | Redundant and not used by GMC, part of the table to increase ease of use. Reference to the Solids tables |

## TargetInfo¶

This table lists the information for the various targets available in GMC, as they are implemented in GMC. The /set/target command in GMC takes an int as an argument that matches a tID from this table.

Column Name |
Variable Type |
Description |

tID | INT | Corresponds to targetPos in data in the Spill table. 1 is LH2, 3 is LD2, etc. |

mID | INT | Link to mID in the Materials table for the material the target is composed of |

totalLength | DOUBLE | The combined length of all pieces of the target (cm) |

pieceLength | DOUBLE | The length of a single piece of the target (cm) |

radius | DOUBLE | The radius of the target (cm) |

zPos | DOUBLE | The z position of the center of the target (cm) |

num_pieces | INT | How many pieces the target is split into |

spacing | DOUBLE | The distance between two pieces of the target, center to center (cm) |

vID | INT | Link to vID in the visAttributes table |

mName | STRING | Material name. GMC uses mID, this column is for human readability of the table |

## Constants_Derived¶

This is a list of constants used in various places in GMC. This table is derived from the other tables.

Column Name |
Variable Type |
Description |

name | STRING | name of the constant |

value | FLOAT | value of the constant |

## Fmag¶

This table is the magnetic field map for Fmag. The default settings for GMC load the magnetic field map from an ASCII text file, not from the MySQL database. The magnetic field schemas are often kept in a different geometry schema than the rest of the geometry.

Column Name |
Variable Type |
Description |

x | FLOAT | x position of the point in the field (cm) |

y | FLOAT | y position of the point in the field (cm) |

z | FLOAT | z position of the point in the field (cm) |

B_x | FLOAT | strength of the magnetic field pointing in the x direction |

B_y | FLOAT | strength of the magnetic field pointing in the y direction |

B_z | FLOAT | strength of the magnetic field pointing in the z direction |

## Kmag¶

This table is the magnetic field map for Kmag. Same structure as Fmag.

## Planes¶

This table contains the information for the detector planes in the experiment. Positions and angles are the survey results, before the adjustments from any alignment procedures. This table is not used to place any spectrometer objects in GMC, but GMC does use this information when creating the mHit and Hit tables. The prop tubes are broken up into many planes, one each for the front and back of each module of 16 tubes.

Column Name |
Variable Type |
Description |

detectorID | INT | Reference ID for the detector |

stationID | INT | Which of the 4 stations the detector is placed at |

componentID | INT | Used in sqerp |

detectorName | STRING | Name of the detector plane |

myPrimeIs | INT | If the detector plane has a prime plane that goes with it, this is its detectorID. (i.e. D1X would have D1Xp as a prime plane). 0 means no prime plane. |

geantName | STRING | Name of the sensitive volume in GMC associated with this detector plane |

spacing | FLOAT | The spacing between the centers of two adjacent elements (cm) |

cellWidth | FLOAT | Width of a detector element, such as a hodoscope paddle (cm) |

overlap | FLOAT | How much two adjacent elements overlap (cm) |

numElements | INT | The number of elements in the plane |

lowElementID | INT | The smallest elementID in the plane |

angleFromVert | FLOAT | How much the elements are tilted away from straight up and down (radians) |

xPrimeOffset | FLOAT | How much the elements are offset due to being a part of a primed unprimed pair (cm) |

planeWidth | FLOAT | The width of the sensitive area of the plane (cm). For prop tubes this is the width of one plane, front or back, not both. |

planeHeight | FLOAT | The height of the sensitive area of the plane (cm). For prop tubes this is the width of one plane, front or back, not both. |

x0 | FLOAT | x coordinate of the center of the plane (cm). For prop tubes this is the middle of the entire module, front and back. |

y0 | FLOAT | y coordinate of the center of the plane (cm). For prop tubes this is the middle of the entire module, front and back. |

z0 | FLOAT | z coordinate of the center of the plane (cm) |

theta_x | FLOAT | How much the plane is rotated about the x-axis (radians) |

theta_y | FLOAT | How much the plane is rotated about the y-axis (radians) |

theta_z | FLOAT | How much the plane is rotated about the z-axis (radians) |

driftSpeed | FLOAT | Obsolete |

efficiency | FLOAT | Fraction of hits that are picked up by the detector. This will probably be obsolete soon, as it looks like efficiency is position and rate dependent. |

## PlaneOffsets¶

Alignment information for the planes. These are small adjustments to the survey results. delta_z, delta_u, and delta_theta are determined from alignment calculations, and deltaX and deltaY are estimated from that. deltaZ is redundant with delta_z column, but is left in because removing it could break older code.

Column Name |
Variable Type |
Description |

detectorName | STRING | Name of the detector plane |

delta_z | FLOAT | How much the plane is offset in z compared to the entry in Planes (cm) |

delta_u | FLOAT | How much the plane is offset in its measuring direction (cm) |

delta_theta | FLOAT | How much the plane is rotated around the axis perpindicular to its surface (radians) |

deltaX | FLOAT | How much the plane is offset in x compared to the entry in Planes (cm) |

deltaY | FLOAT | How much the plane is offset in y compared to the entry in Planes (cm) |

deltaZ | FLOAT | How much the plane is offset in z compared to the entry in Planes (cm) |

rotateAboutX | FLOAT | How much the plane is rotated about the x-axis compared to the entry in Planes (radians) |

rotateAboutY | FLOAT | How much the plane is rotated about the y-axis compared to the entry in Planes (radians) |

rotateAboutZ | FLOAT | How much the plane is rotated about the z-axis compared to the entry in Planes (radians) |

## VisAttributes¶

Used to contain color information for displaying GMC events, which is not currently supported.

## WirePositionsDerived¶

Not currently used for anything. Contains the distance of each wire from the center of it's chamber, in the measuring direction. This table is derived from the other tables.

Column Name |
Variable Type |
Description |

detectorName | STRING | Name of the detector plane |

elementID | INT | Wire number |

wirePosition | FLOAT | Distance of the wire from the detector center (cm) |

## SimpleGeometryDerived¶

Not used in any program, exists for human readability purposes. This table contains the z position of several pieces of the geometry. This table is derived from the other tables.

Column Name |
Variable Type |
Description |

name | STRING | Name of the spectrometer piece |

zPos | FLOAT | z position of the spectrometer piece (cm) |

## DigitizerInfoDerived¶

Used by GMC. All of this information is derived from the Planes and PlaneOffsets table.

Column Name |
Variable Type |
Description |

detectorID | INT | Reference ID for the detector |

u_x | FLOAT | x component of a unit vector pointing in the measuring direction of the detector |

u_y | FLOAT | y component of a unit vector pointing in the measuring direction of the detector |

u_z | FLOAT | z component of a unit vector pointing in the measuring direction of the detector |

v_x | FLOAT | x component of a unit vector parallel to a wire/paddle in the detector |

v_y | FLOAT | y component of a unit vector parallel to a wire/paddle in the detector |

v_z | FLOAT | z component of a unit vector parallel to a wire/paddle in the detector |

n_x | FLOAT | x component of a unit vector normal to the detector plane |

n_y | FLOAT | y component of a unit vector normal to the detector plane |

n_z | FLOAT | z component of a unit vector normal to the detector plane |

w_x | FLOAT | x component of a unit vector in the detector plane parallel to the top or bottom edge |

w_y | FLOAT | y component of a unit vector in the detector plane parallel to the top or bottom edge |

w_z | FLOAT | x component of a unit vector in the detector plane parallel to the top or bottom edge |

h_x | FLOAT | x component of a unit vector in the detector plane parallel to the left or right edge |

h_y | FLOAT | y component of a unit vector in the detector plane parallel to the left or right edge |

h_z | FLOAT | x component of a unit vector in the detector plane parallel to the left or right edge |

x0 | FLOAT | x coordinate of the center of the plane (cm). For prop tubes this is the middle of the entire module, front and back. |

y0 | FLOAT | y coordinate of the center of the plane (cm). For prop tubes this is the middle of the entire module, front and back. |

z0 | FLOAT | z coordinate of the center of the plane (cm) |

u0 | FLOAT | The distance of the center of the plane from the beam line, in its measuring direction (cm) |

angleFromVert | FLOAT | How much the elements are tilted away from straight up and down (radians) |

detectorName | STRING | Name of the detector plane |

geantName | STRING | Name of the sensitive volume in GMC associated with this detector plane |

numElements | INT | The number of elements in the plane |

lowElementID | INT | The smallest elementID in the plane |

spacing | FLOAT | The spacing between the centers of two adjacent elements (cm) |

cellWidth | FLOAT | Width of a detector element, such as a hodoscope paddle (cm) |

overlap | FLOAT | How much two adjacent elements overlap (cm) |

xPrimeOffset | FLOAT | How much the elements are offset due to being a part of a primed unprimed pair (cm) |

planeWidth | FLOAT | The width of the sensitive area of the plane (cm). For prop tubes this is the width of one plane, front or back, not both. |

planeHeight | FLOAT | The height of the sensitive area of the plane (cm). For prop tubes this is the width of one plane, front or back, not both. |

driftSpeed | FLOAT | Obsolete |

## SurveyResults¶

Information on the detector planes obtained from surveys.

Column Name |
Variable Type |
Description |

survey_date | STRING | Date the survey was conducted |

detectorName | STRING | Name of the detector surveyed |

x_cm | FLOAT | x position of the chamber |

y_cm | FLOAT | y position of the chamber |

z_cm | FLOAT | z position of the chamber |

thx_rad | FLOAT | rotation of the chamber around the x axis |

thy_rad | FLOAT | rotation of the chamber around the y axis |

thz_rad | FLOAT | rotation of the chamber around the z axis |

## DetectorSpacings¶

The survey results often return results only for a whole detector instead of each plane in it. If we get results back for the station 1 wire chambers, we need to know how to use those to generate separate positions for D1X, D1X', D1V, etc. This table contains the information needed to do that.

Column Name |
Variable Type |
Description |

dID | INT | detectorID used in Planes table |

detectorName | STRING | name of the detector in the Planes table |

surveyDetectorName | STRING | name of the detector from the survey |

x_spacing | FLOAT | x position of plane minus x position of survey location |

y_spacing | FLOAT | y position of plane minus y position of survey location |

z_spacing | FLOAT | z position of plane minus z position of survey location |

## SurveyResults2¶

Combination of SurveyResults and DetectorSpacings. i.e. D1 is now split into D1X, D1X', etc.

Column Name |
Variable Type |
Description |

survey_date | STRING | Date the survey was conducted |

detectorName | STRING | Name of the detector plane |

x_cm | FLOAT | x position of the chamber |

y_cm | FLOAT | y position of the chamber |

z_cm | FLOAT | z position of the chamber |

thx_rad | FLOAT | rotation of the chamber around the x axis |

thy_rad | FLOAT | rotation of the chamber around the y axis |

thz_rad | FLOAT | rotation of the chamber around the z axis |