Index: modules/Calorimeter.cc
===================================================================
--- modules/Calorimeter.cc	(revision 1c6dd6933c4dd8de02d32dad8a9d0c837b68c187)
+++ modules/Calorimeter.cc	(revision a221d1fd3192c8c329389c70a3048a87632cc6a3)
@@ -86,5 +86,5 @@
 {
   ExRootConfParam param, paramEtaBins, paramPhiBins, paramFractions;
-  Long_t i, j, k, size, sizeEtaBins, sizePhiBins, sizeFractions;
+  Long_t i, j, k, size, sizeEtaBins, sizePhiBins;
   Double_t ecalFraction, hcalFraction;
   TBinMap::iterator itEtaBin;
@@ -139,5 +139,4 @@
   {
     paramFractions = param[i*2 + 1];
-    sizeFractions = paramFractions.GetSize();
 
     ecalFraction = paramFractions[0].GetDouble();
@@ -155,11 +154,11 @@
 
   // read min E value for towers to be saved
-  fEcalEnergyMin = GetDouble("EcalTowerMinEnergy", 0.0); 
-  fHcalEnergyMin = GetDouble("HcalTowerMinEnergy", 0.0); 
-  
-  fEcalSigmaMin  = GetDouble("EcalTowerMinSignificance", 0.0); 
-  fHcalSigmaMin  = GetDouble("HcalTowerMinSignificance", 0.0); 
-
- 
+  fEcalEnergyMin = GetDouble("EcalTowerMinEnergy", 0.0);
+  fHcalEnergyMin = GetDouble("HcalTowerMinEnergy", 0.0);
+
+  fEcalSigmaMin  = GetDouble("EcalTowerMinSignificance", 0.0);
+  fHcalSigmaMin  = GetDouble("HcalTowerMinSignificance", 0.0);
+
+
   // read resolution formulas
   fECalResolutionFormula->Compile(GetString("ECalResolutionFormula", "0"));
@@ -176,10 +175,10 @@
   fTowerOutputArray = ExportArray(GetString("TowerOutputArray", "towers"));
   fPhotonOutputArray = ExportArray(GetString("PhotonOutputArray", "photons"));
-  
+
   fEFlowTrackOutputArray = ExportArray(GetString("EFlowTrackOutputArray", "eflowTracks"));
   fEFlowPhotonOutputArray = ExportArray(GetString("EFlowPhotonOutputArray", "eflowPhotons"));
   fEFlowNeutralHadronOutputArray = ExportArray(GetString("EFlowNeutralHadronOutputArray", "eflowNeutralHadrons"));
 
-
+  fDitherTowerCenter = GetBool("DitherTowerCenters", true);
 }
 
@@ -366,10 +365,10 @@
       fTrackHCalTime = 0.0;
 
-      fTowerECalWeightTime = 0.0; 
+      fTowerECalWeightTime = 0.0;
       fTowerHCalWeightTime = 0.0;
-     
+
       fTowerTrackHits = 0;
       fTowerPhotonHits = 0;
-      
+
       fTowerTrackArray->Clear();
     }
@@ -384,5 +383,5 @@
       position = track->Position;
 
-      
+
       ecalEnergy = momentum.E() * fTrackECalFractions[number];
       hcalEnergy = momentum.E() * fTrackHCalFractions[number];
@@ -390,8 +389,8 @@
       fTrackECalEnergy += ecalEnergy;
       fTrackHCalEnergy += hcalEnergy;
-      
+
       fTrackECalTime += TMath::Sqrt(ecalEnergy)*position.T();
       fTrackHCalTime += TMath::Sqrt(hcalEnergy)*position.T();
-       
+
       fTrackECalWeightTime += TMath::Sqrt(ecalEnergy);
       fTrackHCalWeightTime += TMath::Sqrt(hcalEnergy);
@@ -401,8 +400,8 @@
       continue;
     }
-   
+
     // check for photon and electron hits in current tower
     if(flags & 2) ++fTowerPhotonHits;
-    
+
     particle = static_cast<Candidate*>(fParticleInputArray->At(number));
     momentum = particle->Momentum;
@@ -421,5 +420,5 @@
     fTowerECalWeightTime += TMath::Sqrt(ecalEnergy);
     fTowerHCalWeightTime += TMath::Sqrt(hcalEnergy);
-    
+
 
     fTower->AddCandidate(particle);
@@ -462,5 +461,5 @@
   hcalTime = (fTowerHCalWeightTime < 1.0E-09 ) ? 0 : fTowerHCalTime/fTowerHCalWeightTime;
 
-  
+
   ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy);
   hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy);
@@ -470,11 +469,16 @@
 
   energy = ecalEnergy + hcalEnergy;
-  time = (TMath::Sqrt(ecalEnergy)*ecalTime + TMath::Sqrt(hcalEnergy)*hcalTime)/(TMath::Sqrt(ecalEnergy) + TMath::Sqrt(hcalEnergy)); 
-
-//  eta = fTowerEta;
-//  phi = fTowerPhi;
-
-  eta = gRandom->Uniform(fTowerEdges[0], fTowerEdges[1]);
-  phi = gRandom->Uniform(fTowerEdges[2], fTowerEdges[3]);
+  time = (TMath::Sqrt(ecalEnergy)*ecalTime + TMath::Sqrt(hcalEnergy)*hcalTime)/(TMath::Sqrt(ecalEnergy) + TMath::Sqrt(hcalEnergy));
+
+  if(fDitherTowerCenter)
+  {
+     eta = gRandom->Uniform(fTowerEdges[0], fTowerEdges[1]);
+     phi = gRandom->Uniform(fTowerEdges[2], fTowerEdges[3]);
+  }
+  else
+  {
+     eta = fTowerEta;
+     phi = fTowerPhi;
+  }
 
   pt = energy / TMath::CosH(eta);
@@ -497,5 +501,5 @@
       fPhotonOutputArray->Add(fTower);
     }
-   
+
     fTowerOutputArray->Add(fTower);
   }
Index: modules/Calorimeter.h
===================================================================
--- modules/Calorimeter.h	(revision 1c6dd6933c4dd8de02d32dad8a9d0c837b68c187)
+++ modules/Calorimeter.h	(revision a221d1fd3192c8c329389c70a3048a87632cc6a3)
@@ -63,16 +63,18 @@
   Double_t fTowerECalEnergy, fTowerHCalEnergy;
   Double_t fTrackECalEnergy, fTrackHCalEnergy;
-  
+
   Double_t fTowerECalTime, fTowerHCalTime;
   Double_t fTrackECalTime, fTrackHCalTime;
-   
+
   Double_t fTowerECalWeightTime, fTowerHCalWeightTime;
   Double_t fTrackECalWeightTime, fTrackHCalWeightTime;
-  
+
   Int_t fTowerTrackHits, fTowerPhotonHits;
+
+  Bool_t fDitherTowerCenter;
 
   Double_t fEcalEnergyMin;
   Double_t fHcalEnergyMin;
-  
+
   Double_t fEcalSigmaMin;
   Double_t fHcalSigmaMin;
@@ -103,5 +105,5 @@
   TObjArray *fTowerOutputArray; //!
   TObjArray *fPhotonOutputArray; //!
- 
+
   TObjArray *fEFlowTrackOutputArray; //!
   TObjArray *fEFlowPhotonOutputArray; //!
