If you want to truly understand something, try to change it.
Kurt Lewin
| Rtext | retrack text format |
|---|---|
| Rbinary | retrack binary format |
| G | g4beamline (BLTrackFile) virtual detector format |
| V | g4beamline 0.95b verbose format |
| A | g4beamline 1.0 Alltrace format |
| I | ICOOL format |
| O | OptiM format |
| P | TJNAF Parmela KBB format |
| S | ANL SDDS format |
| T2 | LANL Parmela TAPE2 format |
| T3 | LANL Parmela TAPE3 format |
The retrack text format
(written out by
The following quantities are calculated and output by default for each event#id:
trk.id Ev.id x.id y.id z.id P.idx Py.id Pz.id t.id r.id w.id Pr.id Pw.id KE.id Ex.id Ey.id Ez.id Bx.id By.id Bz.id
| label | units | description |
|---|---|---|
| trk | track ID#, 1- | |
| Ev | event ID# as read from source | |
| x | cm | transverse X position |
| y | cm | transverse Y position |
| z | cm | longitudinal Z position |
| Px | MeV/c | transverse X momentum |
| Py | MeV/c | transverse Y momentum |
| Pz | MeV/c | longitudinal Z momentum |
| t | ns | time |
| r | cm | radial position |
| w | radians | angular position |
| Pr | MeV/c | radial momentum |
| Pw | MeV/c | tangental momentum |
| KE | MeV | kinetic energy |
| Ex | MV/m | x electric field |
| Ey | MV/m | y electric field |
| Ez | MV/m | z electric field |
| Bx | Tesla | x magnetic field |
| By | Tesla | y magnetic field |
| Bz | Tesla | z magnetic field |
In the case of EventID<0, the "-" in the column name is changed to a "_" to avoid confusing analysis programs.
The columns are placed side to side for ease of plotting. The order of the tracks is by the length of the path, so shorter paths appear to the right. This is done so plotting programs like gnuplot do not have to deal with missing data for tracks that stop prematurely.
The ++pad option will cause the last point of a track to be repeated until the end of the file, while --pad (the default) will cause nothing to be written after a track has stopped.
In this example, there are only events #-2, -1, 0, & 1 present:
$> more a1.rst
# trk.-2 Ev._2 x._2 y._2 z._2 Px._2 Py._2 Pz._2 t._2 r._2 w._2 Pr._2 Pw._2 KE._2 Ex._2 Ey._2 Ez._2 Bx._2 By._2 Bz._2 trk.-1 Ev._1 x._1 y._1 z._1 Px._1 Py._1 Pz._1 t._1 r._1 w._1 Pr._1 Pw._1 KE._1 Ex._1 Ey._1 Ez._1 Bx._1 By._1 Bz._1 trk.0 Ev.0 x.0 y.0 z.0 Px.0 Py.0 Pz.0 t.0 r.0 w.0 Pr.0 Pw.0 KE.0 Ex.0 Ey.0 Ez.0 Bx.0 By.0 Bz.0 trk.1 Ev.1 x.1 y.1 z.1 Px.1 Py.1 Pz.1 t.1 r.1 w.1 Pr.1 Pw.1 KE.1 Ex.1 Ey.1 Ez.1 Bx.1 By.1 Bz.1
#
# 17:28:48 Mar 2, 2006
# /CASA/acc_phys/6Dcooling/TOOLS/retrack/1.15b/EXE.Linux/retrack -F A -i dn1.att -O a1.rsb +O a1 +v
#
# Tracks=YES
# PDGid=-13,RestMassMeV=105.658386,ParticleCharge=1,AntiParticle=YES
# RefEventID=-1,RefTrackID=2,RefTrackOK=YES,RefCnt=959,sRefs=960
# {internal reference track: included}
#
# EvSeq EvCnt sEvs seq#
# -2 959 1 1
# -1 959 960 2
# 0 959 1919 3
# 1 959 2878 4
#
# trk.-2[1] Ev._2[2] x._2[3] y._2[4] z._2[5] Px._2[6] Py._2[7] Pz._2[8] t._2[9] r._2[10] w._2[11] Pr._2[12] Pw._2[13] KE._2[14] Ex._2[15] Ey._2[16] Ez._2[17] Bx._2[18] By._2[19] Bz._2[20] trk.-1[21] Ev._1[22] x._1[23] y._1[24] z._1[25] Px._1[26] Py._1[27] Pz._1[28] t._1[29] r._1[30] w._1[31] Pr._1[32] Pw._1[33] KE._1[34] Ex._1[35] Ey._1[36] Ez._1[37] Bx._1[38] By._1[39] Bz._1[40] trk.0[41] Ev.0[42] x.0[43] y.0[44] z.0[45] Px.0[46] Py.0[47] Pz.0[48] t.0[49] r.0[50] w.0[51] Pr.0[52] Pw.0[53] KE.0[54] Ex.0[55] Ey.0[56] Ez.0[57] Bx.0[58] By.0[59] Bz.0[60] trk.1[61] Ev.1[62] x.1[63] y.1[64] z.1[65] Px.1[66] Py.1[67] Pz.1[68] t.1[69] r.1[70] w.1[71] Pr.1[72] Pw.1[73] KE.1[74] Ex.1[75] Ey.1[76] Ez.1[77] Bx.1[78] By.1[79] Bz.1[80]
1 -2 0.000000 0.000000 0.095000 0.000000 0.000000 300.000000 0.003360 0.000000 3.141593 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2 -1 0.000000 0.000000 0.095000 0.000000 0.000000 300.000000 0.003360 0.000000 3.141593 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 3 0 0.000000 0.000000 0.095000 0.000000 0.000000 300.000000 0.003360 0.000000 3.141593 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 4 1 0.100000 0.000000 0.095000 0.000000 0.000000 300.000000 0.003360 0.100000 0.000000 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1 -2 0.000000 0.000000 0.105000 0.000000 0.000000 300.000000 0.003713 0.000000 3.141593 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2 -1 0.000000 0.000000 0.105000 0.000000 0.000000 300.000000 0.003713 0.000000 3.141593 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 3 0 0.000000 0.000000 0.105000 0.000000 0.000000 300.000000 0.003713 0.000000 3.141593 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 4 1 0.100000 0.000000 0.105000 0.000000 0.000000 300.000000 0.003713 0.100000 0.000000 0.000000 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1 -2 0.000000 0.000000 1.105000 -0.000121 0.000000 300.000000 0.039078 0.000000 3.141593 0.000121 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000060 0.000000 2 -1 0.000000 0.000000 1.105000 -0.000121 0.000000 300.000000 0.039078 0.000000 3.141593 0.000121 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000060 0.000000 3 0 0.000000 0.000000 1.105000 -0.000121 0.000000 300.000000 0.039078 0.000000 3.141593 0.000121 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000060 0.000000 4 1 0.100000 0.000000 1.105000 -0.000117 0.000000 300.000000 0.039078 0.100000 0.000000 -0.000117 0.000000 212.404022 0.000000 0.000000 0.000000 0.000000 0.000059 0.000000
...
Only a subset of the columns need be retrained.
For example,
# trk._1 Ev._1 x._1 y._1 z._1 trk.0 Ev.0 x.0 y.0 z.0 trk.1 Ev.1 x.1 y.1 z.1
#
# 16:23:39 Mar 6, 2006
# retrack -F A -i dn1.att -id -1:2 -k x:y:z -O xx +v
#
# Tracks=YES
# PDGid=-13,RestMassMeV=105.658386,ParticleCharge=1,AntiParticle=YES
# RefEventID=-1,RefTrackID=1,RefTrackOK=YES,RefCnt=959,sRefs=1
# {internal reference track: included}
#
# EvSeq EvCnt sEvs seq#
# -1 959 1 1
# 0 959 960 2
# 1 959 1919 3
#
# trk._1[1] Ev._1[2] x._1[3] y._1[4] z._1[5] trk.0[6] Ev.0[7] x.0[8] y.0[9] z.0[10] trk.1[11] Ev.1[12] x.1[13] y.1[14] z.1[15]
1 -1 0.000000 0.000000 0.095000 2 0 0.000000 0.000000 0.095000 3 1 0.100000 0.000000 0.095000
1 -1 0.000000 0.000000 0.105000 2 0 0.000000 0.000000 0.105000 3 1 0.100000 0.000000 0.105000
...
This format makes for long records that may cause problems with some packages
(gnuplot seems to be OK with lines less than ~650 bytes), but makes
it convenient to follow individual particles.
The
To greatly increase the speed (seconds rather than minutes)
of reading data saved by retrack
There are two forms; one a very fast, very large
| array | type | size/words | description |
|---|---|---|---|
| binary format revision | real*4 | 1 | 1.32 |
| speed flag | logical*4 | 1 | { .True.!=0->fast&big | .False.==0->slower&smaller } |
| RefEventID | integer*4 | 1 | event ID# of reference track |
| RefTrackID | integer*4 | 1 | track# of reference track |
| RefTrackOK | logical*4 | 1 | whether good reference track |
| RefCnt | integer*4 | 1 | # of points in reference track |
| sRefs | integer*4 | 1 | starting location in pnt of reference track |
| NEv | integer*4 | 1 | # of sorted tracks |
| EvSeq | integer*4 | { MAX_TRACKS | NEv } | original sequence#s |
| EvCnt | integer*4 | { MAX_TRACKS | NEv } | #of points in track |
| sEvs | integer*4 | { MAX_TRACKS | NEv } | starting index in pnt and pntEv of track |
| Npnt | integer*4 | 1 | #of points |
| pntEv | integer*4 | { MAX_NPOINTS | Npnt } | Event# of point |
| pnt | real*4 | [x:y:z:Px:...:Bz]* | info about point |
| LongestList | integer*4 | 1 | length of longest track |
| EvSortedComplete | logical*4 | 1 | whether sorting is current |
| Type_of_Interest | integer*4 | 1 | PDG id# for type of particle of interest |
| Antiparticle | logical*4 | 1 | whether to keep or ignore antiparticle |
| ParticleCharge | integer*4 | 1 | charge state of particle of interest [|e|] |
| RestMassMeV | real*4 | 1 | rest mass of particle [MeV/c2] |
| RFclockFrequencyMHz | real*4 | 1 | basic clock frequency [MHz] (relates degress RF to time) |
| message | character*(MAXLINE_LENGTH) | MAXLINE_LENGTH/4 | comment string |
| Lmessage | integer*4 | 1 | relevant length of comment string, if any |
If no additional cuts are placed on the data, the current sorting of points into tracks is preserved; otherwise the points are resorted.
To create a smaller, slower binary retrack file, use
g4beamline's virtual detector output eventually became formalized and renamed the BLTrackFile format. By default (format=BLTrackFile), g4beamline creates an individual file for each virtual detector. This format is:
#comments x(mm) y(mm) z(mm) Px(MeV/c) Py(MeV/c) Pz(MeV/c) t(nS) PDGid EvN TrkID Parent wtThere should be no leading whitespace. For example:
#BLTrackFile VirtualDetector/a3 #x y z Px Py Pz t PDGid Ev# TrkId Parent wt #mm mm mm MeV/c MeV/c MeV/c ns - - - - - 0.00 0.00 1400.31 0.000 0.000 200.000 5.283 -13 -1 1 0 1.0000 -24.00 -11.09 1400.31 -12.552 -7.870 199.450 5.292 13 0 1 0 1.0000 18.30 -17.35 1400.31 11.418 -8.350 199.499 5.292 13 1 1 0 1.0000 2.18 1.79 1400.31 1.090 1.164 199.993 5.283 13 2 1 0 1.0000 -6.77 36.64 1400.31 -6.278 19.719 198.926 5.302 13 3 1 0 1.0000 -1.67 1.05 1400.31 -1.015 0.468 199.997 5.283 13 4 1 0 1.0000 -12.21 -9.36 1400.31 -6.150 -6.115 199.812 5.286 13 5 1 0 1.0000 ...Note that older versions of g4beamline used units of cm rather than mm for the virtual detectors!
Later versions of g4beamline also allow an ASCII "ntuple" format that has up to 64 points per line:
#comments x y z Pz Py Px t PDGid EvN TrkID Parent wt x y z Pz Py Px t PDGid EvN TrkID Parent wt x y z Pz Py Px t PDGid EvN TrkID Parent wt ...
# PF/AAbs #PF/0ASrc_x PF/0ASrc_y PF/0ASrc_z PF/0ASrc_Px PF/0ASrc_Py PF/0ASrc_Pz PF/0ASrc_t PF/0ASrc_PDGid PF/0ASrc_EventID PF/0ASrc_TrackID PF/0ASrc_ParentID PF/0ASrc_Weight PF/1AAbs_x PF/1AAbs_y PF/1AAbs_z PF/1AAbs_Px PF/1AAbs_Py PF/1AAbs_Pz PF/1AAbs_t PF/1AAbs_PDGid PF/1AAbs_EventID PF/1AAbs_TrackID PF/1AAbs_ParentID PF/1AAbs_Weight PF/2AAbs_x PF/2AAbs_y PF/2AAbs_z PF/2AAbs_Px PF/2AAbs_Py PF/2AAbs_Pz PF/2AAbs_t PF/2AAbs_PDGid PF/2AAbs_EventID PF/2AAbs_TrackID PF/2AAbs_ParentID PF/2AAbs_Weight PF/3AAbs_x PF/3AAbs_y PF/3AAbs_z PF/3AAbs_Px PF/3AAbs_Py PF/3AAbs_Pz PF/3AAbs_t PF/3AAbs_PDGid PF/3AAbs_EventID PF/3AAbs_TrackID PF/3AAbs_ParentID PF/3AAbs_Weight PF/4AAbs_x PF/4AAbs_y PF/4AAbs_z PF/4AAbs_Px PF/4AAbs_Py PF/4AAbs_Pz PF/4AAbs_t PF/4AAbs_PDGid PF/4AAbs_EventID PF/4AAbs_TrackID PF/4AAbs_ParentID PF/4AAbs_Weight 0 0 0.001 0 0 100 4.85261e-06 -13 -1 1 0 1 0.00956636 6.8641e-19 2000 0.00270671 2.40692e-19 100 9.70472 -13 -1 1 0 1 0.0172914 -3.60039e-18 4000 0.0107318 -5.75739e-19 100 19.4093 -13 -1 1 0 1 0.0900991 8.25068e-18 6000 -0.00357477 1.1182e-18 100 29.1142 -13 -1 1 0 1 0.0490643 -9.96806e-18 8000 -0.0028287 -1.48629e-18 100 38.8195 -13 -1 1 0 1 ...
For compatibility with tools using the ICOOL format, g4beamline's
FOR009 format
puts all the virtual detectors into a single file.
The ICOOL "for009.dat" format
When written by g4beamline, it is important to note that numbers with all 0's to the right of the decimal drop both; for example, "1.00000" -> "1" and "5.0000e-6" -> "5e-6". This often confuses FORTRAN READ statements.
comments EvN par typ flg region time(s) x(m) y(m) z(m) Px(GeV/c) Py(GeV/c) Pz(GeV/c) Bx(T) By(T) Bz(T) wt Ex(MV/m) Ey(MV/m) Ez(MV/m) arclength(m) polX polY polZfor example:
I000 (line for units) (line for column names) 1 1 -2 0 1 1.77739e-13 -1.14175e-05 -3.85508e-05 5e-05 -5.1432e-05 -0.000103211 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 2 1 -2 0 1 1.77739e-13 3.0919e-06 -2.25676e-06 5e-05 -0.000120548 -0.000184414 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 3 1 -2 0 1 1.77739e-13 3.85463e-05 3.27091e-05 5e-05 -0.000149886 -1.40482e-05 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 4 1 -2 0 1 1.77739e-13 4.47164e-07 3.1863e-06 5e-05 7.31201e-05 -0.00018611 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 5 1 -2 0 1 1.77739e-13 -1.6593e-05 1.2877e-05 5e-05 1.15256e-05 0.000136742 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 6 1 -2 0 1 1.77739e-13 -1.93126e-05 9.26796e-06 5e-05 -0.000126978 -5.85062e-05 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 7 1 -2 0 1 1.77739e-13 -1.07991e-05 1.56524e-05 5e-05 4.84315e-05 -2.19689e-05 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 8 1 -2 0 1 1.77739e-13 2.2254e-06 -8.95061e-06 5e-05 -4.82126e-05 0.000321797 0.286816 0 0 0 1.0000 0 0 0 0 0 0 0 ...
Each line ends with a <CR><LF>; it is ignored by retrack, but may confuse other UNIX programs. Note that the particle IDs are not the same; retrack automatically converts the following:
| description | PDG | ICOOL |
| e+ | -11 | 1 |
| e- | 11 | -1 |
| u+ | -13 | 2 |
| u- | 13 | -2 |
| TT - | -211 | -3 |
| TT + | 211 | 3 |
| K- | -321 | -4 |
| K+ | 321 | 4 |
| p- | -2212 | -5 |
| p+ | 2212 | 5 |
Also, note that the 0th track is the by default the reference track in ICOOL's format, so the real 0th track from g4beamline is replaced by the reference track only in the for009.dat format, not in the default virtual detector format.
g4beamline 0.95b could also log every step of every particle to stdout via
...
=========== Event # Track # Parent 0 part.desc =========
...
step# x{mm} y{mm} z{mm} t{nS} KE{MeV} StepLength{mm} ThisVol{name} Process{name}
CLcoord=x,y,z{mm,mm,mm} dxdz=dx/dz{-} dydz=dydz{-}
B=Bx,By,Bz Tesla E=Ex,Ey,Ez MV/m
...
for example:
...
=================== Event 0 ==================
=========== Event 0 Track 1 Parent 0 mu- =========
asciifile I000 (for009.dat) event #0 omitted
step x y z t KE(MeV) StepLen ThisVol Process
1 -0.02 0.03 0.05 0.00 200.0 0.050 BeamVis Transportation
CLcoord=-0.0,0.0,0.1 dxdz=-0.0003 dydz= 0.0002
B=0.0000,0.0000,0.0000 Tesla E=0.0000,0.000,0.000 MV/m
2 -0.02 0.03 0.05 0.00 200.0 0.003 I000 Transportation
CLcoord=-0.0,0.0,0.1 dxdz=-0.0003 dydz= 0.0002
B=0.0000,0.0000,0.0000 Tesla E=0.0000,0.000,0.000 MV/m
3 -0.02 0.03 1.05 0.00 200.0 1.000 oD0 UserLimit
CLcoord=-0.0,0.0,1.1 dxdz=-0.0003 dydz= 0.0002
B=0.0000,0.0000,0.0000 Tesla E=0.0000,0.000,0.000 MV/m
...
g4beamline 1.0 introduced a new format for logging
every step of every particle to AllTracks.txt via
Note that numbers with all 0's to the right of the decimal drop both; for example, "1.00000" -> "1" and "5.0000e-6" -> "5e-6". This often confuses FORTRAN READ statements.
# comments... #x y z Px Py Pz t PDGid EventID TrackID ParentID Weight Bx By Bz Ex Ey Ez # Event eventID# Track track# x y z Px Py Pz t PDGid TrackID 0 1 Bx By Bz Ex Ey Ez mm mm mm MeV/c MeV/c MeV/c nS - - - - T T T MV/m MV/m MV/m ...for example:
... # AllTracks #x y z Px Py Pz t PDGid EventID TrackID ParentID Weight Bx By Bz Ex Ey Ez # Event -2 Track 1 0.10012 0.005 0.05 0.047012 19.901 199.01 0.00018957 -13 -2 1 0 1 -2.2303e-10 -3.1363 -1.1138e-10 0 0 0 0.10269 0.1045 1.045 0.98257 19.901 199.01 0.0039621 -13 -2 1 0 1 -4.7819e-09 -3.1363 -4.8663e-08 0 0 0 0.10994 0.20401 2.04 1.9181 19.901 199 0.0077346 -13 -2 1 0 1 -9.9943e-09 -3.1363 -1.8545e-07 0 0 0 0.12187 0.30351 3.035 2.8536 19.901 198.99 0.011507 -13 -2 1 0 1 -1.6482e-08 -3.1363 -4.1046e-07 0 0 0 0.13848 0.40301 4.0299 3.7891 19.901 198.97 0.01528 -13 -2 1 0 1 -2.4868e-08 -3.1363 -7.2369e-07 0 0 0 0.15976 0.50252 5.0247 4.7244 19.901 198.95 0.019052 -13 -2 1 0 1 -3.5774e-08 -3.1363 -1.1251e-06 0 0 0 0.18572 0.60202 6.0194 5.6597 19.901 198.93 0.022825 -13 -2 1 0 1 -4.9821e-08 -3.1363 -1.6147e-06 0 0 0 0.21636 0.70153 7.014 6.5948 19.901 198.9 0.026597 -13 -2 1 0 1 -6.7633e-08 -3.1363 -2.1925e-06 0 0 0 ...
The OptiM ray tracing program also can produce particle
distributions at the end of an element, usually a single file
per element
OptiM Track Data X(cm) dX/dS Y(cm) dY/dS Z(cm) dP/Pfor example:
OptiM Track Data -0.2533000 0.00000E+00 0.0000000 0.00000E+00 0.0000000 0.00000E+00 -0.1203000 0.00000E+00 0.0000000 0.00000E+00 0.0000000 0.00000E+00 0.0328000 0.00000E+00 0.0000000 0.00000E+00 0.0000000 0.00000E+00 0.4068000 0.00000E+00 0.0000000 0.00000E+00 0.0000000 0.00000E+00 0.0046000 0.00000E+00 0.0000000 0.00000E+00 0.0000000 0.00000E+00 ...The latter has <TAB> characters after each field and ends the line with a <CR><LF>.
At some point before OptiM 5.0.2, two additional columns were added, but are not described in its documentation. The first is a particle ID number, the next seems to be a flag that is usually just 1:
OptiM Track Data X(cm) dX/dS Y(cm) dY/dS Z(cm) dP/P ID flagfor example:
OptiM Track Data 0.12715 -0.254626 0.031225 -0.0416097 2.46725 -0.00354717 0 1 -0.194437 0.202677 0.163981 -0.200534 -1.46564 0.0100525 1 1 0.179251 -0.0939987 -0.0909152 0.236093 -2.58775 0.00607349 2 1 -0.0650139 0.0371241 0.393113 -0.142077 -6.26349 0.0170479 3 1 -0.235948 0.111924 0.0293234 -0.0218412 4.03089 0.00835963 4 1 ...
Another program, dist4optim converts a g4beamline virtual detector asciifile into the OptiM input distribution format.
The TJNAF parmela has been modified and only is useful for electrons and positrons,
so retrack needs to be told that the particles have that mass.
Refer to the CEBAF and FEL parmela documentation for
more detail on its KBB
Beginning with CEBAF parmela-V93.1.kb0.3i2h, the time of each particle in nS was added onto the end; retrack always added time.
#comments - w/o time nthCall(-) Zelement(cm) count(-) x(cm) xp(beta-gamma) y(cm) yp(beta-gamma) z(cm) zp(beta-gamma) PID(-) origID(-)or
#comments - w/ time nthCall(-) Zelement(cm) count(-) x(cm) xp(beta-gamma) y(cm) yp(beta-gamma) z(cm) zp(beta-gamma) PID(-) origID(-) t(nS)
In addition, some programs include mean, RMS, and emittance information as comments:
#mean,RMS: #nthCall[1] Zelement[2] element[3] xAVG[4] xpAVG[5] yAVG[6] ypAVG[7] zAVG[8] zpAVG[9] xRMS[10] xpRMS[11] yRMS[12] ypRMS[13] zRMS[14] zpRMS[15] N[16] KEmeanKeV[17] KErmsKeV[18] tAVG[19] tRMS[20] #mean,RMS: #- - - cm betagamma cm betagamma cm betagamma cm betagamma cm betagamma cm betagamma - KeV KeV pi-mm-mrad-norm pi-mm-mrad-norm KeV-deg nS #mean,RMS: nthCall Zelement element xAVG xpAVG yAVG ypAVG zAVG zpAVG xRMS xpRMS yRMS ypRMS zRMS zpRMS N KEmeanKeV KErmsKeV tAVG tRMS ... #emittance: #zAVG[1] nthCall[2] emitX[3] emitY[4] emitZ[5] emitXnorm[6] emitYnorm[7] beta-[8] betagamma[9] #emittance: #cm - pi-mm-mrad pi-mm-mrad pi-KeV-deg pi-mm-mrad(n) pi-mm-mrad(n) - - #emittance: zAVG nthCall emitX emitY emitZ emitXnorm emitYnorm beta betagamma ...
This information can be easily extracted by using standard UNIX tools:
$> cat kbb.file | grep what-to-seek | sed 's/what-to-remove//' > rms.file $> cat su1.X.kbb | grep mean,RMS | sed 's/#mean,RMS://' > su1.X.rmsFor example:
# ../../../EXE.Linux/parmela -i g1.in -o su1.X. -L 1.0 -v
# parmela-V93.1.kb0.3i2h 8/12/08, K.B.Beard, Muons,Inc.
#mean,RMS: #nthCall[1] Zelement[2] element[3] xAVG[4] xpAVG[5] yAVG[6] ypAVG[7] zAVG[8] zpAVG[9] xRMS[10] xpRMS[11] yRMS[12] ypRMS[13] zRMS[14] zpRMS[15] N[16] KEmeanKeV[17] KErmsKeV[18] tAVG[19] tRMS[20]
#mean,RMS: #- - - cm betagamma cm betagamma cm betagamma cm betagamma cm betagamma cm betagamma - KeV KeV pi-mm-mrad-norm pi-mm-mrad-norm KeV-deg nS nS
#emittance: #zAVG[1] nthCall[2] emitX[3] emitY[4] emitZ[5] emitXnorm[6] emitYnorm[7] beta-[8] betagamma[9]
#emittance: #cm - pi-mm-mrad pi-mm-mrad pi-KeV-deg pi-mm-mrad(n) pi-mm-mrad(n) - -
#mean,RMS: 1 0.000000E+00 0 0.413372E-03 0.584027E-05 -0.220372E-02 -0.607333E-04 0.542532E-02 0.114310E-01 0.175644E-01 0.694220E-03 0.182225E-01 0.662260E-03 0.111651E-01 0.150464E-01 100 0.914257E-01 0.180495E+00 0.779336E-01 0.000000E+00
#emittance: 0.542532E-02 1 0.102212E+03 0.983975E+02 0.330869E+02 0.103035E+00 0.103896E+00 0.117041E-02 0.117041E-02
#nthCall[1] Zelement[2] count[3] x[4] xp[5] y[6] yp[7] z[8] zp[9] PID[10] origID[11] t[12]
1 0.000000E+00 1 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.117041E-02 0.100000E+01 1 0.779336E-01
1 0.000000E+00 2 0.137570E-03 -0.493422E-03 -0.220734E-01 0.273888E-03 0.140606E-01 0.299076E-01 0.100000E+01 2 0.779336E-01
...
1 0.000000E+00 99 0.290304E-01 -0.814983E-03 -0.105761E-01 -0.394997E-03 -0.302075E-03 0.539066E-03 0.000000E+00 99 0.779336E-01
1 0.000000E+00 100 0.324907E-02 0.260109E-03 0.504588E-02 -0.650213E-03 -0.122269E-03 0.186007E-03 0.000000E+00 100 0.779336E-01
#
#mean,RMS: 3 0.117475E+02 1 0.460220E-03 -0.846710E-05 -0.250494E-02 -0.614620E-05 0.209194E+01 0.409390E+00 0.190697E-01 0.742411E-03 0.181189E-01 0.679517E-03 0.297116E+00 0.308366E-01 100 0.413568E+02 0.594769E+01 0.449046E+00 0.000000E+00
#emittance: 0.209194E+01 3 0.319396E+00 0.289848E+00 0.473469E+01 0.130476E+00 0.120008E+00 0.378875E+00 0.409396E+00
3 0.117475E+02 1 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.207499E+01 0.409396E+00 0.100000E+01 1 0.449046E+00
3 0.117475E+02 2 -0.447063E-02 -0.414043E-03 -0.177556E-01 0.336363E-03 0.242353E+01 0.443469E+00 0.100000E+01 2 0.449046E+00
3 0.117475E+02 3 -0.241825E-02 -0.292676E-03 -0.144834E-01 -0.806898E-03 0.207158E+01 0.408988E+00 0.100000E+01 3 0.44...
13 0.287172E+02 99 0.615099E-02 -0.233087E-03 -0.533448E-01 -0.105278E-02 0.285385E+02 0.655226E+00 0.200000E+01 99 0.211905E+01
13 0.287172E+02 100 0.216044E-01 0.425016E-03 -0.395655E-01 -0.949162E-03 0.284851E+02 0.655321E+00 0.200000E+01 100 0.211905E+01
#
The ANL Self Describing Data Sets (SDDS) format is used extensively by EPICS, elegant, and many other codes. It has both binary and ASCII forms; all SDDS-compliant programs support both. Comments begin with a "!" and are ignored and blank lines are significant. Note that subsequent sdds routines may treat the fixed_value parameters as non-fixed_value, duplicating them for each page.
An example of using retrack to convert an AllTrace file into a SDDS file:
SDDS1 ! ! retrack -i ac3.att -oS ac3c.sdds +v ! 15:53:43 Jan 8, 2008 ! retrack 1.15k37a4, 8jan2008, libretrack 1.15o 8jan2008, K.B.Beard ! &description text= "retrack -i ac3.att -oS ac3.sdds +v" contents= "bunches" &end ! ! works with "sdds_beam" command ! ¶meter name=PDGtype type=long fixed_value=-13 &end ¶meter name=mass type=float fixed_value=105.658386 units="MeV" &end ¶meter name=charge type=long fixed_value=1 units="|e|" &end ¶meter name=RFfrequency type=float fixed_value=1497.000000 units="MHz" &end ¶meter name=bunchID type=long &end ! &column name=x, type=float, description="lab x", symbol="x",units=m &end &column name=xp, type=float, description="x prime", symbol="x'", &end &column name=y, type=float, description="lab y", symbol="y",units="m" &end &column name=yp, type=float, description="y prime", symbol="y'", &end &column name=z, type=float, description="lab z", symbol="z",units="m" &end &column name=t, type=float, description="time", symbol="t",units="s" &end &column name=s, type=float, description="path length", symbol="s",units="m" &end &column name=p, type=float, description="dimensionless momentum", symbol="P/m",units="m$be$nc" &end &column name=Px, type=float, description="X momentum", symbol="Px",units="MeV/c" &end &column name=Py, type=float, description="Y momentum", symbol="Py",units="MeV/c" &end &column name=Pz, type=float, description="Z momentum", symbol="Pz",units="MeV/c" &end &column name=KE, type=float, description="kinetic energy", symbol="KE",units="MeV" &end &column name=id, type=long, description="eventID", symbol="Ev#" &end ! &data mode="ascii", lines_per_row=1, no_row_counts=0 additional_header_lines=0 &end ! ! -- arrays, tables, and non-fixed parameters repeated in every page -- ! ...parameter data... !bunchID# ! ...column data... !# lines within each bunch (blank lines not used) !x[m] x'[-] y[m] y'[-] z[m] t[s] P/m[-] s[m] Px[MeV/c] Py[MeV/c] Pz[MeV/c] KE[MeV] ID 1 !bunchID# 12 !#points within bunch to follow -0.156710E-01 -0.157080E+01 -0.100000E+02 -0.157080E+01 0.612300E-15 0.377250E+07 0.189271E+01 0.000000E+00 -0.626760E+00 -0.199980E+03 0.122450E-13 0.000000E+00 -2 -0.156710E-01 -0.157080E+01 -0.100000E+02 -0.157080E+01 0.612300E-15 0.377250E+07 0.189271E+01 0.000000E+00 -0.626760E+00 -0.199980E+03 0.122450E-13 0.000000E+00 -1 -0.126660E+03 -0.157082E+01 -0.100000E+02 -0.157080E+01 0.118250E+03 0.378220E+07 0.187076E+01 0.000000E+00 -0.626750E+00 -0.197660E+03 -0.133350E-04 -0.116010E-01 0 -0.601740E+02 -0.157078E+01 -0.100000E+02 -0.157080E+01 -0.154120E+03 0.377490E+07 0.188713E+01 0.000000E+00 -0.626730E+00 -0.199390E+03 0.825560E-05 -0.295019E-02 1 0.163990E+02 -0.157080E+01 -0.100000E+02 -0.157080E+01 -0.889800E+01 0.378400E+07 0.186687E+01 0.000000E+00 -0.626760E+00 -0.197250E+03 -0.130100E-06 -0.136512E-01 2 0.203380E+03 -0.157076E+01 -0.100000E+02 -0.157080E+01 0.130840E+03 0.377550E+07 0.188580E+01 0.000000E+00 -0.626760E+00 -0.199250E+03 0.236980E-04 -0.365025E-02 3 0.227490E+01 -0.157080E+01 -0.100000E+02 -0.157080E+01 0.128740E+02 0.377870E+07 0.187871E+01 0.000000E+00 -0.626760E+00 -0.198500E+03 0.263220E-07 -0.740061E-02 4 -0.875220E+02 -0.157080E+01 -0.100000E+02 -0.157080E+01 0.514100E+02 0.377510E+07 0.188666E+01 0.000000E+00 -0.626760E+00 -0.199340E+03 -0.400580E-05 -0.320023E-02 5 -0.101740E+03 -0.157080E+01 -0.100000E+02 -0.157080E+01 0.371110E+02 0.377370E+07 0.189006E+01 0.000000E+00 -0.626770E+00 -0.199700E+03 -0.336130E-05 -0.140013E-02 6 -0.570040E+02 -0.157080E+01 -0.100000E+02 -0.157080E+01 0.626220E+02 0.375680E+07 0.192991E+01 0.000000E+00 -0.626760E+00 -0.203910E+03 -0.317760E-05 0.196518E-01 7 0.117630E+02 -0.157080E+01 -0.100000E+02 -0.157080E+01 -0.360250E+02 0.376990E+07 0.189868E+01 0.000000E+00 -0.626760E+00 -0.200610E+03 -0.378030E-06 0.315032E-02 8 0.532510E+02 -0.157080E+01 -0.100000E+02 -0.157080E+01 -0.389170E+02 0.375790E+07 0.192726E+01 0.000000E+00 -0.626760E+00 -0.203630E+03 -0.184620E-05 0.182517E-01 9 2 !bunchID# 12 !#points within bunch to follow -0.626830E-01 -0.157080E+01 -0.200000E+02 -0.157080E+01 0.122460E-14 0.754510E+07 0.189255E+01 0.100001E+02 -0.125350E+01 -0.199960E+03 0.122440E-13 0.000000E+00 -2 -0.626830E-01 -0.157080E+01 -0.200000E+02 -0.157080E+01 0.122460E-14 0.754510E+07 0.189255E+01 0.100001E+02 -0.125350E+01 -0.199960E+03 0.122440E-13 0.000000E+00 -1 -0.126710E+03 -0.157082E+01 -0.200000E+02 -0.157080E+01 0.118250E+03 0.756450E+07 0.187059E+01 0.100001E+02 -0.125340E+01 -0.197640E+03 -0.266660E-04 -0.116019E-01 0 -0.602210E+02 -0.157078E+01 -0.200000E+02 -0.157080E+01 -0.154120E+03 0.754990E+07 0.188697E+01 0.100001E+02 -0.125340E+01 -0.199370E+03 0.165060E-04 -0.295051E-02 1 0.163510E+02 -0.157080E+01 -0.200000E+02 -0.157080E+01 -0.889800E+01 0.756800E+07 0.186671E+01 0.100001E+02 -0.125350E+01 -0.197230E+03 -0.260440E-06 -0.136522E-01 2 0.203330E+03 -0.157076E+01 -0.200000E+02 -0.157080E+01 0.130840E+03 0.755110E+07 0.188564E+01 0.100001E+02 -0.125340E+01 -0.199230E+03 0.473980E-04 -0.365064E-02 3 0.222760E+01 -0.157080E+01 -0.200000E+02 -0.157080E+01 0.128740E+02 0.755740E+07 0.187854E+01 0.100001E+02 -0.125350E+01 -0.198480E+03 0.530030E-07 -0.740124E-02 4 -0.875700E+02 -0.157080E+01 -0.200000E+02 -0.157080E+01 0.514100E+02 0.755040E+07 0.188649E+01 0.100001E+02 -0.125350E+01 -0.199320E+03 -0.800970E-05 -0.320050E-02 5 -0.101780E+03 -0.157080E+01 -0.200000E+02 -0.157080E+01 0.371110E+02 0.754740E+07 0.188981E+01 0.100001E+02 -0.125350E+01 -0.199670E+03 -0.672120E-05 -0.145023E-02 6 -0.570500E+02 -0.157080E+01 -0.200000E+02 -0.157080E+01 0.626220E+02 0.751360E+07 0.192975E+01 0.100001E+02 -0.125350E+01 -0.203890E+03 -0.635320E-05 0.196532E-01 7 0.117160E+02 -0.157080E+01 -0.200000E+02 -0.157080E+01 -0.360250E+02 0.753990E+07 0.189851E+01 0.100001E+02 -0.125340E+01 -0.200590E+03 -0.757030E-06 0.315052E-02 8 0.532050E+02 -0.157080E+01 -0.200000E+02 -0.157080E+01 -0.389170E+02 0.751580E+07 0.192710E+01 0.100001E+02 -0.125350E+01 -0.203610E+03 -0.369320E-05 0.182530E-01 9 3 !bunchID# 12 !#points within bunch to follow -0.141040E+00 -0.157080E+01 -0.300000E+02 -0.157080E+01 0.183690E-14 0.113180E+08 0.189241E+01 0.200004E+02 -0.188010E+01 -0.199940E+03 0.122430E-13 0.000000E+00 -2 -0.141040E+00 -0.157080E+01 -0.300000E+02 -0.157080E+01 0.183690E-14 0.113180E+08 0.189241E+01 0.200004E+02 -0.188010E+01 -0.199940E+03 0.122430E-13 0.000000E+00 -1 ... ... ... -0.226430E+04 0.158035E+01 0.266820E+03 -0.157608E+01 -0.130270E+03 0.226120E+11 0.630867E+00 0.530804E+05 0.322400E+02 -0.583400E+02 -0.308120E+00 0.405102E+00 9 5310 !bunchID# 5 !#points within bunch to follow -0.262980E+04 -0.157080E+01 -0.949880E+03 -0.157080E+01 -0.398430E-13 0.232620E+11 0.447615E+00 0.530904E+05 -0.414180E+02 -0.228320E+02 -0.186240E-14 0.000000E+00 -2 -0.262980E+04 -0.157080E+01 -0.949880E+03 -0.157080E+01 -0.398430E-13 0.232620E+11 0.447615E+00 0.530904E+05 -0.414180E+02 -0.228320E+02 -0.186240E-14 0.000000E+00 -1 -0.241430E+04 0.155726E+01 0.330510E+03 -0.156189E+01 0.208290E+03 0.225800E+11 0.640378E+00 0.530904E+05 0.371820E+02 -0.565270E+02 0.503230E+00 0.430645E+00 7 -0.241830E+04 -0.157631E+01 -0.806040E+03 -0.157582E+01 -0.120630E+03 0.231220E+11 0.490406E+00 0.530904E+05 -0.348790E+02 -0.383180E+02 -0.192470E+00 0.955982E-01 8 -0.225950E+04 0.158051E+01 0.258040E+03 -0.157605E+01 -0.130310E+03 0.226180E+11 0.630200E+00 0.530904E+05 0.316540E+02 -0.585800E+02 -0.307590E+00 0.407906E+00 9 5311 !bunchID# 5 !#points within bunch to follow -0.263860E+04 -0.157080E+01 -0.954650E+03 -0.157080E+01 -0.402380E-13 0.232700E+11 0.446234E+00 0.531004E+05 -0.415900E+02 -0.222090E+02 -0.186270E-14 0.000000E+00 -2 -0.263860E+04 -0.157080E+01 -0.954650E+03 -0.157080E+01 -0.402380E-13 0.232700E+11 0.446234E+00 0.531004E+05 -0.415900E+02 -0.222090E+02 -0.186270E-14 0.000000E+00 -1 -0.240890E+04 0.155708E+01 0.322130E+03 -0.156195E+01 0.208360E+03 0.225860E+11 0.639734E+00 0.531004E+05 0.366180E+02 -0.568130E+02 0.502390E+00 0.433629E+00 7 -0.242500E+04 -0.157624E+01 -0.813390E+03 -0.157587E+01 -0.120670E+03 0.231290E+11 0.489279E+00 0.531003E+05 -0.352610E+02 -0.378040E+02 -0.191900E+00 0.964623E-01 8 -0.225480E+04 0.158068E+01 0.249220E+03 -0.157602E+01 -0.130360E+03 0.226250E+11 0.629536E+00 0.531004E+05 0.310670E+02 -0.588140E+02 -0.307050E+00 0.410775E+00 9 !:: ...End-of-Data...
The new LANL Windows-based Parmela is quite different from the TJNAF version;
to read its TAPE2.T2 output with retrack use
numbuf= #points, ne= element#, z= cmref. particle phase= total(mod360)
x xp y yp phi w particle #
x xp y yp phi_from_ref kinetic_energy id#
...
numbuf= #points, ne= element#, z= cmref. particle phase= total(mod360)
x xp y yp phi w particle #
x xp y yp phi_from_ref kinetic_energy id#
...
for example
numbuf= 100, ne= 1, z= 0.0ref. particle phase= 11.0( 11.000)
x xp y yp phi w particle #
-0.44924405 0.0000000 0.14724126 0.0000000 -10.546074 9.99999975E-06 99
-0.16111726 0.0000000 -0.42251536 0.0000000 -9.8046570 9.99999975E-06 97
0.37191567 0.0000000 0.12872168 0.0000000 -9.2126656 9.99999975E-06 95
...
-0.21687898 -0.51004376 -0.23605771 -0.49841462 4.3957520 5.0799885 98
0.19405319 0.39930464 0.11083025 0.26424121 4.6701660 5.0890136 100
numbuf= 100, ne= 17, z= 194.4ref. particle phase= 1933.4( 133.409)
x xp y yp phi w particle #
-0.16258024 -0.50045562 0.10629734 -2.79642245E-02 -2.3149414 4.9350829 89
-0.12218682 -0.19695873 5.13323769E-02 1.11868849E-02 -2.2772217 4.9333053 91
retrack uses the specified RF frequency
The new LANL Windows-based Parmela is quite different from the TJNAF version;
to read its TAPE3.T3 output from retrack
use
title
version and date info
species info
Coordinate dump at phase degreesRF
Number of particles: Nfollow
x[cm] bgx y[cm] bgy z[cm] bgz species charge
x bgx y bgy z bgz species charge
...
Coordinate dump at phase degreesRF
Number of particles: Nfollow
x[cm] bgx y[cm] bgy z[cm] bgz species charge
x bgx y bgy z bgz species charge
...
for example
JLab Gun with accelerator
parmela program V3.39 16:09:23.921 04/26/2005
Mass(MeV) of species 1, 2, and 3 0.511 0.511 0.511
Coordinate dump at phase 20.00
Number of particles: 1158
x[cm] bgx y[cm] bgy z[cm] bgz species charge
0.2626763E-05 0.1445881E-04 -0.5899273E-05 -0.3744465E-04 0.3276968E-01 0.8142123E-01 1 1
0.1373122E+00 0.0000000E+00 0.3622612E+00 0.0000000E+00 -0.1392709E-03 0.6256150E-02 1 1
0.6458040E-01 -0.3463096E-03 0.5462840E+00 -0.2961663E-02 0.3374371E-01 0.8344242E-01 1 1
-0.2338992E+00 0.2366821E-02 -0.2105692E+00 0.2099837E-02 0.1363032E+00 0.1727278E+00 1 1
...
0.3085334E+00 0.3137012E-02 0.4961343E+00 0.4082446E-02 0.2862915E+03 0.3554023E+01 1 1
Coordinate dump at phase 2841.60
Number of particles: 1049
x[cm] bgx y[cm] bgy z[cm] bgz species charge
-0.3523275E+00 -0.2680492E-02 -0.2897231E+00 -0.2202694E-02 0.2874958E+03 0.3230447E+01 1 1
0.7740052E+00 -0.3101773E-02 0.1404879E+00 -0.5656960E-03 0.2846575E+03 0.2457095E+01 1 1
...
The RF phase is used with the frequency