diff --git a/src/THcAerogel.cxx b/src/THcAerogel.cxx
index 8d5e47b6672a4693fe11cfb07256e0d4ae7fe2ca..6eb2e67e7941fe5b6504e80aac1087b196368b8a 100644
--- a/src/THcAerogel.cxx
+++ b/src/THcAerogel.cxx
@@ -45,6 +45,8 @@ THcAerogel::THcAerogel( const char* name, const char* description,
   fPosADCHits = new TClonesArray("THcSignalHit",16);
   fNegADCHits = new TClonesArray("THcSignalHit",16);
 
+  InitArrays();
+
 //  fTrackProj = new TClonesArray( "THaTrackProj", 5 );
 }
 
@@ -53,25 +55,87 @@ THcAerogel::THcAerogel( ) :
   THaNonTrackingDetector()
 {
   // Constructor
+  fPosTDCHits = NULL;
+  fNegTDCHits = NULL;
+  fPosADCHits = NULL;
+  fNegADCHits = NULL;
+
+  InitArrays();
+
 }
 
 //_____________________________________________________________________________
 THcAerogel::~THcAerogel()
 {
   // Destructor
-  delete [] fA_Pos;
-  delete [] fA_Neg;
-  delete [] fA_Pos_p;
-  delete [] fA_Neg_p;
-  delete [] fT_Pos;
-  delete [] fT_Neg;
-  delete [] fPosGain;
-  delete [] fNegGain;
-  delete [] fPosPedLimit;
-  delete [] fNegPedLimit;
-  delete [] fPosPedMean;
-  delete [] fNegPedMean;
+  DeleteArrays();
+
+  delete fPosTDCHits; fPosTDCHits = NULL;
+  delete fNegTDCHits; fNegTDCHits = NULL;
+  delete fPosADCHits; fPosADCHits = NULL;
+  delete fNegADCHits; fNegADCHits = NULL;
+}
+
+//_____________________________________________________________________________
+void THcAerogel::InitArrays()
+{
+  fA_Pos = NULL;
+  fA_Neg = NULL;
+  fA_Pos_p = NULL;
+  fA_Neg_p = NULL;
+  fT_Pos = NULL;
+  fT_Neg = NULL;
+  fPosGain = NULL;
+  fNegGain = NULL;
+  fPosPedLimit = NULL;
+  fNegPedLimit = NULL;
+  fPosPedMean = NULL;
+  fNegPedMean = NULL;
+  fPosNpe = NULL;
+  fNegNpe = NULL;
+  fPosPedSum = NULL;
+  fPosPedSum2 = NULL;
+  fPosPedCount = NULL;
+  fNegPedSum = NULL;
+  fNegPedSum2 = NULL;
+  fNegPedCount = NULL;
+  fPosPed = NULL;
+  fPosSig = NULL;
+  fPosThresh = NULL;
+  fNegPed = NULL;
+  fNegSig = NULL;
+  fNegThresh = NULL;
 }
+//_____________________________________________________________________________
+void THcAerogel::DeleteArrays()
+{
+  delete [] fA_Pos; fA_Pos = NULL;
+  delete [] fA_Neg; fA_Neg = NULL;
+  delete [] fA_Pos_p; fA_Pos_p = NULL;
+  delete [] fA_Neg_p; fA_Neg_p = NULL;
+  delete [] fT_Pos; fT_Pos = NULL;
+  delete [] fT_Neg; fT_Neg = NULL;
+  delete [] fPosGain; fPosGain = NULL;
+  delete [] fNegGain; fNegGain = NULL;
+  delete [] fPosPedLimit; fPosPedLimit = NULL;
+  delete [] fNegPedLimit; fNegPedLimit = NULL;
+  delete [] fPosPedMean; fPosPedMean = NULL;
+  delete [] fNegPedMean; fNegPedMean = NULL;
+  delete [] fPosNpe; fPosNpe = NULL;
+  delete [] fNegNpe; fNegNpe = NULL;
+  delete [] fPosPedSum; fPosPedSum = NULL;
+  delete [] fPosPedSum2; fPosPedSum2 = NULL;
+  delete [] fPosPedCount; fPosPedCount = NULL;
+  delete [] fNegPedSum; fNegPedSum = NULL;
+  delete [] fNegPedSum2; fNegPedSum2 = NULL;
+  delete [] fNegPedCount; fNegPedCount = NULL;
+  delete [] fPosPed; fPosPed = NULL;
+  delete [] fPosSig; fPosSig = NULL;
+  delete [] fPosThresh; fPosThresh = NULL;
+  delete [] fNegPed; fNegPed = NULL;
+  delete [] fNegSig; fNegSig = NULL;
+  delete [] fNegThresh; fNegThresh = NULL;
+}  
 
 //_____________________________________________________________________________
 THaAnalysisObject::EStatus THcAerogel::Init( const TDatime& date )
diff --git a/src/THcAerogel.h b/src/THcAerogel.h
index abb7e4a8a0c2a17e6bf08321bb4241f097e67aae..56896d4bfa49350134c3c47dbdf39d1807311930 100644
--- a/src/THcAerogel.h
+++ b/src/THcAerogel.h
@@ -21,6 +21,8 @@ class THcAerogel : public THaNonTrackingDetector, public THcHitList {
   
   virtual void 	     Clear( Option_t* opt="" );
   virtual Int_t      Decode( const THaEvData& );
+  void               InitArrays();
+  void               DeleteArrays();
   virtual EStatus    Init( const TDatime& run_time );
   virtual Int_t      ReadDatabase( const TDatime& date );
   virtual Int_t      DefineVariables( EMode mode = kDefine );
diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx
index b12bfe1d418e6b744edfddd4953efe95e24bf7d2..c712e83b1f8921490c397c16fc5d7e2bed72dcd9 100644
--- a/src/THcCherenkov.cxx
+++ b/src/THcCherenkov.cxx
@@ -62,6 +62,7 @@ THcCherenkov::THcCherenkov( const char* name, const char* description,
 {
   // Normal constructor with name and description
   fADCHits = new TClonesArray("THcSignalHit",16);
+  InitArrays();
 
 }
 
@@ -70,21 +71,55 @@ THcCherenkov::THcCherenkov( ) :
   THaNonTrackingDetector()
 {
   // Constructor
+  fADCHits = NULL;
+
+  InitArrays();
 }
 
+//_____________________________________________________________________________
+void THcCherenkov::InitArrays()
+{
+  fGain = NULL;
+  fCerWidth = NULL;
+  fNPMT = NULL;
+  fADC = NULL;
+  fADC_P = NULL;
+  fNPE = NULL;
+  fADCHits = NULL;
+  fPedSum = NULL;
+  fPedSum2 = NULL;
+  fPedLimit = NULL;
+  fPedMean = NULL;
+  fPedCount = NULL;
+  fPed = NULL;
+  fThresh = NULL;
+}
+//_____________________________________________________________________________
+void THcCherenkov::DeleteArrays()
+{
+  delete [] fGain; fGain = NULL;
+  delete [] fCerWidth; fCerWidth = NULL;
+  delete [] fNPMT; fNPMT = NULL;
+  delete [] fADC; fADC = NULL;
+  delete [] fADC; fADC_P = NULL;
+  delete [] fNPE; fNPE = NULL;
+  delete [] fADCHits; fADCHits = NULL;
+  delete [] fPedSum; fPedSum = NULL;
+  delete [] fPedSum2; fPedSum2 = NULL;
+  delete [] fPedLimit; fPedLimit = NULL;
+  delete [] fPedMean; fPedMean = NULL;
+  delete [] fPedCount; fPedCount = NULL;
+  delete [] fPed; fPed = NULL;
+  delete [] fThresh; fThresh = NULL;
+}
 //_____________________________________________________________________________
 THcCherenkov::~THcCherenkov()
 {
   // Destructor
-  delete [] fNPMT;
-  delete [] fADC;
-  delete [] fADC_P;
-  delete [] fNPE;
-
-  delete [] fCerWidth;
-  delete [] fGain;
-  delete [] fPedLimit;
-  delete [] fPedMean;
+  delete fADCHits; fADCHits = NULL;
+
+  DeleteArrays();
+
 }
 
 //_____________________________________________________________________________
diff --git a/src/THcCherenkov.h b/src/THcCherenkov.h
index 3196321072bab83b612f6ba02603384c6935b5dc..3926bd3d0a49c2129ca1d84b7d581265aeca660d 100644
--- a/src/THcCherenkov.h
+++ b/src/THcCherenkov.h
@@ -22,6 +22,8 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList {
   virtual void 	     Clear( Option_t* opt="" );
   virtual Int_t      Decode( const THaEvData& );
   virtual EStatus    Init( const TDatime& run_time );
+  void               InitArrays();
+  void               DeleteArrays();
   virtual Int_t      ReadDatabase( const TDatime& date );
   virtual Int_t      DefineVariables( EMode mode = kDefine );
   virtual Int_t      CoarseProcess( TClonesArray& tracks );