Index: external/fastjet/contribs/RecursiveTools/AUTHORS
===================================================================
--- external/fastjet/contribs/RecursiveTools/AUTHORS	(revision a63afb18c0bf35ab37971105aac8a2af436005ee)
+++ external/fastjet/contribs/RecursiveTools/AUTHORS	(revision 13331dc3ca463c8877238c5548d97777fe862d2e)
@@ -28,4 +28,4 @@
    Recursive Soft Drop.
    Frederic A. Dreyer, Lina Necib, Gregory Soyez, and Jesse Thaler
-   arXiv:1804.03657
+   JHEP 1806:093 (2018), arXiv:1804.03657
    
Index: external/fastjet/contribs/RecursiveTools/ChangeLog
===================================================================
--- external/fastjet/contribs/RecursiveTools/ChangeLog	(revision a63afb18c0bf35ab37971105aac8a2af436005ee)
+++ external/fastjet/contribs/RecursiveTools/ChangeLog	(revision 13331dc3ca463c8877238c5548d97777fe862d2e)
@@ -1,2 +1,20 @@
+2018-11-02  Jesse Thaler  <jthaler@jthaler.net>
+
+	* AUTHORS:  updated journal for RecursiveSoftDrop
+
+2018-10-30  Gregory Soyez  <soyez@fastjet.fr>
+
+	* RecursiveSoftDrop.cc:
+	fixed a few typos in comments
+
+	* RecursiveSoftDrop.hh:
+	used the native FJ Recluster tool when available (did create
+	conflicts in some cases)
+
+2018-06-18  Jesse Thaler  <jthaler@jthaler.net>
+
+	* README
+	Fixed incorrect order of zcut and beta in the README for SoftDrop example.
+
 2018-05-29  Jesse Thaler  <jthaler@jthaler.net>
 
Index: external/fastjet/contribs/RecursiveTools/NEWS
===================================================================
--- external/fastjet/contribs/RecursiveTools/NEWS	(revision a63afb18c0bf35ab37971105aac8a2af436005ee)
+++ external/fastjet/contribs/RecursiveTools/NEWS	(revision 13331dc3ca463c8877238c5548d97777fe862d2e)
@@ -1,2 +1,4 @@
+2020/03/03: release of version 2.0.0 with updated readme
+
 2018/05/31: release of version 2.0.0-beta2 with corrected syntax
 
Index: external/fastjet/contribs/RecursiveTools/README
===================================================================
--- external/fastjet/contribs/RecursiveTools/README	(revision a63afb18c0bf35ab37971105aac8a2af436005ee)
+++ external/fastjet/contribs/RecursiveTools/README	(revision 13331dc3ca463c8877238c5548d97777fe862d2e)
@@ -100,8 +100,8 @@
 A default SoftDrop groomer can be created via:
 
+   double beta  = 2.0;
    double z_cut = 0.10;
-   double beta  = 2.0;
    double R0    = 1.0; // this is the default value
-   SoftDrop sd(z_cut,beta,R0);
+   SoftDrop sd(beta,z_cut,R0);
 
 and acts on a desired jet as
@@ -137,9 +137,9 @@
 further substructure is found (i.e. corresponds to taking N=infinity).
 
+   double beta  = 2.0;
    double z_cut = 0.10;
-   double beta  = 2.0;
    double R0    = 1.0; // this is the default value
    int N        = -1;  
-   RecursiveSoftDrop rsd(z_cut, beta, N, R0);
+   RecursiveSoftDrop rsd(beta, z_cut, N, R0);
 
 One then acts on a jet as
@@ -217,4 +217,16 @@
 not met, only the hardest of the two objects is kept for further
 clustering and the softest is rejected.
+
+BottomUpSoftDrop takes the same arguments as SoftDrop, and a groomer
+can be created with:
+
+   double beta  = 2.0;
+   double z_cut = 0.10;
+   double R0    = 1.0; // this is the default value
+   BottomUpSoftDrop busd(beta,z_cut,R0);
+
+One then acts on a jet as
+
+   PseudoJet groomed_jet = busd(jet)
 
 ------------------------------------------------------------------------
Index: external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.cc
===================================================================
--- external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.cc	(revision a63afb18c0bf35ab37971105aac8a2af436005ee)
+++ external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.cc	(revision 13331dc3ca463c8877238c5548d97777fe862d2e)
@@ -1,3 +1,3 @@
-// $Id: RecursiveSoftDrop.cc 1111 2018-04-04 10:06:11Z gsoyez $
+// $Id: RecursiveSoftDrop.cc 1192 2018-10-30 16:08:36Z gsoyez $
 //
 // Copyright (c) 2017-, Gavin P. Salam, Gregory Soyez, Jesse Thaler,
@@ -148,5 +148,5 @@
   const vector<PseudoJet> &cs_jets = cs->jets();
 
-  // initialize counter to 1 subjet (i.e. the full ca_jet)
+  // initialise counter to 1 subjet (i.e. the full ca_jet)
   int n_tagged = 0;
   int max_njet = ca_jet.constituents().size();
@@ -163,5 +163,4 @@
   
   // create a priority queue containing the subjets and a comparison definition
-  // initialise to the full ca_jet
   priority_queue<internal_recursive_softdrop::RSDHistoryElement*, vector<internal_recursive_softdrop::RSDHistoryElement*>, internal_recursive_softdrop::OrderRSDHistoryElements> active_branches;
   active_branches.push(& (history[0]));
@@ -169,12 +168,8 @@
   PseudoJet parent, piece1, piece2;
   double sym, mu2;
-
-  // which R0 to use
-  //double R0sqr = _R0sqr;
   
   // loop over C/A tree until we reach the appropriate number of subjets
   while ((continue_grooming(n_tagged)) && (active_branches.size())) {
-    // get the element corresponding to the max dR
-    // and the associated PJ
+    // get the element corresponding to the max dR and the associated PJ
     internal_recursive_softdrop::RSDHistoryElement * elm = active_branches.top();
     PseudoJet parent = cs_jets[cs_history[elm->current_in_ca_tree].jetp_index];
@@ -217,5 +212,5 @@
       active_branches.pop();
       // tagging failed and the softest branch should be dropped
-      // keep track of what has een groomed away
+      // keep track of what has been groomed away
       max_njet -= piece2.constituents().size();
       elm->dropped_delta_R .push_back((elm->theta_squared >= 0) ? sqrt(elm->theta_squared) : -sqrt(elm->theta_squared));
@@ -223,5 +218,5 @@
       elm->dropped_mu      .push_back((mu2>=0) ? sqrt(mu2) : -sqrt(mu2));
       
-      // keep the hardest bhanch in the recursion
+      // keep the hardest branch in the recursion
       elm->reset(piece1, this);
       active_branches.push(elm);
@@ -256,8 +251,8 @@
     const internal_recursive_softdrop::RSDHistoryElement & elm = history[history_index];
 
-    // two kinds of events: either just a final leave, poteitially  with grooming
+    // two kinds of events: either just a final leave, potentially with grooming
     // or a brandhing (also with potential grooming at the end)
     if (elm.child1_in_history<0){
-      // this is a leaf, i.e. with no further sustructure
+      // this is a leaf, i.e. with no further substructure
       PseudoJet & subjet = mapped_to_history[history_index]
         = cs_jets[cs_history[elm.current_in_ca_tree].jetp_index];
@@ -303,5 +298,5 @@
   const vector<PseudoJet> &cs_jets = cs->jets();
 
-  // initialize counter to 1 subjet (i.e. the full ca_jet)
+  // initialise counter to 1 subjet (i.e. the full ca_jet)
   int n_depth = 0;
   int max_njet = ca_jet.constituents().size();
@@ -319,5 +314,4 @@
   
   // create a priority queue containing the subjets and a comparison definition
-  // initialize counter to 1 subjet (i.e. the full ca_jet)
   list<internal_recursive_softdrop::RSDHistoryElement*> active_branches;
   active_branches.push_back(& (history[0]));
@@ -329,6 +323,5 @@
     list<internal_recursive_softdrop::RSDHistoryElement*>::iterator hist_it=active_branches.begin();
     while (hist_it!=active_branches.end()){
-      // get the element corresponding to the max dR
-      // and the associated PJ
+      // get the element corresponding to the max dR and the associated PJ
       internal_recursive_softdrop::RSDHistoryElement * elm = (*hist_it);
       PseudoJet parent = cs_jets[cs_history[elm->current_in_ca_tree].jetp_index];
Index: external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.hh
===================================================================
--- external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.hh	(revision a63afb18c0bf35ab37971105aac8a2af436005ee)
+++ external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.hh	(revision 13331dc3ca463c8877238c5548d97777fe862d2e)
@@ -1,3 +1,3 @@
-// $Id: RecursiveSoftDrop.hh 1082 2017-10-10 12:00:13Z gsoyez $
+// $Id: RecursiveSoftDrop.hh 1192 2018-10-30 16:08:36Z gsoyez $
 //
 // Copyright (c) 2014-, Gavin P. Salam, Gregory Soyez, Jesse Thaler,
@@ -24,5 +24,10 @@
 #define __RECURSIVESOFTDROP_HH__
 
+// we'll use the native FJ class for reculstering if available
+#if FASTJET_VERSION_NUMBER >= 30100
+#include "fastjet/tools/Recluster.hh"
+#else
 #include "Recluster.hh"
+#endif
 #include "SoftDrop.hh"
 #include "fastjet/WrappedStructure.hh"
