Difference between revisions of "Running GSIM CLAS simulation"

From Hall A Wiki
Jump to: navigation, search
(Converting generated data files to GEANT-3 format input)
(Look at the output files)
 
(10 intermediate revisions by the same user not shown)
Line 15: Line 15:
 
=== Setting an Event Generator and create events file ===
 
=== Setting an Event Generator and create events file ===
  
* PYTHIA is used as the base-line event generator (EG) for GSIM
+
* The simple kinematic event generator we use at TAU is based on actual data:
 +
e-e'p events in which 1 proton was detect serve as baseline to generation of a second proton, using the c.m. kinematics calculation
  
* The existing EG is a ''fortran''  script located under '''$GSIM/EventGenerator/''' directory.  
+
* For jets/showers, PYTHIA and Lepto64 are used as the base-line event generator for GSIM
 +
 
 +
* The existing EG is a ''ROOT''  macro located under '''$GSIM/EventGenerator/''' directory.  
  
  
Line 24: Line 27:
 
* The EG should be modified for the specific solid target. An example for 12C can be found at
 
* The EG should be modified for the specific solid target. An example for 12C can be found at
  
   $GSIM/EventGenerator/src/qp1C.f
+
   $GSIM/EventGenerator/eep_EG.C
 +
 
 +
==== Generate the Events ====
  
 
* To build the event generator use the build compilation command, e.g.
 
* To build the event generator use the build compilation command, e.g.
  
   cd $GSIM/EventGenerator/
+
   root -l eep_EG.C
  build_lepto_cs
+
  
 
(the result: an executable event generator e.g. '''lepto_exe/LeptoC.exe''')
 
(the result: an executable event generator e.g. '''lepto_exe/LeptoC.exe''')
 
==== Generate the Events ====
 
 
* Generate the events by executing the EG, e.g.
 
 
 
  cd lepto_exe
 
  rm -f test.dat
 
  ./LeptoC.exe > test.dat
 
 
(the result: a data file '''lepto_exe/test.dat''')
 
  
 
==== Look at the generated distributions ====
 
==== Look at the generated distributions ====
Line 47: Line 41:
 
* A utility for observing the generated data exist in the main EG directory '''$GSIM/EventGenerator/LeptoRoot'''
 
* A utility for observing the generated data exist in the main EG directory '''$GSIM/EventGenerator/LeptoRoot'''
  
* Port the data file into the utility directory  
+
* Port the data file into the utility directory ('''cp''' the file to the right location)
+
  cd $GSIM/EventGenerator/LeptoRoot
+
  cp $GSIM/EventGenerator/lepto_exe/test.dat $GSIM/Lepto64/LeptoRoot/
+
  cd $GSIM/EventGenerator/LeptoRoot/
+
  
 
* A perl script is used to write it in the right format
 
* A perl script is used to write it in the right format
  
 
   rm data.dat
 
   rm data.dat
   ./leptoroot.pl < test.dat > data.dat  
+
   ./leptoroot.pl < C.dat > data.dat  
  
(the result: a different (just numbers) data file '''LeptoRoot/data.dat''')
+
(the result: a different (just numbers) data file '''data.dat''')
  
 
* An executable is then used to write the data into a ROOT TTree
 
* An executable is then used to write the data into a ROOT TTree
Line 68: Line 58:
 
=== Converting generated data files to GEANT-3 format input ===
 
=== Converting generated data files to GEANT-3 format input ===
  
* port the generated-events data file (in this example '''test.dat''') to the converters utility and convert it to txt format.  
+
* port the generated-events data file (in this example '''C.txt''') to the converter utility and convert it. e.g.
For example, a file from the 2H target would be converted by
+
  
   cp $GSIM/EventGenerator/lepto_exe/test.dat $GSIM/EventGenerator/converters
+
   ./txt2part -m -o12_100GeV.evt < 12_100GeV.txt
  ./convert_deut < test.dat > convert_output.dat
+
  
(the result: a txt file '''/converters/convert_output.dat''' )
+
(the result: a part file '''mctk.evt''' suitable for GSIM)
 
+
* port and convert the txt file to a G3 part format corresponding to the MCTK bank (works better than particle bank in G3)
+
 
+
  mv convert_output.dat  $GSIM/simulate/Txt2partConverter
+
  cd $GSIM/simulate/Txt2partConverter
+
  ./txt2part -m -omctk.evt < convert_output.dat
+
 
+
(the result: a part file '''$GSIM/simulate/mctk.evt''' suitable for GSIM)
+
  
 
=== Running generated events through a CLASS GEANT-3 simulation ===
 
=== Running generated events through a CLASS GEANT-3 simulation ===
 
==== running GSIM with the generated events ====
 
==== running GSIM with the generated events ====
 
* port the events file to the shared directory
 
 
  mv mctk.evt ../
 
  cd ../
 
  
 
* to run the first XXXX events through the simulation, modify the '''ffread.in''' file so that it triggers XXXX events
 
* to run the first XXXX events through the simulation, modify the '''ffread.in''' file so that it triggers XXXX events
  
* then execute the shell script that runs GSIM
+
* then execute the shell script that runs GSIM with e.g. '''12_100GeV.evt'''
  
   ./gsim_test.csh
+
   ./gsim_Batch.csh 12_100GeV
  
 
* or simply use the run command
 
* or simply use the run command
  
   RunGSIM
+
   RunGSIM 12_100GeV
  
(the result: 2 bos + 1 txt files , '''gsimtest.txt''', '''gsimtest.bos''', '''gpp_test.bos''' and the output file '''outfile1''' )
+
* '''gsim_*.bos''' contains the data 'collected' by CLASS (ADC/TDC)
  
* '''gsimtest.bos''' contains the data 'collected' by CLASS (ADC/TDC)
+
* '''gpp_*.bos''' incorporates preprocessing to add smearing of the data
 
+
* '''gpp_test.bos''' incorporates preprocessing to add smearing of the data
+
 
   
 
   
* '''outfile1'''  is the physical data after REConstruction SYStem analyzed it
+
* '''outfile_*'''  is the physical data after REConstruction SYStem analyzed it
  
 
==== Look at the output files ====
 
==== Look at the output files ====
Line 114: Line 87:
 
* using COUNTBS one could count the number of events, e.g.
 
* using COUNTBS one could count the number of events, e.g.
  
   ./countbs gsimtest.bos
+
   ./countbs gsim_*.bos
  
 
(Note the first additional two events are header and are not to be accounted)
 
(Note the first additional two events are header and are not to be accounted)
Line 120: Line 93:
 
* using BOSDUMP code, one can look at the data from the terminal, e.g.
 
* using BOSDUMP code, one can look at the data from the terminal, e.g.
  
   ./bosdump gsimtest.bos
+
   ./bosdump gsim_*.bos
   ./bosdump gpp_test.bos
+
   ./bosdump gpp_*.bos
 
+
  
 
=== Converting the GSIM output file to ROOT ===
 
=== Converting the GSIM output file to ROOT ===
Line 131: Line 103:
  
 
(the result: a root file '''/output.root''')
 
(the result: a root file '''/output.root''')
 +
 +
 +
=== Writing the physical tree  ===
 +
 +
* The same way used to write the data file (utilizing write_tree.cxx) an executable is generated from write_simulation.cxx
 +
 +
* write_simulation.cxx, apart from writing the EVNT bank data, also writes GSIM data
 +
 +
* An example can be found at '''/u/home/cohen/Clas/WriteTreeEG2'''
 +
 +
* A soft link is generated at '''/w/halla-scifs2/e07006/Erez/gsim/simulate/WriteTree''' so the only thing ones has to type is
 +
 +
  write_simulation
  
  

Latest revision as of 10:47, 12 April 2015

GSIM Inventory

  • GSIM directory is to be located on the farm, at a large enough work disk. An example of the simulation inventory can be found at
 /work/halla/e07006/disk1/Erez/gsim  (will be used for the remainder of the documentation as $GSIM)
  • To get directly to the GSIM location an alias was set, so simply type
 GoGSIM

Running GSIM

Setting an Event Generator and create events file

  • The simple kinematic event generator we use at TAU is based on actual data:

e-e'p events in which 1 proton was detect serve as baseline to generation of a second proton, using the c.m. kinematics calculation

  • For jets/showers, PYTHIA and Lepto64 are used as the base-line event generator for GSIM
  • The existing EG is a ROOT macro located under $GSIM/EventGenerator/ directory.


Setting Event Generator

  • The EG should be modified for the specific solid target. An example for 12C can be found at
 $GSIM/EventGenerator/eep_EG.C

Generate the Events

  • To build the event generator use the build compilation command, e.g.
 root -l  eep_EG.C

(the result: an executable event generator e.g. lepto_exe/LeptoC.exe)

Look at the generated distributions

  • A utility for observing the generated data exist in the main EG directory $GSIM/EventGenerator/LeptoRoot
  • Port the data file into the utility directory (cp the file to the right location)
  • A perl script is used to write it in the right format
 rm data.dat
 ./leptoroot.pl < C.dat > data.dat 

(the result: a different (just numbers) data file data.dat)

  • An executable is then used to write the data into a ROOT TTree
 ./leptoroot 

(the result: a ROOT file LeptoRoot/data.root that will enable you to observe the generated distributions)

Converting generated data files to GEANT-3 format input

  • port the generated-events data file (in this example C.txt) to the converter utility and convert it. e.g.
 ./txt2part -m -o12_100GeV.evt < 12_100GeV.txt 

(the result: a part file mctk.evt suitable for GSIM)

Running generated events through a CLASS GEANT-3 simulation

running GSIM with the generated events

  • to run the first XXXX events through the simulation, modify the ffread.in file so that it triggers XXXX events
  • then execute the shell script that runs GSIM with e.g. 12_100GeV.evt
 ./gsim_Batch.csh 12_100GeV
  • or simply use the run command
 RunGSIM 12_100GeV
  • gsim_*.bos contains the data 'collected' by CLASS (ADC/TDC)
  • gpp_*.bos incorporates preprocessing to add smearing of the data
  • outfile_* is the physical data after REConstruction SYStem analyzed it

Look at the output files

  • using COUNTBS one could count the number of events, e.g.
 ./countbs gsim_*.bos

(Note the first additional two events are header and are not to be accounted)

  • using BOSDUMP code, one can look at the data from the terminal, e.g.
 ./bosdump gsim_*.bos
 ./bosdump gpp_*.bos

Converting the GSIM output file to ROOT

  • this is the easy part now. For an output file named outfile1 e.g., use
 ./WriteRootDst -o output.root -GSIM outfile1

(the result: a root file /output.root)


Writing the physical tree

  • The same way used to write the data file (utilizing write_tree.cxx) an executable is generated from write_simulation.cxx
  • write_simulation.cxx, apart from writing the EVNT bank data, also writes GSIM data
  • An example can be found at /u/home/cohen/Clas/WriteTreeEG2
  • A soft link is generated at /w/halla-scifs2/e07006/Erez/gsim/simulate/WriteTree so the only thing ones has to type is
 write_simulation


Observing the output ROOT TTree

  • The ROOT TTree is called
 CLASEVENT
  • To look at the data use e.g.
 CLASEVENT -> StartViewer()
  • The 'collected data' is stored in EVNT.XXXX variables, while the generated data is stored in GSIM.XXXX variables.


Running GSIM in interactive mode

  • follow the steps up to ./gsim_test.csh (without executing the shell script!)
  • source the necessary environmental set-ups
 source /group/clas/builds/environment.csh
  • run GSIM
 gsim_int -ffread ffread.in -mcin XXXX.evt

(where XXXX.evt is the event file, e.g. mctk.evt)

  • inside GSIM you will be prompted to answer a question. disregard it (type \return)
  • execute the following commands
 switch 1 2 
 dcut clas 2 0 10 10 0.015 0.015
 trig 1


[back to Tel Aviv University SRC Group]