Skip to content
Snippets Groups Projects
THcDCLookupTTDConv.cxx 2.06 KiB
Newer Older
  • Learn to ignore specific revisions
  • ///////////////////////////////////////////////////////////////////////////////
    //                                                                           //
    
    // 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)
    
      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);
    }  
    
    
    ////////////////////////////////////////////////////////////////////////////////