diff --git a/src/THcRaster.cxx b/src/THcRaster.cxx
index 9df716e717f2c7ae5fa39510e190ef60be17aec2..4c1880d24953aa58dfdfb399d12579c73d490662 100644
--- a/src/THcRaster.cxx
+++ b/src/THcRaster.cxx
@@ -1,11 +1,13 @@
 /** \class THcRaster
     \ingroup DetSupport
 
-  A class to decode the fast raster signals.
+  A class to 
+ the fast raster signals.
   Measures the two magnet currents which are proportional to horizontal and
   vertical beam position
 
-\author Buddhini Waidyawansa
+\author Buddhini Waidyawansa 
+\author Burcu Duran - Melanie Rehfuss (2017)
 
 */
 #include "TMath.h"
@@ -18,6 +20,9 @@
 #include "THcParmList.h"
 #include "THcGlobals.h"
 #include "THaGlobals.h"
+#include "THaApparatus.h"
+#include "THcRawAdcHit.h"
+#include "THcSignalHit.h"
 
 //#include "THcHitList.h"
 
@@ -38,37 +43,95 @@ THcRaster::THcRaster( const char* name, const char* description,
 
   fAnalyzePedestals = 0;
   fNPedestalEvents = 0;
-  fRawXADC = 0;
-  fRawYADC = 0;
-  fXADC = 0;
-  fYADC = 0;
-  fXpos = 0;
-  fYpos = 0;
+  FRXA_rawadc = 0;
+  FRXB_rawadc = 0;
+  FRYA_rawadc = 0;
+  FRYB_rawadc = 0;
+  fXA_ADC = 0;
+  fYA_ADC = 0;
+  fXB_ADC = 0;
+  fYB_ADC = 0;
+  fXA_pos = 0;
+  fYA_pos = 0;
+  fXB_pos = 0;
+  fYB_pos = 0;
   fFrCalMom = 0;
-  fFrXADCperCM = 0;
-  fFrXADCperCM = 0;
+  fFrXA_ADCperCM = 1.0;
+  fFrYA_ADCperCM = 1.0;
+  fFrXB_ADCperCM = 1.0;
+  fFrYB_ADCperCM = 1.0;
+  fFrXA_ADC_zero_offset = 0;
+  fFrXA_ADC_zero_offset =0;
+  fFrXA_ADC_zero_offset =0;
+  fFrXA_ADC_zero_offset =0;
 
-  for(Int_t i=0;i<2;i++){
-    fPedADC[i] = 0;
-    fAvgPedADC[i] = 0;
-  }
+  frPosAdcPulseIntRaw  = NULL;
+
+  for(Int_t i=0;i<4;i++){
+
+	fPedADC[i] = 0;
+    }
+
+  InitArrays();
 }
 
+//_____________________________________________________________________________
+THcRaster::THcRaster( ) :
+  THaBeamDet("THcRaster") // no default constructor available
+{
+
+ frPosAdcPulseIntRaw  = NULL;
 
+  InitArrays();
+  
+  
+}
 //_____________________________________________________________________________
 THcRaster::~THcRaster()
 {
+
+// Destructor
+  
+  delete frPosAdcPulseIntRaw;  frPosAdcPulseIntRaw  = NULL;
+
+  DeleteArrays();
 }
 
+//_____________________________________________________________________________
 
+THaAnalysisObject::EStatus THcRaster::Init( const TDatime& date )
+{
+  //cout << "THcRaster::Init()" << endl;
 
+  char EngineDID[] = "xRASTER";
+  EngineDID[0] = toupper(GetApparatus()->GetName()[0]);
+  
+  
+  // Fill detector map with RASTER type channels
+  if( gHcDetectorMap->FillMap(fDetMap, EngineDID) < 0 ) {
+    static const char* const here = "Init()";
+     Error( Here(here), "Error filling detectormap for %s.", EngineDID);
+
+    return kInitError;
+  }
+
+  InitHitList(fDetMap,"THcRasterRawHit",fDetMap->GetTotNumChan()+1);
+
+  EStatus status;
+  if( (status = THaBeamDet::Init( date )) )
+    return fStatus=status;
+
+  return fStatus = kOK;
+
+}
 
 //_____________________________________________________________________________
 Int_t THcRaster::ReadDatabase( const TDatime& date )
+
 {
 
   // Read parameters such as calibration factor, of this detector from the database.
-  cout << "THcRaster::ReadDatabase()" << endl;
+  //cout << "THcRaster::ReadDatabase()" << endl;
 
   char prefix[2];
 
@@ -78,12 +141,19 @@ Int_t THcRaster::ReadDatabase( const TDatime& date )
   prefix[0]='g';
   prefix[1]='\0';
 
+  
 
   // string names;
   DBRequest list[]={
     {"fr_cal_mom",&fFrCalMom, kDouble},
-    {"frx_adcpercm",&fFrXADCperCM, kDouble},
-    {"fry_adcpercm",&fFrYADCperCM, kDouble},
+    {"frxa_adcpercm",&fFrXA_ADCperCM, kDouble},
+    {"frya_adcpercm",&fFrYA_ADCperCM, kDouble},
+    {"frxb_adcpercm",&fFrXB_ADCperCM, kDouble},
+    {"fryb_adcpercm",&fFrYB_ADCperCM, kDouble},
+    {"frxa_adc_zero_offset",&fFrXA_ADC_zero_offset,kDouble},
+    {"frya_adc_zero_offset",&fFrYA_ADC_zero_offset,kDouble},
+    {"frxb_adc_zero_offset",&fFrXB_ADC_zero_offset,kDouble},
+    {"fryb_adc_zero_offset",&fFrYB_ADC_zero_offset,kDouble},
     {"pbeam",&fgpbeam, kDouble},
     {"frx_dist", &fgfrx_dist, kDouble},
     {"fry_dist", &fgfry_dist, kDouble},
@@ -101,9 +171,13 @@ Int_t THcRaster::ReadDatabase( const TDatime& date )
   fgbeam_yoff = 0.0;
   fgbeam_ypoff = 0.0;
   fgusefr = 0;
+ 
+  
   // get the calibration factors from gbeam.param file
   gHcParms->LoadParmValues((DBRequest*)&list,prefix);
 
+  frPosAdcPulseIntRaw  = new TClonesArray("THcSignalHit", 4);
+
   return kOK;
 
 }
@@ -114,7 +188,7 @@ Int_t THcRaster::DefineVariables( EMode mode )
 {
   // Initialize global variables for histogramming and tree
 
-  cout << "THcRaster::DefineVariables called " << GetName() << endl;
+  //cout << "THcRaster::DefineVariables called " << GetName() << endl;
 
   if( mode == kDefine && fIsSetup ) return kOK;
   fIsSetup = ( mode == kDefine );
@@ -122,12 +196,18 @@ Int_t THcRaster::DefineVariables( EMode mode )
   // Register variables in global list
 
   RVarDef vars[] = {
-    {"frx_raw_adc",  "Raster X raw ADC",    "fRawXADC"},
-    {"fry_raw_adc",  "Raster Y raw ADC",    "fRawYADC"},
-    {"frx_adc",  "Raster X ADC",    "fXADC"},
-    {"fry_adc",  "Raster Y ADC",    "fYADC"},
-    {"frx",  "Raster X position",    "fXpos"},
-    {"fry",  "Raster Y position",    "fYpos"},
+    {"frxaRawAdc",  "Raster XA raw ADC",    "FRXA_rawadc"},
+    {"fryaRawAdc",  "Raster YA raw ADC",    "FRXB_rawadc"},
+    {"frxbRawAdc",  "Raster XB raw ADC",    "FRYA_rawadc"},
+    {"frybRawAdc",  "Raster YB raw ADC",    "FRYB_rawadc"},
+    {"frxa_adc",  "Raster XA ADC",    "fXA_ADC"},
+    {"frya_adc",  "Raster YA ADC",    "fYA_ADC"},
+    {"frxb_adc",  "Raster XB ADC",    "fXB_ADC"},
+    {"fryb_adc",  "Raster YB ADC",    "fYB_ADC"},
+    {"fr_xa",  "Raster XA position",    "fXA_pos"},
+    {"fr_ya",  "Raster YA position",    "fYA_pos"},
+    {"fr_xb",  "Raster XB position",    "fXB_pos"},
+    {"fr_yb",  "Raster YB position",    "fYB_pos"},
     { 0 }
   };
 
@@ -135,29 +215,15 @@ Int_t THcRaster::DefineVariables( EMode mode )
 }
 
 //_____________________________________________________________________________
-THaAnalysisObject::EStatus THcRaster::Init( const TDatime& date )
-{
-  cout << "THcRaster::Init()" << endl;
-
-  // Fill detector map with RASTER type channels
-  if( gHcDetectorMap->FillMap(fDetMap, "RASTER") < 0 ) {
-    static const char* const here = "Init()";
-    Error( Here(here), "Error filling detectormap for %s.",
-  	   "RASTER");
-    return kInitError;
-  }
 
-  THcHitList::InitHitList(fDetMap,"THcRasterRawHit",fDetMap->GetTotNumChan()+1);
-
-  EStatus status;
-  if( (status = THaBeamDet::Init( date )) )
-    return fStatus=status;
+inline
+void THcRaster::Clear(Option_t* opt)
+{
 
-  return fStatus = kOK;
+ fNhits = 0;
 
+ frPosAdcPulseIntRaw->Clear();
 }
-
-
 //_____________________________________________________________________________
 void THcRaster::AccumulatePedestals(TClonesArray* rawhits)
 {
@@ -182,21 +248,32 @@ void THcRaster::AccumulatePedestals(TClonesArray* rawhits)
 
   Int_t nrawhits = rawhits->GetLast()+1;
 
-  Int_t ihit=0;
+   Int_t ihit = 0;
+   UInt_t nrPosAdcHits=0;
+
+   while(ihit < nrawhits) {
+     THcRasterRawHit* hit = (THcRasterRawHit *) fRawHitList->At(ihit);
+     THcRawAdcHit&  rawPosAdcHit = hit->GetRawAdcHitPos();
+     Int_t          nsig         = hit->fCounter;
+      
+     for (UInt_t thit=0; thit<rawPosAdcHit.GetNPulses(); ++thit) {
+       ((THcSignalHit*) frPosAdcPulseIntRaw->ConstructedAt(nrPosAdcHits))->Set(nsig, rawPosAdcHit.GetPulseIntRaw(thit));
+       ++nrPosAdcHits;
+     }
+    
+     ihit++;
+  }
+
 
-  while(ihit<nrawhits) {
-    THcRasterRawHit* hit = (THcRasterRawHit *) fRawHitList->At(ihit);
-    if(hit->fADC_xsig>0) {
-      fPedADC[0] += hit->fADC_xsig;
-      //std::cout<<" raster x pedestal collect "<<fPedADC[0]<<std::endl;
-    }
-    if(hit->fADC_ysig>0) {
-      fPedADC[1] += hit->fADC_ysig;
-      //std::cout<<" raster y pedestal collect "<<fPedADC[1]<<std::endl;
-    }
+   for(Int_t ielem = 0; ielem < frPosAdcPulseIntRaw->GetEntries(); ielem++) {
+       Int_t    nraster        = ((THcSignalHit*) frPosAdcPulseIntRaw->ConstructedAt(ielem))->GetPaddleNumber() - 1;
+        Double_t pulseIntRaw  = ((THcSignalHit*) frPosAdcPulseIntRaw->ConstructedAt(ielem))->GetData();
+       if (nraster ==0) fPedADC[0] = pulseIntRaw;
+        if (nraster ==1) fPedADC[1] = pulseIntRaw;
+        if (nraster ==2) fPedADC[2] = pulseIntRaw;
+        if (nraster ==3) fPedADC[3] = pulseIntRaw;
+   }
 
-    ihit++;
-  }
 
 }
 
@@ -221,11 +298,13 @@ void THcRaster::CalculatePedestals( )
        endif
      endif
   */
-  for(Int_t i=0;i<2;i++){
-    fAvgPedADC[i] = fPedADC[i]/ fNPedestalEvents;
-    // std::cout<<" raster pedestal "<<fAvgPedADC[i]<<std::endl;
-  }
-
+  
+    fFrXA_ADC_zero_offset = fPedADC[0]/ fNPedestalEvents;
+    fFrYA_ADC_zero_offset = fPedADC[1]/ fNPedestalEvents;
+    fFrXB_ADC_zero_offset = fPedADC[2]/ fNPedestalEvents;
+    fFrYB_ADC_zero_offset = fPedADC[3]/ fNPedestalEvents;
+    
+  
 }
 
 
@@ -233,44 +312,56 @@ void THcRaster::CalculatePedestals( )
 Int_t THcRaster::Decode( const THaEvData& evdata )
 {
 
-  // loops over all channels defined in the detector map
-  // copies raw data into local variables
-  // performs pedestal subtraction
+  
+  // Get the Hall C style hitlist (fRawHitList) for this event
 
+  fNhits = DecodeToHitList(evdata);
 
-  // Get the Hall C style hitlist (fRawHitList) for this event
-  Int_t fNhits = THcHitList::DecodeToHitList(evdata);
 
   // Get the pedestals from the first 1000 events
   //if(fNPedestalEvents < 10)
-  if((gHaCuts->Result("Pedestal_event")) & (fNPedestalEvents < 1000)){
+  if(gHaCuts->Result("Pedestal_event") & (fNPedestalEvents < 1000)) {
       AccumulatePedestals(fRawHitList);
       fAnalyzePedestals = 1;	// Analyze pedestals first normal events
       fNPedestalEvents++;
 
       return(0);
     }
-  if(fAnalyzePedestals) {
-    CalculatePedestals();
-    fAnalyzePedestals = 0;	// Don't analyze pedestals next event
+
+    if(fAnalyzePedestals) {
+      CalculatePedestals();
+      fAnalyzePedestals = 0;	// Don't analyze pedestals next event
+    }
+  
+
+   Int_t ihit = 0;
+   UInt_t nrPosAdcHits=0;
+
+   while(ihit < fNhits) {
+     THcRasterRawHit* hit = (THcRasterRawHit *) fRawHitList->At(ihit);
+     THcRawAdcHit&  rawPosAdcHit = hit->GetRawAdcHitPos();
+     Int_t          nsig         = hit->fCounter;
+      
+     for (UInt_t thit=0; thit<rawPosAdcHit.GetNPulses(); ++thit) {
+       ((THcSignalHit*) frPosAdcPulseIntRaw->ConstructedAt(nrPosAdcHits))->Set(nsig, rawPosAdcHit.GetPulseIntRaw(thit));
+       ++nrPosAdcHits;
+     }
+     
+     ihit++;
   }
 
-  Int_t ihit = 0;
 
-  while(ihit < fNhits) {
-    THcRasterRawHit* hit = (THcRasterRawHit *) fRawHitList->At(ihit);
+   for(Int_t ielem = 0; ielem < frPosAdcPulseIntRaw->GetEntries(); ielem++) {
+       Int_t    nraster        = ((THcSignalHit*) frPosAdcPulseIntRaw->ConstructedAt(ielem))->GetPaddleNumber() - 1;
+        Double_t pulseIntRaw  = ((THcSignalHit*) frPosAdcPulseIntRaw->ConstructedAt(ielem))->GetData();
+        if (nraster ==0) FRXA_rawadc = pulseIntRaw;
+        if (nraster ==1) FRXB_rawadc = pulseIntRaw;
+        if (nraster ==2) FRYA_rawadc = pulseIntRaw;
+        if (nraster ==3) FRYB_rawadc = pulseIntRaw;
+   }
+
 
-    if(hit->fADC_xsig>0) {
-      fRawXADC = hit->fADC_xsig;
-      //std::cout<<" Raw X ADC = "<<fRawXADC<<std::endl;
-    }
 
-    if(hit->fADC_ysig>0) {
-      fRawYADC = hit->fADC_ysig;
-      //std::cout<<" Raw Y ADC = "<<fRawYADC<<std::endl;
-    }
-    ihit++;
-  }
 
   return 0;
 
@@ -283,13 +374,12 @@ Int_t THcRaster::Decode( const THaEvData& evdata )
 //_____________________________________________________________________________
 Int_t THcRaster::Process( ){
 
-	Double_t eBeam = 0.001;
+  Double_t fgpBeam = 0.001;
   DBRequest list[] = {
-    {"gpbeam", &eBeam, kDouble, 0, 1},
+    {"gpbeam", &fgpBeam, kDouble, 0, 1},
     {0}
   };
-  gHcParms->LoadParmValues(list);
-
+gHcParms->LoadParmValues(list);
   /*
     calculate raster position from ADC value.
     From ENGINE/g_analyze_misc.f -
@@ -299,8 +389,11 @@ Int_t THcRaster::Process( ){
   */
 
   // calculate the raster currents
-  fXADC =  fRawXADC-fAvgPedADC[0];
-  fYADC =  fRawYADC-fAvgPedADC[1];
+  fXA_ADC =  FRXA_rawadc-fFrXA_ADC_zero_offset;
+  fYA_ADC =  FRXB_rawadc-fFrYA_ADC_zero_offset;
+  fXB_ADC =  FRYA_rawadc-fFrXB_ADC_zero_offset;
+  fYB_ADC =  FRYB_rawadc-fFrYB_ADC_zero_offset;
+  
   //std::cout<<" Raw X ADC = "<<fXADC<<" Raw Y ADC = "<<fYADC<<std::endl;
 
   /*
@@ -310,8 +403,10 @@ Int_t THcRaster::Process( ){
     gfry = (gfry_adc/gfry_adcpercm)*(gfr_cal_mom/ebeam)
   */
 
-  fXpos = (fXADC/fFrXADCperCM)*(fFrCalMom/eBeam);
-  fYpos = (fYADC/fFrYADCperCM)*(fFrCalMom/eBeam);
+  fXA_pos = (fXA_ADC/fFrXA_ADCperCM)*(fFrCalMom/fgpBeam);
+  fYA_pos = (fYA_ADC/fFrYA_ADCperCM)*(fFrCalMom/fgpBeam);
+  fXB_pos = (fXB_ADC/fFrXB_ADCperCM)*(fFrCalMom/fgpBeam);
+  fYB_pos = (fYB_ADC/fFrYB_ADCperCM)*(fFrCalMom/fgpBeam);
 
   // std::cout<<" X = "<<fXpos<<" Y = "<<fYpos<<std::endl;
 
@@ -319,9 +414,9 @@ Int_t THcRaster::Process( ){
   Double_t tt;
   Double_t tp;
   if(fgusefr != 0) {
-    fPosition[1].SetXYZ(fXpos+fgbeam_xoff, fYpos+fgbeam_yoff, 0.0);
-    tt = fXpos/fgfrx_dist+fgbeam_xpoff;
-    tp = fYpos/fgfry_dist+fgbeam_ypoff;
+    fPosition[1].SetXYZ(fXA_pos+fgbeam_xoff, fYA_pos+fgbeam_yoff, 0.0);
+    tt = fXA_pos/fgfrx_dist+fgbeam_xpoff;
+    tp = fYA_pos/fgfry_dist+fgbeam_ypoff;
   } else {			// Just use fixed beam position and angle
     fPosition[0].SetXYZ(fgbeam_xoff, fgbeam_yoff, 0.0);
     tt = fgbeam_xpoff;
diff --git a/src/THcRaster.h b/src/THcRaster.h
index 102fbb44ab8ae896161355b74ee98dc9ef96db85..0fbcadbf86c6a512b74599a00091434e87c9f05b 100644
--- a/src/THcRaster.h
+++ b/src/THcRaster.h
@@ -1,3 +1,6 @@
+
+//author Burcu Duran - Melanie Rehfuss (2017) 
+
 #ifndef ROOT_THcRaster
 #define ROOT_THcRaster
 
@@ -15,6 +18,7 @@
 #include "THcRasterRawHit.h"
 #include "THaCutList.h"
 
+
 class THcRaster : public THaBeamDet, public THcHitList {
 
  public:
@@ -22,9 +26,20 @@ class THcRaster : public THaBeamDet, public THcHitList {
   THcRaster(const char* name, const char* description ="",THaApparatus* a = NULL );
 
   ~THcRaster();
+
+  void  Clear(Option_t* opt="");
+  void    AccumulatePedestals(TClonesArray* rawhits);
+  void    CalculatePedestals();
+ 
+  Int_t  Decode( const THaEvData& );
+  Int_t  ReadDatabase( const TDatime& date );
+  Int_t DefineVariables( EMode mode );
+
   EStatus    Init( const TDatime& run_time );
 
-  Int_t      Decode( const THaEvData& );
+  void  InitArrays() { /* do nothing */;}
+  void  DeleteArrays() { /* do nothing */;}
+ 
   Int_t      Process();
 
   //  TVector3 GetPosition()  const { return fPosition[2]; }
@@ -34,12 +49,16 @@ class THcRaster : public THaBeamDet, public THcHitList {
   Double_t GetCurrentX() { return fRawPos[0]; }
   Double_t GetCurrentY() { return fRawPos[1]; }
 
+  THcRaster();
+
  protected:
 
-  /* void InitializeReconstruction(); */
-  Int_t  ReadDatabase( const TDatime& date );
-  Int_t DefineVariables( EMode mode );
+  //event information
 
+  Int_t fNhits;
+
+  /* void InitializeReconstruction(); */
+  
   Double_t       fgpbeam;   //beam momentum
   Double_t       fgfrx_dist;     //Distance of raster to target
   Double_t       fgfry_dist;
@@ -49,31 +68,42 @@ class THcRaster : public THaBeamDet, public THcHitList {
   Double_t       fgbeam_ypoff; // Beam offsets
   Int_t          fgusefr;   /* Use Raster for beam position */
 
-  Double_t       fRawXADC;  // X raw ADC
-  Double_t       fRawYADC;  // Y raw ADC
-  Double_t       fXADC;     // X ADC
-  Double_t       fYADC;     // Y ADC
-  Double_t       fXpos;     // X position
-  Double_t       fYpos;     // Y position
+  Double_t       FRXA_rawadc;  // XA raw ADC
+  Double_t       FRYA_rawadc;  // YA raw ADC
+  Double_t       FRXB_rawadc;  // XB raw ADC
+  Double_t       FRYB_rawadc;  // YB raw ADC
+  Double_t       fXA_ADC;     // XA ADC
+  Double_t       fYA_ADC;     // YA ADC
+  Double_t       fXB_ADC;     // XB ADC
+  Double_t       fYB_ADC;     // YB ADC
+  Double_t       fXA_pos;     // XA position
+  Double_t       fYA_pos;     // YA position
+  Double_t       fXB_pos;     // XB position
+  Double_t       fYB_pos;     // YB position
 
+  Double_t       fFrXA_ADC_zero_offset;
+  Double_t       fFrYA_ADC_zero_offset;
+  Double_t       fFrXB_ADC_zero_offset;
+  Double_t       fFrYB_ADC_zero_offset;
 
-  Double_t       fPedADC[2];     // ADC poedestals
-  Double_t       fAvgPedADC[2];     // Avergage ADC poedestals
+
+  Double_t       fPedADC[4];     // ADC poedestals
+  //Double_t       fAvgPedADC[4];     // Avergage ADC poedestals
 
   Double_t       fRawPos[2];     // current in Raster ADCs for position
-  TVector3       fPosition[2];   // Beam position at 1st, 2nd BPM or at the target (meters)
+  TVector3       fPosition[4];   // Beam position at 1st, 2nd BPM or at the target (meters)
   TVector3       fDirection;
 
+  TClonesArray* frPosAdcPulseIntRaw;
+
  private:
   Bool_t    fAnalyzePedestals;
   Int_t     fNPedestalEvents;
   Double_t  fFrCalMom;
-  Double_t  fFrXADCperCM;
-  Double_t  fFrYADCperCM;
-
-
-  void   CalculatePedestals();
-  void   AccumulatePedestals(TClonesArray* rawhits);
+  Double_t  fFrXA_ADCperCM;
+  Double_t  fFrYA_ADCperCM;
+  Double_t  fFrXB_ADCperCM;
+  Double_t  fFrYB_ADCperCM;
 
   ClassDef(THcRaster, 0);	// add THcRaster to ROOT library
 };
diff --git a/src/THcRasterRawHit.cxx b/src/THcRasterRawHit.cxx
index e6a58806c2f5f91955e5565ca473488564fd21ef..65ac89ac41323408d2d586fb04fea6751245104e 100644
--- a/src/THcRasterRawHit.cxx
+++ b/src/THcRasterRawHit.cxx
@@ -1,5 +1,6 @@
 // Author : Buddhini Waidyawansa
 // Date : 23-01-2014
+//Author : Burcu Duran - Melanie Rehfuss (2017)
 
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -19,74 +20,6 @@
 
 #include "THcRasterRawHit.h"
 
-using namespace std;
-
-
-void THcRasterRawHit::SetData(Int_t signal, Int_t data) {
-  if(signal==0) {
-    fADC_xsync = data;
-  } else if (signal==1) {
-    fADC_xsig = data;
-  } else if(signal==2) {
-    fADC_ysync = data;
-  } else if (signal==3) {
-    fADC_ysig = data;
-  }
-
-  // std::cout<<" xsync = "<<fADC_xsync
-  // 	   <<" xsig  = "<<fADC_xsig
-  // 	   <<" ysync  = "<<fADC_ysync
-  // 	   <<" ysig  = "<<fADC_ysig << std::endl;
-
-}
-
-Int_t THcRasterRawHit::GetData(Int_t signal) {
-
-  if(signal==1) {
-    return(fADC_xsync);
-  } else if (signal==2) {
-    return(fADC_xsig);
-  } else if(signal==3) {
-    return(fADC_ysync);
-  } else if (signal==4) {
-    return(fADC_ysig);
-  }
-  return(-1);
-}
-
-// Int_t THcRasterRawHit::Compare(const TObject* obj) const
-// {
-//   // Compare to sort by the plane
-//   // There is only one raster so no need for an additional check on the counter
-
-//   const THcRasterRawHit* hit = dynamic_cast<const THcRasterRawHit*>(obj);
-
-//   if(!hit) return -1;
-//   Int_t p1 = fPlane;
-//   Int_t p2 = hit->fPlane;
-//   if(p1 < p2) return -1;
-//   else if(p1 > p2) return 1;
-
-// }
-
-//_____________________________________________________________________________
-THcRasterRawHit& THcRasterRawHit::operator=( const THcRasterRawHit& rhs )
-{
-  // Assignment operator.
-
-  THcRawHit::operator=(rhs);
-  if ( this != &rhs ) {
-    fPlane     = rhs.fPlane;
-    fCounter   = rhs.fCounter;
-    fADC_xsync = rhs.fADC_xsync;
-    fADC_xsig  = rhs.fADC_xsig;
-    fADC_ysync = rhs.fADC_ysync;
-    fADC_ysig  = rhs.fADC_ysig;
-  }
-  return *this;
-}
-
-
 //////////////////////////////////////////////////////////////////////////
 ClassImp(THcRasterRawHit)
 
diff --git a/src/THcRasterRawHit.h b/src/THcRasterRawHit.h
index b7062278ee2dc1fefbcd4f498c1a0733a57b71d7..b06897cc466b9e396df52c390113af28c57de50b 100644
--- a/src/THcRasterRawHit.h
+++ b/src/THcRasterRawHit.h
@@ -1,3 +1,5 @@
+//Author : Burcu Duran - Melanie Rehfuss (2017)
+
 #ifndef ROOT_THcRasterRawHit
 #define ROOT_THcRasterRawHit
 
@@ -8,31 +10,13 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "THcRawHit.h"
+#include "THcRawHodoHit.h"
 
-class THcRasterRawHit : public THcRawHit {
+class THcRasterRawHit : public THcRawHodoHit {
 
  public:
 
- THcRasterRawHit(Int_t plane=0, Int_t counter=0) : THcRawHit(plane, counter),
-    fADC_xsig(-1), fADC_ysig(-1),
-    fADC_xsync(-1), fADC_ysync(-1) {
-  }
-
-  THcRasterRawHit& operator=( const THcRasterRawHit& );
-  ~THcRasterRawHit() {}
-
-  void Clear( Option_t* opt="" )
-  { fADC_xsig = -1; fADC_ysig = -1; fADC_xsync = -1; fADC_ysync = -1; }
-
-  void SetData(Int_t signal, Int_t data);
-  Int_t GetData(Int_t signal);
-
-  // signals
-  Int_t fADC_xsig;
-  Int_t fADC_ysig;
-  Int_t fADC_xsync;
-  Int_t fADC_ysync;
+   friend class THcRaster;
 
  protected: