Index: modules/FastJetFinder.cc
===================================================================
--- modules/FastJetFinder.cc	(revision d4b969701d3c53401673bf053e2d4f3702153ae6)
+++ modules/FastJetFinder.cc	(revision 7278220b162aa1b1b81d57d6b50a6743086d7f79)
@@ -92,17 +92,8 @@
   JetDefinition::Plugin *plugin = 0;
   JetDefinition::Recombiner *recomb = 0;
-  NjettinessPlugin *njetPlugin = 0;
-
-  // read eta ranges
-
-  ExRootConfParam param = GetParam("RhoEtaRange");
+  ExRootConfParam param;
   Long_t i, size;
-
-  fEtaRangeMap.clear();
-  size = param.GetSize();
-  for(i = 0; i < size/2; ++i)
-  {
-    fEtaRangeMap[param[i*2].GetDouble()] = param[i*2 + 1].GetDouble();
-  }
+  Double_t etaMin, etaMax;
+  TEstimatorStruct estimatorStruct;
 
   // define algorithm
@@ -197,6 +188,6 @@
       break;
     case 8:
-      njetPlugin = new NjettinessPlugin(fN, Njettiness::wta_kt_axes, Njettiness::unnormalized_cutoff_measure, fBeta, fRcutOff);
-      fDefinition = new JetDefinition(njetPlugin);
+      fNjettinessPlugin = new NjettinessPlugin(fN, Njettiness::wta_kt_axes, Njettiness::unnormalized_cutoff_measure, fBeta, fRcutOff);
+      fDefinition = new JetDefinition(fNjettinessPlugin);
       break;
   }
@@ -204,7 +195,25 @@
   fPlugin = plugin;
   fRecomb = recomb;
-  fNjettinessPlugin = njetPlugin;
 
   ClusterSequence::print_banner();
+
+  if(fComputeRho && fAreaDefinition)
+  {
+    // read eta ranges
+
+    param = GetParam("RhoEtaRange");
+    size = param.GetSize();
+
+    fEstimators.clear();
+    for(i = 0; i < size/2; ++i)
+    {
+      etaMin = param[i*2].GetDouble();
+      etaMax = param[i*2 + 1].GetDouble();
+      estimatorStruct.estimator = new JetMedianBackgroundEstimator(SelectorEtaRange(etaMin, etaMax), *fDefinition, *fAreaDefinition);
+      estimatorStruct.etaMin = etaMin;
+      estimatorStruct.etaMax = etaMax;
+      fEstimators.push_back(estimatorStruct);
+    }
+  }
 
   // import input array
@@ -223,4 +232,11 @@
 void FastJetFinder::Finish()
 {
+  vector< TEstimatorStruct >::iterator itEstimators;
+
+  for(itEstimators = fEstimators.begin(); itEstimators != fEstimators.end(); ++itEstimators)
+  {
+    if(itEstimators->estimator) delete itEstimators->estimator;
+  }
+
   if(fItInputArray) delete fItInputArray;
   if(fDefinition) delete fDefinition;
@@ -243,7 +259,8 @@
   Double_t rho = 0.0;
   PseudoJet jet, area;
-  vector<PseudoJet> inputList, outputList;
   ClusterSequence *sequence;
-  map< Double_t, Double_t >::iterator itEtaRangeMap;
+  vector< PseudoJet > inputList, outputList;
+  vector< PseudoJet >::iterator itInputList, itOutputList;
+  vector< TEstimatorStruct >::iterator itEstimators;
 
   DelphesFactory *factory = GetFactory();
@@ -276,15 +293,13 @@
   if(fComputeRho && fAreaDefinition)
   {
-    for(itEtaRangeMap = fEtaRangeMap.begin(); itEtaRangeMap != fEtaRangeMap.end(); ++itEtaRangeMap)
+    for(itEstimators = fEstimators.begin(); itEstimators != fEstimators.end(); ++itEstimators)
     {
-      Selector select_rapidity = SelectorAbsRapRange(itEtaRangeMap->first, itEtaRangeMap->second);
-      JetMedianBackgroundEstimator estimator(select_rapidity, *fDefinition, *fAreaDefinition);
-      estimator.set_particles(inputList);
-      rho = estimator.rho();
+      itEstimators->estimator->set_particles(inputList);
+      rho = itEstimators->estimator->rho();
 
       candidate = factory->NewCandidate();
       candidate->Momentum.SetPtEtaPhiE(rho, 0.0, 0.0, rho);
-      candidate->Edges[0] = itEtaRangeMap->first;
-      candidate->Edges[1] = itEtaRangeMap->second;
+      candidate->Edges[0] = itEstimators->etaMin;
+      candidate->Edges[1] = itEstimators->etaMax;
       fRhoOutputArray->Add(candidate);
     }
@@ -298,5 +313,4 @@
   detaMax = 0.0;
   dphiMax = 0.0;
-  vector<PseudoJet>::iterator itInputList, itOutputList;
   for(itOutputList = outputList.begin(); itOutputList != outputList.end(); ++itOutputList)
   {
@@ -377,5 +391,4 @@
     }
 
-
     fOutputArray->Add(candidate);
   }
Index: modules/FastJetFinder.h
===================================================================
--- modules/FastJetFinder.h	(revision d4b969701d3c53401673bf053e2d4f3702153ae6)
+++ modules/FastJetFinder.h	(revision 7278220b162aa1b1b81d57d6b50a6743086d7f79)
@@ -30,5 +30,5 @@
 #include "classes/DelphesModule.h"
 
-#include <map>
+#include <vector>
 
 class TObjArray;
@@ -38,5 +38,5 @@
   class JetDefinition;
   class AreaDefinition;
-  class Selector;
+  class JetMedianBackgroundEstimator;
   namespace contrib {
     class NjettinessPlugin;
@@ -100,5 +100,13 @@
   Double_t fEffectiveRfact;
 
-  std::map< Double_t, Double_t > fEtaRangeMap; //!
+#if !defined(__CINT__) && !defined(__CLING__)
+  struct TEstimatorStruct
+  {
+    fastjet::JetMedianBackgroundEstimator *estimator;
+    Double_t etaMin, etaMax;
+  };
+
+  std::vector< TEstimatorStruct > fEstimators; //!
+#endif
 
   TIterator *fItInputArray; //!
