diff --git a/Makefile b/Makefile
index 7b893ea6c97e972ab97d6929f3a8fd62c3cf68e4..226591b9ba7f857f120c809e8c2468b4969c230a 100644
--- a/Makefile
+++ b/Makefile
@@ -56,6 +56,16 @@ endif
 
 INCDIRS  = $(wildcard $(addprefix $(ANALYZER)/, include src hana_decode hana_scaler)), $(shell pwd)/src
 
+#------------------------------------------------------------------------------
+# Check that root version is new enough (>= 5.32) by requiring
+# root-config --svn-revision to be >= 43166
+
+GOODROOTVERSION := $(shell expr `root-config --svn-revision` \>= 43166)
+
+ifneq ($(GOODROOTVERSION),1)
+  $(error ROOT version 5.32 or later required)
+endif
+
 #------------------------------------------------------------------------------
 # Do not change anything  below here unless you know what you are doing
 
diff --git a/src/THcDriftChamberPlane.cxx b/src/THcDriftChamberPlane.cxx
index d57327abd1d883c9ede80c0df937b0784093ff5e..a4316cec9e4c1a3da5c7478bd10a602dcca07ed9 100644
--- a/src/THcDriftChamberPlane.cxx
+++ b/src/THcDriftChamberPlane.cxx
@@ -33,9 +33,6 @@ THcDriftChamberPlane::THcDriftChamberPlane( const char* name,
 {
   // Normal constructor with name and description
   fTDCHits = new TClonesArray("THcSignalHit",100);
-#if ROOT_VERSION_CODE < ROOT_VERSION(5,32,0)
-  fTDCHitsClass = fTDCHits->GetClass();
-#endif
   fPlaneNum = planenum;
 }
 
@@ -154,15 +151,7 @@ Int_t THcDriftChamberPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
     }
     // Just put in the first hit for now
     if(hit->fNHits > 0) {	// Should always be the case
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)      
       THcSignalHit *sighit = (THcSignalHit*) fTDCHits->ConstructedAt(nTDCHits++);
-#else
-      TObject* obj = (*fTDCHits)[nTDCHits++];
-      R__ASSERT( obj );
-      if(!obj->TestBit (TObject::kNotDeleted))
-	fTDCHitsClass->New(obj);
-      THcSignalHit *sighit = (THcSignalHit*)obj;
-#endif
       sighit->Set(hit->fCounter, hit->fTDC[0]);
     }
     ihit++;
diff --git a/src/THcDriftChamberPlane.h b/src/THcDriftChamberPlane.h
index bbe6e7f4a1d54e8bc36bc633ca981073506125f4..29f4bb799abbc484d2f4f88d2caf9bef43dd5d00 100644
--- a/src/THcDriftChamberPlane.h
+++ b/src/THcDriftChamberPlane.h
@@ -44,8 +44,6 @@ class THcDriftChamberPlane : public THaSubDetector {
 
   TClonesArray* fTDCHits;
 
-  TClass* fTDCHitsClass;
-
   Int_t fPlaneNum;
 
   virtual Int_t  ReadDatabase( const TDatime& date );
diff --git a/src/THcHitList.cxx b/src/THcHitList.cxx
index d1bd947448fa68dcb1fbb37ee505fd8ef2c2661d..4659785a0495a78dc04e5fe89c67c1d5653d0700 100644
--- a/src/THcHitList.cxx
+++ b/src/THcHitList.cxx
@@ -37,15 +37,7 @@ void THcHitList::InitHitList(THaDetMap* detmap,
   fNMaxRawHits = maxhits;
   fNRawHits = 0;
   for(Int_t i=0;i<maxhits;i++) {
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
     fRawHitList->ConstructedAt(i);
-#else
-  // The essence of the ConstructedAt code explictly
-    TObject* obj = (*fRawHitList)[i];
-    R__ASSERT( obj );  // should never happen ...
-    if( !obj->TestBit(TObject::kNotDeleted) )
-      fRawHitClass->New(obj);
-#endif
   }
   
   fdMap = detmap;
diff --git a/src/THcScintillatorPlane.cxx b/src/THcScintillatorPlane.cxx
index f355e13f74f73ad057edfe2d75fb984fa4b6b2dd..aaf6bd22c4c087bcc5791ce5bf31feef908ddcf3 100644
--- a/src/THcScintillatorPlane.cxx
+++ b/src/THcScintillatorPlane.cxx
@@ -36,12 +36,6 @@ THcScintillatorPlane::THcScintillatorPlane( const char* name,
   fNegTDCHits = new TClonesArray("THcSignalHit",16);
   fPosADCHits = new TClonesArray("THcSignalHit",16);
   fNegADCHits = new TClonesArray("THcSignalHit",16);
-#if ROOT_VERSION_CODE < ROOT_VERSION(5,32,0)
-  fPosTDCHitsClass = fPosTDCHits->GetClass();
-  fNegTDCHitsClass = fNegTDCHits->GetClass();
-  fPosADCHitsClass = fPosADCHits->GetClass();
-  fNegADCHitsClass = fNegADCHits->GetClass();
-#endif
   fPlaneNum = planenum;
 }
 
@@ -216,60 +210,27 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
 
     // TDC positive hit
     if(hit->fTDC_pos >  0) {
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
       THcSignalHit *sighit = (THcSignalHit*) fPosTDCHits->ConstructedAt(nPosTDCHits++);
-#else
-      TObject* obj = (*fPosTDCHits)[nPosTDCHits++];
-      R__ASSERT( obj );
-      if(!obj->TestBit (TObject::kNotDeleted))
-	fPosTDCHitsClass->New(obj);
-      THcSignalHit *sighit = (THcSignalHit*)obj;
-#endif
       sighit->Set(hit->fCounter, hit->fTDC_pos);
     }
 
     // TDC negative hit
     if(hit->fTDC_neg >  0) {
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
       THcSignalHit *sighit = (THcSignalHit*) fNegTDCHits->ConstructedAt(nNegTDCHits++);
-#else
-
-      TObject* obj = (*fNegTDCHits)[nNegTDCHits++];
-      R__ASSERT( obj );
-      if(!obj->TestBit (TObject::kNotDeleted))
-	fNegTDCHitsClass->New(obj);
-      THcSignalHit *sighit = (THcSignalHit*)obj;
-#endif
       sighit->Set(hit->fCounter, hit->fTDC_neg);
     }
 
     // ADC positive hit
     if(hit->fADC_pos >  0) {
       //     cout <<"adc pos hit!!\n";
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
       THcSignalHit *sighit = (THcSignalHit*) fPosADCHits->ConstructedAt(nPosADCHits++);
-#else
-      TObject* obj = (*fPosADCHits)[nPosADCHits++];
-      R__ASSERT( obj );
-      if(!obj->TestBit (TObject::kNotDeleted))
-	fPosADCHitsClass->New(obj);
-      THcSignalHit *sighit = (THcSignalHit*)obj;
-#endif
       sighit->Set(hit->fCounter, hit->fADC_pos);
     }
 
     // ADC negative hit
     if(hit->fADC_neg >  0) {   
       // cout <<"adc neg hit!!\n";
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
       THcSignalHit *sighit = (THcSignalHit*) fNegADCHits->ConstructedAt(nNegADCHits++);
-#else
-      TObject* obj = (*fNegADCHits)[nNegADCHits++];
-      R__ASSERT( obj );
-      if(!obj->TestBit (TObject::kNotDeleted))
-	fNegADCHitsClass->New(obj);
-      THcSignalHit *sighit = (THcSignalHit*)obj;
-#endif
       sighit->Set(hit->fCounter, hit->fADC_neg);
     }
 
diff --git a/src/THcScintillatorPlane.h b/src/THcScintillatorPlane.h
index 431fbd85a21f4638e6e760aa18d0670ddda02d0c..eefae3e258a40cce25ac37676b4b355dda4e84d7 100644
--- a/src/THcScintillatorPlane.h
+++ b/src/THcScintillatorPlane.h
@@ -49,11 +49,6 @@ class THcScintillatorPlane : public THaSubDetector {
   TClonesArray* fPosADCHits;
   TClonesArray* fNegADCHits;
 
-  TClass* fPosTDCHitsClass;
-  TClass* fNegTDCHitsClass;
-  TClass* fPosADCHitsClass;
-  TClass* fNegADCHitsClass;
-  
   Int_t fPlaneNum;		/* Which plane am I 1-4 */
   Int_t fNelem;			/* Need since we don't inherit from 
 				 detector base class */
diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx
index 9ec3dcc81f08991330cf3a802de18296793f34b1..643a4f40ef00ce1f3356d51a7a0f787dded76fe1 100644
--- a/src/THcShowerPlane.cxx
+++ b/src/THcShowerPlane.cxx
@@ -36,12 +36,7 @@ THcShowerPlane::THcShowerPlane( const char* name,
   // Normal constructor with name and description
   fPosADCHits = new TClonesArray("THcSignalHit",13);
   fNegADCHits = new TClonesArray("THcSignalHit",13);
-#if ROOT_VERSION_CODE < ROOT_VERSION(5,32,0)
-  fPosADCHitsClass = fPosADCHits->GetClass();
-  fNegADCHitsClass = fNegADCHits->GetClass();
-#endif
   fPosADC1 = new TClonesArray("THcSignalHit",13);
-  fPosADCHitsClass = fPosADC1->GetClass();
 
   fLayerNum = layernum;
 }
@@ -278,16 +273,8 @@ CalADC1File = fopen("adc1_new.dat", "a");
     }
 
 if(hit->fCounter == 1){
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
 THcSignalHit *sighit1 = (THcSignalHit*) fPosADC1->ConstructedAt(nPosADCHits++);
 
-#else
-	TObject* obj = (*fPosADC1)[nPosADCHits++];
-	R__ASSERT( obj );
-        if(!obj->TestBit (TObject::kNotDeleted))
-	fPosADCHitsClass->New(obj);
-	THcSignalHit *sighit1 = (THcSignalHit*)obj;
-#endif
 //THcSignalHit *sighit1 = (THcSignalHit*) fA[1]->ConstructedAt(nPosADCHits++);
  sighit1->Set(1,(Int_t)(hit->fADC_pos - 470.7));
 //fprintf(CalADC1File, "%d\n", hit->fADC_pos);
@@ -296,33 +283,15 @@ THcSignalHit *sighit1 = (THcSignalHit*) fPosADC1->ConstructedAt(nPosADCHits++);
 double thresh_pos = fPosThresh[hit->fCounter -1];
 //double thresh_pos = hcal_new_threshold_pos[hit->fCounter + 13*(hit->fPlane -1) -1];
 if(hit->fADC_pos >  thresh_pos) {
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
 	THcSignalHit *sighit = (THcSignalHit*) fPosADCHits->ConstructedAt(nPosADCHits++);
 
-#else
-	TObject* obj = (*fPosADCHits)[nPosADCHits++];
-	R__ASSERT( obj );
-if(!obj->TestBit (TObject::kNotDeleted))
-	fPosADCHitsClass->New(obj);
-	THcSignalHit *sighit = (THcSignalHit*)obj;
-#endif
-
    sighit->Set(hit->fCounter, hit->fADC_pos);
 }
 
 double thresh_neg = fNegThresh[hit->fCounter -1];
 //double thresh_neg = hcal_new_threshold_neg[hit->fCounter + 13*(hit->fPlane -1) -1];
 if(hit->fADC_neg >  thresh_neg) {
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,32,0)
 	THcSignalHit *sighit = (THcSignalHit*) fNegADCHits->ConstructedAt(nNegADCHits++);
-	sighit->Set(hit->fCounter, hit->fADC_neg);
-#else
-	TObject* obj = (*fNegADCHits)[nNegADCHits++];
-	R__ASSERT( obj );
-if(!obj->TestBit (TObject::kNotDeleted))
-	fNegADCHitsClass->New(obj);
-	THcSignalHit *sighit = (THcSignalHit*)obj;
-#endif
    sighit->Set(hit->fCounter, hit->fADC_neg);
 }
 
diff --git a/src/THcShowerPlane.h b/src/THcShowerPlane.h
index 4d8c4a8f2c8746d0ac3a168598ff08858c6baf95..8ecde522712cd3f412348147fe2c1e3934c7c7ff 100644
--- a/src/THcShowerPlane.h
+++ b/src/THcShowerPlane.h
@@ -59,10 +59,6 @@ TClonesArray* fPosADC[13];
   TClonesArray* fPosADCHits;
   TClonesArray* fNegADCHits;
 
-  TClass* fPosADCHitsClass;
-  TClass* fNegADCHitsClass;
-  TClass* fPosADC1Class;
-
   FILE* CalADC1File;
 
   Int_t fLayerNum;