diff --git a/src/THcScintillatorPlane.cxx b/src/THcScintillatorPlane.cxx
index 1328e086ccbd63e3dae5e720dd771282c4f2788e..6595540b5371e11414e1b3a713e0194211f108c6 100644
--- a/src/THcScintillatorPlane.cxx
+++ b/src/THcScintillatorPlane.cxx
@@ -36,6 +36,10 @@ THcScintillatorPlane::THcScintillatorPlane( const char* name,
   fNegTDCHits = new TClonesArray("THcSignalHit",16);
   fPosADCHits = new TClonesArray("THcSignalHit",16);
   fNegADCHits = new TClonesArray("THcSignalHit",16);
+  frPosTDCHits = new TClonesArray("THcSignalHit",16);
+  frNegTDCHits = new TClonesArray("THcSignalHit",16);
+  frPosADCHits = new TClonesArray("THcSignalHit",16);
+  frNegADCHits = new TClonesArray("THcSignalHit",16);
   fPlaneNum = planenum;
   fTotPlanes = planenum;
   fNScinHits = 0; 
@@ -56,6 +60,10 @@ THcScintillatorPlane::THcScintillatorPlane( const char* name,
   fNegTDCHits = new TClonesArray("THcSignalHit",16);
   fPosADCHits = new TClonesArray("THcSignalHit",16);
   fNegADCHits = new TClonesArray("THcSignalHit",16);
+  frPosTDCHits = new TClonesArray("THcSignalHit",16);
+  frNegTDCHits = new TClonesArray("THcSignalHit",16);
+  frPosADCHits = new TClonesArray("THcSignalHit",16);
+  frNegADCHits = new TClonesArray("THcSignalHit",16);
   fPlaneNum = planenum;
   fTotPlanes = totplanes;
   fNScinHits = 0;
@@ -73,6 +81,10 @@ THcScintillatorPlane::~THcScintillatorPlane()
   delete fNegTDCHits;
   delete fPosADCHits;
   delete fNegADCHits;
+  delete frPosTDCHits;
+  delete frNegTDCHits;
+  delete frPosADCHits;
+  delete frNegADCHits;
 }
 
 //______________________________________________________________________________
@@ -207,13 +219,13 @@ Int_t THcScintillatorPlane::DefineVariables( EMode mode )
   // Register variables in global list
   RVarDef vars[] = {
     {"postdchits", "List of Positive TDC hits", 
-     "fPosTDCHits.THcSignalHit.GetPaddleNumber()"},
+     "frPosTDCHits.THcSignalHit.GetPaddleNumber()"},
     {"negtdchits", "List of Negative TDC hits", 
-     "fNegTDCHits.THcSignalHit.GetPaddleNumber()"},
+     "frNegTDCHits.THcSignalHit.GetPaddleNumber()"},
     {"posadchits", "List of Positive ADC hits", 
-     "fPosADCHits.THcSignalHit.GetPaddleNumber()"},
+     "frPosADCHits.THcSignalHit.GetPaddleNumber()"},
     {"negadchits", "List of Negative ADC hits", 
-     "fNegADCHits.THcSignalHit.GetPaddleNumber()"},
+     "frNegADCHits.THcSignalHit.GetPaddleNumber()"},
     {"fptime", "Time at focal plane", 
      "GetFpTime()"},
     { 0 }
@@ -231,6 +243,10 @@ void THcScintillatorPlane::Clear( Option_t* )
   fNegTDCHits->Clear();
   fPosADCHits->Clear();
   fNegADCHits->Clear();
+  frPosTDCHits->Clear();
+  frNegTDCHits->Clear();
+  frPosADCHits->Clear();
+  frNegADCHits->Clear();
 }
 
 //_____________________________________________________________________________
@@ -270,6 +286,16 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   // if the actual ADC is larger than the pedestal value we subtract!!
 
   Double_t mintdc, maxtdc;
+  //raw
+  Int_t nrPosTDCHits=0;
+  Int_t nrNegTDCHits=0;
+  Int_t nrPosADCHits=0;
+  Int_t nrNegADCHits=0;
+  frPosTDCHits->Clear();
+  frNegTDCHits->Clear();
+  frPosADCHits->Clear();
+  frNegADCHits->Clear();
+  //stripped
   Int_t nPosTDCHits=0;
   Int_t nNegTDCHits=0;
   Int_t nPosADCHits=0;
@@ -289,42 +315,28 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
     if(hit->fPlane > fPlaneNum) {
       break;
     }
-
+    Int_t padnum=hit->fCounter;
+    Int_t index=padnum-1;
+    if (hit->fTDC_pos > 0) ((THcSignalHit*) frPosTDCHits->ConstructedAt(nrPosTDCHits++))->Set(padnum, hit->fTDC_pos);
+    if (hit->fTDC_neg > 0) ((THcSignalHit*) frNegTDCHits->ConstructedAt(nrNegTDCHits++))->Set(padnum, hit->fTDC_neg);
+    if ((hit->fADC_pos-fPosPed[index]) >= 50) ((THcSignalHit*) frPosADCHits->ConstructedAt(nrPosADCHits++))->Set(padnum, hit->fADC_pos-fPosPed[index]);
+    if ((hit->fADC_neg-fNegPed[index]) >= 50) ((THcSignalHit*) frNegADCHits->ConstructedAt(nrNegADCHits++))->Set(padnum, hit->fADC_neg-fNegPed[index]);
     // check TDC values
     if (((hit->fTDC_pos >= mintdc) && (hit->fTDC_pos <= maxtdc)) ||
 	((hit->fTDC_neg >= mintdc) && (hit->fTDC_neg <= maxtdc))) {
-      // GN: careful here: hit->fCounter will return elements starting from 1
-      // if one wants to count from zero (as one should!) we need to take care of this straight away!!
-      //
-      Int_t element=hit->fCounter-1;
-      //**********
-      ///      cout <<"hcana plane = "<<fPlaneNum<<" counter = "<<element<<endl;
-      //**********
       //TDC positive hit
       THcSignalHit *sighit = (THcSignalHit*) fPosTDCHits->ConstructedAt(nPosTDCHits++);
-      sighit->Set(element, hit->fTDC_pos);
+      sighit->Set(padnum, hit->fTDC_pos);
       // TDC negative hit
       THcSignalHit *sighit2 = (THcSignalHit*) fNegTDCHits->ConstructedAt(nNegTDCHits++);
-      sighit2->Set(element, hit->fTDC_neg);
+      sighit2->Set(padnum, hit->fTDC_neg);
       // ADC positive hit
-      /// if(hit->fADC_pos >  0) {
       THcSignalHit *sighit3 = (THcSignalHit*) fPosADCHits->ConstructedAt(nPosADCHits++);
-      sighit3->Set(element, hit->fADC_pos-fPosPed[element]);
-      ///cout <<"hcana raw/ped = "<<hit->fADC_pos<<" "<<fPosPed[element]<<endl;
-	///} else {
-	///  cout<<"Skipping ADC_pos "<<hit->fADC_pos<<endl;
-	/// }
+      sighit3->Set(padnum, hit->fADC_pos-fPosPed[index]);
       // ADC negative hit
-	///      if(hit->fADC_neg >  0) {   
-	// cout <<"adc neg hit!!\n";
       THcSignalHit *sighit4 = (THcSignalHit*) fNegADCHits->ConstructedAt(nNegADCHits++);
-      sighit4->Set(element, hit->fADC_neg-fNegPed[element]);
-      
+      sighit4->Set(padnum, hit->fADC_neg-fNegPed[index]);      
       fNScinHits++;
-	///} else {
-	///cout<<"Skipping ADC_neg "<<hit->fADC_neg<<endl;
-	///}
-      //      cout <<"test "<<fNHits<<endl;
     }
     else {
       //cout <<"pos TDC "<<hit->fTDC_pos<<" "<<mintdc<<" "<<maxtdc<<endl;
@@ -391,7 +403,7 @@ Int_t THcScintillatorPlane::PulseHeightCorrection()
 	(((THcSignalHit*) fNegTDCHits->At(i))->GetData()<=maxtdc)) {
 	  pos_ph[i]=((THcSignalHit*) fPosADCHits->At(i))->GetData();
 	  postime[i]=((THcSignalHit*) fPosTDCHits->At(i))->GetData()*tdctotime;
-	  j=((THcSignalHit*)fPosTDCHits->At(i))->GetPaddleNumber();
+	  j=((THcSignalHit*)fPosTDCHits->At(i))->GetPaddleNumber()-1;
 	  index=((THcHodoscope *)GetParent())->GetScinIndex(fPlaneNum-1,j);
 	  postime[i]=postime[i]-((THcHodoscope *)GetParent())->GetHodoPosPhcCoeff(index)*
 	    TMath::Sqrt(TMath::Max(0.,(pos_ph[i]/((THcHodoscope *)GetParent())->GetHodoPosMinPh(index)-1)));
@@ -399,7 +411,7 @@ Int_t THcScintillatorPlane::PulseHeightCorrection()
 
 	  neg_ph[i]=((THcSignalHit*) fNegADCHits->At(i))->GetData();
 	  negtime[i]=((THcSignalHit*) fNegTDCHits->At(i))->GetData()*tdctotime;
-	  j=((THcSignalHit*)fNegTDCHits->At(i))->GetPaddleNumber();
+	  j=((THcSignalHit*)fNegTDCHits->At(i))->GetPaddleNumber()-1;
 	  index=((THcHodoscope *)GetParent())->GetScinIndex(fPlaneNum-1,j);
 	  negtime[i]=negtime[i]-((THcHodoscope *)GetParent())->GetHodoNegPhcCoeff(index)*
 	    TMath::Sqrt(TMath::Max(0.,(neg_ph[i]/((THcHodoscope *)GetParent())->GetHodoNegMinPh(index)-1)));
@@ -475,7 +487,7 @@ Int_t THcScintillatorPlane::PulseHeightCorrection()
       // to find hit location from difference in TDC.
       pos_ph[i]=((THcSignalHit*) fPosADCHits->At(i))->GetData();
       postime[i]=((THcSignalHit*) fPosTDCHits->At(i))->GetData()*tdctotime;
-      j=((THcSignalHit*)fPosTDCHits->At(i))->GetPaddleNumber();
+      j=((THcSignalHit*)fPosTDCHits->At(i))->GetPaddleNumber()-1;
       index=((THcHodoscope *)GetParent())->GetScinIndex(fPlaneNum-1,j);
       postime[i]=postime[i]-((THcHodoscope *)GetParent())->GetHodoPosPhcCoeff(index)*
 	TMath::Sqrt(TMath::Max(0.,(pos_ph[i]/((THcHodoscope *)GetParent())->GetHodoPosMinPh(index)-1)));
@@ -483,7 +495,7 @@ Int_t THcScintillatorPlane::PulseHeightCorrection()
       //
       neg_ph[i]=((THcSignalHit*) fNegADCHits->At(i))->GetData();
       negtime[i]=((THcSignalHit*) fNegTDCHits->At(i))->GetData()*tdctotime;
-      j=((THcSignalHit*)fNegTDCHits->At(i))->GetPaddleNumber();
+      j=((THcSignalHit*)fNegTDCHits->At(i))->GetPaddleNumber()-1;
       index=((THcHodoscope *)GetParent())->GetScinIndex(fPlaneNum-1,j);
       negtime[i]=negtime[i]-((THcHodoscope *)GetParent())->GetHodoNegPhcCoeff(index)*
 	TMath::Sqrt(TMath::Max(0.,(neg_ph[i]/((THcHodoscope *)GetParent())->GetHodoNegMinPh(index)-1)));
@@ -498,11 +510,6 @@ Int_t THcScintillatorPlane::PulseHeightCorrection()
       negtime[i]=negtime[i]-(hit_position-fPosRight)/((THcHodoscope *)GetParent())->GetHodoVelLight(index);
       scin_corrected_time[i]=0.5*(postime[i]+negtime[i]);
       fpTime=scin_corrected_time[i]-(fZpos+(j%2)*fDzpos)/(29.979*hbeta_pcent);
-      
-      //cout <<"hcana corr_time = "<<scin_corrected_time[i]<<endl;
-      //cout<<"hcana hbeta_pcent = "<<hbeta_pcent<<endl;
-      //cout<<"hcana zpos = "<<(fZpos+(j%2)*fDzpos)<<endl;
-      //cout <<"hcana fptime = "<<fpTime<<endl;
     }
     else { // only one tube fired
       scin_corrected_time[i]=0.0; // not a very good "flag" but there is the logical two_good_hits...
diff --git a/src/THcScintillatorPlane.h b/src/THcScintillatorPlane.h
index 0a2239a8b83fbd03720c6ce7395e7a73db225b13..cb832fa7dd0975bf1eb0d064e6e6cb91a2e60cfb 100644
--- a/src/THcScintillatorPlane.h
+++ b/src/THcScintillatorPlane.h
@@ -59,6 +59,10 @@ class THcScintillatorPlane : public THaSubDetector {
 
  protected:
 
+  TClonesArray* frPosTDCHits;
+  TClonesArray* frNegTDCHits;
+  TClonesArray* frPosADCHits;
+  TClonesArray* frNegADCHits;
   TClonesArray* fPosTDCHits;
   TClonesArray* fNegTDCHits;
   TClonesArray* fPosADCHits;