00001 00002 #include "TVftxBoardData.h" 00003 00004 void TVftxBoardData::Clear() 00005 { 00006 iTriggerTime = 0; 00007 for( Int_t iChan = 0; iChan < FPGA_TDC_NBCHAN; iChan++) 00008 { 00009 iMultiplicity[iChan] = 0; 00010 for( Int_t iHit = 0; iHit < MaxMult; iHit++) 00011 { 00012 iFineTime[iChan][iHit] = -1; 00013 iCoarseTime[iChan][iHit] = -1; 00014 uFutureBit[iChan][iHit] = 0; 00015 dTimeCorr[iChan][iHit] = -1; 00016 dFineTimeCorr[iChan][iHit] = -1; 00017 } 00018 } 00019 } 00020 Double_t TVftxBoardData::GetCalibratedTime( UInt_t uChan, UInt_t uMult) 00021 { 00022 // Return either the calibrated time 00023 // when possible, otherwise 0 00024 if( uChan < FPGA_TDC_NBCHAN && uMult < MaxMult ) 00025 return dTimeCorr[uChan][uMult]; 00026 else return 0.0; 00027 } 00028 Double_t TVftxBoardData::GetCoarseCorrectedTime( UInt_t uChan, UInt_t uMult) 00029 { 00030 // Return the calibrated time with a correction for coarse counter overflow relative to trigger 00031 // when possible, otherwise 0 00032 if( uChan < FPGA_TDC_NBCHAN && uMult < MaxMult ) 00033 { 00034 Double_t dCoarseCorrectedTime = dTimeCorr[uChan][uMult]; 00035 00036 if( VFTX_COARSE_OVERFLW_CHK < iCoarseTime[ uChan ][ uMult ] - iTriggerTime ) 00037 dCoarseCorrectedTime -= ((TDC_FIFO_COARSE_CT>>TDC_FIFO_COARSE_CT_SHIFT)+1)*(Double_t)CLOCK_TIME; 00038 if( iCoarseTime[ uChan ][ uMult ] - iTriggerTime < -1*VFTX_COARSE_OVERFLW_CHK ) 00039 dCoarseCorrectedTime += ((TDC_FIFO_COARSE_CT>>TDC_FIFO_COARSE_CT_SHIFT)+1)*(Double_t)CLOCK_TIME; 00040 00041 return dCoarseCorrectedTime; 00042 } 00043 else return 0.0; 00044 }