Newer
Older
///////////////////////////////////////////////////////////////////////////////
// //
// THcDCLookupTTDConv //
// //
// Upon initialization needs to be given the lookup table for time //
// to distance conversion. //
// //
///////////////////////////////////////////////////////////////////////////////
#include "THcDCLookupTTDConv.h"
ClassImp(THcDCLookupTTDConv)
//______________________________________________________________________________
THcDCLookupTTDConv::THcDCLookupTTDConv(Double_t T0, Double_t MaxDriftDistance,
Double_t BinSize, Int_t NumBins,
Double_t* Table) :
fT0(T0), fMaxDriftDistance(MaxDriftDistance), fBinSize(BinSize),
fNumBins(NumBins)
{
//Normal constructor
fTable = new Double_t[fNumBins];
for(Int_t i=0;i<fNumBins;i++) {
fTable[i] = Table[i];
}
}
//______________________________________________________________________________
THcDCLookupTTDConv::~THcDCLookupTTDConv()
{
// Destructor. Remove variables from global list.
}
//______________________________________________________________________________
Double_t THcDCLookupTTDConv::ConvertTimeToDist(Double_t time)
// Lookup in table
Int_t ib = (time-fT0)/fBinSize;
Double_t frac = 0;
if(ib >= 0 && ib+1 < fNumBins) {
Double_t tfrac = (time - (ib*fBinSize + fT0)) / fBinSize;
frac = fTable[ib]*(1-tfrac) + fTable[ib+1]*tfrac;
} else if (ib+1 >= fNumBins) {
frac = 1.0;
Double_t drift_distance = fMaxDriftDistance * frac;
// Engine subtracts a hdc_card_delay from this. Seems
// to be zero in the PARAM files, bit is it always? Delay implies
// time? Whis is a time subtracted from a distance?
return(drift_distance);
}
////////////////////////////////////////////////////////////////////////////////