diff --git a/examples/PARAM/htracking.param b/examples/PARAM/htracking.param
index 77a0b6ff62e0bacabb48dd11a4e2b91be2fb3071..3b9ff5b91e60e72409df50d24e083b55899c778b 100644
--- a/examples/PARAM/htracking.param
+++ b/examples/PARAM/htracking.param
@@ -96,3 +96,6 @@
 ;  htrack_eff_test_scin_planes is the number of planes nec needed to 
 ;  set sweet spot to true. 4 is extra clean, 3 is good enough for e-'s.
   htrack_eff_test_num_scin_planes = 4
+
+  hcer_npe = 2.0
+  hnormalized_energy_tot = 0.7
diff --git a/examples/PARAM/stracking.param b/examples/PARAM/stracking.param
index 69fdf5c23d855abb45eefadb618ea082aba67449..c93d712d6f791c5054df41f0c774d99b3c4bf59b 100644
--- a/examples/PARAM/stracking.param
+++ b/examples/PARAM/stracking.param
@@ -70,3 +70,6 @@
 ;  strack_eff_test_scin_planes is the number of planes nec needed to 
 ;  set sweet spot to true. 4 is extra clean, 3 is good enough for e-'s.
   strack_eff_test_num_scin_planes = 4
+
+  scer_npe = 2.0
+  snormalized_energy_tot = 0.7
\ No newline at end of file
diff --git a/src/THcHodoscope.cxx b/src/THcHodoscope.cxx
index 7f26c82bd05a62693f1a4f60cbd67ed445da9c5b..c49a318a2490e833103ed23b1a43ad4c2d30f955 100644
--- a/src/THcHodoscope.cxx
+++ b/src/THcHodoscope.cxx
@@ -114,8 +114,6 @@ void THcHodoscope::Setup(const char* name, const char* description)
     strcpy(fPlaneNames[i], plane_names[i].c_str());
   }
 
-  //myShower = new THcShower("cal", "Shower" );
-
   /*  fPlaneNames = new char* [fNPlanes];
   for(Int_t i=0;i<fNPlanes;i++) {fPlaneNames[i] = new char[3];}
   // Should get the plane names from parameters.  
@@ -135,6 +133,48 @@ void THcHodoscope::Setup(const char* name, const char* description)
     fPlanes[i] = new THcScintillatorPlane(fPlaneNames[i], desc, i+1,fNPlanes,this); // Number planes starting from zero!!
     cout << "Created Scintillator Plane " << fPlaneNames[i] << ", " << desc << endl;
   }
+
+  // --------------- To get energy from THcShower ----------------------
+  const char* shower_detector_name = "cal";  
+  //  THaApparatus* app;
+  THcHallCSpectrometer *app = dynamic_cast<THcHallCSpectrometer*>(GetApparatus());
+  THaDetector* det = app->GetDetector( shower_detector_name );
+
+  if( dynamic_cast<THcShower*>(det) ) {
+    fShower = dynamic_cast<THcShower*>(det);
+  }
+  else if( !dynamic_cast<THcShower*>(det) ) {
+    cout << "Warining: calorimeter analysis module " 
+	 << shower_detector_name << " not loaded for spectrometer "
+	 << prefix << endl;
+    
+    fShower = NULL;
+  }
+  
+  // --------------- To get energy from THcShower ----------------------
+
+  // --------------- To get NPEs from THcCherenkov -------------------
+  const char* chern_detector_name = "cher";
+  THaDetector* detc = app->GetDetector( chern_detector_name );
+  
+  if( dynamic_cast<THcCherenkov*>(detc) ) {
+    fChern = dynamic_cast<THcCherenkov*>(detc);  
+  }
+  else if( !dynamic_cast<THcCherenkov*>(detc) ) {
+    cout << "Warining: Cherenkov detector analysis module " 
+	 << chern_detector_name << " not loaded for spectrometer "
+	 << prefix << endl;
+    
+    fChern = NULL;
+  }
+  
+  // --------------- To get NPEs from THcCherenkov -------------------
+
+  fScinShould = 0;
+  fScinDid = 0;
+  gHcParms->Define(Form("%shodo_did",prefix),"Total hodo tracks",fScinDid);
+  gHcParms->Define(Form("%shodo_should",prefix),"Total hodo triggers",fScinShould);
+
   delete [] desc;
 }
 
@@ -144,47 +184,11 @@ THaAnalysisObject::EStatus THcHodoscope::Init( const TDatime& date )
   cout << "In THcHodoscope::Init()" << endl;
   Setup(GetName(), GetTitle());
 
-  fGood_hits = 0;
-  gHcParms->Define("hgood_hits", "Good Hits",fGood_hits);
-
   // Should probably put this in ReadDatabase as we will know the
   // maximum number of hits after setting up the detector map
   // But it needs to happen before the sub detectors are initialized
   // so that they can get the pointer to the hitlist.
 
-  // --------------- To get energy from THcShower ----------------------
-  const char* shower_detector_name = "cal";  
-  //  THaApparatus* app;
-  THcHallCSpectrometer *app = static_cast<THcHallCSpectrometer*>(GetApparatus());
-  THaDetector* det = app->GetDetector( shower_detector_name );
-
-  if( !dynamic_cast<THcShower*>(det) ) {
-    Error("THcHodoscope", "Cannot find shower detector %s",
-   	  shower_detector_name );
-    return fStatus = kInitError;
-  }
-
-  fShower = static_cast<THcShower*>(det);     // fShower is a membervariable
-
-  // --------------- To get energy from THcShower ----------------------
-
-  // --------------- To get energy from THcCherenkov -------------------
-  const char* apparatus_name = "H";
-  if( strcmp(app->GetName(), apparatus_name ) == 0 ) {
-
-    const char* chern_detector_name = "cher";
-    THaDetector* detc = app->GetDetector( chern_detector_name );
-
-    if( !dynamic_cast<THcCherenkov*>(detc) ) {
-      Error("THcHodoscope", "Cannot find Cherenkov detector %s",
-	    chern_detector_name );
-      return fStatus = kInitError;
-    }
-
-    fChern = static_cast<THcCherenkov*>(detc);     // fShower is a membervariable
-
-  }
-  // --------------- To get energy from THcCherenkov -------------------
 
   InitHitList(fDetMap, "THcRawHodoHit", 100);
 
@@ -378,9 +382,6 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
   //  Int_t plen=strlen(parname);
   cout << " readdatabse hodo fnplanes = " << fNPlanes << endl;
 
-  fScinShould = 0;
-  fScinDid = 0;
-
   fNPaddle = new UInt_t [fNPlanes];
   fFPTime = new Double_t [fNPlanes];
   fPlaneCenter = new Double_t[fNPlanes];
@@ -435,34 +436,40 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
 
   prefix[1]='\0';
   DBRequest list[]={
-    {"start_time_center",     &fStartTimeCenter,                      kDouble},
-    {"start_time_slop",       &fStartTimeSlop,                        kDouble},
-    {"scin_tdc_to_time",      &fScinTdcToTime,                        kDouble},
-    {"scin_tdc_min",          &fScinTdcMin,                           kDouble},
-    {"scin_tdc_max",          &fScinTdcMax,                           kDouble},
-    {"tof_tolerance",         &fTofTolerance,          kDouble,         0,  1},
-    {"pathlength_central",    &fPathLengthCentral,                    kDouble},
-    {"hodo_vel_light",        &fHodoVelLight[0],       kDouble,  fMaxHodoScin},
-    {"hodo_pos_sigma",        &fHodoPosSigma[0],       kDouble,  fMaxHodoScin},
-    {"hodo_neg_sigma",        &fHodoNegSigma[0],       kDouble,  fMaxHodoScin},
-    {"hodo_pos_minph",        &fHodoPosMinPh[0],       kDouble,  fMaxHodoScin},
-    {"hodo_neg_minph",        &fHodoNegMinPh[0],       kDouble,  fMaxHodoScin},
-    {"hodo_pos_phc_coeff",    &fHodoPosPhcCoeff[0],    kDouble,  fMaxHodoScin},
-    {"hodo_neg_phc_coeff",    &fHodoNegPhcCoeff[0],    kDouble,  fMaxHodoScin},
-    {"hodo_pos_time_offset",  &fHodoPosTimeOffset[0],  kDouble,  fMaxHodoScin},
-    {"hodo_neg_time_offset",  &fHodoNegTimeOffset[0],  kDouble,  fMaxHodoScin},
-    {"hodo_pos_ped_limit",    &fHodoPosPedLimit[0],    kInt,     fMaxHodoScin},
-    {"hodo_neg_ped_limit",    &fHodoNegPedLimit[0],    kInt,     fMaxHodoScin},
-    {"tofusinginvadc",        &fTofUsingInvAdc,        kInt,            0,  1},
-    {"xloscin",               &fxLoScin[0],            kInt,     (UInt_t) fNHodoscopes},
-    {"xhiscin",               &fxHiScin[0],            kInt,     (UInt_t) fNHodoscopes},
-    {"yloscin",               &fyLoScin[0],            kInt,     (UInt_t) fNHodoscopes},
-    {"yhiscin",               &fyHiScin[0],            kInt,     (UInt_t) fNHodoscopes},
-    {"track_eff_test_num_scin_planes",   &fTrackEffTestNScinPlanes,      kInt},
+    {"start_time_center",                &fStartTimeCenter,                      kDouble},
+    {"start_time_slop",                  &fStartTimeSlop,                        kDouble},
+    {"scin_tdc_to_time",                 &fScinTdcToTime,                        kDouble},
+    {"scin_tdc_min",                     &fScinTdcMin,                           kDouble},
+    {"scin_tdc_max",                     &fScinTdcMax,                           kDouble},
+    {"tof_tolerance",                    &fTofTolerance,          kDouble,         0,  1},
+    {"pathlength_central",               &fPathLengthCentral,                    kDouble},
+    {"hodo_vel_light",                   &fHodoVelLight[0],       kDouble,  fMaxHodoScin},
+    {"hodo_pos_sigma",                   &fHodoPosSigma[0],       kDouble,  fMaxHodoScin},
+    {"hodo_neg_sigma",                   &fHodoNegSigma[0],       kDouble,  fMaxHodoScin},
+    {"hodo_pos_minph",                   &fHodoPosMinPh[0],       kDouble,  fMaxHodoScin},
+    {"hodo_neg_minph",                   &fHodoNegMinPh[0],       kDouble,  fMaxHodoScin},
+    {"hodo_pos_phc_coeff",               &fHodoPosPhcCoeff[0],    kDouble,  fMaxHodoScin},
+    {"hodo_neg_phc_coeff",               &fHodoNegPhcCoeff[0],    kDouble,  fMaxHodoScin},
+    {"hodo_pos_time_offset",             &fHodoPosTimeOffset[0],  kDouble,  fMaxHodoScin},
+    {"hodo_neg_time_offset",             &fHodoNegTimeOffset[0],  kDouble,  fMaxHodoScin},
+    {"hodo_pos_ped_limit",               &fHodoPosPedLimit[0],    kInt,     fMaxHodoScin},
+    {"hodo_neg_ped_limit",               &fHodoNegPedLimit[0],    kInt,     fMaxHodoScin},
+    {"tofusinginvadc",                   &fTofUsingInvAdc,        kInt,            0,  1},       
+    {"xloscin",                          &fxLoScin[0],            kInt,     (UInt_t) fNHodoscopes},
+    {"xhiscin",                          &fxHiScin[0],            kInt,     (UInt_t) fNHodoscopes},
+    {"yloscin",                          &fyLoScin[0],            kInt,     (UInt_t) fNHodoscopes},
+    {"yhiscin",                          &fyHiScin[0],            kInt,     (UInt_t) fNHodoscopes},
+    {"track_eff_test_num_scin_planes",   &fTrackEffTestNScinPlanes,                 kInt},
+    {"cer_npe",                          &fNCerNPE,               kDouble,         0,  1},
+    {"normalized_energy_tot",            &fNormETot,              kDouble,         0,  1},
     {0}
   };
+  
   fTofUsingInvAdc = 0;		// Default if not defined
   fTofTolerance = 3.0;		// Default if not defined
+  fNCerNPE = 2.0;
+  fNormETot = 0.7;
+
   gHcParms->LoadParmValues((DBRequest*)&list,prefix);
 
   cout << " x1 lo = " << fxLoScin[0] 
@@ -477,8 +484,10 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
        << " y2 hi = " << fyHiScin[1] 
        << endl;
 
-  cout << "Hdososcope planes hits for trigger = " 
-       << fTrackEffTestNScinPlanes << endl;
+  cout << "Hdososcope planes hits for trigger = " << fTrackEffTestNScinPlanes 
+       << " normalized energy min = " << fNormETot
+       << " number of photo electrons = " << fNCerNPE
+       << endl;
 
   if (fTofUsingInvAdc) {
     DBRequest list2[]={
@@ -541,13 +550,13 @@ Int_t THcHodoscope::DefineVariables( EMode mode )
 
   RVarDef vars[] = {
     // Move these into THcHallCSpectrometer using track fTracks
-    {"fpHitsTime",      "Time at focal plane from all hits",       "fFPTime"},
-    {"starttime",       "Hodoscope Start Time",                    "fStartTime"},
-    {"goodstarttime",  "Hodoscope Good Start Time",                "fGoodStartTime"},
-    {"goodscinhit",    "Hit in fid area",                          "fGoodScinHits"},
-    {"goodscinhitx",   "Hit in fid x range",                       "fGoodScinHitsX"},
-    {"totscinshould",  "Total scin Hits in fid area",              "fScinShould"},
-    {"totscindid",     "Total scin Hits in fid area with a track", "fScinDid"},
+    {"fpHitsTime",      "Time at focal plane from all hits",         "fFPTime"},
+    {"starttime",       "Hodoscope Start Time",                      "fStartTime"},
+    {"goodstarttime",   "Hodoscope Good Start Time",                 "fGoodStartTime"},
+    {"goodscinhit",     "Hit in fid area",                           "fGoodScinHits"},
+    {"goodscinhitx",    "Hit in fid x range",                        "fGoodScinHitsX"},
+    {"scinshould",      "Total scin Hits in fid area",               "fScinShould"},
+    {"scindid",         "Total scin Hits in fid area with a track",  "fScinDid"},
     { 0 }
   };
   return DefineVarsFromList( vars, mode );
@@ -603,41 +612,11 @@ void THcHodoscope::DeleteArrays()
   delete [] fHodoPosInvAdcLinear; fHodoPosInvAdcLinear = NULL;
   delete [] fHodoNegInvAdcLinear; fHodoNegInvAdcLinear = NULL;
   delete [] fHodoPosInvAdcAdc;    fHodoPosInvAdcAdc = NULL;
+  delete [] fGoodPlaneTime;       fGoodPlaneTime = NULL;
+  delete [] fNPlaneTime;          fNPlaneTime = NULL;
+  delete [] fSumPlaneTime;        fSumPlaneTime = NULL;
+  delete [] fNScinHits;           fNScinHits = NULL;
 
-  delete [] fGoodPlaneTime;       fGoodPlaneTime = NULL;     // Ahmed
-  delete [] fNPlaneTime;          fNPlaneTime = NULL;        // Ahmed
-  delete [] fSumPlaneTime;        fSumPlaneTime = NULL;      // Ahmed
-
-  delete [] fNScinHits;           fNScinHits = NULL;         // Ahmed
-
-  //  delete [] fSpacing; fSpacing = NULL;
-  //delete [] fCenter;  fCenter = NULL; // This 2D. What is correct way to delete?
-
-  //  delete [] fRA_c;    fRA_c    = NULL;
-  //  delete [] fRA_p;    fRA_p    = NULL;
-  //  delete [] fRA;      fRA      = NULL;
-  //  delete [] fLA_c;    fLA_c    = NULL;
-  //  delete [] fLA_p;    fLA_p    = NULL;
-  //  delete [] fLA;      fLA      = NULL;
-  //  delete [] fRT_c;    fRT_c    = NULL;
-  //  delete [] fRT;      fRT      = NULL;
-  //  delete [] fLT_c;    fLT_c    = NULL;
-  //  delete [] fLT;      fLT      = NULL;
-  
-  //  delete [] fRGain;   fRGain   = NULL;
-  //  delete [] fLGain;   fLGain   = NULL;
-  //  delete [] fRPed;    fRPed    = NULL;
-  //  delete [] fLPed;    fLPed    = NULL;
-  //  delete [] fROff;    fROff    = NULL;
-  //  delete [] fLOff;    fLOff    = NULL;
-  //  delete [] fTWalkPar; fTWalkPar = NULL;
-  //  delete [] fTrigOff; fTrigOff = NULL;
-
-  //  delete [] fHitPad;  fHitPad  = NULL;
-  //  delete [] fTime;    fTime    = NULL;
-  //  delete [] fdTime;   fdTime   = NULL;
-  //  delete [] fYt;      fYt      = NULL;
-  //  delete [] fYa;      fYa      = NULL;
 }
 
 //_____________________________________________________________________________
@@ -773,11 +752,12 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
   Int_t fJMax, fMaxHit;
   Int_t fRawIndex = -1;
   Double_t fScinTrnsCoord, fScinLongCoord, fScinCenter, fSumfpTime, fSlope;
-  Double_t fP, fXcoord, fYcoord, fTMin, fNfpTime, fBestXpScin, fBestYpScin;
+  Double_t fP, fXcoord, fYcoord, fTMin, fBestXpScin, fBestYpScin;
   // -------------------------------------------------
 
   Double_t hpartmass=0.00051099; // Fix it
   fGoodScinHits = 0;
+  fScinShould = 0; fScinDid = 0;
 
   if (tracks.GetLast()+1 > 0 ) {
 
@@ -800,7 +780,7 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
       std::vector<Double_t> dedx_temp;
       fdEdX.push_back(dedx_temp); // Create array of dedx per hit
       
-      //      Int_t fNfpTime = 0;
+      Int_t fNfpTime = 0;
       Double_t betaChiSq = -3;
       Double_t beta = 0;
       //      fTimeAtFP[itrack] = 0.;
@@ -1531,20 +1511,19 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
       fGoodScinHits = 0;
   }
 
-  const char* apparatus_name = "H";
-  THcHallCSpectrometer *app = static_cast<THcHallCSpectrometer*>(GetApparatus());
-
-  if( ( strcmp(app->GetName(), apparatus_name) == 0 ) ) {
 
-    if ( ( fGoodScinHits == 1 ) && ( fShower->GetNormETot() > 0.7 ) &&
-	 ( fChern->GetCerNPE() > 2.0 ) )
-      fScinShould ++;
+  if ( !fChern || !fShower ) { 
+    return 0;    
+  }
 
-    if ( ( fGoodScinHits == 1 ) && ( fShower->GetNormETot() > 0.7 ) &&
-     	 ( fChern->GetCerNPE() > 2.0 ) && ( tracks.GetLast() + 1 > 0 ) ) {
-      fScinDid ++;
-      fGood_hits ++;
-    }
+  
+  if ( ( fGoodScinHits == 1 ) && ( fShower->GetNormETot() > fNormETot ) &&
+       ( fChern->GetCerNPE() > fNCerNPE ) )
+    fScinShould = 1;
+  
+  if ( ( fGoodScinHits == 1 ) && ( fShower->GetNormETot() > fNormETot ) &&
+       ( fChern->GetCerNPE() > fNCerNPE ) && ( tracks.GetLast() + 1 > 0 ) ) {
+      fScinDid = 1;
   }
   
   return 0;
diff --git a/src/THcHodoscope.h b/src/THcHodoscope.h
index 2260955afe30b71d2b19653db65b2d32154f8879..d76c57998523e04312dc70afd3126b6888c8afcd 100644
--- a/src/THcHodoscope.h
+++ b/src/THcHodoscope.h
@@ -145,7 +145,6 @@ protected:
   THcShower* fShower;
   THcCherenkov* fChern;
 
-  Int_t        fGood_hits;
 
   Int_t        fCheckEvent;
   Int_t        fEventType;
@@ -167,6 +166,8 @@ protected:
   Double_t*    fPlaneCenter;
   Double_t*    fPlaneSpacing;
 
+  Double_t     fNormETot;
+  Double_t     fNCerNPE;
   Int_t        fTestSum;
   Int_t        fTrackEffTestNScinPlanes;
   Int_t        fGoodScinHits;