diff --git a/src/THcAerogel.cxx b/src/THcAerogel.cxx
index 9417c162e665b886ab94e4cc4521c00733d82a36..0381a755b548a20c28dfbf86312c97be51b59578 100644
--- a/src/THcAerogel.cxx
+++ b/src/THcAerogel.cxx
@@ -26,6 +26,7 @@ configurable.
 #include "TMath.h"
 
 #include "THaTrackProj.h"
+#include "THcRawAdcHit.h"
 
 #include <cstring>
 #include <cstdio>
@@ -36,7 +37,7 @@ using namespace std;
 
 //_____________________________________________________________________________
 THcAerogel::THcAerogel( const char* name, const char* description,
-				  THaApparatus* apparatus ) :
+                        THaApparatus* apparatus ) :
   THaNonTrackingDetector(name,description,apparatus)
 {
   // Normal constructor with name and description
@@ -45,6 +46,22 @@ THcAerogel::THcAerogel( const char* name, const char* description,
   fPosADCHits = new TClonesArray("THcSignalHit",16);
   fNegADCHits = new TClonesArray("THcSignalHit",16);
 
+  frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frPosAdcPed = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
+  frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frNegAdcPed = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
   InitArrays();
 
 //  fTrackProj = new TClonesArray( "THaTrackProj", 5 );
@@ -60,6 +77,22 @@ THcAerogel::THcAerogel( ) :
   fPosADCHits = NULL;
   fNegADCHits = NULL;
 
+  frPosAdcPedRaw = NULL;
+  frPosAdcPeakIntRaw = NULL;
+  frPosAdcPeakAmpRaw = NULL;
+
+  frPosAdcPed = NULL;
+  frPosAdcPeakInt = NULL;
+  frPosAdcPeakAmp = NULL;
+
+  frNegAdcPedRaw = NULL;
+  frNegAdcPeakIntRaw = NULL;
+  frNegAdcPeakAmpRaw = NULL;
+
+  frNegAdcPed = NULL;
+  frNegAdcPeakInt = NULL;
+  frNegAdcPeakAmp = NULL;
+
   InitArrays();
 
 }
@@ -74,6 +107,22 @@ THcAerogel::~THcAerogel()
   delete fNegTDCHits; fNegTDCHits = NULL;
   delete fPosADCHits; fPosADCHits = NULL;
   delete fNegADCHits; fNegADCHits = NULL;
+
+  delete frPosAdcPedRaw; frPosAdcPedRaw = NULL;
+  delete frPosAdcPeakIntRaw; frPosAdcPeakIntRaw = NULL;
+  delete frPosAdcPeakAmpRaw; frPosAdcPeakAmpRaw = NULL;
+
+  delete frPosAdcPed; frPosAdcPed = NULL;
+  delete frPosAdcPeakInt; frPosAdcPeakInt = NULL;
+  delete frPosAdcPeakAmp; frPosAdcPeakAmp = NULL;
+
+  delete frNegAdcPedRaw; frNegAdcPedRaw = NULL;
+  delete frNegAdcPeakIntRaw; frNegAdcPeakIntRaw = NULL;
+  delete frNegAdcPeakAmpRaw; frNegAdcPeakAmpRaw = NULL;
+
+  delete frNegAdcPed; frNegAdcPed = NULL;
+  delete frNegAdcPeakInt; frNegAdcPeakInt = NULL;
+  delete frNegAdcPeakAmp; frNegAdcPeakAmp = NULL;
 }
 
 //_____________________________________________________________________________
@@ -257,6 +306,26 @@ Int_t THcAerogel::DefineVariables( EMode mode )
     {"ntdc_pos_hits", "Number of Positive Tube Hits", "fNTDCPosHits"},
     {"ntdc_neg_hits", "Number of Negative Tube Hits", "fNTDCNegHits"},
     {"ngood_hits", "Total number of good hits", "fNGoodHits"},
+
+    {"posAdcCounter",    "List of positive ADC counter numbers.",     "frPosAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+    {"negAdcCounter",    "List of negative ADC counter numbers.",     "frNegAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+
+    {"posAdcPedRaw",     "List of Positive raw ADC pedestals",        "frPosAdcPedRaw.THcSignalHit.GetData()"},
+    {"posAdcPeakIntRaw", "List of Positive raw ADC peak integrals.",  "frPosAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"posAdcPeakAmpRaw", "List of Positive raw ADC peak amplitudes.", "frPosAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"posAdcPed",        "List of Positive ADC pedestals",            "frPosAdcPed.THcSignalHit.GetData()"},
+    {"posAdcPeakInt",    "List of Positive ADC peak integrals.",      "frPosAdcPeakInt.THcSignalHit.GetData()"},
+    {"posAdcPeakAmp",    "List of Positive ADC peak amplitudes.",     "frPosAdcPeakAmp.THcSignalHit.GetData()"},
+
+    {"negAdcPedRaw",     "List of Negative raw ADC pedestals",        "frNegAdcPedRaw.THcSignalHit.GetData()"},
+    {"negAdcPeakIntRaw", "List of Negative raw ADC peak integrals.",  "frNegAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"negAdcPeakAmpRaw", "List of Negative raw ADC peak amplitudes.", "frNegAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"negAdcPed",        "List of Negative ADC pedestals",            "frNegAdcPed.THcSignalHit.GetData()"},
+    {"negAdcPeakInt",    "List of Negative ADC peak integrals.",      "frNegAdcPeakInt.THcSignalHit.GetData()"},
+    {"negAdcPeakAmp",    "List of Negative ADC peak amplitudes.",     "frNegAdcPeakAmp.THcSignalHit.GetData()"},
+
     { 0 }
   };
 
@@ -298,6 +367,21 @@ void THcAerogel::Clear(Option_t* opt)
     fNegNpe[itube] = 0.0;
   }
 
+  frPosAdcPedRaw->Clear();
+  frPosAdcPeakIntRaw->Clear();
+  frPosAdcPeakAmpRaw->Clear();
+
+  frPosAdcPed->Clear();
+  frPosAdcPeakInt->Clear();
+  frPosAdcPeakAmp->Clear();
+
+  frNegAdcPedRaw->Clear();
+  frNegAdcPeakIntRaw->Clear();
+  frNegAdcPeakAmpRaw->Clear();
+
+  frNegAdcPed->Clear();
+  frNegAdcPeakInt->Clear();
+  frNegAdcPeakAmp->Clear();
 }
 
 //_____________________________________________________________________________
@@ -327,9 +411,40 @@ Int_t THcAerogel::Decode( const THaEvData& evdata )
   Int_t nNegTDCHits=0;
   Int_t nPosADCHits=0;
   Int_t nNegADCHits=0;
+
+  UInt_t nrPosAdcHits = 0;
+  UInt_t nrNegAdcHits = 0;
+
   while(ihit < fNhits) {
     THcAerogelHit* hit = (THcAerogelHit *) fRawHitList->At(ihit);
 
+    Int_t padnum = hit->fCounter;
+
+    THcRawAdcHit& rawPosAdcHit = hit->GetRawAdcHitPos();
+    for (UInt_t thit=0; thit<rawPosAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frPosAdcPedRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPedRaw());
+      ((THcSignalHit*) frPosAdcPed->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPed());
+
+      ((THcSignalHit*) frPosAdcPeakIntRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frPosAdcPeakInt->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frPosAdcPeakAmpRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frPosAdcPeakAmp->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakAmp());
+      ++nrPosAdcHits;
+    }
+    THcRawAdcHit& rawNegAdcHit = hit->GetRawAdcHitNeg();
+    for (UInt_t thit=0; thit<rawNegAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frNegAdcPedRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPedRaw());
+      ((THcSignalHit*) frNegAdcPed->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPed());
+
+      ((THcSignalHit*) frNegAdcPeakIntRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frNegAdcPeakInt->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frNegAdcPeakAmpRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frNegAdcPeakAmp->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakAmp());
+      ++nrNegAdcHits;
+    }
+
     Int_t adc_pos;
     Int_t adc_neg;
     Int_t tdc_pos=-1;
diff --git a/src/THcAerogel.h b/src/THcAerogel.h
index 4dfbf63377a41b59a1c64ce2ad8e7dcc5892f3f2..815fda5584fd7769f0c7f914099932dc26c3de9d 100644
--- a/src/THcAerogel.h
+++ b/src/THcAerogel.h
@@ -96,6 +96,22 @@ class THcAerogel : public THaNonTrackingDetector, public THcHitList {
 
   Int_t fTdcOffset; /* Global TDC offset */
 
+  TClonesArray* frPosAdcPedRaw;
+  TClonesArray* frPosAdcPeakIntRaw;
+  TClonesArray* frPosAdcPeakAmpRaw;
+
+  TClonesArray* frPosAdcPed;
+  TClonesArray* frPosAdcPeakInt;
+  TClonesArray* frPosAdcPeakAmp;
+
+  TClonesArray* frNegAdcPedRaw;
+  TClonesArray* frNegAdcPeakIntRaw;
+  TClonesArray* frNegAdcPeakAmpRaw;
+
+  TClonesArray* frNegAdcPed;
+  TClonesArray* frNegAdcPeakInt;
+  TClonesArray* frNegAdcPeakAmp;
+
   void Setup(const char* name, const char* description);
   virtual void  InitializePedestals( );
 
diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx
index 0a22560b830e1fe2d4a9f77a6b58952fcef0cb67..91ffd76d478ccee2917f2b3782d3cc0819755373 100644
--- a/src/THcCherenkov.cxx
+++ b/src/THcCherenkov.cxx
@@ -43,11 +43,20 @@ using std::setprecision;
 
 //_____________________________________________________________________________
 THcCherenkov::THcCherenkov( const char* name, const char* description,
-				  THaApparatus* apparatus ) :
+                            THaApparatus* apparatus ) :
   THaNonTrackingDetector(name,description,apparatus)
 {
   // Normal constructor with name and description
   fADCHits = new TClonesArray("THcSignalHit",16);
+
+  frAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frAdcPed = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
   cout << "fADCHits " << fADCHits << endl;
   InitArrays();
   cout << "fADCHits " << fADCHits << endl;
@@ -61,6 +70,14 @@ THcCherenkov::THcCherenkov( ) :
   // Constructor
   fADCHits = NULL;
 
+  frAdcPedRaw = NULL;
+  frAdcPeakIntRaw = NULL;
+  frAdcPeakAmpRaw = NULL;
+
+  frAdcPed = NULL;
+  frAdcPeakInt = NULL;
+  frAdcPeakAmp = NULL;
+
   InitArrays();
 }
 
@@ -104,6 +121,14 @@ THcCherenkov::~THcCherenkov()
   // Destructor
   delete fADCHits; fADCHits = NULL;
 
+  delete frAdcPedRaw; frAdcPedRaw = NULL;
+  delete frAdcPeakIntRaw; frAdcPeakIntRaw = NULL;
+  delete frAdcPeakAmpRaw; frAdcPeakAmpRaw = NULL;
+
+  delete frAdcPed; frAdcPed = NULL;
+  delete frAdcPeakInt; frAdcPeakInt = NULL;
+  delete frAdcPeakAmp; frAdcPeakAmp = NULL;
+
   DeleteArrays();
 
 }
@@ -242,6 +267,17 @@ Int_t THcCherenkov::DefineVariables( EMode mode )
     {"ncherhit",        "Number of Hits(Cherenkov)",             "fNCherHit"},
     {"certrackcounter", "Tracks inside Cherenkov region",        "fCerTrackCounter"},
     {"cerfiredcounter", "Tracks with engough Cherenkov NPEs ",   "fCerFiredCounter"},
+
+    {"adcCounter",    "List of ADC counter numbers.",     "frPosAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+
+    {"adcPedRaw",     "List of raw ADC pedestals",        "frAdcPedRaw.THcSignalHit.GetData()"},
+    {"adcPeakIntRaw", "List of raw ADC peak integrals.",  "frAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"adcPeakAmpRaw", "List of raw ADC peak amplitudes.", "frAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"adcPed",        "List of ADC pedestals",            "frAdcPed.THcSignalHit.GetData()"},
+    {"adcPeakInt",    "List of ADC peak integrals.",      "frAdcPeakInt.THcSignalHit.GetData()"},
+    {"adcPeakAmp",    "List of ADC peak amplitudes.",     "frAdcPeakAmp.THcSignalHit.GetData()"},
+
     { 0 }
   };
 
@@ -267,6 +303,14 @@ void THcCherenkov::Clear(Option_t* opt)
     fNPE[itube] = 0;
   }
 
+  frAdcPedRaw->Clear();
+  frAdcPeakIntRaw->Clear();
+  frAdcPeakAmpRaw->Clear();
+
+  frAdcPed->Clear();
+  frAdcPeakInt->Clear();
+  frAdcPeakAmp->Clear();
+
 }
 
 //_____________________________________________________________________________
@@ -289,9 +333,27 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata )
 
   Int_t ihit = 0;
   Int_t nADCHits=0;
+
+  UInt_t nrAdcHits = 0;
+
   while(ihit < fNhits) {
     THcCherenkovHit* hit = (THcCherenkovHit *) fRawHitList->At(ihit);
 
+    Int_t padnum = hit->fCounter;
+
+    THcRawAdcHit& rawAdcHit = hit->GetRawAdcHitPos();
+    for (UInt_t thit=0; thit<rawAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frAdcPedRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPedRaw());
+      ((THcSignalHit*) frAdcPed->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPed());
+
+      ((THcSignalHit*) frAdcPeakIntRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frAdcPeakInt->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frAdcPeakAmpRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frAdcPeakAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakAmp());
+      ++nrAdcHits;
+    }
+
     // ADC hit
     if(hit->GetRawAdcHitPos().GetPeakIntRaw() >  0) {
       THcSignalHit *sighit = (THcSignalHit*) fADCHits->ConstructedAt(nADCHits++);
diff --git a/src/THcCherenkov.h b/src/THcCherenkov.h
index c05c43df4c2aee53e3a2a3a872bfad3ac510c7ea..9f2b122cfa3460f64ad76362ce071bbe0f350e74 100644
--- a/src/THcCherenkov.h
+++ b/src/THcCherenkov.h
@@ -85,6 +85,14 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList {
   Double_t*     fPed;
   Double_t*     fThresh;
 
+  TClonesArray* frAdcPedRaw;
+  TClonesArray* frAdcPeakIntRaw;
+  TClonesArray* frAdcPeakAmpRaw;
+
+  TClonesArray* frAdcPed;
+  TClonesArray* frAdcPeakInt;
+  TClonesArray* frAdcPeakAmp;
+
   void Setup(const char* name, const char* description);
   virtual void  InitializePedestals( );
 
diff --git a/src/THcScintillatorPlane.cxx b/src/THcScintillatorPlane.cxx
index 9b511f9424efa83bbff690b1cf27547bb5a26072..af338f6559092a0859ceedc5d561a5615416ba2a 100644
--- a/src/THcScintillatorPlane.cxx
+++ b/src/THcScintillatorPlane.cxx
@@ -15,6 +15,8 @@ class instatiates one object per plane.
 #include "THcHitList.h"
 #include "THcHodoscope.h"
 #include "TClass.h"
+#include "THcRawAdcHit.h"
+#include "THcRawTdcHit.h"
 
 #include <cstring>
 #include <cstdio>
@@ -27,7 +29,7 @@ ClassImp(THcScintillatorPlane)
 
 //______________________________________________________________________________
 THcScintillatorPlane::THcScintillatorPlane( const char* name,
-					    const char* description,
+              const char* description,
 					    const Int_t planenum,
 					    THaDetectorBase* parent )
   : THaSubDetector(name,description,parent)
@@ -42,6 +44,27 @@ THcScintillatorPlane::THcScintillatorPlane( const char* name,
   frNegADCSums = new TClonesArray("THcSignalHit",16);
   frPosADCPeds = new TClonesArray("THcSignalHit",16);
   frNegADCPeds = new TClonesArray("THcSignalHit",16);
+
+  frPosTdcTimeRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frPosTdcTime = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPed = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
+  frNegTdcTimeRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frNegTdcTime = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPed = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
   fPlaneNum = planenum;
   fTotPlanes = planenum;
   fNScinHits = 0;
@@ -68,6 +91,27 @@ THcScintillatorPlane::~THcScintillatorPlane()
   delete frNegADCSums;
   delete frPosADCPeds;
   delete frNegADCPeds;
+
+  delete frPosTdcTimeRaw;
+  delete frPosAdcPedRaw;
+  delete frPosAdcPeakIntRaw;
+  delete frPosAdcPeakAmpRaw;
+
+  delete frPosTdcTime;
+  delete frPosAdcPed;
+  delete frPosAdcPeakInt;
+  delete frPosAdcPeakAmp;
+
+  delete frNegTdcTimeRaw;
+  delete frNegAdcPedRaw;
+  delete frNegAdcPeakIntRaw;
+  delete frNegAdcPeakAmpRaw;
+
+  delete frNegTdcTime;
+  delete frNegAdcPed;
+  delete frNegAdcPeakInt;
+  delete frNegAdcPeakAmp;
+
   delete fpTimes;
   delete [] fScinTime;
   delete [] fScinSigma;
@@ -271,6 +315,32 @@ Int_t THcScintillatorPlane::DefineVariables( EMode mode )
     {"negadcsum", "List of Negative ADC Sample Sums",         "frNegADCSums.THcSignalHit.GetData()"},
     {"posadcped", "List of Positive ADC Pedestals",           "frPosADCPeds.THcSignalHit.GetData()"},
     {"negadcped", "List of Negative ADC Pedestals",           "frNegADCPeds.THcSignalHit.GetData()"},
+
+    {"posTdcCounter",    "List of positive TDC counter numbers.",     "frPosTdcTimeRaw.THcSignalHit.GetPaddleNumber()"},
+    {"posAdcCounter",    "List of positive ADC counter numbers.",     "frPosAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+    {"negTdcCounter",    "List of negative TDC counter numbers.",     "frNegTdcTimeRaw.THcSignalHit.GetPaddleNumber()"},
+    {"negAdcCounter",    "List of negative ADC counter numbers.",     "frNegAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+
+    {"posTdcTimeRaw",    "List of positive raw TDC values.",          "frPosTdcTimeRaw.THcSignalHit.GetData()"},
+    {"posAdcPedRaw",     "List of positive raw ADC pedestals",        "frPosAdcPedRaw.THcSignalHit.GetData()"},
+    {"posAdcPeakIntRaw", "List of positive raw ADC peak integrals.",  "frPosAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"posAdcPeakAmpRaw", "List of positive raw ADC peak amplitudes.", "frPosAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"posTdcTime",       "List of positive TDC values.",              "frPosTdcTime.THcSignalHit.GetData()"},
+    {"posAdcPed",        "List of positive ADC pedestals",            "frPosAdcPed.THcSignalHit.GetData()"},
+    {"posAdcPeakInt",    "List of positive ADC peak integrals.",      "frPosAdcPeakInt.THcSignalHit.GetData()"},
+    {"posAdcPeakAmp",    "List of positive ADC peak amplitudes.",     "frPosAdcPeakAmp.THcSignalHit.GetData()"},
+
+    {"negTdcTimeRaw",    "List of negative raw TDC values.",          "frNegTdcTimeRaw.THcSignalHit.GetData()"},
+    {"negAdcPedRaw",     "List of negative raw ADC pedestals",        "frNegAdcPedRaw.THcSignalHit.GetData()"},
+    {"negAdcPeakIntRaw", "List of negative raw ADC peak integrals.",  "frNegAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"negAdcPeakAmpRaw", "List of negative raw ADC peak amplitudes.", "frNegAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"negTdcTime",       "List of negative TDC values.",              "frNegTdcTime.THcSignalHit.GetData()"},
+    {"negAdcPed",        "List of negative ADC pedestals",            "frNegAdcPed.THcSignalHit.GetData()"},
+    {"negAdcPeakInt",    "List of negative ADC peak integrals.",      "frNegAdcPeakInt.THcSignalHit.GetData()"},
+    {"negAdcPeakAmp",    "List of negative ADC peak amplitudes.",     "frNegAdcPeakAmp.THcSignalHit.GetData()"},
+
     {"fptime", "Time at focal plane",     "GetFpTime()"},
     {"nhits", "Number of paddle hits (passed TDC Min and Max cuts for either end)",           "GetNScinHits() "},
     {"ngoodhits", "Number of paddle hits (passed tof tolerance and used to determine the focal plane time )",           "GetNGoodHits() "},
@@ -294,6 +364,27 @@ void THcScintillatorPlane::Clear( Option_t* )
   frNegTDCHits->Clear();
   frPosADCHits->Clear();
   frNegADCHits->Clear();
+
+  frPosTdcTimeRaw->Clear();
+  frPosAdcPedRaw->Clear();
+  frPosAdcPeakIntRaw->Clear();
+  frPosAdcPeakAmpRaw->Clear();
+
+  frPosTdcTime->Clear();
+  frPosAdcPed->Clear();
+  frPosAdcPeakInt->Clear();
+  frPosAdcPeakAmp->Clear();
+
+  frNegTdcTimeRaw->Clear();
+  frNegAdcPedRaw->Clear();
+  frNegAdcPeakIntRaw->Clear();
+  frNegAdcPeakAmpRaw->Clear();
+
+  frNegTdcTime->Clear();
+  frNegAdcPed->Clear();
+  frNegAdcPeakInt->Clear();
+  frNegAdcPeakAmp->Clear();
+
   fpTime = -1.e4;
 }
 
@@ -361,6 +452,32 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   frNegADCSums->Clear();
   frPosADCPeds->Clear();
   frNegADCPeds->Clear();
+
+  UInt_t nrPosAdcHits = 0;
+  UInt_t nrNegAdcHits = 0;
+  UInt_t nrPosTdcHits = 0;
+  UInt_t nrNegTdcHits = 0;
+
+  frPosTdcTimeRaw->Clear();
+  frPosAdcPedRaw->Clear();
+  frPosAdcPeakIntRaw->Clear();
+  frPosAdcPeakAmpRaw->Clear();
+
+  frPosTdcTime->Clear();
+  frPosAdcPed->Clear();
+  frPosAdcPeakInt->Clear();
+  frPosAdcPeakAmp->Clear();
+
+  frNegTdcTimeRaw->Clear();
+  frNegAdcPedRaw->Clear();
+  frNegAdcPeakIntRaw->Clear();
+  frNegAdcPeakAmpRaw->Clear();
+
+  frNegTdcTime->Clear();
+  frNegAdcPed->Clear();
+  frNegAdcPeakInt->Clear();
+  frNegAdcPeakAmp->Clear();
+
   //stripped
   fNScinHits=0;
   fHodoHits->Clear();
@@ -383,6 +500,44 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
     Int_t padnum=hit->fCounter;
 
     Int_t index=padnum-1;
+
+    THcRawTdcHit& rawPosTdcHit = hit->GetRawTdcHitPos();
+    for (UInt_t thit=0; thit<rawPosTdcHit.GetNHits(); ++thit) {
+      ((THcSignalHit*) frPosTdcTimeRaw->ConstructedAt(nrPosTdcHits))->Set(padnum, rawPosTdcHit.GetTimeRaw());
+      ((THcSignalHit*) frPosTdcTime->ConstructedAt(nrPosTdcHits))->Set(padnum, rawPosTdcHit.GetTime());
+      ++nrPosTdcHits;
+    }
+    THcRawTdcHit& rawNegTdcHit = hit->GetRawTdcHitNeg();
+    for (UInt_t thit=0; thit<rawNegTdcHit.GetNHits(); ++thit) {
+      ((THcSignalHit*) frNegTdcTimeRaw->ConstructedAt(nrNegTdcHits))->Set(padnum, rawNegTdcHit.GetTimeRaw());
+      ((THcSignalHit*) frNegTdcTime->ConstructedAt(nrNegTdcHits))->Set(padnum, rawNegTdcHit.GetTime());
+      ++nrNegTdcHits;
+    }
+    THcRawAdcHit& rawPosAdcHit = hit->GetRawAdcHitPos();
+    for (UInt_t thit=0; thit<rawPosAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frPosAdcPedRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPedRaw());
+      ((THcSignalHit*) frPosAdcPed->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPed());
+
+      ((THcSignalHit*) frPosAdcPeakIntRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frPosAdcPeakInt->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frPosAdcPeakAmpRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frPosAdcPeakAmp->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakAmp());
+      ++nrPosAdcHits;
+    }
+    THcRawAdcHit& rawNegAdcHit = hit->GetRawAdcHitNeg();
+    for (UInt_t thit=0; thit<rawNegAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frNegAdcPedRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPedRaw());
+      ((THcSignalHit*) frNegAdcPed->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPed());
+
+      ((THcSignalHit*) frNegAdcPeakIntRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frNegAdcPeakInt->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frNegAdcPeakAmpRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frNegAdcPeakAmp->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakAmp());
+      ++nrNegAdcHits;
+    }
+
     // Need to be finding first hit in TDC range, not the first hit overall
     if (hit->GetRawTdcHitPos().GetNHits() > 0)
       ((THcSignalHit*) frPosTDCHits->ConstructedAt(nrPosTDCHits++))->Set(padnum, hit->GetRawTdcHitPos().GetTime()+fTdcOffset);
diff --git a/src/THcScintillatorPlane.h b/src/THcScintillatorPlane.h
index 2dcfe53ff931dd6d1418e88c29ff7e00aef05980..aaf8528569db2390f06a10e9e634ed9d0198020c 100644
--- a/src/THcScintillatorPlane.h
+++ b/src/THcScintillatorPlane.h
@@ -72,6 +72,26 @@ class THcScintillatorPlane : public THaSubDetector {
   TClonesArray* frNegADCPeds;
   TClonesArray* fHodoHits;
 
+  TClonesArray* frPosTdcTimeRaw;
+  TClonesArray* frPosAdcPedRaw;
+  TClonesArray* frPosAdcPeakIntRaw;
+  TClonesArray* frPosAdcPeakAmpRaw;
+
+  TClonesArray* frPosTdcTime;
+  TClonesArray* frPosAdcPed;
+  TClonesArray* frPosAdcPeakInt;
+  TClonesArray* frPosAdcPeakAmp;
+
+  TClonesArray* frNegTdcTimeRaw;
+  TClonesArray* frNegAdcPedRaw;
+  TClonesArray* frNegAdcPeakIntRaw;
+  TClonesArray* frNegAdcPeakAmpRaw;
+
+  TClonesArray* frNegTdcTime;
+  TClonesArray* frNegAdcPed;
+  TClonesArray* frNegAdcPeakInt;
+  TClonesArray* frNegAdcPeakAmp;
+
   Int_t fPlaneNum;		/* Which plane am I 1-4 */
   UInt_t fTotPlanes;            /* so we can read variables that are not indexed by plane id */
   UInt_t fNelem;		/* Need since we don't inherit from
@@ -158,5 +178,3 @@ class THcScintillatorPlane : public THaSubDetector {
   ClassDef(THcScintillatorPlane,0); // Scintillator bars in a plane
 };
 #endif
-
-
diff --git a/src/THcShowerArray.cxx b/src/THcShowerArray.cxx
index 5bc7c41bd805e536284996374a8dae7bac93022c..a37c5b45a927f391690036b97c2111117e09cf08 100644
--- a/src/THcShowerArray.cxx
+++ b/src/THcShowerArray.cxx
@@ -31,7 +31,7 @@ ClassImp(THcShowerArray)
 
 //______________________________________________________________________________
 THcShowerArray::THcShowerArray( const char* name,
-				const char* description,
+                                const char* description,
 				const Int_t layernum,
 				THaDetectorBase* parent )
   : THaSubDetector(name,description,parent)
@@ -39,6 +39,14 @@ THcShowerArray::THcShowerArray( const char* name,
   fADCHits = new TClonesArray("THcSignalHit",100);
   fLayerNum = layernum;
 
+	frAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frAdcPed = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
   fClusterList = new THcShowerClusterList;         // List of hit clusters
 }
 
@@ -51,6 +59,14 @@ THcShowerArray::~THcShowerArray()
 
   delete fADCHits;
 
+  delete frAdcPedRaw; frAdcPedRaw = NULL;
+  delete frAdcPeakIntRaw; frAdcPeakIntRaw = NULL;
+  delete frAdcPeakAmpRaw; frAdcPeakAmpRaw = NULL;
+
+  delete frAdcPed; frAdcPed = NULL;
+  delete frAdcPeakInt; frAdcPeakInt = NULL;
+  delete frAdcPeakAmp; frAdcPeakAmp = NULL;
+
   delete [] fA;
   delete [] fP;
   delete [] fA_p;
@@ -314,6 +330,17 @@ Int_t THcShowerArray::DefineVariables( EMode mode )
     {"e", "Energy Depositions per block", "fE"},
     {"earray", "Energy Deposition in array", "fEarray"},
     { "ntracks", "Number of shower tracks", "fNtracks" },
+
+    {"adcCounter",    "List of ADC counter numbers.",     "frPosAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+
+    {"adcPedRaw",     "List of raw ADC pedestals",        "frAdcPedRaw.THcSignalHit.GetData()"},
+    {"adcPeakIntRaw", "List of raw ADC peak integrals.",  "frAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"adcPeakAmpRaw", "List of raw ADC peak amplitudes.", "frAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"adcPed",        "List of ADC pedestals",            "frAdcPed.THcSignalHit.GetData()"},
+    {"adcPeakInt",    "List of ADC peak integrals.",      "frAdcPeakInt.THcSignalHit.GetData()"},
+    {"adcPeakAmp",    "List of ADC peak amplitudes.",     "frAdcPeakAmp.THcSignalHit.GetData()"},
+
     { 0 }
   };
 
@@ -337,6 +364,14 @@ void THcShowerArray::Clear( Option_t* )
   }
   fClusterList->clear();
 
+  frAdcPedRaw->Clear();
+  frAdcPeakIntRaw->Clear();
+  frAdcPeakAmpRaw->Clear();
+
+  frAdcPed->Clear();
+  frAdcPeakInt->Clear();
+  frAdcPeakAmp->Clear();
+
 }
 
 //_____________________________________________________________________________
@@ -617,6 +652,14 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   Int_t nADCHits=0;
   fADCHits->Clear();
 
+  frAdcPedRaw->Clear();
+  frAdcPeakIntRaw->Clear();
+  frAdcPeakAmpRaw->Clear();
+
+  frAdcPed->Clear();
+  frAdcPeakInt->Clear();
+  frAdcPeakAmp->Clear();
+
   for(Int_t i=0;i<fNelem;i++) {
     fA[i] = 0;
     fA_p[i] = 0;
@@ -634,6 +677,9 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
 
   Int_t ngood = 0;
   Int_t threshold = 100;
+
+  UInt_t nrAdcHits = 0;
+
   while(ihit < nrawhits) {
     THcRawShowerHit* hit = (THcRawShowerHit *) rawhits->At(ihit);
 
@@ -641,6 +687,20 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       break;
     }
 
+    Int_t padnum = hit->fCounter;
+
+    THcRawAdcHit& rawAdcHit = hit->GetRawAdcHitPos();
+    for (UInt_t thit=0; thit<rawAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frAdcPedRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPedRaw());
+      ((THcSignalHit*) frAdcPed->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPed());
+
+      ((THcSignalHit*) frAdcPeakIntRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frAdcPeakInt->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frAdcPeakAmpRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frAdcPeakAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPeakAmp());
+      ++nrAdcHits;
+    }
 
 		// Should check that counter # is in range
 		if (fUsingFADC) {
diff --git a/src/THcShowerArray.h b/src/THcShowerArray.h
index 8f59f2004830791f12f16e7e2091a597593935f9..9196cef48e4cd1295ee8358637b8c29d3c45b7ce 100644
--- a/src/THcShowerArray.h
+++ b/src/THcShowerArray.h
@@ -135,6 +135,14 @@ protected:
 
   THcShowerClusterList* fClusterList;   // List of hit clusters
 
+  TClonesArray* frAdcPedRaw;
+  TClonesArray* frAdcPeakIntRaw;
+  TClonesArray* frAdcPeakAmpRaw;
+
+  TClonesArray* frAdcPed;
+  TClonesArray* frAdcPeakInt;
+  TClonesArray* frAdcPeakAmp;
+
   virtual Int_t  ReadDatabase( const TDatime& date );
   virtual Int_t  DefineVariables( EMode mode = kDefine );
   ClassDef(THcShowerArray,0); // Fly;s Eye calorimeter array
diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx
index a0246ceef9efbad265768cb0d792397033aa534e..425ac3d76cc207ab0dbe19da3ba6723105dfb24a 100644
--- a/src/THcShowerPlane.cxx
+++ b/src/THcShowerPlane.cxx
@@ -30,7 +30,7 @@ ClassImp(THcShowerPlane)
 
 //______________________________________________________________________________
 THcShowerPlane::THcShowerPlane( const char* name,
-					    const char* description,
+                                const char* description,
 					    const Int_t layernum,
 					    THaDetectorBase* parent )
   : THaSubDetector(name,description,parent)
@@ -39,6 +39,22 @@ THcShowerPlane::THcShowerPlane( const char* name,
   fPosADCHits = new TClonesArray("THcSignalHit",fNelem);
   fNegADCHits = new TClonesArray("THcSignalHit",fNelem);
 
+  frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frPosAdcPed = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frPosAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
+  frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakIntRaw = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakAmpRaw = new TClonesArray("THcSignalHit", 16);
+
+  frNegAdcPed = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakInt = new TClonesArray("THcSignalHit", 16);
+  frNegAdcPeakAmp = new TClonesArray("THcSignalHit", 16);
+
   //#if ROOT_VERSION_CODE < ROOT_VERSION(5,32,0)
   //  fPosADCHitsClass = fPosADCHits->GetClass();
   //  fNegADCHitsClass = fNegADCHits->GetClass();
@@ -54,6 +70,22 @@ THcShowerPlane::~THcShowerPlane()
   delete fPosADCHits;
   delete fNegADCHits;
 
+  frPosAdcPedRaw = NULL;
+  frPosAdcPeakIntRaw = NULL;
+  frPosAdcPeakAmpRaw = NULL;
+
+  frPosAdcPed = NULL;
+  frPosAdcPeakInt = NULL;
+  frPosAdcPeakAmp = NULL;
+
+  frNegAdcPedRaw = NULL;
+  frNegAdcPeakIntRaw = NULL;
+  frNegAdcPeakAmpRaw = NULL;
+
+  frNegAdcPed = NULL;
+  frNegAdcPeakInt = NULL;
+  frNegAdcPeakAmp = NULL;
+
   delete [] fA_Pos;
   delete [] fA_Neg;
   delete [] fA_Pos_p;
@@ -216,6 +248,26 @@ Int_t THcShowerPlane::DefineVariables( EMode mode )
     {"eplane",     "Energy Deposition per plane",                   "fEplane"},
     {"eplane_pos", "Energy Deposition per plane from pos. PMTs","fEplane_pos"},
     {"eplane_neg", "Energy Deposition per plane from neg. PMTs","fEplane_neg"},
+
+    {"posAdcCounter",    "List of positive ADC counter numbers.",     "frPosAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+    {"negAdcCounter",    "List of negative ADC counter numbers.",     "frNegAdcPeakIntRaw.THcSignalHit.GetPaddleNumber()"},
+
+    {"posAdcPedRaw",     "List of Positive raw ADC pedestals",        "frPosAdcPedRaw.THcSignalHit.GetData()"},
+    {"posAdcPeakIntRaw", "List of Positive raw ADC peak integrals.",  "frPosAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"posAdcPeakAmpRaw", "List of Positive raw ADC peak amplitudes.", "frPosAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"posAdcPed",        "List of Positive ADC pedestals",            "frPosAdcPed.THcSignalHit.GetData()"},
+    {"posAdcPeakInt",    "List of Positive ADC peak integrals.",      "frPosAdcPeakInt.THcSignalHit.GetData()"},
+    {"posAdcPeakAmp",    "List of Positive ADC peak amplitudes.",     "frPosAdcPeakAmp.THcSignalHit.GetData()"},
+
+    {"negAdcPedRaw",     "List of Negative raw ADC pedestals",        "frNegAdcPedRaw.THcSignalHit.GetData()"},
+    {"negAdcPeakIntRaw", "List of Negative raw ADC peak integrals.",  "frNegAdcPeakIntRaw.THcSignalHit.GetData()"},
+    {"negAdcPeakAmpRaw", "List of Negative raw ADC peak amplitudes.", "frNegAdcPeakAmpRaw.THcSignalHit.GetData()"},
+
+    {"negAdcPed",        "List of Negative ADC pedestals",            "frNegAdcPed.THcSignalHit.GetData()"},
+    {"negAdcPeakInt",    "List of Negative ADC peak integrals.",      "frNegAdcPeakInt.THcSignalHit.GetData()"},
+    {"negAdcPeakAmp",    "List of Negative ADC peak amplitudes.",     "frNegAdcPeakAmp.THcSignalHit.GetData()"},
+
     { 0 }
   };
 
@@ -229,6 +281,22 @@ void THcShowerPlane::Clear( Option_t* )
   fPosADCHits->Clear();
   fNegADCHits->Clear();
 
+  frPosAdcPedRaw->Clear();
+  frPosAdcPeakIntRaw->Clear();
+  frPosAdcPeakAmpRaw->Clear();
+
+  frPosAdcPed->Clear();
+  frPosAdcPeakInt->Clear();
+  frPosAdcPeakAmp->Clear();
+
+  frNegAdcPedRaw->Clear();
+  frNegAdcPeakIntRaw->Clear();
+  frNegAdcPeakAmpRaw->Clear();
+
+  frNegAdcPed->Clear();
+  frNegAdcPeakInt->Clear();
+  frNegAdcPeakAmp->Clear();
+
   // Debug output.
   if ( ((THcShower*) GetParent())->fdbg_decoded_cal ) {
     cout << "---------------------------------------------------------------\n";
@@ -291,6 +359,22 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   fPosADCHits->Clear();
   fNegADCHits->Clear();
 
+  frPosAdcPedRaw->Clear();
+  frPosAdcPeakIntRaw->Clear();
+  frPosAdcPeakAmpRaw->Clear();
+
+  frPosAdcPed->Clear();
+  frPosAdcPeakInt->Clear();
+  frPosAdcPeakAmp->Clear();
+
+  frNegAdcPedRaw->Clear();
+  frNegAdcPeakIntRaw->Clear();
+  frNegAdcPeakAmpRaw->Clear();
+
+  frNegAdcPed->Clear();
+  frNegAdcPeakInt->Clear();
+  frNegAdcPeakAmp->Clear();
+
   for(Int_t i=0;i<fNelem;i++) {
     fA_Pos[i] = 0;
     fA_Neg[i] = 0;
@@ -305,6 +389,9 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   fEplane_pos = 0;
   fEplane_neg = 0;
 
+  UInt_t nrPosAdcHits = 0;
+  UInt_t nrNegAdcHits = 0;
+
   // Process raw hits. Get ADC hits for the plane, assign variables for each
   // channel.
 
@@ -321,6 +408,33 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       break;
     }
 
+    Int_t padnum = hit->fCounter;
+
+    THcRawAdcHit& rawPosAdcHit = hit->GetRawAdcHitPos();
+    for (UInt_t thit=0; thit<rawPosAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frPosAdcPedRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPedRaw());
+      ((THcSignalHit*) frPosAdcPed->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPed());
+
+      ((THcSignalHit*) frPosAdcPeakIntRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frPosAdcPeakInt->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frPosAdcPeakAmpRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frPosAdcPeakAmp->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPeakAmp());
+      ++nrPosAdcHits;
+    }
+    THcRawAdcHit& rawNegAdcHit = hit->GetRawAdcHitNeg();
+    for (UInt_t thit=0; thit<rawNegAdcHit.GetNPulses(); ++thit) {
+      ((THcSignalHit*) frNegAdcPedRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPedRaw());
+      ((THcSignalHit*) frNegAdcPed->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPed());
+
+      ((THcSignalHit*) frNegAdcPeakIntRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakIntRaw());
+      ((THcSignalHit*) frNegAdcPeakInt->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakInt());
+
+      ((THcSignalHit*) frNegAdcPeakAmpRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakAmpRaw());
+      ((THcSignalHit*) frNegAdcPeakAmp->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPeakAmp());
+      ++nrNegAdcHits;
+    }
+
     // Should probably check that counter # is in range
 		if (fUsingFADC) {
 			fA_Pos[hit->fCounter-1] = hit->GetRawAdcHitPos().GetData(
diff --git a/src/THcShowerPlane.h b/src/THcShowerPlane.h
index fdf8c0fa1d4e9c38e926592b4e1f49c312e21c20..0eb544ea3dbd1707b036729993aa3984a24d2fed 100644
--- a/src/THcShowerPlane.h
+++ b/src/THcShowerPlane.h
@@ -151,6 +151,22 @@ protected:
   Float_t *fNegSig;
   Float_t *fNegThresh;
 
+  TClonesArray* frPosAdcPedRaw;
+  TClonesArray* frPosAdcPeakIntRaw;
+  TClonesArray* frPosAdcPeakAmpRaw;
+
+  TClonesArray* frPosAdcPed;
+  TClonesArray* frPosAdcPeakInt;
+  TClonesArray* frPosAdcPeakAmp;
+
+  TClonesArray* frNegAdcPedRaw;
+  TClonesArray* frNegAdcPeakIntRaw;
+  TClonesArray* frNegAdcPeakAmpRaw;
+
+  TClonesArray* frNegAdcPed;
+  TClonesArray* frNegAdcPeakInt;
+  TClonesArray* frNegAdcPeakAmp;
+
   virtual Int_t  ReadDatabase( const TDatime& date );
   virtual Int_t  DefineVariables( EMode mode = kDefine );
   virtual void  InitializePedestals( );