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

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;


Page last modified on March 14, 2021, at 09:08 AM EST

|--Created: Sergey A. Uzunyan -|- Site Config --|