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;