stream
0.10.0
stream analysis framework
|
TDC processor. More...
#include <hadaq/TdcProcessor.h>
Data Structures | |
struct | ChannelRec |
TDC channel record. More... | |
Public Types | |
enum | EErrors { errNoHeader , errChId , errEpoch , errFine , err3ff , errCh0 , errMismatchDouble , errUncknHdr , errDesignId , errMisc } |
error codes More... | |
enum | EEdgesMasks { edge_Rising = 1 , edge_BothIndepend = 2 , edge_ForceRising = 3 , edge_CommonStatistic = 4 } |
edges mask More... | |
Public Types inherited from base::StreamProc | |
enum | SyncKind { sync_None , sync_Inter , sync_Left , sync_Right } |
kind of synchronization More... | |
Public Member Functions | |
TdcProcessor (TrbProcessor *trb, unsigned tdcid, unsigned numchannels=MaxNumTdcChannels, unsigned edge_mask=1, bool ver4=false) | |
constructor More... | |
virtual | ~TdcProcessor () |
destructor | |
void | SetSkipTdcMessages (unsigned cnt=0) |
Set number of TDC messages, which should be skipped from subevent before analyzing it. | |
void | Set400Mhz (bool on=true) |
Configure 400 MHz mode. | |
void | SetCustomMhz (float freq=400.) |
Set custom frequency. | |
void | SetTotStatLimit (int minstat=100) |
Set minimal counts number for ToT calibration. | |
void | SetTotRMSLimit (double rms=0.15) |
Set maximal allowed RMS for ToT histogram in ns. | |
unsigned | NumChannels () const |
Returns number of TDC channels. | |
bool | DoRisingEdge () const |
Returns true if processing rising edge. | |
bool | DoFallingEdge () const |
Returns true if processing falling. | |
unsigned | GetEdgeMask () const |
Returns value of edge mask. | |
double | GetCalibrProgress () const |
Returns calibration progress. | |
std::string | GetCalibrStatus () const |
Returns calibration status. | |
double | GetCalibrQuality () const |
Returns calibration quality. | |
void | AcknowledgeCalibrQuality (double lvl=1.) |
Acknowledge calibration quality. | |
std::vector< std::string > | TakeCalibrLog () |
Take all messages from calibration log. | |
int | GetNumHist () const |
Get number of indexed histograms. | |
const char * | GetHistName (int k) const |
Get histogram name by index. | |
base::H1handle | GetHist (unsigned ch, int k=0) |
Get histogram by index and channel id. | |
void | CreateHistograms (int *arr=0) |
Create basic histograms for specified channels. More... | |
void | AssignPerHldHistos (unsigned id, base::H1handle *hHits, base::H1handle *hErrs, base::H2handle *hChHits, base::H2handle *hChErrs, base::H2handle *hChCorr, base::H2handle *hQaFine, base::H2handle *hQaToT, base::H2handle *hQaEdges, base::H2handle *hQaErrors) |
Assign per HLD histos. | |
void | SetCalibrTrigger (int typ1=0xFFFF, unsigned typ2=0, unsigned typ3=0, unsigned typ4=0) |
Set calibration trigger type(s) One could specify up-to 4 different trigger types, for instance 0x1 and 0xD First argument could be use to enable all triggers (0xFFFF, default) or none of the triggers (-1) | |
void | SetCalibrTriggerMask (unsigned trigmask) |
Set calibration trigger mask directly, 1bit per each trigger type if bit 0x80000000 configured, calibration will use temperature correction. | |
void | SetCalibrTempCoef (float coef) |
Set temperature coefficient, which is applied to calibration curves Typical value is about 0.0044. | |
void | SetChannelTempShift (unsigned ch, float shift_per_grad) |
Set shift for the channel time stamp, which is added with temperature change. | |
void | SetChannelTotShift (unsigned ch, float tot_shift) |
Set channel TOT shift in nano-seconds, typical value is around 30 ns. | |
void | DisableCalibrationFor (unsigned firstch, unsigned lastch=0) |
Disable calibration for specified channels. | |
void | SetRefChannel (unsigned ch, unsigned refch, unsigned reftdc=0xffff, int npoints=5000, double left=-10., double right=10., bool twodim=false) |
Set reference signal for the TDC channel ch. More... | |
void | SetRefTmds (unsigned ch, unsigned refch, int npoints, double left, double right) |
Set reference signal for time extracted from v4 TMDS message. More... | |
bool | SetDoubleRefChannel (unsigned ch1, unsigned ch2, int npx=200, double xmin=-10., double xmax=10., int npy=200, double ymin=-10., double ymax=10.) |
Configure double-reference histogram Required that for both channels references are specified via SetRefChannel() command. More... | |
void | CreateRateHisto (int np=1000, double xmin=0., double xmax=1e5) |
Create rate histogram to count hits per second (excluding channel 0) | |
void | SetTotUpperLimit (double lmt=20) |
Configure upper limit for ToT. | |
double | GetTotUpperLimit () const |
Get configured upper limit for ToT. | |
bool | EnableRefCondPrint (unsigned ch, double left=-10, double right=10, int numprint=0) |
Enable print of TDC data when time difference to ref channel belong to specified interval Work ONLY when reference channel 0 is used. More... | |
void | SetEveryEpoch (bool on) |
If set, each hit must be supplied with epoch message. | |
bool | IsEveryEpoch () const |
Return true if each hit must be supplied with epoch message. | |
void | SetLinearCalibration (unsigned nch, unsigned finemin=30, unsigned finemax=500) |
Configure linear calibration for the channel. | |
void | SetAutoCalibration (long cnt=100000) |
configure auto calibration | |
void | UseExplicitCalibration () |
Configure mode, when calibration should be start/stop explicitly. | |
int | GetExplicitCalibrationMode () |
Return explicit calibr mode, -1 - off, 0 - normal data processing, 1 - accumulating calibration. | |
void | BeginCalibration (long cnt) |
Start mode, when all data will be used for calibrations. | |
void | CompleteCalibration (bool dummy=false, const std::string &filename="", const std::string &subdir="") |
Complete calibration mode, create calibration and calibration files. | |
bool | LoadCalibration (const std::string &fprefix) |
Load calibration from the file. | |
void | SetWriteCalibration (const std::string &fprefix, bool every_time=false, bool use_linear=false) |
When specified, calibration will be written to the file If every_time == true, write every time when automatic calibration performed, otherwise only at the end. | |
void | SetUseLinear (bool on=true) |
Enable linear calibrations. | |
bool | IsUseLinear () const |
Returns true is linear calibrations are configured. | |
void | SetLinearNumPoints (int cnt=2) |
Set number of points in linear calibrations. | |
int | GetLinearNumPoints () const |
Return number of points in linear calibrations. | |
void | SetToTRange (double tot_0xd, double hmin, double hmax) |
set real ToT value for 0xD trigger and min/max for histogram accumulation default is 30ns, and 50ns - 80ns range | |
void | ConfigureToTByHwType (unsigned hwtype) |
Configure 0xD trigger ToT based on hwtype. | |
void | SetUseLastHit (bool on=true) |
When enabled, last hit time in the channel used for reference time calculations By default, first hit time is used Special case is reference to channel 0 - here all hits will be used. | |
bool | IsUseLastHist () const |
Returns true if last hit used in reference histogram calculations. | |
const TdcMessage & | GetLastTdcHeader () const |
Return last TDC header, seen by the processor. | |
const TdcMessage & | GetLastTdcTrailer () const |
Return last TDC header, seen by the processor. | |
virtual void | UserPostLoop () |
execute posloop function - check if calibration should be performed | |
base::H1handle | GetChannelRefHist (unsigned ch, bool=true) |
Get ref histogram for specified channel. | |
void | ClearChannelRefHist (unsigned ch, bool rising=true) |
Clear ref histogram for specified channel. | |
void | SetCh0Enabled (bool on=true) |
Enable/disable store of channel 0 in output event. | |
virtual bool | FirstBufferScan (const base::Buffer &buf) |
Scan all messages, find reference signals if returned false, buffer has error and must be discarded. | |
virtual bool | SecondBufferScan (const base::Buffer &buf) |
Scan buffer for selecting messages inside trigger window. | |
void | IncCalibration (unsigned ch, bool rising, unsigned fine, unsigned value) |
For expert use - artificially set calibration statistic. | |
void | ProduceCalibration (bool clear_stat=true, bool use_linear=false, bool dummy=false, bool preliminary=false) |
For expert use - produce calibration. | |
float | GetCalibrTemp () const |
Access value of temperature during calibration. More... | |
void | SetCalibrTemp (float v) |
Set temperature used for calibration. | |
void | StoreCalibration (const std::string &fname, unsigned fileid=0) |
For expert use - store calibration in the file. | |
virtual void | Store (base::Event *) |
Store event. | |
virtual void | ResetStore () |
reset store | |
unsigned | TransformTdcData (hadaqs::RawSubevent *sub, uint32_t *rawdata, unsigned indx, unsigned datalen, hadaqs::RawSubevent *tgt=0, unsigned tgtindx=0) |
Method transform TDC data, if output specified, use it otherwise change original data. | |
void | EmulateTransform (int dummycnt) |
Emulate transformation. | |
void | DoHadesHistAnalysis () |
Special hades histograms creation. | |
void | FillToTHistogram () |
Fill ToT histogram. | |
Public Member Functions inherited from hadaq::SubProcessor | |
virtual | ~SubProcessor () |
destructor | |
virtual void | UserPreLoop () |
pre loop | |
bool | IsTDC () const |
is TDC | |
void | SetPrintRawData (bool on=true) |
set print raw data | |
bool | IsPrintRawData () const |
is print raw data | |
bool | IsCrossProcess () const |
is cross process | |
HldProcessor * | GetHLD () const |
get HLD processor | |
Public Member Functions inherited from base::StreamProc | |
virtual | ~StreamProc () |
destructor | |
void | SetTimeSorting (bool on) |
Enable/disable time sorting of data in output event. | |
bool | IsTimeSorting () const |
Is time sorting enabled. | |
void | SetTriggerMargin (double margin=0.) |
Set minimal distance between two triggers. | |
void | CreateTriggerHist (unsigned multipl=40, unsigned nbins=2500, double left=-1e-6, double right=4e-6) |
create histograms for triggers | |
virtual void | SetTriggerWindow (double left, double right) |
Set window relative to some reference signal, which will be used as region-of-interest interval to select messages from the stream. | |
void | SetRawScanOnly () |
Method set raw-scan only mode for processor Processor will not be used for any data selection. | |
bool | IsRawScanOnly () const |
Is only raw scan will be performed. | |
bool | IsRawAnalysis () const |
Is raw analysis only. | |
bool | IsTriggeredAnalysis () const |
Is triggered events analysis. | |
bool | IsStreamAnalysis () const |
Is full stream analysis. | |
bool | IsSynchronisationRequired () const |
Method indicate if any kind of time-synchronization technique should be applied for the processor. More... | |
unsigned | minNumSyncRequired () const |
Returns minimal number of syncs required for time synchronisation. | |
virtual bool | AddNextBuffer (const Buffer &buf) |
Provide next port of data to the processor. More... | |
virtual bool | ScanNewBuffers () |
Scanning all new buffers in the queue. More... | |
virtual bool | ScanNewBuffersTm () |
With new calibration set (where possible) time of buffers. More... | |
virtual void | SkipAllData () |
Method to remove all buffers, all triggers and so on. More... | |
virtual bool | SkipBuffers (unsigned cnt) |
Force processor to skip buffers from input. More... | |
unsigned | numSyncs () const |
Returns total number of sync markers. | |
unsigned | numReadySyncs () const |
Returns number of read sync markers. | |
SyncMarker & | getSync (unsigned n) |
Returns sync marker. | |
unsigned | findSyncWithId (unsigned syncid) const |
find sync marker | |
virtual bool | CollectTriggers (GlobalMarksQueue &queue) |
Method to deliver detected triggers from processor to central manager. More... | |
virtual bool | DistributeTriggers (const GlobalMarksQueue &queue) |
This is method to get back identified triggers from central manager. More... | |
virtual bool | ScanDataForNewTriggers () |
Here each processor should scan data again for new triggers Method made virtual while some subprocessors will do it in connection with others. More... | |
unsigned | NumReadySubevents () const |
Returns number of already build events. | |
virtual bool | AppendSubevent (base::Event *evt) |
Append data for first trigger to the main event. More... | |
Public Member Functions inherited from base::Processor | |
virtual | ~Processor () |
destructor | |
ProcMgr * | mgr () const |
Return manager instance. | |
const char * | GetName () const |
Get processor name. | |
unsigned | GetID () const |
Get processor ID. | |
void | SetHistFilling (int lvl=99) |
Set histogram filling level. | |
bool | IsHistFilling () const |
Is histogram filling enabled. | |
int | HistFillLevel () const |
Get histogram filling level. | |
unsigned | GetStoreKind () const |
Get store kind. | |
bool | IsStoreEnabled () const |
Is store enabled. | |
virtual void | SetStoreKind (unsigned kind=1) |
Set store kind. | |
void | SetStoreEnabled (bool on=true) |
Enable store - set store kind 1. | |
Static Public Member Functions | |
static void | SetMaxBoardId (unsigned) |
obsolete, noop | |
static void | SetDefaults (unsigned numfinebins=600, unsigned totrange=100, unsigned hist2dreduced=10) |
Set default values for TDC creation. More... | |
static void | SetErrorMask (unsigned mask=0xffffffffU) |
Set errors mask which are printout, set 0 to disable errors printout See hadaq::TdcProcessor::EErrors to list of detected errors. | |
static void | SetAllHistos (bool on=true) |
Automatically create histograms for all channels - even they not appear in data. | |
static void | SetIgnoreCalibrMsgs (bool on=true) |
Configure to ignore all kind of calibration data stored in HLD file Let analysis HLD stored by HADES DAQ as it was not calibrated at all. | |
static void | SetHadesMonitorInterval (int tm=-1) |
Configure interval in seconds for HADES monitoring histograms filling. | |
static int | GetHadesMonitorInterval () |
Return interval in seconds for HADES monitoring histograms filling. | |
static void | SetUseDTrigForRef (bool on=true) |
Enable usage of 0xD trigger in ref histogram filling. | |
static void | SetTriggerDWindow (double low=-25, double high=50) |
Configure window (in nanoseconds), where time stamps from 0xD trigger will be accepted for calibration. | |
static void | SetToTCalibr (int minstat=100, double rms=0.15) |
Configure ToT calibration parameters. More... | |
static void | SetDefaultLinearNumPoints (int cnt=2) |
Set default number of point in linear approximation. | |
static void | SetUseAsDTrig (bool on=true) |
Use all data as 0xD trigger. | |
static void | SetStoreCalibrTables (bool on=true) |
enable storage of calibration tables for V4 TDC | |
Static Public Member Functions inherited from base::StreamProc | |
static void | SetMarksQueueCapacity (unsigned sz) |
Set markers queue capacity. | |
static void | SetBufsQueueCapacity (unsigned sz) |
Set buffers queue capacity. | |
Protected Member Functions | |
virtual bool | doTriggerSelection () const |
Returns true when processor used to select trigger signal TDC not yet able to perform trigger selection. | |
virtual void | AppendTrbSync (uint32_t syncid) |
Method will be called by TRB processor if SYNC message was found One should change 4 first bytes in the last buffer in the queue. | |
virtual double | MaximumDisorderTm () const |
This is maximum disorder time for TDC messages TODO: derive this value from sub-items. | |
bool | DoBufferScan (const base::Buffer &buf, bool isfirst) |
Scan all messages, find reference signals Major data analysis method. | |
bool | DoBuffer4Scan (const base::Buffer &buf, bool isfirst) |
Scan all messages, find reference signals Major data analysis method. | |
double | DoTestToT (int iCh) |
Test ToT. | |
double | DoTestErrors (int iCh) |
Test errors in channel. | |
double | DoTestEdges (int iCh) |
Test edges count. | |
double | DoTestFineTimeH2 (int iCh, base::H2handle h) |
Test fine time. | |
double | DoTestFineTime (double hRebin[], int nBinsRebin, int nEntries) |
Test fine time. | |
virtual void | BeforeFill () |
Reset different values before scan subevent. | |
virtual void | AfterFill (SubProcMap *=0) |
Fill histograms after scan subevent. | |
long | CheckChannelStat (unsigned ch) |
Return number of accumulated statistics for the channel. | |
double | CalibrateChannel (unsigned nch, bool rising, const std::vector< uint32_t > &statistic, std::vector< float > &calibr, bool use_linear=false, bool preliminary=false) |
Calibrate channel. | |
void | CopyCalibration (const std::vector< float > &calibr, base::H1handle hcalibr, unsigned ch=0, base::H2handle h2calibr=0) |
Copy calibration. | |
bool | CalibrateTot (unsigned ch, std::vector< uint32_t > &hist, float &tot_shift, float &tot_dev, float cut=0.) |
Calibrate ToT. | |
bool | CheckPrintError () |
Check if error should be printed. | |
bool | CreateChannelHistograms (unsigned ch) |
create all histograms for the channel | |
double | TestCanCalibrate (bool fillhist=false, std::string *status=nullptr) |
Check if automatic calibration can be performed - enough statistic is accumulated. | |
bool | PerformAutoCalibrate () |
Perform automatic calibration of channels. | |
void | ClearChannelStat (unsigned ch) |
Clear channel statistic used for calibrations. | |
float | ExtractCalibr (const std::vector< float > &func, unsigned bin) |
Extract calibration value. | |
float | ExtractCalibrDirect (const std::vector< float > &func, unsigned bin) |
extract calibration value | |
void | CreateV4CalibrTable (unsigned ch, uint32_t *table) |
Create V4 calibration table. | |
void | SetTable (uint32_t *table, unsigned addr, uint32_t value) |
Set V4 table values. | |
void | FindFMinMax (const std::vector< float > &func, int nbin, int &fmin, int &fmax) |
Find min and max values of fine counter in calibration. | |
virtual void | CreateBranch (TTree *) |
Create TTree branch. | |
void | AddError (unsigned code, const char *args,...) |
add new error | |
Protected Member Functions inherited from hadaq::SubProcessor | |
SubProcessor (TrbProcessor *trb, const char *nameprefix, unsigned subid) | |
constructor | |
void | SetNewDataFlag (bool on) |
Set new data flag, used by TrbProcessor. | |
bool | IsNewDataFlag () const |
is new data flag, used by TrbProcessor | |
void | AssignPerBrdHistos (TrbProcessor *trb, unsigned seqid) |
assign overview histograms | |
Protected Member Functions inherited from base::StreamProc | |
StreamProc (const char *name="", unsigned brdid=DummyBrdId, bool basehist=true) | |
Make constructor protected - no way to create base class instance. More... | |
void | SetSynchronisationKind (SyncKind kind=sync_Inter) |
Method indicate if any kind of time-synchronization technique should be applied for the processor. More... | |
void | AddSyncMarker (SyncMarker &marker) |
add sync marker | |
bool | AddTriggerMarker (LocalTimeMarker &marker, double tm_range=0.) |
Add new local trigger. More... | |
GlobalTime_t | LocalToGlobalTime (GlobalTime_t localtm, unsigned *sync_index=0) |
Method converts local time (in ns representation) to global time. More... | |
bool | IsSyncIndexWithInterpolation (unsigned indx) const |
Method return true when sync_index is means interpolation of time. | |
virtual GlobalTime_t | ProvidePotentialFlushTime (GlobalTime_t last_marker) |
Method should return time, which could be flushed from the processor. More... | |
bool | VerifyFlushTime (const base::GlobalTime_t &flush_time) |
Method must ensure that processor scanned such time and can really skip this data. More... | |
unsigned | TestHitTime (const base::GlobalTime_t &hittime, bool normal_hit, bool can_close_event=true) |
Method decides to which trigger window belong hit normal_hit - indicates that time is belong to data, which than can be assigned to output can_close_event - when true, hit time can be used to decide that event is ready. More... | |
template<class EventClass , class MessageClass > | |
void | AddMessage (unsigned indx, EventClass *ev, const MessageClass &msg) |
add new message to event | |
bool | eraseSyncAt (unsigned indx) |
Removes sync at specified position. More... | |
bool | eraseFirstSyncs (unsigned sync_num) |
Remove specified number of syncs. More... | |
Protected Member Functions inherited from base::Processor | |
Processor (const char *name="", unsigned brdid=DummyBrdId) | |
Make constructor protected - no way to create base class instance. More... | |
void | SetBoardId (unsigned id) |
Set board id. | |
void | SetPathPrefix (const std::string &prefix) |
Set path prefix for histogramsid. | |
void | SetSubPrefix (const char *subname="", int indx=-1, const char *subname2="", int indx2=-1) |
Set subprefix for histograms and conditions. More... | |
void | SetSubPrefix2 (const char *subname="", int indx=-1, const char *subname2="", int indx2=-1) |
Set subprefix for histograms and conditions, index uses 2 symbols. More... | |
H1handle | MakeH1 (const char *name, const char *title, int nbins, double left, double right, const char *xtitle=0) |
Adds processor prefix to histogram name and calls base::ProcMgr::MakeH1 method. | |
void | FillH1 (H1handle h1, double x, double weight=1.) |
Fill 1-D histogram. | |
void | FastFillH1 (H1handle h1, int x, double weight=1.) |
Fast fill 1-D histogram. More... | |
double | GetH1Content (H1handle h1, int nbin) |
Get bin content of 1-D histogram. | |
void | SetH1Content (H1handle h1, int nbin, double v=0.) |
Set bin content of 1-D histogram. | |
int | GetH1NBins (H1handle h1) |
Get bins numbers for 1-D histogram. | |
void | ClearH1 (H1handle h1) |
Clear 1-D histogram. | |
void | CopyH1 (H1handle tgt, H1handle src) |
Copy 1-D histogram from src to tgt. | |
void | SetH1Title (H1handle h1, const char *title) |
Set 1-D histogram title. | |
H2handle | MakeH2 (const char *name, const char *title, int nbins1, double left1, double right1, int nbins2, double left2, double right2, const char *options=0) |
Adds processor prefix to histogram name and calls base::ProcMgr::MakeH2 method. | |
void | FillH2 (H1handle h2, double x, double y, double weight=1.) |
Fill 2-D histogram. | |
void | FastFillH2 (H1handle h2, int x, int y) |
Fast fill 2-D histogram. More... | |
void | SetH2Content (H2handle h2, int nbin1, int nbin2, double v=0.) |
Set bin content of 2-D histogram. | |
double | GetH2Content (H2handle h2, int bin1, int bin2) |
Get bin content of 2-D histogram. | |
bool | GetH2NBins (H2handle h2, int &nBins1, int &nBins2) |
Get number of bins for 2-D histogram. | |
void | ClearH2 (base::H2handle h2) |
Clear 2-D histogram. | |
void | SetH2Title (H2handle h2, const char *title) |
Change title of 2-D histogram. | |
C1handle | MakeC1 (const char *name, double left, double right, H1handle h1=0) |
Create condition. | |
void | ChangeC1 (C1handle c1, double left, double right) |
Change condition limits. | |
int | TestC1 (C1handle c1, double value, double *dist=0) |
Test condition. | |
double | GetC1Limit (C1handle c1, bool isleft=true) |
Get condition limit. | |
virtual bool | RegisterObject (TObject *tobj, const char *subfolder=0) |
Register object. | |
Protected Attributes | |
bool | fVersion4 {false} |
if version4 TDC is analyzed | |
TdcIterator | fIter1 |
! iterator for the first scan | |
TdcIterator | fIter2 |
! iterator for the second scan | |
base::H1handle | fChannels |
! histogram with messages per channel | |
base::H1handle | fHits |
! histogram with hits per channel | |
base::H1handle | fErrors |
! histogram with errors per channel | |
base::H1handle | fUndHits |
! histogram with undetected hits per channel | |
base::H1handle | fCorrHits |
! histogram with corrected hits per channel | |
base::H1handle | fMsgsKind |
! messages kinds | |
base::H2handle | fAllFine |
! histogram of all fine counters | |
base::H2handle | fAllCoarse |
! histogram of all coarse counters | |
base::H2handle | fRisingCalibr |
! histogram with all rising calibrations | |
base::H2handle | fFallingCalibr |
! histogram all rising calibrations | |
base::H1handle | fHitsRate |
! histogram with data rate | |
base::H1handle | fTotShifts |
! histogram with all TOT shifts | |
base::H1handle | fTempDistr |
! temperature distribution | |
base::H2handle | fhRaisingFineCalibr |
! histogram of calibrated raising fine counter vs channel | |
base::H2handle | fhTotVsChannel |
! histogram of ToT vs channel | |
base::H1handle | fhTotMoreCounter |
! histogram of counter with ToT >20 ns per channel | |
base::H1handle | fhTotMinusCounter |
! histogram of counter with ToT < 0 ns per channel | |
unsigned | fHldId |
! sequence number of processor in HLD | |
base::H1handle * | fHitsPerHld |
! hits per TDC - from HLD | |
base::H1handle * | fErrPerHld |
! errors per TDC - from HLD | |
base::H2handle * | fChHitsPerHld |
! hits per TDC channel - from HLD | |
base::H2handle * | fChErrPerHld |
! errors per TDC channel - from HLD | |
base::H2handle * | fChCorrPerHld |
! corrections per TDC channel - from HLD | |
base::H2handle * | fQaFinePerHld |
! QA fine counter per TDC channel - from HLD | |
base::H2handle * | fQaToTPerHld |
! QA ToT per TDC channel - from HLD | |
base::H2handle * | fQaEdgesPerHld |
! QA Edges per TDC channel - from HLD | |
base::H2handle * | fQaErrorsPerHld |
! QA Errors per TDC channel - from HLD | |
unsigned | fNumChannels |
! number of channels | |
unsigned | fNumFineBins |
! number of fine-counter bins | |
std::vector< ChannelRec > | fCh |
! full description for each channels | |
float | fCalibrTemp |
! temperature when calibration was performed | |
float | fCalibrTempCoef |
! coefficient to scale calibration curve (real value -1) | |
bool | fCalibrUseTemp |
! when true, use temperature adjustment for calibration | |
unsigned | fCalibrTriggerMask |
! mask with enabled for trigger events ids, default all | |
bool | fToTdflt |
! indicate if default setting used, which can be adjusted after seeing first event | |
double | fToTvalue |
! ToT of 0xd trigger | |
double | fToThmin |
! histogram min | |
double | fToThmax |
! histogram max | |
double | fTotUpperLimit |
! upper limit for ToT range check | |
int | fTotStatLimit |
! how much statistic required for ToT calibration | |
double | fTotRMSLimit |
! maximal RMS valus for complete calibration | |
long | fCalibrAmount |
! current accumulated calibr data | |
double | fCalibrProgress |
! current progress in calibration | |
std::string | fCalibrStatus |
! calibration status | |
double | fCalibrQuality |
! calibration quality: | |
float | fTempCorrection |
! correction for temperature sensor | |
float | fCurrentTemp |
! current measured temperature | |
unsigned | fDesignId |
! design ID, taken from status message | |
double | fCalibrTempSum0 |
! sum0 used to check temperature during calibration | |
double | fCalibrTempSum1 |
! sum1 used to check temperature during calibration | |
double | fCalibrTempSum2 |
! sum2 used to check temperature during calibration | |
std::vector< hadaq::TdcMessageExt > | fDummyVect |
! dummy empty vector | |
std::vector< hadaq::TdcMessageExt > * | pStoreVect |
! pointer on store vector | |
std::vector< hadaq::MessageFloat > | fDummyFloat |
! vector with compact messages | |
std::vector< hadaq::MessageFloat > * | pStoreFloat |
! pointer on store vector | |
std::vector< hadaq::MessageDouble > | fDummyDouble |
! vector with compact messages | |
std::vector< hadaq::MessageDouble > * | pStoreDouble |
! pointer on store vector | |
unsigned | fEdgeMask |
EdgeMask defines how TDC calibration for falling edge is performed 0,1 - use only rising edge, falling edge is ignore 2 - falling edge enabled and fully independent from rising edge 3 - falling edge enabled and uses calibration from rising edge 4 - falling edge enabled and common statistic is used for calibration. More... | |
long | fCalibrCounts |
! indicates minimal number of counts in each channel required to produce calibration | |
bool | fAutoCalibr |
! when true, perform auto calibration | |
bool | fAutoCalibrOnce |
! when true, auto calibration will be executed once | |
int | fAllCalibrMode |
! use all data for calibrations, used with DABC -1 - disabled, 0 - off, 1 - on | |
int | fAllTotMode |
! ToT calibration mode -1 - disabled, 0 - accumulate stat for channels, 1 - accumulate stat for ToT | |
int | fAllDTrigCnt |
! number of 0xD triggers | |
std::string | fWriteCalibr |
! file which should be written at the end of data processing | |
bool | fWriteEveryTime |
! write calibration every time automatic calibration performed | |
bool | fUseLinear |
! create linear calibrations for the channel | |
int | fLinearNumPoints |
! number of linear points | |
bool | fEveryEpoch |
! if true, each hit must be supplied with epoch | |
bool | fUseLastHit |
! if true, last hit will be used in reference calculations | |
bool | fUseNativeTrigger |
! if true, TRB3 trigger is used as event time | |
bool | fCompensateEpochReset |
! if true, compensates epoch reset | |
unsigned | fCompensateEpochCounter |
! counter to compensate epoch reset | |
bool | fCh0Enabled |
! when true, channel 0 stored in output event | |
TdcMessage | fLastTdcHeader |
! copy of last TDC header | |
TdcMessage | fLastTdcTrailer |
! copy of last TDC trailer | |
long | fRateCnt |
! counter used for rate calculation | |
double | fLastRateTm |
! last ch0 time when rate was calculated | |
unsigned | fSkipTdcMessages |
! number of first messages, skipped from analysis | |
bool | f400Mhz |
! is 400Mhz mode (debug) | |
double | fCustomMhz |
! new design Mhz | |
std::vector< std::string > | fCalibrLog |
! error log messages during calibration | |
Protected Attributes inherited from hadaq::SubProcessor | |
TrbProcessor * | fTrb |
! pointer on TRB processor | |
unsigned | fSeqeunceId |
! sequence number of processor in TRB | |
bool | fIsTDC |
! indicate when it is TDC, to avoid dynamic_cast | |
base::H1handle * | fMsgPerBrd |
! messages per board - from TRB | |
base::H1handle * | fErrPerBrd |
! errors per board - from TRB | |
base::H1handle * | fHitsPerBrd |
! data hits per board - from TRB | |
base::H2handle * | fCalHitsPerBrd |
! calibration hits per board - from TRB | |
base::H2handle * | fToTPerBrd |
! ToT per board - from TRB | |
bool | fNewDataFlag |
! flag used by TRB processor to indicate if new data was added | |
bool | fPrintRawData |
! if true, raw data will be printed | |
bool | fCrossProcess |
! if true, AfterFill will be called by Trb processor | |
Protected Attributes inherited from base::StreamProc | |
BuffersQueue | fQueue |
! buffers queue | |
unsigned | fQueueScanIndex |
index of next buffer which should be scanned | |
unsigned | fQueueScanIndexTm |
index of buffer to scan and set correct times of the buffer head | |
AnalysisKind | fAnalysisKind |
defines that processor is doing | |
SyncKind | fSynchronisationKind |
kind of synchronization | |
SyncMarksQueue | fSyncs |
list of sync markers | |
unsigned | fSyncScanIndex |
sync scan index, indicate number of syncs which can really be used for synchronization | |
bool | fSyncFlag |
boolean, used in sync adjustment procedure | |
LocalMarkersQueue | fLocalMarks |
queue with local markers | |
double | fTriggerAcceptMaring |
time margin (in local time) to accept new trigger | |
GlobalTime_t | fLastLocalTriggerTm |
time of last local trigger | |
GlobalMarksQueue | fGlobalMarks |
list of global triggers in work | |
unsigned | fGlobalTrigScanIndex |
index with first trigger which is not yet ready | |
unsigned | fGlobalTrigRightIndex |
temporary value, used during second buffers scan | |
bool | fTimeSorting |
defines if time sorting should be used for the messages | |
base::H1handle | fTriggerTm |
! histogram with time relative to the trigger | |
base::H1handle | fMultipl |
! histogram of event multiplicity | |
base::C1handle | fTriggerWindow |
window used for data selection | |
Protected Attributes inherited from base::Processor | |
std::string | fName |
processor name, used for event naming | |
unsigned | fID |
identifier, used mostly for debugging | |
ProcMgr * | fMgr |
direct pointer on manager | |
std::string | fPathPrefix |
histogram path prefix, used for histogram folder name | |
std::string | fPrefix |
prefix, used for histogram names | |
std::string | fSubPrefixD |
sub-prefix for histogram directory | |
std::string | fSubPrefixN |
sub-prefix for histogram names | |
int | fHistFilling |
level of histogram filling | |
unsigned | fStoreKind |
if >0, store will be enabled for processor | |
bool | fIntHistFormat |
if true, internal histogram format is used | |
Static Protected Attributes | |
static unsigned | gNumFineBins = FineCounterBins |
! default value for number of bins in histograms for fine bins | |
static unsigned | gTotRange = 100 |
! default range for TOT histogram | |
static unsigned | gHist2dReduce = 10 |
! reduce factor for points in 2D histogram | |
static unsigned | gErrorMask = 0xffffffffU |
! mask for errors to display | |
static bool | gAllHistos = false |
! when true, all histos for all channels created simultaneously | |
static double | gTrigDWindowLow = 0 |
! low limit of time stamps for 0xD trigger used for calibration | |
static double | gTrigDWindowHigh = 0 |
! high limit of time stamps for 0xD trigger used for calibration | |
static bool | gUseDTrigForRef = false |
! when true, use special triggers for ref calculations | |
static bool | gUseAsDTrig = false |
! when true, all events are analyzed as 0xD trigger | |
static int | gHadesMonitorInterval = -111 |
! how often special HADES monitoring procedure called | |
static int | gTotStatLimit = 100 |
! how much statistic required for ToT calibration | |
static double | gTotRMSLimit = 0.15 |
! allowed RMS value | |
static int | gDefaultLinearNumPoints = 2 |
! number of points when linear calibration is used | |
static bool | gIgnoreCalibrMsgs = false |
! ignore calibration messages | |
static bool | gStoreCalibrTables = false |
! when enabled, store calibration tables for v4 TDC | |
Static Protected Attributes inherited from base::StreamProc | |
static unsigned | fMarksQueueCapacity = 10000 |
maximum number of items in the marksers queue | |
static unsigned | fBufsQueueCapacity = 100 |
maximum number of items in the queue | |
Friends | |
class | TrbProcessor |
Additional Inherited Members | |
Protected Types inherited from base::StreamProc | |
typedef RecordsQueue< base::Buffer, false > | BuffersQueue |
buffers queue | |
typedef RecordsQueue< base::SyncMarker, false > | SyncMarksQueue |
sync markers queue | |
Protected Types inherited from base::Processor | |
enum | { DummyBrdId = 0xffffffff } |
TDC processor.
This is specialized sub-processor for FPGA-TDC. Normally it should be used together with TrbProcessor, which the only can provide data Following levels of histograms filling are working
hadaq::TdcProcessor::TdcProcessor | ( | TrbProcessor * | trb, |
unsigned | tdcid, | ||
unsigned | numchannels = MaxNumTdcChannels , |
||
unsigned | edge_mask = 1 , |
||
bool | ver4 = false |
||
) |
constructor
trb | - instance of hadaq::TrbProcessor |
tdcid | - TDC id |
numchannels | - number of channels |
edge_mask | - edges mask, see hadaq::TdcProcessor::EEdgesMasks |
ver4 | - is TDC V4 should be expected |
<! sequence number of processor in HLD
<! errors per TDC channel - from HLD
<! corrections per TDC channel - from HLD
<! QA fine counter per TDC channel - from HLD
<! QA ToT per TDC channel - from HLD
<! QA Edges per TDC channel - from HLD
<! QA Errors per TDC channel - from HLD
void hadaq::TdcProcessor::CreateHistograms | ( | int * | arr = 0 | ) |
Create basic histograms for specified channels.
If array not specified, histograms for all channels are created. In array last element must be 0 or out of channel range. Call should be like: int channels[] = {33, 34, 35, 36, 0}; tdc->CreateHistograms( channels );
bool hadaq::TdcProcessor::EnableRefCondPrint | ( | unsigned | ch, |
double | left = -10 , |
||
double | right = 10 , |
||
int | numprint = 0 |
||
) |
Enable print of TDC data when time difference to ref channel belong to specified interval Work ONLY when reference channel 0 is used.
One could set maximum number of events to print In any case one should first set reference channel
|
inline |
Access value of temperature during calibration.
Used to adjust all kind of calibrations afterwards
|
static |
Set default values for TDC creation.
numfinebins | - maximal value of fine counter bins, used for all histograms and calibrations, default 600 |
totrange | - time in ns for ToT histograms, default 100 |
hist2dreduced | - reducing factor on some 2D histograms, default 10 - means one bin instead 10 ns of ToT |
bool hadaq::TdcProcessor::SetDoubleRefChannel | ( | unsigned | ch1, |
unsigned | ch2, | ||
int | npx = 200 , |
||
double | xmin = -10. , |
||
double | xmax = 10. , |
||
int | npy = 200 , |
||
double | ymin = -10. , |
||
double | ymax = 10. |
||
) |
Configure double-reference histogram Required that for both channels references are specified via SetRefChannel() command.
If ch2 > 1000, than channel from other TDC can be used. tdcid = (ch2 - 1000) / 1000
void hadaq::TdcProcessor::SetRefChannel | ( | unsigned | ch, |
unsigned | refch, | ||
unsigned | reftdc = 0xffff , |
||
int | npoints = 5000 , |
||
double | left = -10. , |
||
double | right = 10. , |
||
bool | twodim = false |
||
) |
Set reference signal for the TDC channel ch.
ch | channel for which reference histogram will be created |
refch | specifies number of reference channel |
reftdc | specifies tdc id, used for ref channel. default (0xffff) same TDC will be used |
npoints | number of points in ref histogram |
left | left limit of histogram |
right | right limit of histogram |
twodim | if extra two dimensional histograms should be created If redtdc contains 0x70000 (like 0x7c010), than direct difference without channel 0 will be calculated To be able use other TDCs, one should enable TTrbProcessor::SetCrossProcess(true); If left-right range are specified, ref histograms are created. If twodim==true, 2-D histogram which will accumulate correlation between time difference to ref channel and:
|
void hadaq::TdcProcessor::SetRefTmds | ( | unsigned | ch, |
unsigned | refch, | ||
int | npoints, | ||
double | left, | ||
double | right | ||
) |
Set reference signal for time extracted from v4 TMDS message.
ch | configured channel |
refch | reference channel |
npoints | number of points in ref histogram |
left | left limit of histogram |
right | right limit of histogram |
|
static |
Configure ToT calibration parameters.
minstat | - minimal number of counts to make ToT calibration, default 100 |
rms | - maximal allowed RMS for ToT histogram in ns, default 0.15 |
|
protected |
EdgeMask defines how TDC calibration for falling edge is performed 0,1 - use only rising edge, falling edge is ignore 2 - falling edge enabled and fully independent from rising edge 3 - falling edge enabled and uses calibration from rising edge 4 - falling edge enabled and common statistic is used for calibration.
! which channels to analyze, analyzes trailing edges when more than 1