diff --git a/src/THcAerogel.cxx b/src/THcAerogel.cxx
index 78e4b7596ffebdd870a2d6a48ee359ecd4ec9a49..7566498b140e6ee21eabd8e97cb41544bae62be1 100644
--- a/src/THcAerogel.cxx
+++ b/src/THcAerogel.cxx
@@ -39,52 +39,6 @@ THcAerogel::THcAerogel( const char* name, const char* description,
   THaNonTrackingDetector(name,description,apparatus)
 {
 
-  // Normal constructor with name and description
-  frPosAdcPedRaw       = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  frPosAdcPulseIntRaw  = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  frPosAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  frPosAdcPulseTimeRaw = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  frPosAdcPed          = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  frPosAdcPulseInt     = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  frPosAdcPulseAmp     = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  frNegAdcPedRaw       = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-  frNegAdcPulseIntRaw  = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-  frNegAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-  frNegAdcPulseTimeRaw = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-  frNegAdcPed          = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-  frNegAdcPulseInt     = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-  frNegAdcPulseAmp     = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-  fPosAdcErrorFlag     = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  fNegAdcErrorFlag     = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-
-  fNumPosAdcHits         = vector<Int_t>    (MaxNumPosAeroPmt, 0.0);
-  fNumGoodPosAdcHits     = vector<Int_t>    (MaxNumPosAeroPmt, 0.0);
-  fNumNegAdcHits         = vector<Int_t>    (MaxNumNegAeroPmt, 0.0);
-  fNumGoodNegAdcHits     = vector<Int_t>    (MaxNumNegAeroPmt, 0.0);
-  fNumTracksMatched      = vector<Int_t>    (MaxNumPosAeroPmt, 0.0);
-  fNumTracksFired        = vector<Int_t>    (MaxNumPosAeroPmt, 0.0);
-  fPosNpe                = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fNegNpe                = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fGoodPosAdcPed         = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fGoodPosAdcPulseInt    = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fGoodPosAdcPulseIntRaw = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fGoodPosAdcPulseAmp    = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fGoodPosAdcPulseTime   = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fGoodNegAdcPed         = vector<Double_t> (MaxNumNegAeroPmt, 0.0);
-  fGoodNegAdcPulseInt    = vector<Double_t> (MaxNumNegAeroPmt, 0.0);
-  fGoodNegAdcPulseIntRaw = vector<Double_t> (MaxNumNegAeroPmt, 0.0);
-  fGoodNegAdcPulseAmp    = vector<Double_t> (MaxNumNegAeroPmt, 0.0);
-  fGoodNegAdcPulseTime   = vector<Double_t> (MaxNumNegAeroPmt, 0.0);
-
-  // 6 GeV variables
-  fPosTDCHits = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*16);
-  fNegTDCHits = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*16);
-  fPosADCHits = new TClonesArray("THcSignalHit", MaxNumPosAeroPmt*MaxNumAdcPulse);
-  fNegADCHits = new TClonesArray("THcSignalHit", MaxNumNegAeroPmt*MaxNumAdcPulse);
-
-  fPosNpeSixGev = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-  fNegNpeSixGev = vector<Double_t> (MaxNumPosAeroPmt, 0.0);
-
   InitArrays();
 
 }
@@ -280,6 +234,52 @@ Int_t THcAerogel::ReadDatabase( const TDatime& date )
   fPosPedMean  = new Double_t[fNelem];
   fNegPedMean  = new Double_t[fNelem];
 
+  // Normal constructor with name and description
+  frPosAdcPedRaw       = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frPosAdcPulseIntRaw  = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frPosAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frPosAdcPulseTimeRaw = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frPosAdcPed          = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frPosAdcPulseInt     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frPosAdcPulseAmp     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPedRaw       = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPulseIntRaw  = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPulseAmpRaw  = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPulseTimeRaw = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPed          = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPulseInt     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  frNegAdcPulseAmp     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  fPosAdcErrorFlag     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  fNegAdcErrorFlag     = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+
+  fNumPosAdcHits         = vector<Int_t>    (fNelem, 0.0);
+  fNumGoodPosAdcHits     = vector<Int_t>    (fNelem, 0.0);
+  fNumNegAdcHits         = vector<Int_t>    (fNelem, 0.0);
+  fNumGoodNegAdcHits     = vector<Int_t>    (fNelem, 0.0);
+  fNumTracksMatched      = vector<Int_t>    (fNelem, 0.0);
+  fNumTracksFired        = vector<Int_t>    (fNelem, 0.0);
+  fPosNpe                = vector<Double_t> (fNelem, 0.0);
+  fNegNpe                = vector<Double_t> (fNelem, 0.0);
+  fGoodPosAdcPed         = vector<Double_t> (fNelem, 0.0);
+  fGoodPosAdcPulseInt    = vector<Double_t> (fNelem, 0.0);
+  fGoodPosAdcPulseIntRaw = vector<Double_t> (fNelem, 0.0);
+  fGoodPosAdcPulseAmp    = vector<Double_t> (fNelem, 0.0);
+  fGoodPosAdcPulseTime   = vector<Double_t> (fNelem, 0.0);
+  fGoodNegAdcPed         = vector<Double_t> (fNelem, 0.0);
+  fGoodNegAdcPulseInt    = vector<Double_t> (fNelem, 0.0);
+  fGoodNegAdcPulseIntRaw = vector<Double_t> (fNelem, 0.0);
+  fGoodNegAdcPulseAmp    = vector<Double_t> (fNelem, 0.0);
+  fGoodNegAdcPulseTime   = vector<Double_t> (fNelem, 0.0);
+
+  // 6 GeV variables
+  fPosTDCHits = new TClonesArray("THcSignalHit", fNelem*16);
+  fNegTDCHits = new TClonesArray("THcSignalHit", fNelem*16);
+  fPosADCHits = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+  fNegADCHits = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse);
+
+  fPosNpeSixGev = vector<Double_t> (fNelem, 0.0);
+  fNegNpeSixGev = vector<Double_t> (fNelem, 0.0);
+
   // Create arrays to hold pedestal results
   if (fSixGevData) InitializePedestals();
 
diff --git a/src/THcAerogel.h b/src/THcAerogel.h
index 1e68df1677a58993da6152d135a761bc9171a919..ac157596e54ff846150ece426833cc755001c556 100644
--- a/src/THcAerogel.h
+++ b/src/THcAerogel.h
@@ -43,8 +43,6 @@ class THcAerogel : public THaNonTrackingDetector, public THcHitList {
 
   // 12 GeV variables
   // Vector/TClonesArray length parameters
-  static const Int_t MaxNumPosAeroPmt = 7;
-  static const Int_t MaxNumNegAeroPmt = 7;
   static const Int_t MaxNumAdcPulse   = 4;
   // Tracking variables
   Int_t     fNRegions;