GMC Output¶
Data Format¶
The data for the e906 experiment, both simulated and real, is stored in a MySQL database. Currently, the GMC output is stored on the seaquel.physics.illinois.edu server. This server can be accessed with MySQL workbench, which can be installed on Windows, Mac, or Linux. You can also find other MySQL interfaces on the internet if you find workbench unsuitable for your needs. There are also libraries for interfacing with MySQL for almost any programming language.
All values have units of GeV, cm, or radians where appropriate.
Output Tables¶
mRun¶
The mRun table includes all the relevant settings for the run.
Name | Variable type | Description |
runID | INT | The run number |
gitHash | STRING | This string can be cross referenced with the git hashes in the repository to know the version used. However, using the GMC Versions page and the M### part of the production name is simpler. |
seed | INT | The random number seed. |
eventsThrown | INT | Attempted number of events in the run. This includes attempts at generating dimuons that fail at the generator level due to physical impossibility |
eventsThrownPhysical | INT | Dimuon generator only. Number of events in the run. This includes dimuons that fail the acceptance cut but not dimuons that fail due to physical impossibility |
beamMomentum | DOUBLE | Beam momentum |
beamCurrent | DOUBLE | Protons/sec of the incoming beam |
APA | DOUBLE | Output for debugging, will likely be removed |
asciiFieldMap | BOOL | 1 means the magnetic field was loaded from ascii files, 0 if loaded from MySQL |
generator | STRING | dimuon or gun. What type of particle generator was used |
dimuonSource | STRING | Dimuon generator only. If a dimuon generator, gives what type of dimuons were generated. Drell-Yan, JPsi, or Psi' |
eventPos | STRING | Dimuon generator only. target, dump, upstream, or all. Gives the location dimuons were generated |
dimuonRepeat | INT | Dimuon generator only. If more than one, multiple dimuons are generated with the exact same starting kinematics. |
x1Min | DOUBLE | Dimuon generator only. Minimum value of x for the beam |
x1Min | DOUBLE | Dimuon generator only. Maximum value of x for the beam |
x2Min | DOUBLE | Dimuon generator only. Minimum value of x for the target |
x2Min | DOUBLE | Dimuon generator only. Miaximum value of x for the target |
xFMin | DOUBLE | Dimuon generator only. Minimum value of Feynmann x |
xFMin | DOUBLE | Dimuon generator only. Miaximum value of Feynmann x |
massMin | DOUBLE | Dimuon generator only. Minimum value of x for the dimuon mass |
massMin | DOUBLE | Dimuon generator only. Maximum value of x for the dimuon mass |
cosThetaMin | DOUBLE | Dimuon generator only. Minimum value of cos(theta_mu) |
cosThetaMax | DOUBLE | Dimuon generator only. Maximum value of cos(theta_mu) |
recordMethod | STRING | hits means events without hits are not recorded, energy means all particles above a certain energy are recorded, all means everything is recorded, and dimuonFull means only dimuons where both muons make it to the back are recorded. |
fmagStrength | DOUBLE | A number that multiplies the values in the magnetic field map for fmag |
kmagStrength | DOUBLE | A number that multiplies the values in the magnetic field map for kmag |
pythiaShower | BOOL | Toggle for Pythia generator. Turns QCD shower simulation on/off. Field not included for non pythia generators |
geometrySchema | STRING | The name of the MySQL schema used for the shape, material, and position of objects in the experiment |
magnetSchema | STRING | The name of the MySQL schema where one gets the magnetic field map, IF magFromAscii is false |
target | INT | The same integer used in data to identify targets |
timeStart | STRING | Date and time the run started |
timeStop | STRING | Date and time the run finished |
Spill¶
Intended to mimic the Spill table in data. Most of the entries don't correspond to anything in the Monte Carlo, they are just there in case a program that runs on both data and Monte Carlo reads in those numbers.
Event¶
Name | Variable type | Description |
eventID | INT | Index for events. Incremented by one each event |
codaEventID | INT | Included to mimic data |
runID | INT | The run number |
spillID | INT | Index for spills. Incremented by one each spill |
MATRIX1 | BOOL | 1 if the hits matched a pattern for the matrix 1 trigger |
MATRIX1 | BOOL | 1 if the hits matched a pattern for the matrix 2 trigger |
MATRIX1 | BOOL | 1 if the hits matched a pattern for the matrix 3 trigger |
MATRIX1 | BOOL | 1 if the hits matched a pattern for the matrix 4 trigger |
MATRIX1 | BOOL | 1 if the hits matched a pattern for the matrix 5 trigger |
NIM1 | BOOL | 1 if the hits matched a pattern for the nim 1 trigger |
NIM2 | BOOL | 1 if the hits matched a pattern for the nim 2 trigger |
NIM3 | BOOL | 1 if the hits matched a pattern for the nim 3 trigger |
NIM4 | BOOL | 1 if the hits matched a pattern for the nim 4 trigger |
NIM5 | BOOL | 1 if the hits matched a pattern for the nim 5 trigger |
dataQuality | INT | Not currently filled, included to match data table |
vmeTime | INT | Not currently filled, included to match data table |
mDimuon¶
Only available in dimuon productions.
Name | Variable type | Description |
runID | INT | The run number |
spillID | INT | Index for spills. Incremented by one each spill |
eventID | INT | Index for events. Incremented by one each event |
mTrackID1 | INT | Track index for the positive muon. Used to be trackID1 before version 1012 |
mTrackID2 | INT | Track index for the negative muon. Used to be trackID1 before version 1012 |
mass | DOUBLE | Invariant mass of the dimuon |
xF | DOUBLE | Feynmann x for the collision |
xB | DOUBLE | Bjorken x for the incident parton |
xT | DOUBLE | Bjorken x for the target parton |
dx | DOUBLE | x coordinate of dimuon origin |
dy | DOUBLE | y coordinate of dimuon origin |
dz | DOUBLE | z coordinate of dimuon origin |
dpx | DOUBLE | Initial x momentum of the dimuon |
dpy | DOUBLE | Initial y momentum of the dimuon |
dpz | DOUBLE | Initial z momentum of the dimuon |
phi_gam | DOUBLE | Phi of virtual photon, in xy plane |
phi_mu | DOUBLE | Phi of mu+, Collins-Soper frame |
theta_mu | DOUBLE | Theta of mu+, Collins-Soper frame |
sigWeight | DOUBLE | How likely this event is, according to the cross-section |
acceptDriftAll | BOOL | 1 if both muons hit drift chambers in all 4 stations. This includes prop tubes |
acceptHodoAll | BOOL | 1 if both muons hit the trigger hodoscopes in all 4 stations |
mGun¶
Only available in gun productions.
Name | Variable type | Description |
runID | INT | The run number. Equal to the random number seed for Monte Carlo runs |
spillID | INT | Index for spills. Incremented by one each spill |
eventID | INT | Index for events. Incremented by one each event |
bucketSize | INT | How many protons were generated for this event |
mTrack¶
Name | Variable type | Description |
mTrackID | INT | Index for tracks. Incremented by one for each new track. Used to be trackID before version 1012 |
runID | INT | The run number. Equal to the random number seed for Monte Carlo runs |
spillID | INT | Index for spills. Incremented by one each spill |
eventID | INT | Index for events. Incremented by one each event |
parentID | INT | Index of the parent track for this particle |
particleID | INT | LUND particle code |
parentParticleID | INT | LUND particle code for the parent particle |
x0 | DOUBLE | x coordinate of track origin |
y0 | DOUBLE | y coordinate of track origin |
z0 | DOUBLE | z coordinate of track origin |
xf | DOUBLE | x coordinate of track end |
yf | DOUBLE | y coordinate of track end |
zf | DOUBLE | z coordinate of track end |
px0 | DOUBLE | initial x momentum |
py0 | DOUBLE | initial y momentum |
pz0 | DOUBLE | initial z momentum |
pxf | DOUBLE | final x momentum |
pyf | DOUBLE | final y momentum |
pzf | DOUBLE | final z momentum |
x3 | DOUBLE | x coordinate of track near station 3 |
y3 | DOUBLE | y coordinate of track near station 3 |
z3 | DOUBLE | z coordinate of track near station 3 |
px3 | DOUBLE | x momentum of track near station 3 |
py3 | DOUBLE | y momentum of track near station 3 |
pz3 | DOUBLE | z momentum of track near station 3 |
x1 | DOUBLE | x coordinate of track near station 1 |
y1 | DOUBLE | y coordinate of track near station 1 |
z1 | DOUBLE | z coordinate of track near station 1 |
px1 | DOUBLE | x momentum of track near station 1 |
py1 | DOUBLE | y momentum of track near station 1 |
pz1 | DOUBLE | z momentum of track near station 1 |
charge | INT | Charge of particle |
creationProcess | STRING | How particle was created, i.e. e+ e- annihilation, etc. |
hitHodo1 | BOOL | true if the track hit H1x |
hitHodo2 | BOOL | true if the track hit H2x |
hitHodo3 | BOOL | true if the track hit H3x |
hitHodo4 | BOOL | true if the track hit H4x |
hitDrift1 | BOOL | true if the track hit D1 |
hitDrift2 | BOOL | true if the track hit D2 |
hitDrift3 | BOOL | true if the track hit D3 |
hitDrift4 | BOOL | true if the track hit the prop tubes |
protonID | INT | trackID of the initial proton that generated this particle. Gun generator only |
mHit¶
Column Name | Variable Type | Description |
mHitID | INT | Index for digitized hits |
hitID | INT | reference to the hit in the Hit table that results from this hit. May be NULL with detector inefficiencies. |
runID | INT | The run number |
spillID | INT | Index for spills. Incremented by one each spill |
eventID | INT | reference to the event in Event table this wire hit was calculated from |
mTrackID | INT | reference to the track in mTrack table this wire hit was calculated from |
detectorName | STRING | Name of the detector that was hit |
elementID | INT | wire number or hodoscope paddle hit |
rocID | INT | rocID the detectorName, elementID maps to |
boardID | INT | boardID the detectorName, elementID maps to |
channelID | INT | channelID the detectorName, elementID maps to |
particleID | INT | LUND particle code |
driftDistance | DOUBLE | Drift distance |
driftTime | DOUBLE | Estimated drift time in microseconds, derived from drift distance according to our RT curves |
tdcTime | DOUBLE | Estimate of the tdcTime such a hit would generate in our electronics |
hx | DOUBLE | x position of hit |
hy | DOUBLE | y position of hit |
hz | DOUBLE | z position of hit |
hpx | DOUBLE | x momentum of hit |
hpy | DOUBLE | y momentum of hit |
hpz | DOUBLE | z momentum of hit |
Hit¶
This table is supposed to mimic the Hit table from data. The Hit table is produced from the mHit table, tossing out hits that miss the sensitive area of the detector, or randomly according to the inefficieny value in the Planes table. Extra hits might also be added if a source of noise is added to GMC.
mNoiseHit¶
This table links the mHit table and the Hit table.
Column Name | Variable Type | Description |
mHitID | INT | reference to an entry in the mHit table |
hitID | INT | reference to an entry in the Hit table |
type | STRING | Explains the origin of the Hit in the Hit table, or why a Hit entry was not produced from an mHit entry |
Proper Weighting¶
This section describes the methods of normalizing a set of GMC events to get the rate in Hz unit. Written by Kenichi, confirmed by BZ, as of June 15, 2013.
Gun Mode¶
First add up all hits to get a yield in a certain condition (like detector area, mass range, pT range, etc). Then multiply the yield by
[N of protons per second] / [N of protons fired]
N of protons per second is the beamCurrent field in mRun, and is usually 2e12. N of protons fired is the sum of the bucketSize field for all entries in the mGun table. This returns the rate in Hz of all hits meeting this condition.
Dimuon Mode¶
First sum up the sigWeight in the mDimuon table for all the entries that match the kinematics you are looking at. Then divide the weighted yield by the number of generated events, which is the sum of the eventsThrown field in the mRun table. This will return a a rate in Hz, dimuons per second. Note that you must divide by the number of generated events, not accepted events. Even without acceptance cuts the number of rows in the mDimuon table will fall short of the number of events thrown due to physically impossible dimuons. This rate in Hz depends on the beamCurrent setting in the mRun table which affects the weights of the dimuons. To get it from dimuons per second to dimuons per proton you can divide the dimuons per second number by the beamCurrent entry in the mRun table. The beamCurrent entry should be the same for every run unless someone produced a really weird Monte Carlo.