Difference between revisions of "SoLID Software Detector Simulation"

From Hall A Wiki
Jump to: navigation, search
(analysis result)
(compile and run)
Line 10: Line 10:
  
 
= compile and run =
 
= compile and run =
 +
== some tmp fix ==
  
<pre>
+
You would need these fix before compile and run solid_gemc
I have updated code with some temporary fix here
+
=== If you are using JLAB_VERSION=1.2 ===
The temp fix will merge into the main release soon, stay tuned.
+
If you are using JLAB_VERSION=1.2 , do the following to use the fix
+
  
 +
<pre>
 
'''a temp fix for GEMC 2.2'''
 
'''a temp fix for GEMC 2.2'''
 
use some fine tuned field parameters, support linear interpolation for field map,fix a bug to run on farm
 
use some fine tuned field parameters, support linear interpolation for field map,fix a bug to run on farm
Line 22: Line 22:
 
cd $GEMC/../
 
cd $GEMC/../
 
mv 2.2 2.2_old
 
mv 2.2 2.2_old
svn co https://jlabsvn.jlab.org/svnroot/solid/tmp/2.2
+
svn co https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/mod/gemc/2.2
 
cd 2.2/source
 
cd 2.2/source
 
scons OPT=1 LIBRARY=shared
 
scons OPT=1 LIBRARY=shared
Line 33: Line 33:
 
cd $BANKS/../
 
cd $BANKS/../
 
mv 1.1 1.1_old
 
mv 1.1 1.1_old
svn co https://jlabsvn.jlab.org/svnroot/solid/tmp/banks/1.1
+
svn co https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/mod/banks/1.1
 
cd 1.1
 
cd 1.1
 
scons OPT=1
 
scons OPT=1
Line 39: Line 39:
 
</pre>
 
</pre>
  
 +
=== If you are using JLAB_VERSION=1.3 ===
 
<pre>
 
<pre>
=====use GEMC 2.3 and banks 1.2 with jlab_version 1.2 ============
+
'''a temp fix for BANKS 1.2'''
setenv GEMC_VERSION 2.3
+
WRITE_RAWS turn on/off tureinfo for all banks, now by default turn on for flux, off for all other banks
setenv BANKS_VERSION 1.2
+
***************************
source your solid_eic_1.2 script
+
source your setup script
cd $JLAB_ROOT/1.2/install/
+
cd $BANKS/../
./go_gemc
+
mv 1.2 1.2_old
./go_banks
+
svn co https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/mod/banks/1.2
cd $SoLID_GEMC/source/
+
cd 1.2
svn up
+
cd $GEMC_VERSION
+
 
scons OPT=1
 
scons OPT=1
 +
***************************
 
</pre>
 
</pre>
 +
 +
== compile and run solid_gemc ==
  
 
Once you complete the setup procedure, you can now compile "solid_gemc"
 
Once you complete the setup procedure, you can now compile "solid_gemc"

Revision as of 09:46, 24 June 2016

Introduction

SoLID detector simulation program "solid_gemc" is based on "GEMC 2.x" with additional hit process routine and outputs for all detector systems in SoLID.

It's located SoLID repository https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2 with source codes and detector configuration, field, scripts etc.

You need both the jlab framework and SoLID repository before you can compile and run solid_gemc, refer to the quick start section

The "set_solid" script is used to setup env

compile and run

some tmp fix

You would need these fix before compile and run solid_gemc

If you are using JLAB_VERSION=1.2

'''a temp fix for GEMC 2.2'''
use some fine tuned field parameters, support linear interpolation for field map,fix a bug to run on farm
***************************
source your setup script
cd $GEMC/../
mv 2.2 2.2_old
svn co https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/mod/gemc/2.2
cd 2.2/source
scons OPT=1 LIBRARY=shared
***************************

'''a temp fix for BANKS 1.1'''
WRITE_RAWS turn on/off tureinfo for all banks, now by default turn on for flux, off for all other banks
***************************
source your setup script
cd $BANKS/../
mv 1.1 1.1_old
svn co https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/mod/banks/1.1
cd 1.1
scons OPT=1
***************************

If you are using JLAB_VERSION=1.3

'''a temp fix for BANKS 1.2'''
WRITE_RAWS turn on/off tureinfo for all banks, now by default turn on for flux, off for all other banks
***************************
source your setup script
cd $BANKS/../
mv 1.2 1.2_old
svn co https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/mod/banks/1.2
cd 1.2
scons OPT=1
***************************

compile and run solid_gemc

Once you complete the setup procedure, you can now compile "solid_gemc"

source your set_solid if you haven't done so
cd $SoLID_GEMC/source/$GEMC_VERSION
scons OPT=1
(you need to recompile every time GEMC gets updated)

after compiling, do the following to run it

cd $SoLID_GEMC/script
solid_gemc solid_PVDIS_LD2.gcard or solid_gemc solid_PVDIS_simple.gcard
solid_gemc solid_SIDIS_He3.gcard or solid_gemc solid_SIDIS_He3_simple.gcard or solid_gemc solid_SIDIS_He3_full.gcard
solid_gemc solid_SIDIS_NH3.gcard or  solid_gemc solid_SIDIS_NH3_simple.gcard
(you should go to a clean terminal and source your set_solid again if somehow solid_gemc binary is not found in default PATH)

general note

solid_gemc only adds hit process routine to generic gemc, so general GEMC things still apply

Please read this general note for geometry, materiel, mirror, hit processing etc

field map

https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/field/
solenoid_CLEOv8.dat (the field map for solenoid CLEOv8 design)
solenoid_CLEOv8_Bz.dat  (Bz field only, Br is 0)
Bz1.4T.dat (uniform Bz field , close to the peak value of CLASv8)
solenoid_ptarget.dat (polarized proton 5T target field)

subsystem simulation

"solid_gemc" can be used for individual sub-detector systems and the whole detector simulation.

Each of sub-detector systems can do simulation independently and ready to merge it back into the whole system simulation.

They are considered "devel" version and located in their individual directories and person responsible as below

https://jlabsvn.jlab.org/svnroot/solid/subsystem/ec/ec_solid_gemc                 (Rakitha,Vince?)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/hgc/hgc_solid_gemc               (Zhiwen)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/lgc/lgc_solid_gemc               (Michael)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/gem/gem_solid_gemc               (Rich?)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/mrpc/mrpc_solid_gemc             (Zhihong?, Xinzhan?) 
https://jlabsvn.jlab.org/svnroot/solid/subsystem/spd/spd_solid_gemc               (XinZhan)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/magnet/magnet_solid_gemc         (Zhiwen?)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/baffle/baffle_solid_gemc         (Rich?)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/target/target_solid_gemc         (Zhiwen?)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/beamline/beamline_solid_gemc     (Zhiwen?)
https://jlabsvn.jlab.org/svnroot/solid/subsystem/absorber/absorber_solid_gemc     (Lorenzo?)

These directories should be kept clean so it only has files necessary for simulation, and ready to copy into the "production" area to be used with other subsystems

For all other files, please put them into other directories under the same subsystems.

Please refer to "hgc_solid_gemc" and "hgc" as an example

full simulation

All subsystems have their own "production" version directories "ec,hgc,lgc,gem,mrpc,spd,magnet,baffle,target,beamline,absorber" at "https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/geometry/"

Run full SoLID simulation with all subsystems together by

source your set_solid
cd $SoLID_GEMC/script
solid_gemc solid_PVDIS_LD2_full.gcard
solid_gemc solid_SIDIS_He3_full.gcard
solid_gemc solid_SIDIS_NH3_full.gcard
solid_gemc solid_JPsi_LH2_full.gcard
solid_gemc solid_DDVCS_LH2_full.gcard

Once you think your subsystem devel version is ready, before making it a production version, be sure to test it with full simulation, meaning it has no conflict with any other production subsystem.

Modify "$SoLID_GEMC/geometry/solid_SIDIS_He3_full" or "$SoLID_GEMC/geometry/solid_PVDIS_LD2_full" (generating geometry,hit,bank) and "$SoLID_GEMC/script/solid_SIDIS_He3_full.gcard" or "$SoLID_GEMC/script/solid_PVDIS_LD2_full.gcard" to mix your devel version system and other production subsystems to test

After verify no conflict, you may release it as production version by copying ONLY necessary files like all perl script and txt files without any change into its production directory.

analysis result

The root tree output can be analysis by some very simple scripts here https://jlabsvn.jlab.org/svnroot/solid/solid_gemc2/analysis/

detector ID for flux hit processing

We use built-in flux hit processing for virtual planes near to real detectors to record particles entering or leaving real detectors

Each virtual plane has a unique id to identify it and it appears in the "id" branch of "flux" tree

Its ID is defined by 7 digits integer like "abcdefg"
a: detector type
   GEM 1, CC 2, EC 3, MRPC 4, SPD 5, muon 6
b: detector assembly 
   GEM 1 - 6 layer, LGCC 1, HGCC 2, FAEC 1, LAEC 2, MRPC 1, FASPD 1, LASPD 2, muon forward 1, muon endcap donut 2,muon barrel 3
c: sub detector
   GEM not used, CC 0 PMT 1 front, MRPC 0 inside 1 front, EC 1 front 2 middle 3 inner 4 rear
d,e,f,g: not used for now
for example, 3110000 is for forward angle EC front plane
see code example here https://jlabsvn.jlab.org/svnroot/solid/study/background/background.C

old way to run simulation, mainly for background study

geometry

refer to file " $SoLID_GEMC/geometry/changelog" for details

source your set_solid
cd $SoLID_GEMC/geometry
edit perl files to modify geometry, then run command below to generate new geometry txt files
./solid_PVDIS_simple.pl config_solid_PVDIS_simple.dat
./solid_PVDIS_LD2.pl config_solid_PVDIS_LD2.dat
./solid_SIDIS_He3_simple.pl config_solid_SIDIS_He3_simple.dat
./solid_SIDIS_He3.pl config_solid_SIDIS_He3.dat
./solid_SIDIS_NH3_simple.pl config_solid_SIDIS_NH3_simple.dat
./solid_SIDIS_NH3.pl config_solid_SIDIS_NH3.dat

materials

source your set_solid
cd $SoLID_GEMC/geometry
edit the perl file "solid_material.pl" to modify geometry, then run command below to generate new material txt files
./solid_material.pl config_solid_PVDIS_simple.dat
./solid_material.pl config_solid_PVDIS_LD2.dat
./solid_material.pl config_solid_SIDIS_He3_simple.dat
./solid_material.pl config_solid_SIDIS_He3.dat
./solid_material.pl config_solid_SIDIS_NH3_simple.dat
./solid_material.pl config_solid_SIDIS_NH3.dat