DrsTree description
drsanl package setup on a remote node (dsw.sh assumes the use of bash)
Linux users
- 1) rsync an entire code tree from rulinux04
- mkdir drs4anl; cd drs4anl
- rsync -av --exclude=data --exclude=*.root --exclude=*.pdf --exclude=*.png --exclude=*.eps --exclude=*.dat otsdaq@rulinux04.dhcp.fnal.gov:~/2018_12_December_DRS4/drs4anl/ ./
- or 2) download from CVS repo
- yum install cvs;
- alias cmspub='export CVSROOT=:ext:cmspub@nicadd.niu.edu:/cvs; export CVSEDITOR="emacs -nw"; export CVS_RSH=ssh'
- cmspub;
- cvs co -d drs4anl daq/drs4ftbf/drs4anl (password cmspub_1492)
- Note - cvs update is welcome any time; but please do not try to commit changes - this is a guest account and will case error on the server-side
- for a read-write access please send a request to suzunyan@niu.edu
- cp dsw.sh dsw_mysystem.sh
- edit line export ROOTSYS=/cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.22.06/x86_64-centos7-gcc48-opt
- to point onto your local ROOT 6.22.06 installation (if cvmfs is not set)
- source dsw_mysystem.sh
- make clean; make realclean; make all
MacOS users (tested on macOSx 11.1 BigSur)
- additionally may need to install
- macport, download v2.6.4
- default ROOT, cvs, xorg, emacs, e.t.c: sudo port install root6 xorg-server xterm emacs cvs
- compile a specific ROOT version::
- Pick-pu a ROOT release
- Build instructions
- sudo su;
- mkdir -p /opt/macos/contrib/root
- mkdir -p /opt/macos/archive/root
- cd /opt/macos/archive/root
- wget https://root.cern/download/root_v6.22.06.source.tar.gz
- tar -xzf root_v6.22.06.source.tar.gz
- cd root_v6.22.06
- mkdir build1
- cd build1
- make -DCMAKE_INSTALL_PREFIX=/opt/macos/contrib/root/root_v6.22.06-macos-11.1-x86_64 ../
- make -j 4
- make install
Variable description
For the the up-to-date description check the code in the drs4anl classes
- drs4ftbf/drs4anl/tass_mon/tass_mon/TassEvent.hpp - event analysis
- drs4ftbf/drs4anl/tass_mon/tass_mon/TassChannel.hpp - individual channels
List of variables as of Feb 08, 2021
Event wide variables (TasEvent.hpp); drsTree->Draw("varname")
- UInt_t _nrun; //run counter
- UInt_t _nevt; //event counter
- UInt_t _idevt; //event id (from sipm data)
- Float_t _ptime; //processing time
- Float_t _tmScale; //!drs time scale
- UInt_t _tsdiff; //time from a previous event, ms
- unsigned short _ts[7]; //drs4 timestamp Date == ts2-ts1-ts0 ts3:ts4:ts5.ts6 ts7 == 3-9-2019 10:59:57.996 0
- //
- Int_t _trflag; //track quality flag (0 == no tracker info, -1 == only x or y;
- //1 == (xp0,yp0); 2 == (xp0,yp0)+good ch0 waveform; 3 == (xp0,yp0)+good ch0 waveform + (xp1,yp1); good waveform means pInt and sInt != -99
- //4 == (xp0,yp0) + good ch0 waveform + (xp1,yp1) + _dRp0p1 < 2mm
- //We report position, sadc, nhits for the nearest isolated clusters pairs reconstructed in tracker planes of st1 and st0
- //If no clusters are found in the downstream station we report the first reconstructed cluster in station 0
- //
- Float_t _xp0; //trk0 x, mm (adc-weighted position of the reported cluster in the X-plane of station 0)
- Float_t _yp0; //trk0 y, mm (adc-weighted position of the reported cluster in the Y-plane of station 0)
- //
- Float_t _xp1; //trk2 x, mm (adc-weighted position of the reported cluster in the X-plane of station 2)
- Float_t _yp1; //trk1 y, mm
//
- Float_t _dRp0p1; //radial distance between assigned clusters at (_xp0,_yp0) and (_xp1,_yp1)
- // tracker station0 (upstream)
- Int_t _xadc0; //x-adc (sum of hits adc aplitude in the reported cluster) at station 0
- Int_t _yadc0; //y-adc (sum of hits adc aplitude in the reported cluster) at station 0
- Int_t _nhx0; //number of hits in x-type sensors
- Int_t _nhy0; //number of hits in y-type sensors
- Int_t _ncx0; //number of clusters in x-type sensors
- Int_t _ncy0; //number of clusters in y-type sensors
- Int_t _nchx0; //number of hits in the reported X-cluster at station 0
- Int_t _nchy0; //number of hits in the reported Y-cluster at station 0
- //
- //tracker station1 (downstream)
- Int_t _xadc1; //x-adc (sum of hits adc aplitude in the reported cluster) at station 1
- Int_t _yadc1; //y-adc (sum of hits adc aplitude in the reported cluster) at station 1
- Int_t _nhx1; //number of hits in x-type sensors
- Int_t _nhy1; //number of hits in y-type sensors
- Int_t _ncx1; //number of clusters in x-type sensors
- Int_t _ncy1; //number of clusters in y-type sensors
- Int_t _nchx1; //
- Int_t _nchy1; //
- //
- Long64_t _trkts; //tracker timestamp
- //Collected hits
- std::vector<Int_t> _hx0pos;
- std::vector<Int_t> _hy0pos;
- std::vector<Int_t> _hx0adc;
- std::vector<Int_t> _hy0adc;
- //
- std::vector<Int_t> _hx1pos;
- std::vector<Int_t> _hy1pos;
- std::vector<Int_t> _hx1adc;
- std::vector<Int_t> _hy1adc;
- //
Channel specific variables (TassChannel.hpp); drsTree->Draw("_dcha[0]->varname")
- //
- Due to a mismatch in channel number and the order they are readout of the tileboard there is a discrepancy between the index in the dcha array that the channels are saved and the channel number for channels > 7. Here is the array to channel mapping:
- channel 19 -> dcha[22]
- channel 22 -> dcha[25]
- channel 21 -> dcha[24]
- channel 20 -> dcha[23]
- channel 26 -> dcha[29]
- channel 25 -> dcha[28]
- channel 24 -> dcha[27]
- channel 23 -> dcha[26]
- //
- UInt_t _chID ;//channel number
- UInt_t _chflag ;//signal quality flag
- UInt_t _fscl ;//channel scaler, HZ
- Int_t _sPeak ;//wafeform extremum (adc)
- Int_t _wPeak ;//wafeform extremum peak at 0.1 height
- UInt_t _nsPeak ;//the extremum sample index
- UInt_t _npflag ;//double peak flag
- //
- Int_t _sADC ;//signal Maximum (adc) == abs(_sPeak - _sBase); ;
- //
- Float_t _sBase ;//WF base (minimum mean of Nbase samples in NSAMPLES/nbase waveform regions)
- Float_t _sInt ;//peak of the template fit, signal
- Float_t _pInt ;//minimum of the template fit, pedestal
- Float_t _sIntCorr ;//maximum ADC value out of the 5 BXs
- Float_t _pIntCorr ;//minimum ADC value out of the 5 BXs
- unsigned short _chs[NSAMPLES] ;//channeldata,
- Float_t _cht[NSAMPLES] ;//!time bins
- //
- //Not in tree
- UInt_t _nsLeft; ;// left signal edge
- Float_t _tmLeft; ;// left signal edge
- UInt_t _npLeft; ;//! left pedestal edge
- //Jitter estimation
- Float_t _jTime; ;//time of threhohold (0.5* sPeak) crossing
HgCroc tree variables
- // The hgcroc board event consists of always 39 channels x 2half x 5 samples records per trigger (78 rows per sample)
- // For the track matching and the drsTree output the event counter is calculated as _hgevent.event/5; and the channel number as 38 + half * channel
- Int_t event;
- Int_t corruption;
- Int_t bxcounter;
- Int_t wadd;
- Int_t chip;
- Int_t half;
- Int_t channel;
- UShort_t adc;
- UShort_t toa;
- UShort_t tot;