Index: external/fastjet/tools/Filter.cc
===================================================================
--- external/fastjet/tools/Filter.cc	(revision 10e33bc4e6edb559fb6355f044aed3785d788662)
+++ external/fastjet/tools/Filter.cc	(revision 6be4bc0a95c128a81e126b85a27de8d262c706ee)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: Filter.cc 3760 2014-12-19 10:05:10Z soyez $
+// $Id: Filter.cc 4080 2016-03-09 15:01:57Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -31,4 +31,5 @@
 #include "fastjet/tools/Filter.hh"
 #include "fastjet/tools/Recluster.hh"
+#include "fastjet/tools/Subtractor.hh"
 #include <fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh>
 #include <cassert>
@@ -98,7 +99,8 @@
   } else if (_rho!=0){
     if (subjets.size()>0){
-      const ClusterSequenceAreaBase *csab = subjets[0].validated_csab();
+      //const ClusterSequenceAreaBase *csab = subjets[0].validated_csab();
       for (unsigned int i=0;i<subjets.size();i++){
-        subjets[i]=csab->subtracted_jet(subjets[i], _rho);
+        //subjets[i]=csab->subtracted_jet(subjets[i], _rho);
+        subjets[i]=Subtractor(_rho)(subjets[i]);
       }
     }
Index: external/fastjet/tools/Filter.hh
===================================================================
--- external/fastjet/tools/Filter.hh	(revision 10e33bc4e6edb559fb6355f044aed3785d788662)
+++ external/fastjet/tools/Filter.hh	(revision 6be4bc0a95c128a81e126b85a27de8d262c706ee)
@@ -3,5 +3,5 @@
 
 //FJSTARTHEADER
-// $Id: Filter.hh 3845 2015-03-08 08:35:36Z soyez $
+// $Id: Filter.hh 3846 2015-03-08 08:35:43Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -143,4 +143,8 @@
   /// deciding which ones to keep. It takes precedence over a non-zero rho.
   void set_subtractor(const FunctionOfPseudoJet<PseudoJet> * subtractor_in) {_subtractor = subtractor_in;}
+
+  /// Set a subtractor that is applied to all individual subjets before
+  /// deciding which ones to keep. It takes precedence over a non-zero rho.
+  const FunctionOfPseudoJet<PseudoJet> * subtractor() const{ return _subtractor;}
 
   /// runs the filtering and sets kept and rejected to be the jets of interest
Index: external/fastjet/tools/GridMedianBackgroundEstimator.hh
===================================================================
--- external/fastjet/tools/GridMedianBackgroundEstimator.hh	(revision 10e33bc4e6edb559fb6355f044aed3785d788662)
+++ external/fastjet/tools/GridMedianBackgroundEstimator.hh	(revision 6be4bc0a95c128a81e126b85a27de8d262c706ee)
@@ -3,5 +3,5 @@
 
 //FJSTARTHEADER
-// $Id: GridMedianBackgroundEstimator.hh 3778 2014-12-24 09:28:09Z salam $
+// $Id: GridMedianBackgroundEstimator.hh 3969 2015-09-21 08:57:59Z salam $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -194,5 +194,5 @@
   /// determination of rho_m.
   ///
-  /// Note that support for sigma_m is automatic is one has sigma and
+  /// Note that support for sigma_m is automatic if one has sigma and
   /// rho_m support.
   bool has_rho_m() const {return _enable_rho_m;}
Index: external/fastjet/tools/JetMedianBackgroundEstimator.cc
===================================================================
--- external/fastjet/tools/JetMedianBackgroundEstimator.cc	(revision 10e33bc4e6edb559fb6355f044aed3785d788662)
+++ external/fastjet/tools/JetMedianBackgroundEstimator.cc	(revision 6be4bc0a95c128a81e126b85a27de8d262c706ee)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: JetMedianBackgroundEstimator.cc 3517 2014-08-01 14:23:13Z soyez $
+// $Id: JetMedianBackgroundEstimator.cc 4047 2016-03-03 13:21:49Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -194,5 +194,5 @@
 
   _csi = jets[0].structure_shared_ptr();
-  ClusterSequenceStructure * csi = dynamic_cast<ClusterSequenceStructure*>(_csi());
+  ClusterSequenceStructure * csi = dynamic_cast<ClusterSequenceStructure*>(_csi.get());
   const ClusterSequenceAreaBase * csab = csi->validated_csab();
 
@@ -467,5 +467,5 @@
 
   // determine the number of empty jets
-  const ClusterSequenceAreaBase * csab = (dynamic_cast<ClusterSequenceStructure*>(_csi()))->validated_csab();
+  const ClusterSequenceAreaBase * csab = (dynamic_cast<ClusterSequenceStructure*>(_csi.get()))->validated_csab();
   if (csab->has_explicit_ghosts()) {
     _empty_area = 0.0;
@@ -503,9 +503,9 @@
 // throw an error otherwise
 void JetMedianBackgroundEstimator::_check_csa_alive() const{
-  ClusterSequenceStructure* csa = dynamic_cast<ClusterSequenceStructure*>(_csi());
+  ClusterSequenceStructure* csa = dynamic_cast<ClusterSequenceStructure*>(_csi.get());
   if (csa == 0) {
     throw Error("JetMedianBackgroundEstimator: there is no cluster sequence associated with the JetMedianBackgroundEstimator");
   }
-  if (! dynamic_cast<ClusterSequenceStructure*>(_csi())->has_associated_cluster_sequence())
+  if (! dynamic_cast<ClusterSequenceStructure*>(_csi.get())->has_associated_cluster_sequence())
     throw Error("JetMedianBackgroundEstimator: modifications are no longer possible as the underlying ClusterSequence has gone out of scope");
 }
@@ -521,5 +521,5 @@
   // cluster sequence
   if (_jet_def.jet_algorithm() == undefined_jet_algorithm){
-    const ClusterSequence * cs = dynamic_cast<ClusterSequenceStructure*>(_csi())->validated_cs();
+    const ClusterSequence * cs = dynamic_cast<ClusterSequenceStructure*>(_csi.get())->validated_cs();
     jet_def = &(cs->jet_def());
   }
Index: external/fastjet/tools/Recluster.hh
===================================================================
--- external/fastjet/tools/Recluster.hh	(revision 10e33bc4e6edb559fb6355f044aed3785d788662)
+++ external/fastjet/tools/Recluster.hh	(revision 6be4bc0a95c128a81e126b85a27de8d262c706ee)
@@ -2,5 +2,5 @@
 #define __FASTJET_TOOLS_RECLUSTER_HH__
 
-// $Id: Recluster.hh 3760 2014-12-19 10:05:10Z soyez $
+// $Id: Recluster.hh 3753 2014-12-17 15:19:55Z salam $
 //
 // Copyright (c) 2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
Index: external/fastjet/tools/Subtractor.cc
===================================================================
--- external/fastjet/tools/Subtractor.cc	(revision 10e33bc4e6edb559fb6355f044aed3785d788662)
+++ external/fastjet/tools/Subtractor.cc	(revision 6be4bc0a95c128a81e126b85a27de8d262c706ee)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: Subtractor.cc 3670 2014-09-08 14:17:59Z soyez $
+// $Id: Subtractor.cc 3970 2015-09-21 10:31:17Z salam $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -39,4 +39,5 @@
 const double Subtractor::_invalid_rho = -numeric_limits<double>::infinity();
 
+LimitedWarning Subtractor::_unused_rho_m_warning;
 
 //----------------------------------------------------------------------
Index: external/fastjet/tools/Subtractor.hh
===================================================================
--- external/fastjet/tools/Subtractor.hh	(revision 10e33bc4e6edb559fb6355f044aed3785d788662)
+++ external/fastjet/tools/Subtractor.hh	(revision 6be4bc0a95c128a81e126b85a27de8d262c706ee)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: Subtractor.hh 3670 2014-09-08 14:17:59Z soyez $
+// $Id: Subtractor.hh 3970 2015-09-21 10:31:17Z salam $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -203,5 +203,5 @@
   static const double _invalid_rho;
 
-  mutable LimitedWarning _unused_rho_m_warning;
+  static LimitedWarning _unused_rho_m_warning;
 };
 
