diff --git a/src/THcDC.cxx b/src/THcDC.cxx
index 9db00a9a91d63d1fa8936a5e1e4fb259fabfa013..0b56793304dfa8096005257903e35e18567f20d5 100644
--- a/src/THcDC.cxx
+++ b/src/THcDC.cxx
@@ -507,8 +507,6 @@ Int_t THcDC::CoarseTrack( TClonesArray& tracks )
   // Now link the stubs between chambers
   LinkStubs();
  if(fNDCTracks > 0) {
-     Double_t chi2_best=10000000.;
-     Int_t itrack_best=0;
      TrackFit();
     // Copy tracks into podd tracks list
     for(UInt_t itrack=0;itrack<fNDCTracks;itrack++) {
@@ -522,39 +520,14 @@ Int_t THcDC::CoarseTrack( TClonesArray& tracks )
       theTrack->SetFlag((UInt_t) 0);
       // Need to look at how engine does chi2 and track selection.  Reduced?
       theTrack->SetChi2(tr->GetChisq(),tr->GetNFree());
-      if (tr->GetChisq()<chi2_best) {
-	chi2_best =  tr->GetChisq();
-        itrack_best=itrack;
-      }
       // CalcFocalPlaneCoords.  Aren't our tracks already in focal plane coords
       // We should have some kind of track ID so that the THaTrack can be
       // associate back with the DC track
       // Assign the track number
       theTrack->SetTrkNum(itrack+1);
     }
-      THcDCTrack *tr1 = static_cast<THcDCTrack*>( fDCTracks->At(itrack_best));
-      fX_fp_best=tr1->GetX();
-      fY_fp_best=tr1->GetY();
-      fXp_fp_best=tr1->GetXP();
-      fYp_fp_best=tr1->GetYP();
-  }
+ }
 
-  // Check for internal TrackFit errors
-  // Histogram the focal plane tracks
-  // Histograms made in h_fill_dc_fp_hist
-  //   The following are one hist per track
-  //      x_fp
-  //      y_fp
-  //      xp_fp
-  //      yp_fp
-  //      log chi2
-  //      reduced chi2
-  //      For each plane:
-  //         double residual
-  //         single residual
-  // Will need to make a track class that has all these things.   Need to
-  // move the structure out of THcDC into it's own class which should probably
-  // inherit from a podd track class
 
   ApplyCorrections();
 
@@ -576,6 +549,20 @@ Int_t THcDC::FineTrack( TClonesArray& tracks )
   return 0;
 }
 //
+void THcDC::SetFocalPlaneBestTrack(Int_t golden_track_index)
+{
+      THcDCTrack *tr1 = static_cast<THcDCTrack*>( fDCTracks->At(golden_track_index));
+      fX_fp_best=tr1->GetX();
+      fY_fp_best=tr1->GetY();
+      fXp_fp_best=tr1->GetXP();
+      fYp_fp_best=tr1->GetYP();
+         for (UInt_t ihit = 0; ihit < UInt_t (tr1->GetNHits()); ihit++) {
+	THcDCHit *hit = tr1->GetHit(ihit);
+	Int_t plane = hit->GetPlaneNum() - 1;
+        fResiduals[plane] = tr1->GetResidual(plane);
+	 } 
+}
+//
 void THcDC::PrintSpacePoints()
 {
   for(UInt_t ich=0;ich<fNChambers;ich++) {
@@ -1012,24 +999,6 @@ void THcDC::TrackFit()
       }
     }
   }
-  if(fNDCTracks>0) {
-    Double_t chi_max=1000000;
-    for (UInt_t itrack = 0; itrack < fNDCTracks; itrack++) {
-      //for(Int_t ip=0;ip<fNPlanes;ip++) {
-      THcDCTrack *theDCTrack = static_cast <THcDCTrack*> (fDCTracks->At(itrack));
-	if (theDCTrack->GetChisq() < chi_max) {
-            chi_max = theDCTrack->GetChisq();
-         for (UInt_t ihit = 0; ihit < UInt_t (theDCTrack->GetNHits()); ihit++) {
-	//fResiduals[ip] = theDCTrack->GetResidual(ip);
-	THcDCHit *hit = theDCTrack->GetHit(ihit);
-	Int_t plane = hit->GetPlaneNum() - 1;
-	// fResiduals[ip] = theDCTrack->GetResidual(ip);
-             fResiduals[plane] = theDCTrack->GetResidual(plane);
- 	}
-	//	cout << "track = " << itrack+1 << "plane = " << plane << ", fResiduals[plane] = " << fResiduals[plane] << "chi =  "  << theDCTrack->GetChisq()<< endl;
-      }
-    }
-  }
   //
       if (fdebugtrackprint) {
         printf("%5s %-14s %-14s %-14s %-14s  %-10s %-10s \n","Track","x_t","y_t","xp_t","yp_t","chi2","DOF");
diff --git a/src/THcDC.h b/src/THcDC.h
index 4f30ddce720e13a4c02c84b12e9d5e256d249745..3398af83b1467dba6ba3657a7ecd243a6794cccd 100644
--- a/src/THcDC.h
+++ b/src/THcDC.h
@@ -38,6 +38,7 @@ public:
 
   //  Int_t GetNTracks() const { return fNDCTracks; }
   //  const TClonesArray* GetTrackHits() const { return fTrackProj; }
+  void SetFocalPlaneBestTrack(Int_t golden_track_index); // Called in THcHallCSpectrometer:
 
   Int_t GetNWires(Int_t plane) const { return fNWires[plane-1];}
   Int_t GetNChamber(Int_t plane) const { return fNChamber[plane-1];}
diff --git a/src/THcHallCSpectrometer.cxx b/src/THcHallCSpectrometer.cxx
index 7cea33be2113a2000c475e5e859fefd7e81fec43..14d1eb1d24d40dbc5d688b891fd68330fd9e3a4f 100644
--- a/src/THcHallCSpectrometer.cxx
+++ b/src/THcHallCSpectrometer.cxx
@@ -117,8 +117,6 @@ Int_t THcHallCSpectrometer::ReadDatabase( const TDatime& date )
   cout << "In THcHallCSpectrometer::ReadDatabase()" << endl;
 #endif
 
-  // --------------- To get energy from THcShower ----------------------
-
   const char* detector_name = "hod";
   //THaApparatus* app = GetDetector();
   THaDetector* det = GetDetector("hod");
@@ -133,9 +131,13 @@ Int_t THcHallCSpectrometer::ReadDatabase( const TDatime& date )
   }
 
 
-  // fShower = static_cast<THcShower*>(det);     // fShower is a membervariable
-
-  // --------------- To get energy from THcShower ----------------------
+  THaDetector* detdc = GetDetector("dc");
+  if( dynamic_cast<THcDC*>(detdc) ) {
+    fDC = static_cast<THcDC*>(detdc);     // fHodo is a membervariable
+  } else {
+    Error("THcHallCSpectrometer", "Cannot find detector DC");
+    fDC = NULL;
+  }
 
 
   // Get the matrix element filename from the variable store
@@ -357,7 +359,7 @@ Int_t THcHallCSpectrometer::FindVertices( TClonesArray& tracks )
 
   }
 
-  if (fHodo==0 || ( fSelUsingScin == 0 ) && ( fSelUsingPrune == 0 ) ) {
+  if (fHodo==0 || (( fSelUsingScin == 0 ) && ( fSelUsingPrune == 0 )) ) {
     BestTrackSimple();
   } else if (fHodo!=0 && fSelUsingPrune !=0) {
     BestTrackUsingPrune();
@@ -380,6 +382,7 @@ Int_t THcHallCSpectrometer::TrackCalc()
       if (aTrack->GetIndex()==0) hit_gold_track=itrack;  
     }
     
+    fDC->SetFocalPlaneBestTrack(hit_gold_track);
     fGoldenTrack = static_cast<THaTrack*>( fTracks->At(hit_gold_track) );
     fTrkIfo      = *fGoldenTrack;
     fTrk         = fGoldenTrack;
diff --git a/src/THcHallCSpectrometer.h b/src/THcHallCSpectrometer.h
index 8045b645b9df689980acf9912b6eb3d46d168e31..7dfbe257942fb5558e37f5b9b6087fddb93c2997 100644
--- a/src/THcHallCSpectrometer.h
+++ b/src/THcHallCSpectrometer.h
@@ -16,7 +16,7 @@
 #include "THcHitList.h"
 #include "THcRawHodoHit.h"
 #include "THcScintillatorPlane.h"
-#include "THcShower.h"
+#include "THcDC.h"
 
 //#include "THaTrackingDetector.h"
 //#include "THcHitList.h"
@@ -99,8 +99,8 @@ protected:
 
   //  Int_t**   fHodScinHit;                // [4] Array
 
-  THcShower* fShower;
   THcHodoscope* fHodo;
+  THcDC* fDC;
 
   Int_t fNReconTerms;
   struct reconTerm {