Index: modules/Calorimeter.cc
===================================================================
--- modules/Calorimeter.cc	(revision be2222cc14ff474f18d30a4e0ebc21a952777df5)
+++ modules/Calorimeter.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -135,4 +135,13 @@
   }
 */
+
+  // 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); 
+
+ 
   // read resolution formulas
   fECalResolutionFormula->Compile(GetString("ECalResolutionFormula", "0"));
@@ -414,4 +423,8 @@
 
   if(!fTower) return;
+//  cout<<"----------------------"<<endl;
+//  cout<<"Finalize Tower"<<endl;
+//  cout<<""<<endl;
+
 
   ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerECalEnergy);
@@ -430,4 +443,11 @@
   hcalEnergy = LogNormal(fTowerHCalEnergy, hcalSigma);
   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);
+
+  ecalEnergy = (ecalEnergy < fEcalEnergyMin || ecalEnergy < fEcalSigmaMin*ecalSigma) ? 0 : ecalEnergy;
+  hcalEnergy = (hcalEnergy < fHcalEnergyMin || hcalEnergy < fHcalSigmaMin*hcalSigma) ? 0 : hcalEnergy;
 
   energy = ecalEnergy + hcalEnergy;
@@ -453,7 +473,5 @@
   fTower->Edges[3] = fTowerEdges[3];
 
-
-  // fill calorimeter towers
-  if(energy > 0.0)
+  if( energy > 0.0 )
   {
     if(fTowerPhotonHits > 0 && fTowerTrackHits == 0)
@@ -475,13 +493,11 @@
 
   ecalEnergy -= fTrackECalEnergy;
-  if(ecalEnergy < 0.0) ecalEnergy = 0.0;
+  if(ecalEnergy < fEcalEnergyMin || ecalEnergy < fEcalSigmaMin*fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy)) ecalEnergy = 0.0;
 
   hcalEnergy -= fTrackHCalEnergy;
-  if(hcalEnergy < 0.0) hcalEnergy = 0.0;
+  if(hcalEnergy < fHcalEnergyMin || hcalEnergy < fHcalSigmaMin*fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy)) hcalEnergy = 0.0;
 
   energy = ecalEnergy + hcalEnergy;
 
-  
-  // save ECAL and/or HCAL energy excess as an energy flow tower
   if(ecalEnergy > 0.0)
   {
@@ -497,5 +513,4 @@
     fEFlowPhotonOutputArray->Add(tower);
   }
-
   if(hcalEnergy > 0.0)
   {
Index: modules/Calorimeter.h
===================================================================
--- modules/Calorimeter.h	(revision be2222cc14ff474f18d30a4e0ebc21a952777df5)
+++ modules/Calorimeter.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -54,4 +54,10 @@
   Int_t fTowerTrackHits, fTowerPhotonHits;
 
+  Double_t fEcalEnergyMin;
+  Double_t fHcalEnergyMin;
+  
+  Double_t fEcalSigmaMin;
+  Double_t fHcalSigmaMin;
+
   TFractionMap fFractionMap; //!
   TBinMap fBinMap; //!
Index: modules/SimpleCalorimeter.cc
===================================================================
--- modules/SimpleCalorimeter.cc	(revision be2222cc14ff474f18d30a4e0ebc21a952777df5)
+++ modules/SimpleCalorimeter.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -129,4 +129,9 @@
   }
 */
+
+  // read min E value for towers to be saved
+  fEnergyMin = GetDouble("TowerMinEnergy", 0.0); 
+  fSigmaMin  = GetDouble("TowerMinSignificance", 0.0); 
+ 
   // read resolution formulas
   fResolutionFormula->Compile(GetString("ResolutionFormula", "0"));
@@ -384,4 +389,8 @@
   time = (fTowerWeightTime < 1.0E-09 ) ? 0 : fTowerTime/fTowerWeightTime;
 
+  sigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy);
+  
+  energy = (energy < fEnergyMin || energy < fSigmaMin*sigma) ? 0 : energy;
+  
   eta = gRandom->Uniform(fTowerEdges[0], fTowerEdges[1]);
   phi = gRandom->Uniform(fTowerEdges[2], fTowerEdges[3]);
@@ -405,5 +414,5 @@
   // fill energy flow candidates
   energy -= fTrackEnergy;
-  if(energy < 0.0) energy = 0.0;
+  if(energy < fEnergyMin || energy < fSigmaMin*fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy)) energy = 0.0;
    
   // save energy excess as an energy flow tower
Index: modules/SimpleCalorimeter.h
===================================================================
--- modules/SimpleCalorimeter.h	(revision be2222cc14ff474f18d30a4e0ebc21a952777df5)
+++ modules/SimpleCalorimeter.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -54,4 +54,7 @@
   Int_t fTowerTrackHits, fTowerPhotonHits;
 
+  Double_t fEnergyMin;
+  Double_t fSigmaMin;
+
   TFractionMap fFractionMap; //!
   TBinMap fBinMap; //!
