Difference between revisions of "Solid cherenkov readout"

From solidwiki
Jump to: navigation, search
(Created 02/10/20(Zwzhao), Last modified 11/23/20(Zwzhao))
 
(Blanked the page)
 
Line 1: Line 1:
== general ==
 
  
= test =
 
 
meeting https://hallaweb.jlab.org/wiki/index.php/Meeting_solid_preRD_cher
 
 
data location /work/halla/solid/cc_pro
 
 
info and plot location https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro
 
 
== pmt ==
 
 
H12700 general specs https://www.hamamatsu.com/resources/pdf/etd/H12700_H14220_TPMH1379E.pdf
 
 
PMT used in test https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/pmt/
 
 
pixel_id and maroc_id are shown at https://clasweb.jlab.org/wiki/images/4/46/Maroc_ch.pdf
 
 
== lasertest ==
 
 
MAPMT test with laser, maroc pixel by PC and sum by fadc, at CLAS12 laser test stand
 
 
note,log,plot https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/lasertest/
 
 
== benchtest ==
 
 
=== note in general  ===
 
 
MAPMT readout assembly https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/mapmt_readout_assembly.pdf
 
 
photo of maroc sum https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/benchtest/photo_mapmt_maroc_sum/
 
 
photo of simple sum https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/benchtest/photo_mapmt_simple_sum/
 
 
decoder and analysis code [https://eicweb.phy.anl.gov/cherenkov/fadc_decoder]
 
 
'''keep FPGA boards cool <70C whenever its LV is on !!!'''
 
'''the small fan needs to be on at all time and it can keep FPGA board below 50C'''
 
 
<pre>
 
 
monitor temperature in unit C when last ssp scaler run happened by
 
ll /home/clasrun/rich/suite1.0/data/temperature/ssprich_Temperatures.txt
 
tail -n138 /home/clasrun/rich/suite1.0/data/temperature/ssprich_Temperatures.txt
 
 
If it's outdated and you want to check current temperature, take a scaler run as follows
 
> ssh root@sbsvme22
 
> source /usr/clas12/release/1.4.0/setup
 
> setenv RICH_SUITE /home/clasrun/rich/suite1.0
 
> cd $RICH_SUITE/sw/daq
 
> ssptest_ConfigureAll 230 64 0
 
> ./thr_scan.sh 170 175 0
 
> (You have to reset coda after any scaler operation so coda can initialize ssp correctly!)
 
refer to details below
 
 
</pre>
 
 
<pre>
 
desktop tunl11, user solid and root
 
crate sbsvme22, user daq and root
 
ask password from Zhiwen or Alex
 
 
to start x11vnc at tunl11 localhost:0, run ~/myvnc_0 as root
 
 
LED275W anode should connect to coaxil cable core, cathod should connect to coaxil cable skin
 
This way it can driven by a postive charge
 
 
function generator controllering LED is set with 1kHz 5ns width positive pulse at output1
 
If the light at output1 is off, turn it on by press "shift",then "utput1"
 
 
OM4 optical cables from fibercablesdirect.com has 12 ends
 
The pairing are L-R or Yellow-White: 1-12,2-11,3-10,4-9, while 4 others are unused.
 
Other company may do it differently
 
 
To control the Lecroy HV power supply
 
switch its power on at back of crate, turn the turn key at front of crate to position "remote" and
 
wait for display "remote" stable
 
connect it to USB port at the back of tunl11 using the blue network to USB converter
 
check if /dev/ttyUSB0 exist
 
run "minicom" as root, then type return, type 1450, type vt100
 
see help manual on right side, set target V and enable channel by "[", power on by "{" or or use "h" for help and "q" to quit help
 
Only one "minicom" can be alive, to run another in other terminal, kill existing one first
 
 
keysight E336313A LV power supply
 
4.5-5.5V and 0.9A need for each board
 
840mA is typically once they fully boot and run, but you definitely want a bit of margin otherwise it can trip during startup and be in an endless startup oscillation
 
 
ssp runs with 125Mhz clock at right side of vxs crate, fadc run at 250Mhz at left side of crate
 
 
To check ticard, run "tiint" at sbsvme22
 
 
MAPMT test with LED, both maroc pixel and sum by fadc
 
crate 1 has fadc in slot 3 and ssp in slot 15
 
15 pmts and 5 fibers 0 - 4
 
 
</pre>
 
 
=== coda data taking ===
 
 
both solid@tunl11 and daq@sbsvme22 use tunl11:/home/solid/.tcshrc for coda env setup, don't change it
 
 
As solid@tunl11, you can login daq@sbsvme22 without password
 
 
start coda
 
as solid@tunl11
 
> vncserver (start vnc)
 
> vncviewer localhost :1 &  (login with same password of user solid)
 
inside vnc
 
> kcoda
 
> startCoda
 
 
config coda
 
coda config is at daq@sbsvme22:git/rol
 
>> Changing the FADC configuration file
 
*Login to daq@sbsvme22
 
* Go to directory git/rol/config
 
* Edit "fadc250.cnf" file
 
* Once edited, compile from it from directory : git/rol by command (make -B)
 
* To see the change in CODA, reset the coda (NOT JUST THE PRESTART)
 
>> List file is at :git/rol/solidhgc_list.c
 
* To have the prescaled enabled tiSetInputPrescale(input, prescale), where input=1 (TS#1)
 
* prescale value = 2^(ps -1) +1 , where ps is prescale setting
 
>> Once the file is changed, compile it (make -B) and prestart the coda
 
 
debug code
 
If the crate is down,the xterms should have remained up while the crates were down
 
If they are closed, just start them up again.
 
If you think the ROCs need restarted: "restartStuff"  as solid@tunl11
 
The xterms for the ROCS and PEB should remain up until you kcoda. refer to https://github.com/JeffersonLab/coda_scripts
 
 
when coda running, the processes below are present
 
<pre>
 
[daq@sbsvme22 ~]$ ps -ef | grep coda
 
daq      5911  5893  0 12:40 pts/0    00:00:00 /bin/bash /home/daq/coda_scripts/startROC.sh ROC1
 
daq      5913  5911 99 12:40 pts/0    01:13:25 coda_roc -i -v -name ROC1 -session solidhgc
 
[solid@tunl11 ~]$ ps -ef | grep coda
 
solid    8423  8390  0 12:45 pts/17  00:00:00 /bin/bash /home/solid/coda_scripts/startPEB.sh
 
solid    8428  8423  0 12:45 pts/17  00:00:00 /bin/csh -f /home/solid/coda3/3.10/Linux-x86_64/bin/coda_emu_peb PEB1
 
solid    8430  8428  1 12:45 pts/17  00:00:44 /home/solid/jdk1.8.0_152/bin/java -cp /home/solid/coda3/3.10/common/jar/* -XX:+PerfDisableSharedMem -XX:+UseG1GC -Djava.net.preferIPv4Stack=true -Djava.library.path=/home/solid/coda3/3.10/Linux-x86_64/lib -DcmsgUDL=rc://multicast/solidhgc -Dname=PEB1 -Dtype=PEB org.jlab.coda.emu.EmuFactory
 
solid    19258  3339  0 13:51 pts/2    00:00:00 grep --color=auto coda
 
solid    31228 31221  0 12:06 pts/14  00:00:00 /bin/csh -f /home/solid/coda3/3.10/Linux-x86_64/bin/platform
 
solid    31231 31228  2 12:06 pts/14  00:02:50 /home/solid/jdk1.8.0_152/bin/java -Xms200m -Xmx2048m -XX:-UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true org.jlab.coda.afecs.platform.APlatform
 
solid    31291    1  0 12:06 pts/15  00:00:00 /bin/csh -f /home/solid/coda3/3.10/Linux-x86_64/bin/rcgui
 
solid    31296 31291 44 12:06 pts/15  00:47:26 /home/solid/jdk1.8.0_152/bin/java -Xms200m -Xmx500m -Dprism.order=sw -Dsun.java2d.pmoffscreen=false -Djava.net.preferIPv4Stack=true org.jlab.coda.afecs.ui.rcgui.RcGuiApplication
 
solid    31315 31297  0 12:06 pts/12  00:00:00 /bin/bash /home/solid/coda_scripts/remote_vme tunl11 nobody startPEB.sh
 
solid    31328 31310  0 12:06 pts/16  00:00:00 /bin/bash /home/solid/coda_scripts/remote_vme sbsvme22 nobody startROC.sh ROC1
 
</pre>
 
 
=== coda data analysis  ===
 
 
[[solid_cc_readout_benchtest_coda_runlog]]
 
 
info
 
in evio, fadc tag=3, ssp tag=18
 
maroc sum has sum signal of fadc value as it is, but quad fadc signal needs 4095-fadc, this is like MAPMT simple sum readout
 
 
coda output location tunl11:/home/solid/data
 
 
evio on ifarm /work/halla/solid/cc_pro/benchtest/coda/data
 
 
evio on ifarm  /work/halla/solid/cc_pro/benchtest/coda/root
 
 
plot on web https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/benchtest/coda
 
 
how to use decoder and do fadc analysis
 
<pre>
 
latest
 
cd /work/halla/solid/cc_pro/fadc_decoder-revamp_latest
 
source /work/hallb/prad/apps/set_env_CUE_modern.csh
 
source env/setup_env.csh
 
build/src/analyze -m database/modules/mapmt_maroc_bench_20200903.json ../benchtest/coda/data/solidhgc_73.evio.0 ../benchtest/coda/root/solidhgc_73.root
 
 
old
 
cd /work/halla/solid/cc_pro/fadc_decoder-revamp
 
source /work/hallb/prad/apps/set_env_CUE_modern.csh
 
source env/setup_env.csh
 
build/src/analyze --config-module="config/mapmt_maroc_bench_20200903.conf" -c 1 ../benchtest/coda/data/solidhgc_73.evio.0 ../benchtest/coda/root/solidhgc_73.root
 
 
make raw fadc plot
 
python scripts/draw_events.py ../benchtest/root/solidhgc_73.root MAPMT_SUMS -o plots/run73 -e 100,200
 
python scripts/draw_events.py ../benchtest/root/solidhgc_73.root MAPMT_QUADS -o plots/run73 -e 100,200
 
 
compile
 
cd /work/halla/solid/cc_pro/
 
git clone https://eicweb.phy.anl.gov/cherenkov/fadc_decoder.git fadc_decoder-revamp_latest
 
cd fadc_decoder-revamp_latest
 
git checkout revamp
 
source /work/hallb/prad/apps/set_env_CUE_modern.csh
 
source env/setup_env.csh
 
mkdir build && cd build
 
cmake ..
 
make -j8
 
 
</pre>
 
 
Oldold
 
<pre>
 
cp -rpv /w/hallb-scifs17exp/general/prad/jz/hgc/decoder/fadc_decoder /work/halla/solid/cc_pro
 
cd fadc_decoder
 
source /work/hallb/prad/apps/set_env_CUE_modern.csh
 
source env/setup_env.csh
 
rm -rf build
 
mkdir build && cd build
 
cmake ..
 
make -j4
 
build/src/analyze ../test_esb/data/solidhgc_67.evio.0 ../test_esb/root/solidhgc_67.root
 
 
 
source /work/hallb/prad/apps/set_env_CUE_modern.csh
 
git clone https://eicweb.phy.anl.gov/cherenkov/fadc_decoder.git
 
cd fadc_decoder/
 
git checkout revamp
 
mkdir build && cd build
 
cmake ..
 
make
 
cd ..
 
./build/ssp/ssp_analyze /w/hallb-scifs17exp/general/prad/jz/fadc_decoder-master/solidhgc_50.evio.0 solidhgc_50.root
 
</pre>
 
 
maroc analysis
 
 
root -b -q 'mRICH_reco.C("/w/halla-scifs17exp/solid/cc_pro/fadc_decoder/solidhgc_67.root" )'
 
 
=== maroc scaler data taking and analysis ===
 
 
[[solid_cc_readout_benchtest_scaler_runlog]]
 
 
<pre>
 
 
refer to
 
https://clasweb.jlab.org/wiki/images/7/7a/Instructions_Pedestal-Dark.txt
 
/usr/clas12/release/1.4.0/parms/ssp/rich4.cnf
 
 
** take scalar data at sbsvme22 ********************
 
ssh root@sbsvme22
 
 
#check if three dir is mounted from tunl11
 
ps -ef |grep sshfs
 
#mount them if needed, for example, after either sbsvme22 or tunl11 reboot
 
Type : $/home/mysshfs
 
If previously system has been rebooted then you probably need to unmount the directories first
 
For this type: umount -l YOUR_MNT_DIR
 
 
#set env
 
source /usr/clas12/release/1.4.0/setup
 
setenv RICH_SUITE /home/clasrun/rich/suite1.0
 
 
cd $RICH_SUITE/sw/daq
 
 
#check connection, this will turn on green lights on ssp board for each connected fiber
 
ssptest_ConfigureAll 230 64 0 
 
(it will create setup.txt in its running dir)
 
 
#to check light leak, turn HV on at -1kV, then run
 
./check_lightleak.sh 300 64 | grep -A15 Counting
 
(the resulting rate per pixel should be 100-200Hz at used threshold 300 when there is no lightleak)
 
 
# scan with constant gain
 
ssptest_ConfigureAll 230 64 0
 
./thr_scan.sh 170 220 64  #ped scan
 
./thr_scan.sh 150 650 64  #dark scan
 
 
# scan with gain map at $RICH_SUITE/maps/gain.txt
 
ssptest_ConfigureAll 230 0 0
 
./thr_scan.sh 170 220 0  #ped scan
 
./thr_scan.sh 150 650 0  #dark scan
 
 
edit thr_scan.sh to change scan step size if needed
 
 
#change and compile code
 
cd /usr/clas12/release/1.4.0/coda/src/rol
 
edit /usr/clas12/release/1.4.0/coda/src/rol/main/ssptest_ConfigureAll.c
 
edit /usr/clas12/release/1.4.0/coda/src/rol/main/ssptest_ScalerAll.c
 
edit /usr/clas12/release/1.4.0/coda/src/rol/main/ssptest_ScalerAll_loop.c
 
(put all other source code in dir tmp, otherwise they will be recompiled also)
 
cd /usr/clas12/release/1.4.0/coda/src/rol
 
make -j4
 
make install
 
 
** analyze data at tunl11 ********************
 
source /apps/root/5.34.36/setroot_CUE.csh
 
setenv RICH_SUITE /home/clasrun/rich/suite1.0
 
 
The main code is at $RICH_SUITE/sw/ana/lib/rich.C
 
 
cd $RICH_SUITE/sw/ana/ped
 
./recoPed.sh ../../../data/ped/rich_pedestal_20200814_140522.txt 0 #for ped run
 
./recoPed.sh ../../../data/ped/rich_pedestal_20200814_191511.txt 1 #for dark run
 
 
see results at $RICH_SUITE/results/scalers
 
and https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/benchtest/scalers/
 
 
clas12 rich result example
 
https://hallaweb.jlab.org/12GeV/SoLID/download/cc_pro/benchtest/scalers/
 
/200730_063821
 
 
=== setup maroc scaler at desktop tunl11 and vxs crate sbsvme22==========================
 
 
make a copy of clas12 coda code at tunl11
 
then mount this copy from tunl11 onto sbsvme22 using sshfs, because sbsvme22 has very limit disk size
 
 
** at tunl11 as user solid **********
 
 
at clasrun@clondaq6
 
tar zcfv clas12_1.4.0_coda.tgz /usr/clas12/release/1.4.0/coda
 
tar zcfv clas12_1.4.0_clon.tgz /usr/clas12/release/1.4.0/clon
 
tar zcfv clas12_1.4.0_parms.tgz /usr/clas12/release/1.4.0/parms
 
scp to tunl11 and extract at /usr/clas12/release/1.4.0/
 
 
at clasrun@clondaq6
 
tar zcfv activemq.tgz /usr/local/activemq
 
scp to tunl11 and extract at /usr/local/activemq
 
 
at clasrun@clondaq6
 
tar zcfv gcc_8.3.0.tgz /apps/gcc/8.3.0
 
scp to tunl11 and extract at /home/clasrun/apps/gcc/8.3.0
 
 
at clasrun@clondaq6
 
scp /usr/clas12/release/1.4.0/.setup solid@tunl11:/usr/clas12/release/1.4.0/
 
cp .setup setup
 
edit "setup" to have new gcc and root location
 
 
at clasrun@rich4
 
tar zcfv rich_1.0.tgz --exclude='results/*' rich/suite1.0
 
scp to tunl11 and extract at /home/clasrun/rich/suite1.0
 
 
** at sbsvme22 as user root  **************************
 
 
/home/mysshfs #mount file from tunl11 like the following
 
sshfs  solid@tunl11:/usr/clas12/release/1.4.0 /usr/clas12/release/1.4.0
 
sshfs  solid@tunl11:/usr/local/activemq /usr/local/activemq
 
sshfs  solid@tunl11:/home/clasrun /home/clasrun
 
 
To match latest activemq 3.9.5
 
donwload and install the following from https://yum.jasonlitka.com/EL5/i386/
 
apr-1.3.12-1.jason.1.i386.rpm 
 
apr-devel-1.3.12-1.jason.1.i386.rpm
 
apr-util-1.3.12-1.jason.1.i386.rpm
 
 
cd /usr/clas12/release/1.4.0/coda/src
 
edit /usr/clas12/release/1.4.0/coda/src/Makefile.include to use this gcc
 
  ifeq ("$(OSTYPE_PLATFORM)","Linux_i686")
 
    CC = /home/clasrun/apps/gcc/8.3.0/bin/gcc
 
    CXX = /home/clasrun/apps/gcc/8.3.0/bin/g++
 
    SHLD = $(CXX) -shared -g
 
 
</pre>
 
 
= other info  =
 
 
== CLAS12 RICH rate ==
 
 
2khz/pixel rate average in one PMT with beam, shown in Fig 29 of https://clasweb.jlab.org/12gev/nims/rich-nim.pdf
 
 
from Marco Mirazita
 
studies as a function of the beam current have been done in the past, see for example this log entry: https://logbooks.jlab.org/entry/3520614
 
The scalers are linear up to 200 nA beam current, rates of the order of few kHz for normal PMTs. All these plots are done with average rates per MAPMT. We have few channels with dark noise at level of MHz, and still the scalers look linear. hot PMT 344 show max 16kHz at p345 of https://www.jlab.org/Hall-B/secure/clas12/RICH/mirazita/EngRunData/BeamCurrentScan/PlotBeamCurrentData.pdf
 
 
from Valery Kubarovsky
 
https://logbooks.jlab.org/entry/3836244 We tested RICH per pixel rate upto 5 kHz, 320  kHz per PMT. It is still linear.
 
 
from Ben
 
https://clasweb.jlab.org/wiki/images/7/76/JUNE2015_RICH_Review_FPGAboard.pdf page 9, RICH daq only goes to 50kHz trigger rate, it assumes 25k pixels in 1 crate with 1Gbps ethernet readout. So for you to get the livetime  you'll have to determine the occupancy curve. 300kHz pixel rate - let's say for fun you have a 200ns window (which is narrow, but probably reasonably possible), then you have an occupancy of 6% - the magenta curve  which doesn't look good as it approaches 100kHz! I'd have to rescale it for however many channels your system has.
 
1) The per channel rate limit with no readout per pixel is ~4MHz (thats a firmware limit - could be larger if needed, not saying anything about PMT  life, pile-up efficiency, etc)
 
2) The next limit is basically triggered readout - the number of hits readout has to fit onto 1GbE readout per crate (8bytes per hit * event rate * occupancy * #ch < 125MB/s) - an it really needs some margin, assuming 100MB/s is more reasonable
 
3) I'm pretty sure we'll be using the VTP for readout by this time, that will allow getting close to 10GbE readout from each crate (using VXS lines instead of VME, so the backplane should give at least 200MB/s from each slot in parallel to each VTP)
 
4) 30ns is plausible for timing coincidence (~16ns needed just for MAROC shaping), then whatever the trigger sampling jitter, particle TOF skew, and readout channel skew need to be added
 
 
== ssp decoding info ==
 
 
For the SoLID Cerenkov test in HallC, maroc electronics will be read out
 
by ssp which can be recorded by coda into evio file
 
 
For GEM in HallA/C, it will be readout by ssp also
 
 
If we use analyzer to read evio, we would need to make it read ssp bank.
 
 
Then interpret its content of maroc or GEM separately.
 
 
general info
 
* clas12 rich wiki https://clasweb.jlab.org/wiki/index.php/Clas12_RICH
 
* clas12 rich NIM paper https://clasweb.jlab.org/12gev/nims/?C=M;O=D
 
* gluex dirc https://halldweb.jlab.org/wiki/index.php/DIRC
 
 
code
 
 
* c++ example from Danning Di
 
** code to read evio file for GEM detector
 
** sample evio file
 
 
* example from hall D
 
** C++ code in DANA/JANA to read the SSP data from evio file for DIRC detector https://github.com/JeffersonLab/halld_recon/blob/master/src/libraries/DAQ/DEVIOWorkerThread.cc#L2130
 
** sample evio file /work/halla/solid/cc_pro/hd_rawdata_071507_012.DIRC-LED.evio
 
** ssp data bank structure for DIRC [[File:DIRC_SSPDataFormat.pdf]]
 
 
* example from clas12
 
** java code to read ssp data bank from evio file for RICH detector and covert to hipo file https://github.com/JeffersonLab/clas12-offline-software/tree/development/common-tools/clas-detector/src/main/java/org/jlab/detector/decode
 
** java reconstruction code in coatjava/CLARA to analyze ssp data bank in hipo file https://github.com/JeffersonLab/clas12-offline-software/tree/development/reconstruction/rich/src/main/java/org/jlab/rec/rich
 
** calibration
 
*** manual https://clasweb.jlab.org/wiki/images/4/41/RichTimeCalibration_Manual-03-02-2020.pdf
 
*** code https://github.com/JeffersonLab/clas12calibration-rich/tree/master/richTimeCalib
 
*** hipo4 needed https://github.com/gavalian/hipo
 
*** test hipo4 file /cache/clas12/rg-b/production/recon/pass0/v21.8.1/mon/recon/
 
 
* example from mRICH of EIC
 
** /work/halla/solid/cc_pro/maroc_mirazita
 

Latest revision as of 19:45, 3 December 2020