Index: external/fastjet/PseudoJet.cc
===================================================================
--- external/fastjet/PseudoJet.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
+++ external/fastjet/PseudoJet.cc	(revision fa068d31eb4e23117ac06ecbb0fa0219743e0663)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: PseudoJet.cc 3652 2014-09-03 13:31:13Z salam $
+// $Id: PseudoJet.cc 4100 2016-03-15 20:50:22Z salam $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -409,9 +409,9 @@
 string PseudoJet::description() const{
   // the "default" case of a PJ which does not belong to any cluster sequence
-  if (!_structure())
+  if (!_structure)
     return "standard PseudoJet (with no associated clustering information)";
   
   // for all the other cases, the description comes from the structure
-  return _structure()->description();
+  return _structure->description();
 }
 
@@ -429,5 +429,5 @@
 // ClusterSequence
 bool PseudoJet::has_associated_cluster_sequence() const{
-  return (_structure()) && (_structure->has_associated_cluster_sequence());
+  return (_structure) && (_structure->has_associated_cluster_sequence());
 }
 
@@ -446,5 +446,5 @@
 // ClusterSequence that is still valid
 bool PseudoJet::has_valid_cluster_sequence() const{
-  return (_structure()) && (_structure->has_valid_cluster_sequence());
+  return (_structure) && (_structure->has_valid_cluster_sequence());
 }
 
@@ -467,7 +467,7 @@
 
 //----------------------------------------------------------------------
-// return true if there is some strusture associated with this PseudoJet
+// return true if there is some structure associated with this PseudoJet
 bool PseudoJet::has_structure() const{
-  return _structure();
+  return bool(_structure);
 }
 
@@ -478,6 +478,6 @@
 // return NULL if there is no associated structure
 const PseudoJetStructureBase* PseudoJet::structure_ptr() const {
-  if (!_structure()) return NULL;
-  return _structure();
+  //if (!_structure) return NULL;
+  return _structure.get();
 }
   
@@ -493,6 +493,6 @@
 // underlying structure.
 PseudoJetStructureBase* PseudoJet::structure_non_const_ptr(){
-  if (!_structure()) return NULL;
-  return _structure();
+  //if (!_structure) return NULL;
+  return _structure.get();
 }
   
@@ -503,7 +503,7 @@
 // throw an error if there is no associated structure
 const PseudoJetStructureBase* PseudoJet::validated_structure_ptr() const {
-  if (!_structure()) 
+  if (!_structure) 
     throw Error("Trying to access the structure of a PseudoJet which has no associated structure");
-  return _structure();
+  return _structure.get();
 }
   
@@ -573,5 +573,5 @@
 // returns true if the PseudoJet has constituents
 bool PseudoJet::has_constituents() const{
-  return (_structure()) && (_structure->has_constituents());
+  return (_structure) && (_structure->has_constituents());
 }
 
@@ -586,5 +586,5 @@
 // returns true if the PseudoJet has support for exclusive subjets
 bool PseudoJet::has_exclusive_subjets() const{
-  return (_structure()) && (_structure->has_exclusive_subjets());
+  return (_structure) && (_structure->has_exclusive_subjets());
 }
 
@@ -670,5 +670,5 @@
 // ClusterSequence have no pieces and this methos will return false.
 bool PseudoJet::has_pieces() const{
-  return ((_structure()) && (_structure->has_pieces(*this)));
+  return ((_structure) && (_structure->has_pieces(*this)));
 }
 
@@ -766,33 +766,4 @@
 
 
-
-//----------------------------------------------------------------------
-/// given a vector of values with a one-to-one correspondence with the
-/// vector of objects, sort objects into an order such that the
-/// associated values would be in increasing order
-template<class T> vector<T>  objects_sorted_by_values(
-                       const vector<T> & objects, 
-		       const vector<double> & values) {
-
-  assert(objects.size() == values.size());
-
-  // get a vector of indices
-  vector<int> indices(values.size());
-  for (size_t i = 0; i < indices.size(); i++) {indices[i] = i;}
-  
-  // sort the indices
-  sort_indices(indices, values);
-  
-  // copy the objects 
-  vector<T> objects_sorted(objects.size());
-  
-  // place the objects in the correct order
-  for (size_t i = 0; i < indices.size(); i++) {
-    objects_sorted[i] = objects[indices[i]];
-  }
-
-  return objects_sorted;
-}
-
 //----------------------------------------------------------------------
 /// return a vector of jets sorted into decreasing kt2
