Tracking/off-line sort with trackMain/GEBSort

From GRETINA at ANL
Revision as of 18:40, June 17, 2013 by Tlauritsen (talk | contribs)
Jump to navigation Jump to search

intro

TBD

How to get the software

To get the tracking software (trackMain) and ROOT sorter (GEBSort_nogeb) you can

mkdir whereYouWantToWork
cd    whereYouWantToWork
svn checkout https://svn.anl.gov/repos/gs_analysis/GEBSort .
make offline

or alternatively from the ANL GRETINA website

mkdir whereYouWantToWork
cd    whereYouWantToWork
wget http://www.phy.anl.gov/gretina/GEBSort/AAAtar.tgz
tar -zxvf AAAtar.tgz
make offline

This will make the GEBSort_nogeb program, which is the GEBSort ROOTsorter without the software to connet to the GEB tap (hence, make offline). This version of the code can read mode 1 or mode 2 data and does not need a VxWorks license to be installed. The trackMain code will also be generated, the software to add tracked data to the mode 2 data steam (then also know as mode 1 data).

example of tracking and sorting

Here is a simple example of how to track some data from gretina and sort it using the GEBSort_nogebn program to make spectra.

First the tracking part:

 ./GEBSort_nogeb \
   -input disk GTDATA/mode2.gtd RECREATE \
   -chat GEBSort.chat \
   -rootfile GTDATA/test.root > GTDATA/GEBSort.log
 rm GTDATA
 ln -s /home/tl/d6/GEBSort/GEBSort_testdata GTDATA
 ./trackMain track.chat  GTDATA/mode2.gtd  GTDATA/mode1.gtd  > GTDATA/trackMain.log

Here we ask the tracker to read the GTDATA/mode2.gtd data, add tracking information to the data stream and write the output to GTDATA/mode1.gtd. The parameters for the tracking are in the track.chat file. You should set the link GTDATA to where your data is

With the mode 1 data now created, you can now use the offline version of GEBSort_nogeb to sort the data for display in ROOT as

 ./GEBSort_nogeb \
 -input disk GTDATA/mode1.gtd RECREATE \
 -chat GEBSort.chat \
 -rootfile GTDATA/test.root > GTDATA/GEBSort.log

The parameters used to sort the data are specified in the GEBSort.chat file, which came from the svn repository. To display the sorted spectra do this

  root -l

A bar should pop up. Now compile GSUtil by clicking on the upper most button, then read in the root file that GEBSort_nogeb made by pushing the second button. The data is now ready to be displayed by pushing the buttons listed under mode2 or mode 1 (or by hand if you like)

Notice that you could equally well use GEBSort_nogeb to sort just the mode2 data, like

 ./GEBSort_nogeb \
   -input disk GTDATA/mode2.gtd RECREATE \
   -chat GEBSort.chat \
   -rootfile GTDATA/test.root > GTDATA/GEBSort.log

Of cource, there would be no mode 1 data to be displayed from the root file, but it will sort the mode 2 data.

The tracking parameters [track.chat]

below is an example of a 'track.chat' file downloaded from the svn repository. Details may change... Notice that both a '#' and a';' disables an instruction. Things are explained by comments in the chat file. Some datails may be explained below

  #echo
  
  #------------------------------------
  # chatscript to process hits in the GRETA
  # germanium shell. Self documenting.
  #------------------------------------
  
  # maximum number of events to cluster and track
  # debug parameter really...
  
  maxevents 2000000000
  
  #################################################
  # coincidence window
  #################################################
  
  dtwin  300
  
  #################################################
  # modify the  decomposition
  # energies in the tracking 
  #################################################
  
  # use the CC FPGA energies or segment FPGA energies
  
  useCCEnergy
  ;useSegEnergy
  
  ##################
  # clustering angle
  ##################
  
  #clustering angle (degrees) [aka 'alpha']
  #not necessarily defined as in NIM paper!!
  
  ;clusterangle 21
  clusterangle 22
  
  #################################################
  # enabled detectors
  
  enabled "1-130"
  
  ##############################################
  # FOM we assign to single hits 
  # so they can be on an equal playing
  # field with multihits that have a finite FOM
  ##############################################
  
  singlesfom 0.0
  
  #----------------------------------------
  # ndet and associated energy range limits
  #----------------------------------------
  
  # for each number of sector hits (==ndet)
  # we expect a certain energy range. Assign
  # events outside these limets a FOM that 
  # excludes them from further analysis
  #        +-- ndet value
  #        |    +-- elo limits
  #        |    |     +-- ehi limits
  #        |    |     |   +-- assign this FOM value if outside
  #        |    |     |   |
  ;ndetElim 1   0.0   0.8 1.81
  ;ndetElim 2   0.0   1.6 1.82
  ;ndetElim 3   0.0   3.2 1.83
  ;ndetElim 4   0.4   6.4 1.84
  ;ndetElim 5   0.8  18.8 1.85
  ;ndetElim 6   1.6  27.6 1.86
  ;ndetElim 7   3.2  53.2 1.87
  ;ndetElim 8   6.4  99.0 1.88
  ;ndetElim 9  18.1  99.0 1.89
  
  
  #####################
  # tracking strategies
  #####################
  
  #----------------
  # --> specify the tracking strategies to use
  # trackingstrategy <ndet> <option>
  #  0: full tracking
  #  1: [REMOVED] largest energy point (==first in E sort) 
  #  2: [REMOVED] random point                             
  #  3: 'kickout', break @ first worse permutation
  #  4: 'goodenough', break @ first OK FOM encountered
  #  5: 'jump', specify jump option: g...t...
  
  trackingstrategy 1 0
  trackingstrategy 2 0
  trackingstrategy 3 0
  
  # use for full tracking (usually too costly CPU wise)
  ;trackingstrategy 4 0
  ;trackingstrategy 5 0
  ;trackingstrategy 6 0
  ;trackingstrategy 7 0
  ;trackingstrategy 8 0
  
  # use for realistic realtime tracking
  trackingstrategy 4 5 ggtt
  trackingstrategy 5 5 ggttt
  trackingstrategy 6 5 ggtttt
  trackingstrategy 7 5 gggtttt
  trackingstrategy 8 5 gggttttt
  
  #------------------------------------------------
  # figure of merit cuts. In the trackingstrategy
  # of 'goodenough', we bail if we get a FOM below 
  # the fomgoodenough value given. In the 'jump'
  # trackingstrategy we jump to next group if the
  # FOM is above the fomjump value given.
  
  fomjump 1.0
  fomgoodenough 1.0
  
  ########################################################
  # methods for dealings with UNTRACKED (monster) clusters
  ########################################################
  
  #----------------
  # enable reclustering for UNTRACKED (monster) clusters
  # [method 1 of 2 to deal with those]
  #               +- 'kickout' FOM value
  #               |   +- threshold FOM for recluster
  #               |   |   +- ndet minimum for reclustering
  #               |   |   |  +- max number of reductions in alpha
  #               |   |   |  |   +- reduction factor for alpha
  #               |   |   |  |   |
  recluster1   0.01  0.1  3 10  0.90
  
  #----------------
  # enable splitting of clusters for UNTRACKED (monster) clusters
  # [method 2 of 2 to deal with those]
  #               +- 'kickout' FOM value
  #               |   +- threshold FOM for splitting
  #               |   |    +- ndet minimum for splitting
  #               |   |    |  +- ndet maximum for splitting
  #               |   |    |  |  +- max number of tries before giving up
  #               |   |    |  |  |   
  #               |   |    |  |  |   
  ;splitclusters1 0.01 0.6  3 16 100
  
  #----------------
  # fom kickout value for big untrackted monster clusters
  # when they are split (we can't use a fraction
  # as we do for already tracked clusters)
  
  untracked_fom_kickout 0.1
  
  
  ################################################
  # methods for splitting already tracked clusters 
  # that don't look right
  ################################################
  
  #----------------
  # enable reclustering for TRACKED clusters
  #               +- 'kickout' FOM value
  #               |   +- threshold FOM for recluster
  #               |   |   +- ndet minimum before trying to recluster
  #               |   |   |  +- max number of reductions in alpha
  #               |   |   |  |   +- reduction factor for alpha
  #               |   |   |  |   |
  ;recluster2  0.10  0.8 3  6  0.90
  
  #----------------
  # enable splitting of clusters 
  #                 +- 'kickout' FOM value
  #                 |   +- threshold FOM for splitting
  #                 |   |   +- ndet minimum for splitting
  #                 |   |   |  +- ndet maximum for splitting
  #                 |   |   |  |  +- max number of tries before giving up
  #                 |   |   |  |  |   +- good enough improvement fraction
  #                 |   |   |  |  |   |
  ;splitclusters2 0.10 0.7  3  16 200 0.4
  
  ################################################
  # methods for combining already tracked clusters 
  # that don't look right
  ################################################
  
  #----------------
  # enable combination of clusters
  #                 +- 'kickout' FOM value
  #                 |   +- threshold FOM for combining
  #                 |   |   +- ndet maximum for combining
  #                 |   |   |  +- max distance for inclusion attempt
  #                 |   |   |  |
  ;combineclusters 0.10 0.1  5 10000 
  
  ##################################
  # combine single hits (matchmaker)
  ##################################
  
  #           +- 'kickout' FOM value
  #           |    +- max distance for inclusion attempt
  #           |    |
  ;matchmaker 0.10 10000
  
  #----------------
  # number of itterative loops (more than one
  # is very CPU costly! and does not help much
  # at the moment, could even hurt!)
  
  itterations 1
  
  #------------------------------------
  # misc
  
  nprint 50
  
  
  ##############################################
  # single hit range function
  # single hits outside range will be assigned (large) FOM
  # so they can be cut when we sort.
  # this value overwrites above^^^
  # given [90% interaction length +0.5cm], see pdf for documentation
  ##############################################
  
  #                  +-- number of datapoints following
  #                  |  +-- set FOM to this value outside range
  #                  |  |    +-- target to detector distance [cm]
  #                  |  |    |
  singlehitmaxdepth 23 1.9 18.5
  0.000 0.59
  0.050 0.59
  0.060 0.65
  0.080 0.82
  0.100 1.04
  0.150 1.7
  0.200 2.31
  0.300 3.15
  0.400 3.72
  0.500 4.15
  0.600 4.53
  0.800 5.17
  1.000 5.74
  1.250 6.38
  1.500 6.94
  2.000 7.84
  3.000 9.01
  4.000 9.66
  5.000 10
  6.000 10.16
  8.000 10.17
  10.00 10.01
  16.3  20.0
  # |   |
  # |   +-- range (from surface of crystal) [cm]
  # +-- energy [MeV]
  # [data points for 0.0 and 16.3 must be there]

The sorting parameters [GEBSort.chat]

For offline use, these parameters are the only ones that matter for now

 nevents           2000000000
 printevents       10
 beta              0.0