diff --git a/src/THcAerogel.cxx b/src/THcAerogel.cxx
index 9dec9751bcc30872aca378a609414bf3d4284263..0cdd682e5223373a8580b6793fac4af0463f3c4e 100644
--- a/src/THcAerogel.cxx
+++ b/src/THcAerogel.cxx
@@ -53,6 +53,7 @@ THcAerogel::THcAerogel( ) :
   frPosAdcPed          = NULL;
   frPosAdcPulseInt     = NULL;
   frPosAdcPulseAmp     = NULL;
+  frPosAdcPulseTime    = NULL;
   frNegAdcPedRaw       = NULL;
   frNegAdcPulseIntRaw  = NULL;
   frNegAdcPulseAmpRaw  = NULL;
@@ -60,6 +61,7 @@ THcAerogel::THcAerogel( ) :
   frNegAdcPed          = NULL;
   frNegAdcPulseInt     = NULL;
   frNegAdcPulseAmp     = NULL;
+  frNegAdcPulseTime    = NULL;
   fPosAdcErrorFlag     = NULL;
   fNegAdcErrorFlag     = NULL;
 
@@ -84,6 +86,7 @@ THcAerogel::~THcAerogel()
   delete frPosAdcPed;          frPosAdcPed          = NULL;
   delete frPosAdcPulseInt;     frPosAdcPulseInt     = NULL;
   delete frPosAdcPulseAmp;     frPosAdcPulseAmp     = NULL;
+  delete frPosAdcPulseTime;    frPosAdcPulseTime    = NULL;
   delete frNegAdcPedRaw;       frNegAdcPedRaw       = NULL;
   delete frNegAdcPulseIntRaw;  frNegAdcPulseIntRaw  = NULL;
   delete frNegAdcPulseAmpRaw;  frNegAdcPulseAmpRaw  = NULL;
@@ -91,6 +94,7 @@ THcAerogel::~THcAerogel()
   delete frNegAdcPed;          frNegAdcPed          = NULL;
   delete frNegAdcPulseInt;     frNegAdcPulseInt     = NULL;
   delete frNegAdcPulseAmp;     frNegAdcPulseAmp     = NULL;
+  delete frNegAdcPulseTime;    frNegAdcPulseTime    = NULL;
   delete fPosAdcErrorFlag;     fPosAdcErrorFlag     = NULL;
   delete fNegAdcErrorFlag;     fNegAdcErrorFlag     = NULL;
 
@@ -240,6 +244,7 @@ Int_t THcAerogel::ReadDatabase( const TDatime& date )
   frPosAdcPed          = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   frPosAdcPulseInt     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   frPosAdcPulseAmp     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frPosAdcPulseTime    = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   frNegAdcPedRaw       = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   frNegAdcPulseIntRaw  = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   frNegAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
@@ -247,6 +252,7 @@ Int_t THcAerogel::ReadDatabase( const TDatime& date )
   frNegAdcPed          = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   frNegAdcPulseInt     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   frNegAdcPulseAmp     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPulseTime    = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   fPosAdcErrorFlag     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
   fNegAdcErrorFlag     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
 
@@ -368,6 +374,7 @@ Int_t THcAerogel::DefineVariables( EMode mode )
       {"posAdcPed",          "Positive ADC pedestals",            "frPosAdcPed.THcSignalHit.GetData()"},
       {"posAdcPulseInt",     "Positive ADC pulse integrals",      "frPosAdcPulseInt.THcSignalHit.GetData()"},
       {"posAdcPulseAmp",     "Positive ADC pulse amplitudes",     "frPosAdcPulseAmp.THcSignalHit.GetData()"},
+      {"posAdcPulseTime",    "Positive ADC pulse times",          "frPosAdcPulseTime.THcSignalHit.GetData()"},
 
       {"negAdcPedRaw",       "Negative Raw ADC pedestals",        "frNegAdcPedRaw.THcSignalHit.GetData()"},
       {"negAdcPulseIntRaw",  "Negative Raw ADC pulse integrals",  "frNegAdcPulseIntRaw.THcSignalHit.GetData()"},
@@ -376,6 +383,7 @@ Int_t THcAerogel::DefineVariables( EMode mode )
       {"negAdcPed",          "Negative ADC pedestals",            "frNegAdcPed.THcSignalHit.GetData()"},
       {"negAdcPulseInt",     "Negative ADC pulse integrals",      "frNegAdcPulseInt.THcSignalHit.GetData()"},
       {"negAdcPulseAmp",     "Negative ADC pulse amplitudes",     "frNegAdcPulseAmp.THcSignalHit.GetData()"},
+      {"negAdcPulseTime",    "Negative ADC pulse times",          "frNegAdcPulseTime.THcSignalHit.GetData()"},
       { 0 }
     };
     DefineVarsFromList( vars, mode);
@@ -471,6 +479,7 @@ void THcAerogel::Clear(Option_t* opt)
   frPosAdcPed->Clear();
   frPosAdcPulseInt->Clear();
   frPosAdcPulseAmp->Clear();
+  frPosAdcPulseTime->Clear();
 
   frNegAdcPedRaw->Clear();
   frNegAdcPulseIntRaw->Clear();
@@ -479,6 +488,7 @@ void THcAerogel::Clear(Option_t* opt)
   frNegAdcPed->Clear();
   frNegAdcPulseInt->Clear();
   frNegAdcPulseAmp->Clear();
+  frNegAdcPulseTime->Clear();
 
   fPosAdcErrorFlag->Clear();
   fNegAdcErrorFlag->Clear();
@@ -584,6 +594,7 @@ Int_t THcAerogel::Decode( const THaEvData& evdata )
       ((THcSignalHit*) frPosAdcPulseAmp->ConstructedAt(nrPosAdcHits))->Set(npmt, rawPosAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frPosAdcPulseTimeRaw->ConstructedAt(nrPosAdcHits))->Set(npmt, rawPosAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frPosAdcPulseTime->ConstructedAt(nrPosAdcHits))->Set(npmt, rawPosAdcHit.GetPulseTime(thit));
 
       if (rawPosAdcHit.GetPulseAmpRaw(thit) > 0)  ((THcSignalHit*) fPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(npmt, 0);
       if (rawPosAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) fPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(npmt, 1);
@@ -605,6 +616,7 @@ Int_t THcAerogel::Decode( const THaEvData& evdata )
       ((THcSignalHit*) frNegAdcPulseAmp->ConstructedAt(nrNegAdcHits))->Set(npmt, rawNegAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frNegAdcPulseTimeRaw->ConstructedAt(nrNegAdcHits))->Set(npmt, rawNegAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frNegAdcPulseTime->ConstructedAt(nrNegAdcHits))->Set(npmt, rawNegAdcHit.GetPulseTime(thit));
 
       if (rawNegAdcHit.GetPulseAmpRaw(thit) > 0)  ((THcSignalHit*) fNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(npmt, 0);
       if (rawNegAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) fNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(npmt, 1);
diff --git a/src/THcAerogel.h b/src/THcAerogel.h
index c1a49931a55bd58b6b1eedd54182c3c036370611..55e8a58be449bef8911a5f95376656756e5a42db 100644
--- a/src/THcAerogel.h
+++ b/src/THcAerogel.h
@@ -84,6 +84,7 @@ class THcAerogel : public THaNonTrackingDetector, public THcHitList {
   TClonesArray* frPosAdcPed;
   TClonesArray* frPosAdcPulseInt;
   TClonesArray* frPosAdcPulseAmp;
+  TClonesArray* frPosAdcPulseTime;
   TClonesArray* frNegAdcPedRaw;
   TClonesArray* frNegAdcPulseIntRaw;
   TClonesArray* frNegAdcPulseAmpRaw;
@@ -91,6 +92,7 @@ class THcAerogel : public THaNonTrackingDetector, public THcHitList {
   TClonesArray* frNegAdcPed;
   TClonesArray* frNegAdcPulseInt;
   TClonesArray* frNegAdcPulseAmp;
+  TClonesArray* frNegAdcPulseTime;
   TClonesArray* fPosAdcErrorFlag;
   TClonesArray* fNegAdcErrorFlag;
   // Individual PMT data objects
diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx
index 06c9768214c4156e699107129be424dc340ba2e4..4b8c42fd41814d71da604b7049ae7162f1f717ac 100644
--- a/src/THcCherenkov.cxx
+++ b/src/THcCherenkov.cxx
@@ -52,6 +52,7 @@ THcCherenkov::THcCherenkov( const char* name, const char* description,
   frAdcPed          = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse);
   frAdcPulseInt     = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse);
   frAdcPulseAmp     = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse);
+  frAdcPulseTime    = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse);
   fAdcErrorFlag     = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse);
 
   fNumAdcHits         = vector<Int_t>    (MaxNumCerPmt, 0.0);
@@ -80,6 +81,7 @@ THcCherenkov::THcCherenkov( ) :
   frAdcPed          = NULL;
   frAdcPulseInt     = NULL;
   frAdcPulseAmp     = NULL;
+  frAdcPulseTime    = NULL;
   fAdcErrorFlag     = NULL;
 
   InitArrays();
@@ -96,6 +98,7 @@ THcCherenkov::~THcCherenkov()
   delete frAdcPed;          frAdcPed          = NULL;
   delete frAdcPulseInt;     frAdcPulseInt     = NULL;
   delete frAdcPulseAmp;     frAdcPulseAmp     = NULL;
+  delete frAdcPulseTime;    frAdcPulseTime    = NULL;
   delete fAdcErrorFlag;     fAdcErrorFlag     = NULL;
 
   DeleteArrays();
@@ -251,6 +254,7 @@ Int_t THcCherenkov::DefineVariables( EMode mode )
       {"adcPed",          "ADC pedestals",              "frAdcPed.THcSignalHit.GetData()"},
       {"adcPulseInt",     "ADC pulse integrals",        "frAdcPulseInt.THcSignalHit.GetData()"},
       {"adcPulseAmp",     "ADC pulse amplitudes",       "frAdcPulseAmp.THcSignalHit.GetData()"},
+      {"adcPulseTime",    "ADC pulse times",            "frAdcPulseTime.THcSignalHit.GetData()"},
       { 0 }
     };
     DefineVarsFromList( vars, mode);
@@ -302,6 +306,7 @@ void THcCherenkov::Clear(Option_t* opt)
   frAdcPed->Clear();
   frAdcPulseInt->Clear();
   frAdcPulseAmp->Clear();
+  frAdcPulseTime->Clear();
   fAdcErrorFlag->Clear();
 
   for (UInt_t ielem = 0; ielem < fNumAdcHits.size(); ielem++)
@@ -345,9 +350,9 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata )
 
   while(ihit < fNhits) {
 
-    THcCherenkovHit* hit       = (THcCherenkovHit*) fRawHitList->At(ihit);
-    Int_t            npmt      = hit->fCounter;
-    THcRawAdcHit&    rawAdcHit = hit->GetRawAdcHitPos();
+    THcCherenkovHit* hit         = (THcCherenkovHit*) fRawHitList->At(ihit);
+    Int_t            npmt        = hit->fCounter;
+    THcRawAdcHit&    rawAdcHit   = hit->GetRawAdcHitPos();
 
     for (UInt_t thit = 0; thit < rawAdcHit.GetNPulses(); thit++) {
 
@@ -361,6 +366,7 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata )
       ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(npmt, rawAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frAdcPulseTimeRaw->ConstructedAt(nrAdcHits))->Set(npmt, rawAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frAdcPulseTime->ConstructedAt(nrAdcHits))->Set(npmt, rawAdcHit.GetPulseTime(thit));
 
       if (rawAdcHit.GetPulseAmpRaw(thit) > 0)  ((THcSignalHit*) fAdcErrorFlag->ConstructedAt(nrAdcHits))->Set(npmt, 0);
       if (rawAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) fAdcErrorFlag->ConstructedAt(nrAdcHits))->Set(npmt, 1);
diff --git a/src/THcCherenkov.h b/src/THcCherenkov.h
index bb7145b16beb2cc12de3e653a9fbeb8f64441523..b8f2bdf1a49d1ab191db3609d4de457d61488b11 100644
--- a/src/THcCherenkov.h
+++ b/src/THcCherenkov.h
@@ -101,6 +101,7 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList {
   TClonesArray* frAdcPed;
   TClonesArray* frAdcPulseInt;
   TClonesArray* frAdcPulseAmp;
+  TClonesArray* frAdcPulseTime;
   TClonesArray* fAdcErrorFlag;
 
   void Setup(const char* name, const char* description);
diff --git a/src/THcRawAdcHit.cxx b/src/THcRawAdcHit.cxx
index 60dd6eda5cb9016b32ee0e9aa6a90c300d570408..37b6b8e60e8a1c6dae65ecc4b5d6ac221ccdd20d 100644
--- a/src/THcRawAdcHit.cxx
+++ b/src/THcRawAdcHit.cxx
@@ -179,12 +179,9 @@ Returns 0 if no signal pedestal is set.
 
 
 #include "THcRawAdcHit.h"
-
 #include <stdexcept>
-
 #include "TString.h"
 
-
 THcRawAdcHit::THcRawAdcHit() :
   TObject(),
   fNPedestalSamples(4), fNPeakSamples(9),
@@ -194,32 +191,29 @@ THcRawAdcHit::THcRawAdcHit() :
   fHasMulti(kFALSE), fNPulses(0), fNSamples(0)
 {}
 
-
 THcRawAdcHit& THcRawAdcHit::operator=(const THcRawAdcHit& right) {
   TObject::operator=(right);
 
   if (this != &right) {
     fPed = right.fPed;
     for (UInt_t i=0; i<fMaxNPulses; ++i) {
-      fPulseInt[i] = right.fPulseInt[i];
-      fPulseAmp[i] = right.fPulseAmp[i];
+      fPulseInt[i]  = right.fPulseInt[i];
+      fPulseAmp[i]  = right.fPulseAmp[i];
       fPulseTime[i] = right.fPulseTime[i];
     }
     for (UInt_t i=0; i<fMaxNSamples; ++i) {
       fSample[i] = right.fSample[i];
     }
     fHasMulti = right.fHasMulti;
-    fNPulses = right.fNPulses;
+    fNPulses  = right.fNPulses;
     fNSamples = right.fNSamples;
   }
 
   return *this;
 }
 
-
 THcRawAdcHit::~THcRawAdcHit() {}
 
-
 void THcRawAdcHit::Clear(Option_t* opt) {
   TObject::Clear(opt);
 
@@ -237,7 +231,6 @@ void THcRawAdcHit::Clear(Option_t* opt) {
   fNSamples = 0;
 }
 
-
 void THcRawAdcHit::SetData(Int_t data) {
   if (fNPulses >= fMaxNPulses) {
     throw std::out_of_range(
@@ -248,7 +241,6 @@ void THcRawAdcHit::SetData(Int_t data) {
   ++fNPulses;
 }
 
-
 void THcRawAdcHit::SetSample(Int_t data) {
   if (fNSamples >= fMaxNSamples) {
     throw std::out_of_range(
@@ -259,7 +251,6 @@ void THcRawAdcHit::SetSample(Int_t data) {
   ++fNSamples;
 }
 
-
 void THcRawAdcHit::SetDataTimePedestalPeak(
   Int_t data, Int_t time, Int_t pedestal, Int_t peak
 ) {
@@ -276,7 +267,6 @@ void THcRawAdcHit::SetDataTimePedestalPeak(
   ++fNPulses;
 }
 
-
 Int_t THcRawAdcHit::GetRawData(UInt_t iPulse) const {
   if (iPulse >= fNPulses && iPulse != 0) {
     TString msg = TString::Format(
@@ -293,7 +283,6 @@ Int_t THcRawAdcHit::GetRawData(UInt_t iPulse) const {
   }
 }
 
-
 Double_t THcRawAdcHit::GetAverage(UInt_t iSampleLow, UInt_t iSampleHigh) const {
   if (iSampleHigh >= fNSamples || iSampleLow >= fNSamples) {
     TString msg = TString::Format(
@@ -327,7 +316,6 @@ Int_t THcRawAdcHit::GetIntegral(UInt_t iSampleLow, UInt_t iSampleHigh) const {
   }
 }
 
-
 Double_t THcRawAdcHit::GetData(
   UInt_t iPedLow, UInt_t iPedHigh, UInt_t iIntLow, UInt_t iIntHigh
 ) const {
@@ -336,27 +324,22 @@ Double_t THcRawAdcHit::GetData(
     - GetAverage(iPedHigh, iPedLow) * (iIntHigh - iIntLow + 1);
 }
 
-
 UInt_t THcRawAdcHit::GetNPulses() const {
   return fNPulses;
 }
 
-
 UInt_t THcRawAdcHit::GetNSamples() const {
   return fNSamples;
 }
 
-
 Bool_t THcRawAdcHit::HasMulti() const {
   return fHasMulti;
 }
 
-
 Int_t THcRawAdcHit::GetPedRaw() const {
   return fPed;
 }
 
-
 Int_t THcRawAdcHit::GetPulseIntRaw(UInt_t iPulse) const {
   if (iPulse < fNPulses) {
     return fPulseInt[iPulse];
@@ -373,7 +356,6 @@ Int_t THcRawAdcHit::GetPulseIntRaw(UInt_t iPulse) const {
   }
 }
 
-
 Int_t THcRawAdcHit::GetPulseAmpRaw(UInt_t iPulse) const {
   if (iPulse < fNPulses) {
     return fPulseAmp[iPulse];
@@ -390,7 +372,6 @@ Int_t THcRawAdcHit::GetPulseAmpRaw(UInt_t iPulse) const {
   }
 }
 
-
 Int_t THcRawAdcHit::GetPulseTimeRaw(UInt_t iPulse) const {
   if (iPulse < fNPulses) {
     return fPulseTime[iPulse];
@@ -407,7 +388,6 @@ Int_t THcRawAdcHit::GetPulseTimeRaw(UInt_t iPulse) const {
   }
 }
 
-
 Int_t THcRawAdcHit::GetSampleRaw(UInt_t iSample) const {
   if (iSample < fNSamples) {
     return fSample[iSample];
@@ -421,26 +401,21 @@ Int_t THcRawAdcHit::GetSampleRaw(UInt_t iSample) const {
   }
 }
 
-
 Double_t THcRawAdcHit::GetPed() const {
-  return static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples);
+  return (static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples))*GetAdcTomV();
 }
 
-
 Double_t THcRawAdcHit::GetPulseInt(UInt_t iPulse) const {
-  return static_cast<Double_t>(fPulseInt[iPulse]) - static_cast<Double_t>(fPed)*fPeakPedestalRatio;
+  return (static_cast<Double_t>(fPulseInt[iPulse]) - static_cast<Double_t>(fPed)*fPeakPedestalRatio)*GetAdcTopC();
 }
 
-
 Double_t THcRawAdcHit::GetPulseAmp(UInt_t iPulse) const {
-  return static_cast<Double_t>(fPulseAmp[iPulse]) - static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples);
+  return (static_cast<Double_t>(fPulseAmp[iPulse]) - static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples))*GetAdcTomV();
 }
 
-
-//Int_t THcRawAdcHit::GetPulseTime(UInt_t iPulse) const {
-//  return static_cast<Double_t>(fAdcTime[iPulse]);
-//}
-
+Double_t THcRawAdcHit::GetPulseTime(UInt_t iPulse) const {
+  return (static_cast<Double_t>(fPulseTime[iPulse])*GetAdcTons());
+}
 
 Int_t THcRawAdcHit::GetSampleIntRaw() const {
   Int_t integral = 0;
@@ -452,12 +427,10 @@ Int_t THcRawAdcHit::GetSampleIntRaw() const {
   return integral;
 }
 
-
 Double_t THcRawAdcHit::GetSampleInt() const {
   return static_cast<Double_t>(GetSampleIntRaw()) - GetPed()*static_cast<Double_t>(fNSamples);
 }
 
-
 void THcRawAdcHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) {
   if (NSA < 0 || NSB < 0 || NPED < 0) {
     TString msg = TString::Format(
@@ -471,5 +444,22 @@ void THcRawAdcHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) {
   fPeakPedestalRatio = 1.0*fNPeakSamples/fNPedestalSamples;
 }
 
+// FADC conversion factors
+// Convert pedestal and amplitude to mV
+Double_t THcRawAdcHit::GetAdcTomV() const {
+  // 1000 mV / 4096 ADC channels
+  return (fAdcRange*1000. / fNAdcChan);
+}
+
+// Convert integral to pC
+Double_t THcRawAdcHit::GetAdcTopC() const {
+  // (1 V / 4096 adc channels) * (4 ns time sample / 50 ohms input resistance) = 0.020 pc/channel 
+  return (fAdcRange / fNAdcChan) * (fAdcTimeSample / fAdcImpedence);
+}
+
+// Convert time sub samples to ns
+Double_t THcRawAdcHit::GetAdcTons() const {
+  return fAdcTimeRes;
+}
 
 ClassImp(THcRawAdcHit)
diff --git a/src/THcRawAdcHit.h b/src/THcRawAdcHit.h
index 86c565cf5f3b2f509c07073e2ddd3fa52b75f989..71a5c270230f7f1250cb23035fe3e608b78b1955 100644
--- a/src/THcRawAdcHit.h
+++ b/src/THcRawAdcHit.h
@@ -41,23 +41,33 @@ class THcRawAdcHit : public TObject {
     Double_t GetPed() const;
     Double_t GetPulseInt(UInt_t iPulse=0) const;
     Double_t GetPulseAmp(UInt_t iPulse=0) const;
-    //Int_t GetPulseTime(UInt_t iPulse=0) const;
+    Double_t GetPulseTime(UInt_t iPulse=0) const;
     //Int_t GetSample(UInt_t iSample=0) const;
 
-    Int_t GetSampleIntRaw() const;
+    Int_t    GetSampleIntRaw() const;
     Double_t GetSampleInt() const;
+    Double_t GetAdcTomV() const;
+    Double_t GetAdcTopC() const;
+    Double_t GetAdcTons() const;
 
     void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED);
 
   protected:
-    static const UInt_t fMaxNPulses = 4;
+    static const UInt_t fMaxNPulses  = 4;
     static const UInt_t fMaxNSamples = 511;
+    
+    // FADC conversion factors
+    const Double_t fNAdcChan      = 4096.0; // Number of FADC channels in units of ADC channels
+    const Double_t fAdcRange      = 1.0;    // Dynamic range of FADCs in units of V, // TO-DO: Get fAdcRange from pre-start event
+    const Double_t fAdcImpedence  = 50.0;   // FADC input impedence in units of Ohms
+    const Double_t fAdcTimeSample = 4.0;    // Length of FADC time sample in units of ns
+    const Double_t fAdcTimeRes    = 0.0625; // FADC time resolution in units of ns
 
     Int_t fNPedestalSamples;  // TODO: Get this from prestart event...
     Int_t fNPeakSamples;
     Double_t fPeakPedestalRatio;
     Double_t fSubsampleToTimeFactor;
-
+    
     Int_t fPed;
     Int_t fPulseInt[fMaxNPulses];
     Int_t fPulseAmp[fMaxNPulses];
diff --git a/src/THcScintillatorPlane.cxx b/src/THcScintillatorPlane.cxx
index 6f804ec68b409a6d165971f1222f983040c2ed08..a66064fb8a8c5e3110ff913ec64ddd86d73418b0 100644
--- a/src/THcScintillatorPlane.cxx
+++ b/src/THcScintillatorPlane.cxx
@@ -50,27 +50,29 @@ THcScintillatorPlane::THcScintillatorPlane( const char* name,
   frPosADCPeds = new TClonesArray("THcSignalHit",16);
   frNegADCPeds = new TClonesArray("THcSignalHit",16);
 
-  frPosTdcTimeRaw = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16);
+  frPosTdcTimeRaw      = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPedRaw       = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseIntRaw  = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", 16);
   frPosAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16);
 
-  frPosTdcTime = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPed = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseInt = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseAmp = new TClonesArray("THcSignalHit", 16);
+  frPosTdcTime      = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPed       = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseInt  = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseAmp  = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseTime = new TClonesArray("THcSignalHit", 16);
 
-  frNegTdcTimeRaw = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16);
+  frNegTdcTimeRaw      = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPedRaw       = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseIntRaw  = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", 16);
   frNegAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16);
 
-  frNegTdcTime = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPed = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseInt = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseAmp = new TClonesArray("THcSignalHit", 16);
+  frNegTdcTime      = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPed       = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseInt  = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseAmp  = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseTime = new TClonesArray("THcSignalHit", 16);
 
   fPlaneNum = planenum;
   fTotPlanes = planenum;
@@ -106,6 +108,7 @@ THcScintillatorPlane::~THcScintillatorPlane()
   delete frPosAdcPed;
   delete frPosAdcPulseInt;
   delete frPosAdcPulseAmp;
+  delete frPosAdcPulseTime;
 
   delete frNegTdcTimeRaw;
   delete frNegAdcPedRaw;
@@ -117,6 +120,7 @@ THcScintillatorPlane::~THcScintillatorPlane()
   delete frNegAdcPed;
   delete frNegAdcPulseInt;
   delete frNegAdcPulseAmp;
+  delete frNegAdcPulseTime;
 
   delete [] fPosCenter;
 
@@ -351,6 +355,7 @@ Int_t THcScintillatorPlane::DefineVariables( EMode mode )
       {"posAdcPed",          "List of positive ADC pedestals",             "frPosAdcPed.THcSignalHit.GetData()"},
       {"posAdcPulseInt",     "List of positive ADC pulse integrals.",      "frPosAdcPulseInt.THcSignalHit.GetData()"},
       {"posAdcPulseAmp",     "List of positive ADC pulse amplitudes.",     "frPosAdcPulseAmp.THcSignalHit.GetData()"},
+      {"posAdcPulseTime",    "List of positive ADC pulse times.",          "frPosAdcPulseTime.THcSignalHit.GetData()"},
 
       {"negTdcTimeRaw",      "List of negative raw TDC values.",           "frNegTdcTimeRaw.THcSignalHit.GetData()"},
       {"negAdcPedRaw",       "List of negative raw ADC pedestals",         "frNegAdcPedRaw.THcSignalHit.GetData()"},
@@ -362,6 +367,7 @@ Int_t THcScintillatorPlane::DefineVariables( EMode mode )
       {"negAdcPed",          "List of negative ADC pedestals",             "frNegAdcPed.THcSignalHit.GetData()"},
       {"negAdcPulseInt",     "List of negative ADC pulse integrals.",      "frNegAdcPulseInt.THcSignalHit.GetData()"},
       {"negAdcPulseAmp",     "List of negative ADC pulse amplitudes.",     "frNegAdcPulseAmp.THcSignalHit.GetData()"},
+      {"negAdcPulseTime",    "List of negative ADC pulse times.",          "frNegAdcPulseTime.THcSignalHit.GetData()"},
 
       {"totNumPosAdcHits", "Total Number of Positive ADC Hits",   "fTotNumPosAdcHits"}, // Hodo+ raw ADC multiplicity Int_t
       {"totNumNegAdcHits", "Total Number of Negative ADC Hits",   "fTotNumNegAdcHits"}, // Hodo- raw ADC multiplicity  ""
@@ -454,6 +460,7 @@ void THcScintillatorPlane::Clear( Option_t* )
   frPosAdcPed->Clear();
   frPosAdcPulseInt->Clear();
   frPosAdcPulseAmp->Clear();
+  frPosAdcPulseTime->Clear();
 
   frNegTdcTimeRaw->Clear();
   frNegAdcPedRaw->Clear();
@@ -465,8 +472,7 @@ void THcScintillatorPlane::Clear( Option_t* )
   frNegAdcPed->Clear();
   frNegAdcPulseInt->Clear();
   frNegAdcPulseAmp->Clear();
-
-
+  frNegAdcPulseTime->Clear();
 
   //Clear occupancies
   for (UInt_t ielem = 0; ielem < fNumGoodPosAdcHits.size(); ielem++)
@@ -590,6 +596,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   frPosAdcPed->Clear();
   frPosAdcPulseInt->Clear();
   frPosAdcPulseAmp->Clear();
+  frPosAdcPulseTime->Clear();
 
   frNegTdcTimeRaw->Clear();
   frNegAdcPedRaw->Clear();
@@ -601,6 +608,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   frNegAdcPed->Clear();
   frNegAdcPulseInt->Clear();
   frNegAdcPulseAmp->Clear();
+  frNegAdcPulseTime->Clear();
 
   //stripped
   fNScinHits=0;
@@ -675,6 +683,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       ((THcSignalHit*) frPosAdcPulseAmp->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frPosAdcPulseTimeRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frPosAdcPulseTime->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTime(thit));
 
       if (rawPosAdcHit.GetPulseAmpRaw(thit) > 0)  ((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(padnum, 0);
       if (rawPosAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(padnum, 1);
@@ -695,6 +704,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       ((THcSignalHit*) frNegAdcPulseAmp->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frNegAdcPulseTimeRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frNegAdcPulseTime->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTime(thit));
 
       if (rawNegAdcHit.GetPulseAmpRaw(thit) > 0)  ((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(padnum, 0);
       if (rawNegAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(padnum, 1);
diff --git a/src/THcScintillatorPlane.h b/src/THcScintillatorPlane.h
index a56889b4f14e9139526b4239a6eb57883baea1ff..bc900ed565a4bd07e16efd2c6f5029e1d2b095a9 100644
--- a/src/THcScintillatorPlane.h
+++ b/src/THcScintillatorPlane.h
@@ -89,6 +89,7 @@ class THcScintillatorPlane : public THaSubDetector {
   TClonesArray* frPosAdcPed;
   TClonesArray* frPosAdcPulseInt;
   TClonesArray* frPosAdcPulseAmp;
+  TClonesArray* frPosAdcPulseTime;
 
   TClonesArray* frNegTdcTimeRaw;
   TClonesArray* frNegAdcPedRaw;
@@ -100,6 +101,7 @@ class THcScintillatorPlane : public THaSubDetector {
   TClonesArray* frNegAdcPed;
   TClonesArray* frNegAdcPulseInt;
   TClonesArray* frNegAdcPulseAmp;
+  TClonesArray* frNegAdcPulseTime;
 
   //Hodoscopes Multiplicities
   Int_t fTotNumPosAdcHits;
diff --git a/src/THcShowerArray.cxx b/src/THcShowerArray.cxx
index 007f5df9b5f154b5d07d120dbc9f7ccfcd685cb4..b5bbd8c225770d185eb9b5e9927f9ec5d57f4726 100644
--- a/src/THcShowerArray.cxx
+++ b/src/THcShowerArray.cxx
@@ -41,15 +41,16 @@ THcShowerArray::THcShowerArray( const char* name,
   fADCHits = new TClonesArray("THcSignalHit",100);
   fLayerNum = layernum;
 
-  frAdcPedRaw = new TClonesArray("THcSignalHit", 16);
-  frAdcErrorFlag = new TClonesArray("THcSignalHit", 16);
-  frAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16);
-  frAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16);
+  frAdcPedRaw       = new TClonesArray("THcSignalHit", 16);
+  frAdcErrorFlag    = new TClonesArray("THcSignalHit", 16);
+  frAdcPulseIntRaw  = new TClonesArray("THcSignalHit", 16);
+  frAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", 16);
   frAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16);
 
-  frAdcPed = new TClonesArray("THcSignalHit", 16);
-  frAdcPulseInt = new TClonesArray("THcSignalHit", 16);
-  frAdcPulseAmp = new TClonesArray("THcSignalHit", 16);
+  frAdcPed       = new TClonesArray("THcSignalHit", 16);
+  frAdcPulseInt  = new TClonesArray("THcSignalHit", 16);
+  frAdcPulseAmp  = new TClonesArray("THcSignalHit", 16);
+  frAdcPulseTime = new TClonesArray("THcSignalHit", 16);
 
   fClusterList = new THcShowerClusterList;         // List of hit clusters
 }
@@ -85,6 +86,7 @@ THcShowerArray::~THcShowerArray()
   delete frAdcPed; frAdcPed = NULL;
   delete frAdcPulseInt; frAdcPulseInt = NULL;
   delete frAdcPulseAmp; frAdcPulseAmp = NULL;
+  delete frAdcPulseTime; frAdcPulseTime = NULL;
 
   //  delete [] fA;
   //delete [] fP;
@@ -404,6 +406,7 @@ Int_t THcShowerArray::DefineVariables( EMode mode )
       {"adcPed",          "List of ADC pedestals",             "frAdcPed.THcSignalHit.GetData()"},
       {"adcPulseInt",     "List of ADC pulse integrals.",      "frAdcPulseInt.THcSignalHit.GetData()"},
       {"adcPulseAmp",     "List of ADC pulse amplitudes.",     "frAdcPulseAmp.THcSignalHit.GetData()"},
+      {"adcPulseTime",    "List of ADC pulse times.",          "frAdcPulseTime.THcSignalHit.GetData()"},
       { 0 }
     };
     DefineVarsFromList( vars, mode);
@@ -471,6 +474,7 @@ void THcShowerArray::Clear( Option_t* )
   frAdcPed->Clear();
   frAdcPulseInt->Clear();
   frAdcPulseAmp->Clear();
+  frAdcPulseTime->Clear();
 
   for (UInt_t ielem = 0; ielem < fGoodAdcPed.size(); ielem++) {
     fGoodAdcPulseIntRaw.at(ielem)      = 0.0;
@@ -895,6 +899,7 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   frAdcPed->Clear();
   frAdcPulseInt->Clear();
   frAdcPulseAmp->Clear();
+  frAdcPulseTime->Clear();
 
   for(Int_t i=0;i<fNelem;i++) {
     //fA[i] = 0;
@@ -937,6 +942,8 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frAdcPulseTimeRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frAdcPulseTime->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTime(thit));
+
       if (rawAdcHit.GetPulseAmp(thit)>0&&rawAdcHit.GetPulseIntRaw(thit)>0) {
 	((THcSignalHit*) frAdcErrorFlag->ConstructedAt(nrAdcHits))->Set(padnum,0);
       } else {
diff --git a/src/THcShowerArray.h b/src/THcShowerArray.h
index 0ac6f1a87c440fdfc10ec01d0b45638fe4d5705a..acd12aed063d7fc0c1bef8f2411cd228faa61a69 100644
--- a/src/THcShowerArray.h
+++ b/src/THcShowerArray.h
@@ -193,6 +193,7 @@ protected:
   TClonesArray* frAdcPed;
   TClonesArray* frAdcPulseInt;
   TClonesArray* frAdcPulseAmp;
+  TClonesArray* frAdcPulseTime;
 
   //Quatitites for efficiency calculations.
 
diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx
index 2ae4b91339d681ac38948ac507f711c37d62c34b..3249b2edd4bca2e389721067f2ad09896e63ed6b 100644
--- a/src/THcShowerPlane.cxx
+++ b/src/THcShowerPlane.cxx
@@ -41,27 +41,29 @@ THcShowerPlane::THcShowerPlane( const char* name,
   fPosADCHits = new TClonesArray("THcSignalHit",fNelem);
   fNegADCHits = new TClonesArray("THcSignalHit",fNelem);
 
-  frPosAdcErrorFlag = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16);
-  frPosAdcThreshold = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcErrorFlag    = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPedRaw       = new TClonesArray("THcSignalHit", 16);
+  frPosAdcThreshold    = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseIntRaw  = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", 16);
   frPosAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16);
 
-  frPosAdcPed = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseInt = new TClonesArray("THcSignalHit", 16);
-  frPosAdcPulseAmp = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPed       = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseInt  = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseAmp  = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPulseTime = new TClonesArray("THcSignalHit", 16);
 
-  frNegAdcErrorFlag = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16);
-  frNegAdcThreshold = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcErrorFlag    = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPedRaw       = new TClonesArray("THcSignalHit", 16);
+  frNegAdcThreshold    = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseIntRaw  = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", 16);
   frNegAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16);
 
-  frNegAdcPed = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseInt = new TClonesArray("THcSignalHit", 16);
-  frNegAdcPulseAmp = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPed       = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseInt  = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseAmp  = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPulseTime = new TClonesArray("THcSignalHit", 16);
 
   //#if ROOT_VERSION_CODE < ROOT_VERSION(5,32,0)
   //  fPosADCHitsClass = fPosADCHits->GetClass();
@@ -88,6 +90,7 @@ THcShowerPlane::~THcShowerPlane()
   delete  frPosAdcPed; frPosAdcPed = NULL;
   delete  frPosAdcPulseInt; frPosAdcPulseInt = NULL;
   delete  frPosAdcPulseAmp; frPosAdcPulseAmp = NULL;
+  delete  frPosAdcPulseTime; frPosAdcPulseTime = NULL;
 
   delete  frNegAdcErrorFlag; frNegAdcErrorFlag = NULL;
   delete  frNegAdcPedRaw; frNegAdcPedRaw = NULL;
@@ -99,6 +102,7 @@ THcShowerPlane::~THcShowerPlane()
   delete  frNegAdcPed; frNegAdcPed = NULL;
   delete  frNegAdcPulseInt; frNegAdcPulseInt = NULL;
   delete  frNegAdcPulseAmp; frNegAdcPulseAmp = NULL;
+  delete  frNegAdcPulseTime; frNegAdcPulseTime = NULL;
 
   delete [] fPosPedSum;
   delete [] fPosPedSum2;
@@ -316,6 +320,7 @@ Int_t THcShowerPlane::DefineVariables( EMode mode )
       {"posAdcPed",          "List of positive ADC pedestals",             "frPosAdcPed.THcSignalHit.GetData()"},
       {"posAdcPulseInt",     "List of positive ADC pulse integrals.",      "frPosAdcPulseInt.THcSignalHit.GetData()"},
       {"posAdcPulseAmp",     "List of positive ADC pulse amplitudes.",     "frPosAdcPulseAmp.THcSignalHit.GetData()"},
+      {"posAdcPulseTime",    "List of positive ADC pulse times.",          "frPosAdcPulseTime.THcSignalHit.GetData()"},
 
       {"negAdcPedRaw",       "List of negative raw ADC pedestals",         "frNegAdcPedRaw.THcSignalHit.GetData()"},
       {"negAdcPulseIntRaw",  "List of negative raw ADC pulse integrals.",  "frNegAdcPulseIntRaw.THcSignalHit.GetData()"},
@@ -325,6 +330,7 @@ Int_t THcShowerPlane::DefineVariables( EMode mode )
       {"negAdcPed",          "List of negative ADC pedestals",             "frNegAdcPed.THcSignalHit.GetData()"},
       {"negAdcPulseInt",     "List of negative ADC pulse integrals.",      "frNegAdcPulseInt.THcSignalHit.GetData()"},
       {"negAdcPulseAmp",     "List of negative ADC pulse amplitudes.",     "frNegAdcPulseAmp.THcSignalHit.GetData()"},
+      {"negAdcPulseTime",    "List of negative ADC pulse times.",          "frNegAdcPulseTime.THcSignalHit.GetData()"},
       { 0 }
     };
     DefineVarsFromList( vars, mode);
@@ -403,6 +409,7 @@ void THcShowerPlane::Clear( Option_t* )
   frPosAdcPed->Clear();
   frPosAdcPulseInt->Clear();
   frPosAdcPulseAmp->Clear();
+  frPosAdcPulseTime->Clear();
 
   frNegAdcErrorFlag->Clear();
   frNegAdcPedRaw->Clear();
@@ -414,6 +421,7 @@ void THcShowerPlane::Clear( Option_t* )
   frNegAdcPed->Clear();
   frNegAdcPulseInt->Clear();
   frNegAdcPulseAmp->Clear();
+  frNegAdcPulseTime->Clear();
 
   for (UInt_t ielem = 0; ielem < fGoodPosAdcPed.size(); ielem++) {
     fGoodPosAdcPed.at(ielem)              = 0.0;
@@ -515,6 +523,7 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   frPosAdcPed->Clear();
   frPosAdcPulseInt->Clear();
   frPosAdcPulseAmp->Clear();
+  frPosAdcPulseTime->Clear();
 
   frNegAdcErrorFlag->Clear();
   frNegAdcPedRaw->Clear();
@@ -526,6 +535,7 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   frNegAdcPed->Clear();
   frNegAdcPulseInt->Clear();
   frNegAdcPulseAmp->Clear();
+  frNegAdcPulseTime->Clear();
 
   /*
     for(Int_t i=0;i<fNelem;i++) {
@@ -574,6 +584,8 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       ((THcSignalHit*) frPosAdcPulseAmp->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frPosAdcPulseTimeRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frPosAdcPulseTime->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTime(thit));
+
       if (rawPosAdcHit.GetPulseAmp(thit)>0&&rawPosAdcHit.GetPulseIntRaw(thit)>0) {
 	((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(padnum,0);
       } else {
@@ -597,6 +609,8 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       ((THcSignalHit*) frNegAdcPulseAmp->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frNegAdcPulseTimeRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTimeRaw(thit));
+      ((THcSignalHit*) frNegAdcPulseTime->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTime(thit));
+
       if (rawNegAdcHit.GetPulseAmp(thit)>0&&rawNegAdcHit.GetPulseIntRaw(thit)>0) {
 	((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(padnum,0);
       } else {
diff --git a/src/THcShowerPlane.h b/src/THcShowerPlane.h
index a7952b8145db8ea3f34b92eb6235150c113b560f..19a43c5f2bcd60b2e8e00bbdbc80c6372e032554 100644
--- a/src/THcShowerPlane.h
+++ b/src/THcShowerPlane.h
@@ -205,6 +205,7 @@ protected:
   TClonesArray* frPosAdcPed;
   TClonesArray* frPosAdcPulseInt;
   TClonesArray* frPosAdcPulseAmp;
+  TClonesArray* frPosAdcPulseTime;
 
   TClonesArray* frNegAdcErrorFlag;
   TClonesArray* frNegAdcPedRaw;
@@ -216,6 +217,7 @@ protected:
   TClonesArray* frNegAdcPed;
   TClonesArray* frNegAdcPulseInt;
   TClonesArray* frNegAdcPulseAmp;
+  TClonesArray* frNegAdcPulseTime;
 
   virtual Int_t  ReadDatabase( const TDatime& date );
   virtual Int_t  DefineVariables( EMode mode = kDefine );