Index: Makefile
===================================================================
--- Makefile	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ Makefile	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -65,4 +65,45 @@
 
 
+lhco2root$(ExeSuf): \
+	tmp/converters/lhco2root.$(ObjSuf)
+
+tmp/converters/lhco2root.$(ObjSuf): \
+	converters/lhco2root.cpp \
+	modules/Delphes.h \
+	classes/DelphesStream.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	external/ExRootAnalysis/ExRootTreeWriter.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h \
+	external/ExRootAnalysis/ExRootProgressBar.h
+root2pileup$(ExeSuf): \
+	tmp/converters/root2pileup.$(ObjSuf)
+
+tmp/converters/root2pileup.$(ObjSuf): \
+	converters/root2pileup.cpp \
+	classes/DelphesClasses.h \
+	classes/DelphesPileUpWriter.h \
+	external/ExRootAnalysis/ExRootTreeReader.h \
+	external/ExRootAnalysis/ExRootProgressBar.h
+root2lhco$(ExeSuf): \
+	tmp/converters/root2lhco.$(ObjSuf)
+
+tmp/converters/root2lhco.$(ObjSuf): \
+	converters/root2lhco.cpp \
+	classes/DelphesClasses.h \
+	external/ExRootAnalysis/ExRootTreeReader.h \
+	external/ExRootAnalysis/ExRootProgressBar.h
+stdhep2pileup$(ExeSuf): \
+	tmp/converters/stdhep2pileup.$(ObjSuf)
+
+tmp/converters/stdhep2pileup.$(ObjSuf): \
+	converters/stdhep2pileup.cpp \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesSTDHEPReader.h \
+	classes/DelphesPileUpWriter.h \
+	external/ExRootAnalysis/ExRootTreeWriter.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h \
+	external/ExRootAnalysis/ExRootProgressBar.h
 hepmc2pileup$(ExeSuf): \
 	tmp/converters/hepmc2pileup.$(ObjSuf)
@@ -89,45 +130,4 @@
 	external/ExRootAnalysis/ExRootTreeBranch.h \
 	external/ExRootAnalysis/ExRootProgressBar.h
-root2pileup$(ExeSuf): \
-	tmp/converters/root2pileup.$(ObjSuf)
-
-tmp/converters/root2pileup.$(ObjSuf): \
-	converters/root2pileup.cpp \
-	classes/DelphesClasses.h \
-	classes/DelphesPileUpWriter.h \
-	external/ExRootAnalysis/ExRootTreeReader.h \
-	external/ExRootAnalysis/ExRootProgressBar.h
-lhco2root$(ExeSuf): \
-	tmp/converters/lhco2root.$(ObjSuf)
-
-tmp/converters/lhco2root.$(ObjSuf): \
-	converters/lhco2root.cpp \
-	modules/Delphes.h \
-	classes/DelphesStream.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	external/ExRootAnalysis/ExRootTreeWriter.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h \
-	external/ExRootAnalysis/ExRootProgressBar.h
-stdhep2pileup$(ExeSuf): \
-	tmp/converters/stdhep2pileup.$(ObjSuf)
-
-tmp/converters/stdhep2pileup.$(ObjSuf): \
-	converters/stdhep2pileup.cpp \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesSTDHEPReader.h \
-	classes/DelphesPileUpWriter.h \
-	external/ExRootAnalysis/ExRootTreeWriter.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h \
-	external/ExRootAnalysis/ExRootProgressBar.h
-root2lhco$(ExeSuf): \
-	tmp/converters/root2lhco.$(ObjSuf)
-
-tmp/converters/root2lhco.$(ObjSuf): \
-	converters/root2lhco.cpp \
-	classes/DelphesClasses.h \
-	external/ExRootAnalysis/ExRootTreeReader.h \
-	external/ExRootAnalysis/ExRootProgressBar.h
 Example1$(ExeSuf): \
 	tmp/examples/Example1.$(ObjSuf)
@@ -142,19 +142,19 @@
 	external/ExRootAnalysis/ExRootUtilities.h
 EXECUTABLE +=  \
+	lhco2root$(ExeSuf) \
+	root2pileup$(ExeSuf) \
+	root2lhco$(ExeSuf) \
+	stdhep2pileup$(ExeSuf) \
 	hepmc2pileup$(ExeSuf) \
 	pileup2root$(ExeSuf) \
-	root2pileup$(ExeSuf) \
-	lhco2root$(ExeSuf) \
-	stdhep2pileup$(ExeSuf) \
-	root2lhco$(ExeSuf) \
 	Example1$(ExeSuf)
 
 EXECUTABLE_OBJ +=  \
+	tmp/converters/lhco2root.$(ObjSuf) \
+	tmp/converters/root2pileup.$(ObjSuf) \
+	tmp/converters/root2lhco.$(ObjSuf) \
+	tmp/converters/stdhep2pileup.$(ObjSuf) \
 	tmp/converters/hepmc2pileup.$(ObjSuf) \
 	tmp/converters/pileup2root.$(ObjSuf) \
-	tmp/converters/root2pileup.$(ObjSuf) \
-	tmp/converters/lhco2root.$(ObjSuf) \
-	tmp/converters/stdhep2pileup.$(ObjSuf) \
-	tmp/converters/root2lhco.$(ObjSuf) \
 	tmp/examples/Example1.$(ObjSuf)
 
@@ -252,14 +252,14 @@
 tmp/external/ProMC/ProMCStat.pb.$(ObjSuf): \
 	external/ProMC/ProMCStat.pb.$(SrcSuf)
+tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf): \
+	external/ProMC/ProMCHeader.pb.$(SrcSuf)
 tmp/external/ProMC/ProMCDescription.pb.$(ObjSuf): \
 	external/ProMC/ProMCDescription.pb.$(SrcSuf)
-tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf): \
-	external/ProMC/ProMCHeader.pb.$(SrcSuf)
 DELPHES_OBJ +=  \
 	tmp/external/ProMC/ProMCBook.$(ObjSuf) \
 	tmp/external/ProMC/ProMC.pb.$(ObjSuf) \
 	tmp/external/ProMC/ProMCStat.pb.$(ObjSuf) \
-	tmp/external/ProMC/ProMCDescription.pb.$(ObjSuf) \
-	tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf)
+	tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf) \
+	tmp/external/ProMC/ProMCDescription.pb.$(ObjSuf)
 
 ifeq ($(HAS_PYTHIA8),true)
@@ -395,34 +395,41 @@
 	DisplayDict$(PcmSuf)
 
+tmp/classes/DelphesHepMCReader.$(ObjSuf): \
+	classes/DelphesHepMCReader.$(SrcSuf) \
+	classes/DelphesHepMCReader.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesStream.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h
+tmp/classes/DelphesLHEFReader.$(ObjSuf): \
+	classes/DelphesLHEFReader.$(SrcSuf) \
+	classes/DelphesLHEFReader.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesStream.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h
+tmp/classes/DelphesTF2.$(ObjSuf): \
+	classes/DelphesTF2.$(SrcSuf) \
+	classes/DelphesTF2.h
+tmp/classes/DelphesFactory.$(ObjSuf): \
+	classes/DelphesFactory.$(SrcSuf) \
+	classes/DelphesFactory.h \
+	classes/DelphesClasses.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h
+tmp/classes/DelphesFormula.$(ObjSuf): \
+	classes/DelphesFormula.$(SrcSuf) \
+	classes/DelphesFormula.h
+tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \
+	classes/DelphesSTDHEPReader.$(SrcSuf) \
+	classes/DelphesSTDHEPReader.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h
+tmp/classes/DelphesStream.$(ObjSuf): \
+	classes/DelphesStream.$(SrcSuf) \
+	classes/DelphesStream.h
 tmp/classes/DelphesPileUpWriter.$(ObjSuf): \
 	classes/DelphesPileUpWriter.$(SrcSuf) \
 	classes/DelphesPileUpWriter.h
-tmp/classes/DelphesHepMCReader.$(ObjSuf): \
-	classes/DelphesHepMCReader.$(SrcSuf) \
-	classes/DelphesHepMCReader.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesStream.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h
-tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \
-	classes/DelphesSTDHEPReader.$(SrcSuf) \
-	classes/DelphesSTDHEPReader.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h
-tmp/classes/DelphesPileUpReader.$(ObjSuf): \
-	classes/DelphesPileUpReader.$(SrcSuf) \
-	classes/DelphesPileUpReader.h
-tmp/classes/DelphesClasses.$(ObjSuf): \
-	classes/DelphesClasses.$(SrcSuf) \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/SortableObject.h
-tmp/classes/DelphesFormula.$(ObjSuf): \
-	classes/DelphesFormula.$(SrcSuf) \
-	classes/DelphesFormula.h
-tmp/classes/DelphesTF2.$(ObjSuf): \
-	classes/DelphesTF2.$(SrcSuf) \
-	classes/DelphesTF2.h
 tmp/classes/DelphesModule.$(ObjSuf): \
 	classes/DelphesModule.$(SrcSuf) \
@@ -433,31 +440,33 @@
 	external/ExRootAnalysis/ExRootTreeWriter.h \
 	external/ExRootAnalysis/ExRootResult.h
-tmp/classes/DelphesStream.$(ObjSuf): \
-	classes/DelphesStream.$(SrcSuf) \
-	classes/DelphesStream.h
-tmp/classes/DelphesFactory.$(ObjSuf): \
-	classes/DelphesFactory.$(SrcSuf) \
-	classes/DelphesFactory.h \
-	classes/DelphesClasses.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h
-tmp/classes/DelphesLHEFReader.$(ObjSuf): \
-	classes/DelphesLHEFReader.$(SrcSuf) \
-	classes/DelphesLHEFReader.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesStream.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h
-tmp/modules/EnergyScale.$(ObjSuf): \
-	modules/EnergyScale.$(SrcSuf) \
-	modules/EnergyScale.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/Cloner.$(ObjSuf): \
-	modules/Cloner.$(SrcSuf) \
-	modules/Cloner.h \
+tmp/classes/DelphesClasses.$(ObjSuf): \
+	classes/DelphesClasses.$(SrcSuf) \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/SortableObject.h
+tmp/classes/DelphesPileUpReader.$(ObjSuf): \
+	classes/DelphesPileUpReader.$(SrcSuf) \
+	classes/DelphesPileUpReader.h
+tmp/modules/SimpleCalorimeter.$(ObjSuf): \
+	modules/SimpleCalorimeter.$(SrcSuf) \
+	modules/SimpleCalorimeter.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/LeptonDressing.$(ObjSuf): \
+	modules/LeptonDressing.$(SrcSuf) \
+	modules/LeptonDressing.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/Efficiency.$(ObjSuf): \
+	modules/Efficiency.$(SrcSuf) \
+	modules/Efficiency.h \
 	classes/DelphesClasses.h \
 	classes/DelphesFactory.h \
@@ -475,7 +484,25 @@
 	external/ExRootAnalysis/ExRootFilter.h \
 	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/ExampleModule.$(ObjSuf): \
+	modules/ExampleModule.$(SrcSuf) \
+	modules/ExampleModule.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
 tmp/modules/ParticlePropagator.$(ObjSuf): \
 	modules/ParticlePropagator.$(SrcSuf) \
 	modules/ParticlePropagator.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/EnergySmearing.$(ObjSuf): \
+	modules/EnergySmearing.$(SrcSuf) \
+	modules/EnergySmearing.h \
 	classes/DelphesClasses.h \
 	classes/DelphesFactory.h \
@@ -506,4 +533,131 @@
 	external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh \
 	external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh
+tmp/modules/PileUpMergerPythia8.$(ObjSuf): \
+	modules/PileUpMergerPythia8.$(SrcSuf) \
+	modules/PileUpMergerPythia8.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	classes/DelphesPileUpReader.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/StatusPidFilter.$(ObjSuf): \
+	modules/StatusPidFilter.$(SrcSuf) \
+	modules/StatusPidFilter.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/ConstituentFilter.$(ObjSuf): \
+	modules/ConstituentFilter.$(SrcSuf) \
+	modules/ConstituentFilter.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/EnergyScale.$(ObjSuf): \
+	modules/EnergyScale.$(SrcSuf) \
+	modules/EnergyScale.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/TrackCountingBTagging.$(ObjSuf): \
+	modules/TrackCountingBTagging.$(SrcSuf) \
+	modules/TrackCountingBTagging.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h
+tmp/modules/TauTagging.$(ObjSuf): \
+	modules/TauTagging.$(SrcSuf) \
+	modules/TauTagging.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/TimeSmearing.$(ObjSuf): \
+	modules/TimeSmearing.$(SrcSuf) \
+	modules/TimeSmearing.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/Merger.$(ObjSuf): \
+	modules/Merger.$(SrcSuf) \
+	modules/Merger.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/BTagging.$(ObjSuf): \
+	modules/BTagging.$(SrcSuf) \
+	modules/BTagging.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/TreeWriter.$(ObjSuf): \
+	modules/TreeWriter.$(SrcSuf) \
+	modules/TreeWriter.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h
+tmp/modules/Weighter.$(ObjSuf): \
+	modules/Weighter.$(SrcSuf) \
+	modules/Weighter.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/PileUpJetID.$(ObjSuf): \
+	modules/PileUpJetID.$(SrcSuf) \
+	modules/PileUpJetID.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/Delphes.$(ObjSuf): \
+	modules/Delphes.$(SrcSuf) \
+	modules/Delphes.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h \
+	external/ExRootAnalysis/ExRootConfReader.h \
+	external/ExRootAnalysis/ExRootTreeWriter.h
+tmp/modules/ImpactParameterSmearing.$(ObjSuf): \
+	modules/ImpactParameterSmearing.$(SrcSuf) \
+	modules/ImpactParameterSmearing.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
 tmp/modules/Calorimeter.$(ObjSuf): \
 	modules/Calorimeter.$(SrcSuf) \
@@ -515,14 +669,4 @@
 	external/ExRootAnalysis/ExRootFilter.h \
 	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/TreeWriter.$(ObjSuf): \
-	modules/TreeWriter.$(SrcSuf) \
-	modules/TreeWriter.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h
 tmp/modules/Isolation.$(ObjSuf): \
 	modules/Isolation.$(SrcSuf) \
@@ -544,61 +688,25 @@
 	external/ExRootAnalysis/ExRootFilter.h \
 	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/Efficiency.$(ObjSuf): \
-	modules/Efficiency.$(SrcSuf) \
-	modules/Efficiency.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/ImpactParameterSmearing.$(ObjSuf): \
-	modules/ImpactParameterSmearing.$(SrcSuf) \
-	modules/ImpactParameterSmearing.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/Weighter.$(ObjSuf): \
-	modules/Weighter.$(SrcSuf) \
-	modules/Weighter.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/TauTagging.$(ObjSuf): \
-	modules/TauTagging.$(SrcSuf) \
-	modules/TauTagging.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/PileUpJetID.$(ObjSuf): \
-	modules/PileUpJetID.$(SrcSuf) \
-	modules/PileUpJetID.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/ConstituentFilter.$(ObjSuf): \
-	modules/ConstituentFilter.$(SrcSuf) \
-	modules/ConstituentFilter.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/Merger.$(ObjSuf): \
-	modules/Merger.$(SrcSuf) \
-	modules/Merger.h \
+tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \
+	modules/TrackPileUpSubtractor.$(SrcSuf) \
+	modules/TrackPileUpSubtractor.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/Cloner.$(ObjSuf): \
+	modules/Cloner.$(SrcSuf) \
+	modules/Cloner.h \
+	classes/DelphesClasses.h \
+	classes/DelphesFactory.h \
+	classes/DelphesFormula.h \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/modules/JetPileUpSubtractor.$(ObjSuf): \
+	modules/JetPileUpSubtractor.$(SrcSuf) \
+	modules/JetPileUpSubtractor.h \
 	classes/DelphesClasses.h \
 	classes/DelphesFactory.h \
@@ -610,60 +718,4 @@
 	modules/PdgCodeFilter.$(SrcSuf) \
 	modules/PdgCodeFilter.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \
-	modules/TrackPileUpSubtractor.$(SrcSuf) \
-	modules/TrackPileUpSubtractor.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/JetPileUpSubtractor.$(ObjSuf): \
-	modules/JetPileUpSubtractor.$(SrcSuf) \
-	modules/JetPileUpSubtractor.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/TimeSmearing.$(ObjSuf): \
-	modules/TimeSmearing.$(SrcSuf) \
-	modules/TimeSmearing.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/BTagging.$(ObjSuf): \
-	modules/BTagging.$(SrcSuf) \
-	modules/BTagging.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/Delphes.$(ObjSuf): \
-	modules/Delphes.$(SrcSuf) \
-	modules/Delphes.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h \
-	external/ExRootAnalysis/ExRootConfReader.h \
-	external/ExRootAnalysis/ExRootTreeWriter.h
-tmp/modules/StatusPidFilter.$(ObjSuf): \
-	modules/StatusPidFilter.$(SrcSuf) \
-	modules/StatusPidFilter.h \
 	classes/DelphesClasses.h \
 	classes/DelphesFactory.h \
@@ -684,56 +736,4 @@
 	external/Hector/H_RecRPObject.h \
 	external/Hector/H_BeamParticle.h
-tmp/modules/PileUpMergerPythia8.$(ObjSuf): \
-	modules/PileUpMergerPythia8.$(SrcSuf) \
-	modules/PileUpMergerPythia8.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	classes/DelphesPileUpReader.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/LeptonDressing.$(ObjSuf): \
-	modules/LeptonDressing.$(SrcSuf) \
-	modules/LeptonDressing.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/SimpleCalorimeter.$(ObjSuf): \
-	modules/SimpleCalorimeter.$(SrcSuf) \
-	modules/SimpleCalorimeter.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/EnergySmearing.$(ObjSuf): \
-	modules/EnergySmearing.$(SrcSuf) \
-	modules/EnergySmearing.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/modules/TrackCountingBTagging.$(ObjSuf): \
-	modules/TrackCountingBTagging.$(SrcSuf) \
-	modules/TrackCountingBTagging.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h
-tmp/modules/ExampleModule.$(ObjSuf): \
-	modules/ExampleModule.$(SrcSuf) \
-	modules/ExampleModule.h \
-	classes/DelphesClasses.h \
-	classes/DelphesFactory.h \
-	classes/DelphesFormula.h \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
 tmp/modules/MomentumSmearing.$(ObjSuf): \
 	modules/MomentumSmearing.$(SrcSuf) \
@@ -745,4 +745,23 @@
 	external/ExRootAnalysis/ExRootFilter.h \
 	external/ExRootAnalysis/ExRootClassifier.h
+tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf): \
+	external/ExRootAnalysis/ExRootFilter.$(SrcSuf) \
+	external/ExRootAnalysis/ExRootFilter.h \
+	external/ExRootAnalysis/ExRootClassifier.h
+tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf): \
+	external/ExRootAnalysis/ExRootConfReader.$(SrcSuf) \
+	external/ExRootAnalysis/ExRootConfReader.h \
+	external/tcl/tcl.h
+tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf): \
+	external/ExRootAnalysis/ExRootTreeWriter.$(SrcSuf) \
+	external/ExRootAnalysis/ExRootTreeWriter.h \
+	external/ExRootAnalysis/ExRootTreeBranch.h
+tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf): \
+	external/ExRootAnalysis/ExRootResult.$(SrcSuf) \
+	external/ExRootAnalysis/ExRootResult.h \
+	external/ExRootAnalysis/ExRootUtilities.h
+tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf): \
+	external/ExRootAnalysis/ExRootTreeBranch.$(SrcSuf) \
+	external/ExRootAnalysis/ExRootTreeBranch.h
 tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf): \
 	external/ExRootAnalysis/ExRootTreeReader.$(SrcSuf) \
@@ -752,56 +771,34 @@
 	external/ExRootAnalysis/ExRootTask.h \
 	external/ExRootAnalysis/ExRootConfReader.h
-tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf): \
-	external/ExRootAnalysis/ExRootTreeBranch.$(SrcSuf) \
-	external/ExRootAnalysis/ExRootTreeBranch.h
+tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf): \
+	external/ExRootAnalysis/ExRootProgressBar.$(SrcSuf) \
+	external/ExRootAnalysis/ExRootProgressBar.h
 tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf): \
 	external/ExRootAnalysis/ExRootUtilities.$(SrcSuf) \
 	external/ExRootAnalysis/ExRootUtilities.h
-tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf): \
-	external/ExRootAnalysis/ExRootFilter.$(SrcSuf) \
-	external/ExRootAnalysis/ExRootFilter.h \
-	external/ExRootAnalysis/ExRootClassifier.h
-tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf): \
-	external/ExRootAnalysis/ExRootResult.$(SrcSuf) \
-	external/ExRootAnalysis/ExRootResult.h \
-	external/ExRootAnalysis/ExRootUtilities.h
-tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf): \
-	external/ExRootAnalysis/ExRootTreeWriter.$(SrcSuf) \
-	external/ExRootAnalysis/ExRootTreeWriter.h \
-	external/ExRootAnalysis/ExRootTreeBranch.h
-tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf): \
-	external/ExRootAnalysis/ExRootProgressBar.$(SrcSuf) \
-	external/ExRootAnalysis/ExRootProgressBar.h
-tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf): \
-	external/ExRootAnalysis/ExRootConfReader.$(SrcSuf) \
-	external/ExRootAnalysis/ExRootConfReader.h \
-	external/tcl/tcl.h
-tmp/external/fastjet/Voronoi.$(ObjSuf): \
-	external/fastjet/Voronoi.$(SrcSuf) \
-	external/fastjet/internal/Voronoi.hh
-tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf): \
-	external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(SrcSuf) \
+tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf): \
+	external/fastjet/LazyTiling9SeparateGhosts.$(SrcSuf) \
+	external/fastjet/internal/LazyTiling9SeparateGhosts.hh \
+	external/fastjet/internal/TilingExtent.hh
+tmp/external/fastjet/TilingExtent.$(ObjSuf): \
+	external/fastjet/TilingExtent.$(SrcSuf) \
+	external/fastjet/internal/TilingExtent.hh
+tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf): \
+	external/fastjet/Dnn2piCylinder.$(SrcSuf) \
+	external/fastjet/internal/Dnn2piCylinder.hh
+tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf): \
+	external/fastjet/GhostedAreaSpec.$(SrcSuf) \
+	external/fastjet/GhostedAreaSpec.hh \
+	external/fastjet/Error.hh
+tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf): \
+	external/fastjet/ClusterSequenceActiveArea.$(SrcSuf) \
+	external/fastjet/PseudoJet.hh \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/ClusterSequenceActiveArea.hh \
 	external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
-tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \
-	external/fastjet/CompositeJetStructure.$(SrcSuf)
-tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \
-	external/fastjet/Dnn4piCylinder.$(SrcSuf) \
-	external/fastjet/internal/Dnn4piCylinder.hh
-tmp/external/fastjet/LazyTiling25.$(ObjSuf): \
-	external/fastjet/LazyTiling25.$(SrcSuf) \
-	external/fastjet/internal/LazyTiling25.hh \
+tmp/external/fastjet/LazyTiling9.$(ObjSuf): \
+	external/fastjet/LazyTiling9.$(SrcSuf) \
+	external/fastjet/internal/LazyTiling9.hh \
 	external/fastjet/internal/TilingExtent.hh
-tmp/external/fastjet/AreaDefinition.$(ObjSuf): \
-	external/fastjet/AreaDefinition.$(SrcSuf) \
-	external/fastjet/AreaDefinition.hh
-tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf): \
-	external/fastjet/ClusterSequencePassiveArea.$(SrcSuf) \
-	external/fastjet/ClusterSequencePassiveArea.hh \
-	external/fastjet/ClusterSequenceVoronoiArea.hh
-tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf): \
-	external/fastjet/ClusterSequence_N2.$(SrcSuf)
-tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \
-	external/fastjet/Dnn3piCylinder.$(SrcSuf) \
-	external/fastjet/internal/Dnn3piCylinder.hh
 tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf): \
 	external/fastjet/ClusterSequence_Delaunay.$(SrcSuf) \
@@ -813,98 +810,56 @@
 	external/fastjet/internal/Dnn3piCylinder.hh \
 	external/fastjet/internal/Dnn2piCylinder.hh
-tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf): \
-	external/fastjet/Dnn2piCylinder.$(SrcSuf) \
-	external/fastjet/internal/Dnn2piCylinder.hh
-tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf): \
-	external/fastjet/ClusterSequenceAreaBase.$(SrcSuf) \
-	external/fastjet/ClusterSequenceAreaBase.hh
-tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \
-	external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \
-	external/fastjet/PseudoJet.hh \
-	external/fastjet/ClusterSequence.hh
-tmp/external/fastjet/MinHeap.$(ObjSuf): \
-	external/fastjet/MinHeap.$(SrcSuf) \
-	external/fastjet/internal/MinHeap.hh
+tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \
+	external/fastjet/ClusterSequenceArea.$(SrcSuf) \
+	external/fastjet/ClusterSequenceArea.hh
+tmp/external/fastjet/LazyTiling25.$(ObjSuf): \
+	external/fastjet/LazyTiling25.$(SrcSuf) \
+	external/fastjet/internal/LazyTiling25.hh \
+	external/fastjet/internal/TilingExtent.hh
+tmp/external/fastjet/Voronoi.$(ObjSuf): \
+	external/fastjet/Voronoi.$(SrcSuf) \
+	external/fastjet/internal/Voronoi.hh
+tmp/external/fastjet/Selector.$(ObjSuf): \
+	external/fastjet/Selector.$(SrcSuf) \
+	external/fastjet/Selector.hh \
+	external/fastjet/GhostedAreaSpec.hh
+tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf): \
+	external/fastjet/ClusterSequence_TiledN2.$(SrcSuf) \
+	external/fastjet/PseudoJet.hh \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/internal/MinHeap.hh \
+	external/fastjet/internal/TilingExtent.hh
+tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf): \
+	external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(SrcSuf) \
+	external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
+tmp/external/fastjet/LimitedWarning.$(ObjSuf): \
+	external/fastjet/LimitedWarning.$(SrcSuf) \
+	external/fastjet/LimitedWarning.hh
+tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \
+	external/fastjet/CompositeJetStructure.$(SrcSuf)
+tmp/external/fastjet/DnnPlane.$(ObjSuf): \
+	external/fastjet/DnnPlane.$(SrcSuf) \
+	external/fastjet/internal/DnnPlane.hh
 tmp/external/fastjet/RectangularGrid.$(ObjSuf): \
 	external/fastjet/RectangularGrid.$(SrcSuf) \
 	external/fastjet/RectangularGrid.hh
-tmp/external/fastjet/PseudoJet.$(ObjSuf): \
-	external/fastjet/PseudoJet.$(SrcSuf) \
-	external/fastjet/Error.hh \
-	external/fastjet/PseudoJet.hh \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/ClusterSequenceAreaBase.hh \
-	external/fastjet/CompositeJetStructure.hh
-tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf): \
-	external/fastjet/ClusterSequenceVoronoiArea.$(SrcSuf) \
-	external/fastjet/ClusterSequenceVoronoiArea.hh \
-	external/fastjet/internal/Voronoi.hh
-tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \
-	external/fastjet/ClusterSequenceArea.$(SrcSuf) \
-	external/fastjet/ClusterSequenceArea.hh
-tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf): \
-	external/fastjet/FunctionOfPseudoJet.$(SrcSuf)
-tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf): \
-	external/fastjet/ClusterSequence_TiledN2.$(SrcSuf) \
-	external/fastjet/PseudoJet.hh \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/internal/MinHeap.hh \
-	external/fastjet/internal/TilingExtent.hh
-tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf): \
-	external/fastjet/ClusterSequenceStructure.$(SrcSuf) \
-	external/fastjet/ClusterSequenceStructure.hh \
-	external/fastjet/Error.hh \
-	external/fastjet/PseudoJet.hh \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/ClusterSequenceAreaBase.hh
+tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \
+	external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \
+	external/fastjet/PseudoJet.hh \
+	external/fastjet/ClusterSequence.hh
+tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf): \
+	external/fastjet/ClusterSequencePassiveArea.$(SrcSuf) \
+	external/fastjet/ClusterSequencePassiveArea.hh \
+	external/fastjet/ClusterSequenceVoronoiArea.hh
 tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf): \
 	external/fastjet/LazyTiling9Alt.$(SrcSuf) \
 	external/fastjet/internal/LazyTiling9Alt.hh \
 	external/fastjet/internal/TilingExtent.hh
-tmp/external/fastjet/DnnPlane.$(ObjSuf): \
-	external/fastjet/DnnPlane.$(SrcSuf) \
-	external/fastjet/internal/DnnPlane.hh
-tmp/external/fastjet/Error.$(ObjSuf): \
-	external/fastjet/Error.$(SrcSuf) \
-	external/fastjet/Error.hh \
-	external/fastjet/config.h
-tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf): \
-	external/fastjet/LazyTiling9SeparateGhosts.$(SrcSuf) \
-	external/fastjet/internal/LazyTiling9SeparateGhosts.hh \
-	external/fastjet/internal/TilingExtent.hh
-tmp/external/fastjet/LazyTiling9.$(ObjSuf): \
-	external/fastjet/LazyTiling9.$(SrcSuf) \
-	external/fastjet/internal/LazyTiling9.hh \
-	external/fastjet/internal/TilingExtent.hh
-tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf): \
-	external/fastjet/ClusterSequenceActiveArea.$(SrcSuf) \
-	external/fastjet/PseudoJet.hh \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/ClusterSequenceActiveArea.hh \
-	external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
-tmp/external/fastjet/TilingExtent.$(ObjSuf): \
-	external/fastjet/TilingExtent.$(SrcSuf) \
-	external/fastjet/internal/TilingExtent.hh
-tmp/external/fastjet/LimitedWarning.$(ObjSuf): \
-	external/fastjet/LimitedWarning.$(SrcSuf) \
-	external/fastjet/LimitedWarning.hh
-tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf): \
-	external/fastjet/GhostedAreaSpec.$(SrcSuf) \
-	external/fastjet/GhostedAreaSpec.hh \
-	external/fastjet/Error.hh
-tmp/external/fastjet/Selector.$(ObjSuf): \
-	external/fastjet/Selector.$(SrcSuf) \
-	external/fastjet/Selector.hh \
-	external/fastjet/GhostedAreaSpec.hh
 tmp/external/fastjet/BasicRandom.$(ObjSuf): \
 	external/fastjet/BasicRandom.$(SrcSuf) \
 	external/fastjet/internal/BasicRandom.hh
-tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \
-	external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/internal/ClosestPair2D.hh
-tmp/external/fastjet/RangeDefinition.$(ObjSuf): \
-	external/fastjet/RangeDefinition.$(SrcSuf) \
-	external/fastjet/RangeDefinition.hh
+tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf): \
+	external/fastjet/ClusterSequenceAreaBase.$(SrcSuf) \
+	external/fastjet/ClusterSequenceAreaBase.hh
 tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf): \
 	external/fastjet/PseudoJetStructureBase.$(SrcSuf) \
@@ -930,18 +885,78 @@
 	external/fastjet/Error.hh \
 	external/fastjet/CompositeJetStructure.hh
+tmp/external/fastjet/Error.$(ObjSuf): \
+	external/fastjet/Error.$(SrcSuf) \
+	external/fastjet/Error.hh \
+	external/fastjet/config.h
+tmp/external/fastjet/RangeDefinition.$(ObjSuf): \
+	external/fastjet/RangeDefinition.$(SrcSuf) \
+	external/fastjet/RangeDefinition.hh
+tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf): \
+	external/fastjet/ClusterSequence_N2.$(SrcSuf)
+tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf): \
+	external/fastjet/ClusterSequenceStructure.$(SrcSuf) \
+	external/fastjet/ClusterSequenceStructure.hh \
+	external/fastjet/Error.hh \
+	external/fastjet/PseudoJet.hh \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/ClusterSequenceAreaBase.hh
+tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \
+	external/fastjet/Dnn4piCylinder.$(SrcSuf) \
+	external/fastjet/internal/Dnn4piCylinder.hh
 tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf): \
 	external/fastjet/ClusterSequence1GhostPassiveArea.$(SrcSuf) \
 	external/fastjet/ClusterSequence1GhostPassiveArea.hh
+tmp/external/fastjet/MinHeap.$(ObjSuf): \
+	external/fastjet/MinHeap.$(SrcSuf) \
+	external/fastjet/internal/MinHeap.hh
+tmp/external/fastjet/PseudoJet.$(ObjSuf): \
+	external/fastjet/PseudoJet.$(SrcSuf) \
+	external/fastjet/Error.hh \
+	external/fastjet/PseudoJet.hh \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/ClusterSequenceAreaBase.hh \
+	external/fastjet/CompositeJetStructure.hh
+tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \
+	external/fastjet/Dnn3piCylinder.$(SrcSuf) \
+	external/fastjet/internal/Dnn3piCylinder.hh
+tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \
+	external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/internal/ClosestPair2D.hh
+tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf): \
+	external/fastjet/ClusterSequenceVoronoiArea.$(SrcSuf) \
+	external/fastjet/ClusterSequenceVoronoiArea.hh \
+	external/fastjet/internal/Voronoi.hh
 tmp/external/fastjet/ClosestPair2D.$(ObjSuf): \
 	external/fastjet/ClosestPair2D.$(SrcSuf) \
 	external/fastjet/internal/ClosestPair2D.hh
+tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf): \
+	external/fastjet/FunctionOfPseudoJet.$(SrcSuf)
+tmp/external/fastjet/AreaDefinition.$(ObjSuf): \
+	external/fastjet/AreaDefinition.$(SrcSuf) \
+	external/fastjet/AreaDefinition.hh
+tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf): \
+	external/fastjet/tools/CASubJetTagger.$(SrcSuf)
 tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf): \
 	external/fastjet/tools/TopTaggerBase.$(SrcSuf)
-tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf): \
-	external/fastjet/tools/JHTopTagger.$(SrcSuf)
+tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf): \
+	external/fastjet/tools/BackgroundEstimatorBase.$(SrcSuf) \
+	external/fastjet/tools/BackgroundEstimatorBase.hh
+tmp/external/fastjet/tools/Subtractor.$(ObjSuf): \
+	external/fastjet/tools/Subtractor.$(SrcSuf) \
+	external/fastjet/tools/Subtractor.hh
+tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf): \
+	external/fastjet/tools/RestFrameNSubjettinessTagger.$(SrcSuf)
+tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf): \
+	external/fastjet/tools/JetMedianBackgroundEstimator.$(SrcSuf) \
+	external/fastjet/tools/JetMedianBackgroundEstimator.hh
 tmp/external/fastjet/tools/Recluster.$(ObjSuf): \
 	external/fastjet/tools/Recluster.$(SrcSuf) \
 	external/fastjet/tools/Recluster.hh \
 	external/fastjet/CompositeJetStructure.hh
+tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf): \
+	external/fastjet/tools/MassDropTagger.$(SrcSuf)
+tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf): \
+	external/fastjet/tools/JHTopTagger.$(SrcSuf)
 tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf): \
 	external/fastjet/tools/GridMedianBackgroundEstimator.$(SrcSuf) \
@@ -951,16 +966,4 @@
 	external/fastjet/tools/Filter.hh \
 	external/fastjet/tools/Recluster.hh
-tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf): \
-	external/fastjet/tools/JetMedianBackgroundEstimator.$(SrcSuf) \
-	external/fastjet/tools/JetMedianBackgroundEstimator.hh
-tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf): \
-	external/fastjet/tools/MassDropTagger.$(SrcSuf)
-tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf): \
-	external/fastjet/tools/BackgroundEstimatorBase.$(SrcSuf) \
-	external/fastjet/tools/BackgroundEstimatorBase.hh
-tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf): \
-	external/fastjet/tools/RestFrameNSubjettinessTagger.$(SrcSuf)
-tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf): \
-	external/fastjet/tools/CASubJetTagger.$(SrcSuf)
 tmp/external/fastjet/tools/Pruner.$(ObjSuf): \
 	external/fastjet/tools/Pruner.$(SrcSuf) \
@@ -968,51 +971,18 @@
 	external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh \
 	external/fastjet/Selector.hh
-tmp/external/fastjet/tools/Subtractor.$(ObjSuf): \
-	external/fastjet/tools/Subtractor.$(SrcSuf) \
-	external/fastjet/tools/Subtractor.hh
-tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/area.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/protocones.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/siscone_error.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/SISConePlugin.$(SrcSuf) \
+tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf): \
+	external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(SrcSuf) \
 	external/fastjet/ClusterSequence.hh
-tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/hash.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/momentum.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/quadtree.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/siscone.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/vicinity.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/split_merge.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/ranlux.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/geom_2d.$(SrcSuf)
-tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \
-	external/fastjet/plugins/SISCone/reference.$(SrcSuf)
+tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf): \
+	external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(SrcSuf)
+tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf): \
+	external/fastjet/plugins/ATLASCone/Jet.$(SrcSuf)
+tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf): \
+	external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(SrcSuf)
+tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf): \
+	external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(SrcSuf) \
+	external/fastjet/ClusterSequence.hh
 tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf): \
 	external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(SrcSuf) \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/Error.hh
-tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf): \
-	external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(SrcSuf)
-tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf): \
-	external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(SrcSuf) \
-	external/fastjet/ClusterSequence.hh
-tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf): \
-	external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(SrcSuf)
-tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf): \
-	external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(SrcSuf) \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/Error.hh
-tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \
-	external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \
 	external/fastjet/ClusterSequence.hh \
 	external/fastjet/Error.hh
@@ -1020,24 +990,46 @@
 	external/fastjet/plugins/TrackJet/TrackJetPlugin.$(SrcSuf) \
 	external/fastjet/ClusterSequence.hh
-tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf): \
-	external/fastjet/plugins/ATLASCone/Jet.$(SrcSuf)
-tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf): \
-	external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(SrcSuf)
-tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf): \
-	external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(SrcSuf)
-tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf): \
-	external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(SrcSuf) \
+tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf): \
+	external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(SrcSuf) \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/Error.hh
+tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf): \
+	external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(SrcSuf)
+tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf): \
+	external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(SrcSuf) \
 	external/fastjet/ClusterSequence.hh
-tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \
-	external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \
+tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf): \
+	external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(SrcSuf)
+tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \
+	external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \
 	external/fastjet/ClusterSequence.hh \
-	external/fastjet/NNH.hh
-tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf): \
-	external/fastjet/plugins/Jade/JadePlugin.$(SrcSuf) \
-	external/fastjet/ClusterSequence.hh \
-	external/fastjet/NNH.hh
-tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf): \
-	external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(SrcSuf) \
+	external/fastjet/Error.hh
+tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/geom_2d.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/SISConePlugin.$(SrcSuf) \
 	external/fastjet/ClusterSequence.hh
+tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/siscone.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/hash.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/quadtree.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/area.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/momentum.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/reference.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/ranlux.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/protocones.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/split_merge.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/vicinity.$(SrcSuf)
+tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf): \
+	external/fastjet/plugins/SISCone/siscone_error.$(SrcSuf)
 tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf): \
 	external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(SrcSuf) \
@@ -1046,240 +1038,248 @@
 	external/fastjet/plugins/GridJet/GridJetPlugin.$(SrcSuf) \
 	external/fastjet/ClusterSequence.hh
+tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf): \
+	external/fastjet/plugins/Jade/JadePlugin.$(SrcSuf) \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/NNH.hh
+tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \
+	external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \
+	external/fastjet/ClusterSequence.hh \
+	external/fastjet/NNH.hh
 tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf): \
 	external/fastjet/contribs/SoftKiller/SoftKiller.$(SrcSuf)
+tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf): \
+	external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(SrcSuf)
+tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \
+	external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf)
+tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf): \
+	external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(SrcSuf)
 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf): \
 	external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(SrcSuf)
-tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf): \
-	external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(SrcSuf)
 tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf): \
 	external/fastjet/contribs/Nsubjettiness/Njettiness.$(SrcSuf)
-tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf): \
-	external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(SrcSuf)
 tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf): \
 	external/fastjet/contribs/Nsubjettiness/AxesFinder.$(SrcSuf)
 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf): \
 	external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(SrcSuf)
-tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \
-	external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf)
+tmp/external/Hector/H_Marker.$(ObjSuf): \
+	external/Hector/H_Marker.$(SrcSuf)
+tmp/external/Hector/H_VerticalKicker.$(ObjSuf): \
+	external/Hector/H_VerticalKicker.$(SrcSuf)
+tmp/external/Hector/H_BeamLine.$(ObjSuf): \
+	external/Hector/H_BeamLine.$(SrcSuf)
+tmp/external/Hector/H_RecRPObject.$(ObjSuf): \
+	external/Hector/H_RecRPObject.$(SrcSuf)
+tmp/external/Hector/H_Quadrupole.$(ObjSuf): \
+	external/Hector/H_Quadrupole.$(SrcSuf)
+tmp/external/Hector/H_RectangularDipole.$(ObjSuf): \
+	external/Hector/H_RectangularDipole.$(SrcSuf)
 tmp/external/Hector/H_CircularAperture.$(ObjSuf): \
 	external/Hector/H_CircularAperture.$(SrcSuf)
-tmp/external/Hector/H_Quadrupole.$(ObjSuf): \
-	external/Hector/H_Quadrupole.$(SrcSuf)
+tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf): \
+	external/Hector/H_HorizontalQuadrupole.$(SrcSuf)
+tmp/external/Hector/H_HorizontalKicker.$(ObjSuf): \
+	external/Hector/H_HorizontalKicker.$(SrcSuf)
+tmp/external/Hector/H_BeamLineParser.$(ObjSuf): \
+	external/Hector/H_BeamLineParser.$(SrcSuf)
+tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf): \
+	external/Hector/H_RectEllipticAperture.$(SrcSuf)
+tmp/external/Hector/H_RectangularCollimator.$(ObjSuf): \
+	external/Hector/H_RectangularCollimator.$(SrcSuf)
+tmp/external/Hector/H_SectorDipole.$(ObjSuf): \
+	external/Hector/H_SectorDipole.$(SrcSuf)
+tmp/external/Hector/H_RectangularAperture.$(ObjSuf): \
+	external/Hector/H_RectangularAperture.$(SrcSuf)
+tmp/external/Hector/H_RomanPot.$(ObjSuf): \
+	external/Hector/H_RomanPot.$(SrcSuf)
+tmp/external/Hector/H_Aperture.$(ObjSuf): \
+	external/Hector/H_Aperture.$(SrcSuf)
+tmp/external/Hector/H_BeamParticle.$(ObjSuf): \
+	external/Hector/H_BeamParticle.$(SrcSuf)
+tmp/external/Hector/H_Beam.$(ObjSuf): \
+	external/Hector/H_Beam.$(SrcSuf)
+tmp/external/Hector/H_Drift.$(ObjSuf): \
+	external/Hector/H_Drift.$(SrcSuf)
 tmp/external/Hector/H_Dipole.$(ObjSuf): \
 	external/Hector/H_Dipole.$(SrcSuf)
 tmp/external/Hector/H_OpticalElement.$(ObjSuf): \
 	external/Hector/H_OpticalElement.$(SrcSuf)
-tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf): \
-	external/Hector/H_HorizontalQuadrupole.$(SrcSuf)
-tmp/external/Hector/H_Aperture.$(ObjSuf): \
-	external/Hector/H_Aperture.$(SrcSuf)
-tmp/external/Hector/H_Drift.$(ObjSuf): \
-	external/Hector/H_Drift.$(SrcSuf)
-tmp/external/Hector/H_RomanPot.$(ObjSuf): \
-	external/Hector/H_RomanPot.$(SrcSuf)
-tmp/external/Hector/H_HorizontalKicker.$(ObjSuf): \
-	external/Hector/H_HorizontalKicker.$(SrcSuf)
-tmp/external/Hector/H_Beam.$(ObjSuf): \
-	external/Hector/H_Beam.$(SrcSuf)
-tmp/external/Hector/H_RecRPObject.$(ObjSuf): \
-	external/Hector/H_RecRPObject.$(SrcSuf)
-tmp/external/Hector/H_BeamLineParser.$(ObjSuf): \
-	external/Hector/H_BeamLineParser.$(SrcSuf)
+tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \
+	external/Hector/H_TransportMatrices.$(SrcSuf)
 tmp/external/Hector/H_Parameters.$(ObjSuf): \
 	external/Hector/H_Parameters.$(SrcSuf)
-tmp/external/Hector/H_RectangularCollimator.$(ObjSuf): \
-	external/Hector/H_RectangularCollimator.$(SrcSuf)
+tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \
+	external/Hector/H_VerticalQuadrupole.$(SrcSuf)
+tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \
+	external/Hector/H_AbstractBeamLine.$(SrcSuf)
+tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \
+	external/Hector/H_EllipticAperture.$(SrcSuf)
 tmp/external/Hector/H_Kicker.$(ObjSuf): \
 	external/Hector/H_Kicker.$(SrcSuf)
-tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \
-	external/Hector/H_AbstractBeamLine.$(SrcSuf)
-tmp/external/Hector/H_Marker.$(ObjSuf): \
-	external/Hector/H_Marker.$(SrcSuf)
-tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \
-	external/Hector/H_TransportMatrices.$(SrcSuf)
-tmp/external/Hector/H_SectorDipole.$(ObjSuf): \
-	external/Hector/H_SectorDipole.$(SrcSuf)
-tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \
-	external/Hector/H_EllipticAperture.$(SrcSuf)
-tmp/external/Hector/H_VerticalKicker.$(ObjSuf): \
-	external/Hector/H_VerticalKicker.$(SrcSuf)
-tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf): \
-	external/Hector/H_RectEllipticAperture.$(SrcSuf)
-tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \
-	external/Hector/H_VerticalQuadrupole.$(SrcSuf)
-tmp/external/Hector/H_BeamLine.$(ObjSuf): \
-	external/Hector/H_BeamLine.$(SrcSuf)
-tmp/external/Hector/H_BeamParticle.$(ObjSuf): \
-	external/Hector/H_BeamParticle.$(SrcSuf)
-tmp/external/Hector/H_RectangularAperture.$(ObjSuf): \
-	external/Hector/H_RectangularAperture.$(SrcSuf)
-tmp/external/Hector/H_RectangularDipole.$(ObjSuf): \
-	external/Hector/H_RectangularDipole.$(SrcSuf)
 DELPHES_OBJ +=  \
+	tmp/classes/DelphesHepMCReader.$(ObjSuf) \
+	tmp/classes/DelphesLHEFReader.$(ObjSuf) \
+	tmp/classes/DelphesTF2.$(ObjSuf) \
+	tmp/classes/DelphesFactory.$(ObjSuf) \
+	tmp/classes/DelphesFormula.$(ObjSuf) \
+	tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \
+	tmp/classes/DelphesStream.$(ObjSuf) \
 	tmp/classes/DelphesPileUpWriter.$(ObjSuf) \
-	tmp/classes/DelphesHepMCReader.$(ObjSuf) \
-	tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \
+	tmp/classes/DelphesModule.$(ObjSuf) \
+	tmp/classes/DelphesClasses.$(ObjSuf) \
 	tmp/classes/DelphesPileUpReader.$(ObjSuf) \
-	tmp/classes/DelphesClasses.$(ObjSuf) \
-	tmp/classes/DelphesFormula.$(ObjSuf) \
-	tmp/classes/DelphesTF2.$(ObjSuf) \
-	tmp/classes/DelphesModule.$(ObjSuf) \
-	tmp/classes/DelphesStream.$(ObjSuf) \
-	tmp/classes/DelphesFactory.$(ObjSuf) \
-	tmp/classes/DelphesLHEFReader.$(ObjSuf) \
+	tmp/modules/SimpleCalorimeter.$(ObjSuf) \
+	tmp/modules/LeptonDressing.$(ObjSuf) \
+	tmp/modules/Efficiency.$(ObjSuf) \
+	tmp/modules/UniqueObjectFinder.$(ObjSuf) \
+	tmp/modules/ExampleModule.$(ObjSuf) \
+	tmp/modules/ParticlePropagator.$(ObjSuf) \
+	tmp/modules/EnergySmearing.$(ObjSuf) \
+	tmp/modules/FastJetFinder.$(ObjSuf) \
+	tmp/modules/StatusPidFilter.$(ObjSuf) \
+	tmp/modules/ConstituentFilter.$(ObjSuf) \
 	tmp/modules/EnergyScale.$(ObjSuf) \
-	tmp/modules/Cloner.$(ObjSuf) \
-	tmp/modules/UniqueObjectFinder.$(ObjSuf) \
-	tmp/modules/ParticlePropagator.$(ObjSuf) \
-	tmp/modules/FastJetFinder.$(ObjSuf) \
+	tmp/modules/TrackCountingBTagging.$(ObjSuf) \
+	tmp/modules/TauTagging.$(ObjSuf) \
+	tmp/modules/TimeSmearing.$(ObjSuf) \
+	tmp/modules/Merger.$(ObjSuf) \
+	tmp/modules/BTagging.$(ObjSuf) \
+	tmp/modules/TreeWriter.$(ObjSuf) \
+	tmp/modules/Weighter.$(ObjSuf) \
+	tmp/modules/PileUpJetID.$(ObjSuf) \
+	tmp/modules/Delphes.$(ObjSuf) \
+	tmp/modules/ImpactParameterSmearing.$(ObjSuf) \
 	tmp/modules/Calorimeter.$(ObjSuf) \
-	tmp/modules/TreeWriter.$(ObjSuf) \
 	tmp/modules/Isolation.$(ObjSuf) \
 	tmp/modules/PileUpMerger.$(ObjSuf) \
-	tmp/modules/Efficiency.$(ObjSuf) \
-	tmp/modules/ImpactParameterSmearing.$(ObjSuf) \
-	tmp/modules/Weighter.$(ObjSuf) \
-	tmp/modules/TauTagging.$(ObjSuf) \
-	tmp/modules/PileUpJetID.$(ObjSuf) \
-	tmp/modules/ConstituentFilter.$(ObjSuf) \
-	tmp/modules/Merger.$(ObjSuf) \
+	tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \
+	tmp/modules/Cloner.$(ObjSuf) \
+	tmp/modules/JetPileUpSubtractor.$(ObjSuf) \
 	tmp/modules/PdgCodeFilter.$(ObjSuf) \
-	tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \
-	tmp/modules/JetPileUpSubtractor.$(ObjSuf) \
-	tmp/modules/TimeSmearing.$(ObjSuf) \
-	tmp/modules/BTagging.$(ObjSuf) \
-	tmp/modules/Delphes.$(ObjSuf) \
-	tmp/modules/StatusPidFilter.$(ObjSuf) \
 	tmp/modules/Hector.$(ObjSuf) \
-	tmp/modules/LeptonDressing.$(ObjSuf) \
-	tmp/modules/SimpleCalorimeter.$(ObjSuf) \
-	tmp/modules/EnergySmearing.$(ObjSuf) \
-	tmp/modules/TrackCountingBTagging.$(ObjSuf) \
-	tmp/modules/ExampleModule.$(ObjSuf) \
 	tmp/modules/MomentumSmearing.$(ObjSuf) \
+	tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf) \
+	tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf) \
+	tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf) \
+	tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf) \
+	tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf) \
 	tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf) \
 	tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf) \
-	tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf) \
+	tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf) \
 	tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf) \
-	tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf) \
-	tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf) \
-	tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf) \
-	tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf) \
-	tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf) \
+	tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf) \
+	tmp/external/fastjet/TilingExtent.$(ObjSuf) \
+	tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf) \
+	tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf) \
+	tmp/external/fastjet/LazyTiling9.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \
+	tmp/external/fastjet/LazyTiling25.$(ObjSuf) \
 	tmp/external/fastjet/Voronoi.$(ObjSuf) \
+	tmp/external/fastjet/Selector.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf) \
 	tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf) \
+	tmp/external/fastjet/LimitedWarning.$(ObjSuf) \
 	tmp/external/fastjet/CompositeJetStructure.$(ObjSuf) \
-	tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf) \
-	tmp/external/fastjet/LazyTiling25.$(ObjSuf) \
-	tmp/external/fastjet/AreaDefinition.$(ObjSuf) \
+	tmp/external/fastjet/DnnPlane.$(ObjSuf) \
+	tmp/external/fastjet/RectangularGrid.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf) \
 	tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \
-	tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \
-	tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf) \
+	tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf) \
+	tmp/external/fastjet/BasicRandom.$(ObjSuf) \
 	tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf) \
-	tmp/external/fastjet/MinHeap.$(ObjSuf) \
-	tmp/external/fastjet/RectangularGrid.$(ObjSuf) \
-	tmp/external/fastjet/PseudoJet.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \
-	tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \
-	tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf) \
-	tmp/external/fastjet/DnnPlane.$(ObjSuf) \
-	tmp/external/fastjet/Error.$(ObjSuf) \
-	tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf) \
-	tmp/external/fastjet/LazyTiling9.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf) \
-	tmp/external/fastjet/TilingExtent.$(ObjSuf) \
-	tmp/external/fastjet/LimitedWarning.$(ObjSuf) \
-	tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf) \
-	tmp/external/fastjet/Selector.$(ObjSuf) \
-	tmp/external/fastjet/BasicRandom.$(ObjSuf) \
-	tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf) \
-	tmp/external/fastjet/RangeDefinition.$(ObjSuf) \
 	tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf) \
 	tmp/external/fastjet/ClusterSequence.$(ObjSuf) \
 	tmp/external/fastjet/JetDefinition.$(ObjSuf) \
+	tmp/external/fastjet/Error.$(ObjSuf) \
+	tmp/external/fastjet/RangeDefinition.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \
+	tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf) \
 	tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf) \
+	tmp/external/fastjet/MinHeap.$(ObjSuf) \
+	tmp/external/fastjet/PseudoJet.$(ObjSuf) \
+	tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf) \
+	tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \
 	tmp/external/fastjet/ClosestPair2D.$(ObjSuf) \
+	tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf) \
+	tmp/external/fastjet/AreaDefinition.$(ObjSuf) \
+	tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf) \
 	tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf) \
+	tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf) \
+	tmp/external/fastjet/tools/Subtractor.$(ObjSuf) \
+	tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf) \
+	tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf) \
+	tmp/external/fastjet/tools/Recluster.$(ObjSuf) \
+	tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf) \
 	tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf) \
-	tmp/external/fastjet/tools/Recluster.$(ObjSuf) \
 	tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf) \
 	tmp/external/fastjet/tools/Filter.$(ObjSuf) \
-	tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf) \
-	tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf) \
-	tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf) \
-	tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf) \
-	tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf) \
 	tmp/external/fastjet/tools/Pruner.$(ObjSuf) \
-	tmp/external/fastjet/tools/Subtractor.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf) \
-	tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \
-	tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \
-	tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf) \
-	tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf) \
-	tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf) \
-	tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf) \
-	tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \
-	tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf) \
 	tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf) \
 	tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf) \
-	tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf) \
-	tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf) \
-	tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf) \
-	tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf) \
 	tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf) \
+	tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf) \
+	tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \
+	tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \
 	tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf) \
 	tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf) \
+	tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf) \
 	tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf) \
+	tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf) \
+	tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \
+	tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf) \
 	tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf) \
-	tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf) \
 	tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf) \
-	tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf) \
 	tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf) \
 	tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf) \
-	tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \
+	tmp/external/Hector/H_Marker.$(ObjSuf) \
+	tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \
+	tmp/external/Hector/H_BeamLine.$(ObjSuf) \
+	tmp/external/Hector/H_RecRPObject.$(ObjSuf) \
+	tmp/external/Hector/H_Quadrupole.$(ObjSuf) \
+	tmp/external/Hector/H_RectangularDipole.$(ObjSuf) \
 	tmp/external/Hector/H_CircularAperture.$(ObjSuf) \
-	tmp/external/Hector/H_Quadrupole.$(ObjSuf) \
+	tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf) \
+	tmp/external/Hector/H_HorizontalKicker.$(ObjSuf) \
+	tmp/external/Hector/H_BeamLineParser.$(ObjSuf) \
+	tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf) \
+	tmp/external/Hector/H_RectangularCollimator.$(ObjSuf) \
+	tmp/external/Hector/H_SectorDipole.$(ObjSuf) \
+	tmp/external/Hector/H_RectangularAperture.$(ObjSuf) \
+	tmp/external/Hector/H_RomanPot.$(ObjSuf) \
+	tmp/external/Hector/H_Aperture.$(ObjSuf) \
+	tmp/external/Hector/H_BeamParticle.$(ObjSuf) \
+	tmp/external/Hector/H_Beam.$(ObjSuf) \
+	tmp/external/Hector/H_Drift.$(ObjSuf) \
 	tmp/external/Hector/H_Dipole.$(ObjSuf) \
 	tmp/external/Hector/H_OpticalElement.$(ObjSuf) \
-	tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf) \
-	tmp/external/Hector/H_Aperture.$(ObjSuf) \
-	tmp/external/Hector/H_Drift.$(ObjSuf) \
-	tmp/external/Hector/H_RomanPot.$(ObjSuf) \
-	tmp/external/Hector/H_HorizontalKicker.$(ObjSuf) \
-	tmp/external/Hector/H_Beam.$(ObjSuf) \
-	tmp/external/Hector/H_RecRPObject.$(ObjSuf) \
-	tmp/external/Hector/H_BeamLineParser.$(ObjSuf) \
+	tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \
 	tmp/external/Hector/H_Parameters.$(ObjSuf) \
-	tmp/external/Hector/H_RectangularCollimator.$(ObjSuf) \
-	tmp/external/Hector/H_Kicker.$(ObjSuf) \
+	tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \
 	tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf) \
-	tmp/external/Hector/H_Marker.$(ObjSuf) \
-	tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \
-	tmp/external/Hector/H_SectorDipole.$(ObjSuf) \
 	tmp/external/Hector/H_EllipticAperture.$(ObjSuf) \
-	tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \
-	tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf) \
-	tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \
-	tmp/external/Hector/H_BeamLine.$(ObjSuf) \
-	tmp/external/Hector/H_BeamParticle.$(ObjSuf) \
-	tmp/external/Hector/H_RectangularAperture.$(ObjSuf) \
-	tmp/external/Hector/H_RectangularDipole.$(ObjSuf)
+	tmp/external/Hector/H_Kicker.$(ObjSuf)
 
 ifeq ($(HAS_PYTHIA8),true)
@@ -1288,13 +1288,13 @@
 endif
 
+tmp/display/DelphesDisplay.$(ObjSuf): \
+	display/DelphesDisplay.$(SrcSuf) \
+	display/DelphesDisplay.h
 tmp/display/DelphesCaloData.$(ObjSuf): \
 	display/DelphesCaloData.$(SrcSuf) \
 	display/DelphesCaloData.h
-tmp/display/DelphesDisplay.$(ObjSuf): \
-	display/DelphesDisplay.$(SrcSuf) \
-	display/DelphesDisplay.h
 DISPLAY_OBJ +=  \
-	tmp/display/DelphesCaloData.$(ObjSuf) \
-	tmp/display/DelphesDisplay.$(ObjSuf)
+	tmp/display/DelphesDisplay.$(ObjSuf) \
+	tmp/display/DelphesCaloData.$(ObjSuf)
 
 ifeq ($(HAS_PYTHIA8),true)
@@ -1303,86 +1303,86 @@
 endif
 
+tmp/external/tcl/tclObj.$(ObjSuf): \
+	external/tcl/tclObj.c
+tmp/external/tcl/tclUtil.$(ObjSuf): \
+	external/tcl/tclUtil.c
+tmp/external/tcl/tclAsync.$(ObjSuf): \
+	external/tcl/tclAsync.c
+tmp/external/tcl/tclPosixStr.$(ObjSuf): \
+	external/tcl/tclPosixStr.c
+tmp/external/tcl/tclCompile.$(ObjSuf): \
+	external/tcl/tclCompile.c
 tmp/external/tcl/tclHistory.$(ObjSuf): \
 	external/tcl/tclHistory.c
 tmp/external/tcl/tclResolve.$(ObjSuf): \
 	external/tcl/tclResolve.c
+tmp/external/tcl/tclParse.$(ObjSuf): \
+	external/tcl/tclParse.c
+tmp/external/tcl/tclVar.$(ObjSuf): \
+	external/tcl/tclVar.c
+tmp/external/tcl/tclIndexObj.$(ObjSuf): \
+	external/tcl/tclIndexObj.c
+tmp/external/tcl/tclCkalloc.$(ObjSuf): \
+	external/tcl/tclCkalloc.c
 tmp/external/tcl/tclListObj.$(ObjSuf): \
 	external/tcl/tclListObj.c
-tmp/external/tcl/tclAsync.$(ObjSuf): \
-	external/tcl/tclAsync.c
+tmp/external/tcl/tclHash.$(ObjSuf): \
+	external/tcl/tclHash.c
+tmp/external/tcl/tclCmdIL.$(ObjSuf): \
+	external/tcl/tclCmdIL.c
 tmp/external/tcl/tclStringObj.$(ObjSuf): \
 	external/tcl/tclStringObj.c
-tmp/external/tcl/tclHash.$(ObjSuf): \
-	external/tcl/tclHash.c
+tmp/external/tcl/tclAlloc.$(ObjSuf): \
+	external/tcl/tclAlloc.c
 tmp/external/tcl/tclCompExpr.$(ObjSuf): \
 	external/tcl/tclCompExpr.c
-tmp/external/tcl/tclVar.$(ObjSuf): \
-	external/tcl/tclVar.c
+tmp/external/tcl/tclLink.$(ObjSuf): \
+	external/tcl/tclLink.c
+tmp/external/tcl/tclCmdAH.$(ObjSuf): \
+	external/tcl/tclCmdAH.c
+tmp/external/tcl/panic.$(ObjSuf): \
+	external/tcl/panic.c
+tmp/external/tcl/tclBasic.$(ObjSuf): \
+	external/tcl/tclBasic.c
+tmp/external/tcl/tclPreserve.$(ObjSuf): \
+	external/tcl/tclPreserve.c
 tmp/external/tcl/tclGet.$(ObjSuf): \
 	external/tcl/tclGet.c
-tmp/external/tcl/tclUtil.$(ObjSuf): \
-	external/tcl/tclUtil.c
-tmp/external/tcl/tclPosixStr.$(ObjSuf): \
-	external/tcl/tclPosixStr.c
-tmp/external/tcl/panic.$(ObjSuf): \
-	external/tcl/panic.c
-tmp/external/tcl/tclPreserve.$(ObjSuf): \
-	external/tcl/tclPreserve.c
-tmp/external/tcl/tclBasic.$(ObjSuf): \
-	external/tcl/tclBasic.c
-tmp/external/tcl/tclObj.$(ObjSuf): \
-	external/tcl/tclObj.c
 tmp/external/tcl/tclNamesp.$(ObjSuf): \
 	external/tcl/tclNamesp.c
-tmp/external/tcl/tclCmdMZ.$(ObjSuf): \
-	external/tcl/tclCmdMZ.c
-tmp/external/tcl/tclCmdIL.$(ObjSuf): \
-	external/tcl/tclCmdIL.c
-tmp/external/tcl/tclIndexObj.$(ObjSuf): \
-	external/tcl/tclIndexObj.c
-tmp/external/tcl/tclCmdAH.$(ObjSuf): \
-	external/tcl/tclCmdAH.c
-tmp/external/tcl/tclCkalloc.$(ObjSuf): \
-	external/tcl/tclCkalloc.c
-tmp/external/tcl/tclLink.$(ObjSuf): \
-	external/tcl/tclLink.c
-tmp/external/tcl/tclAlloc.$(ObjSuf): \
-	external/tcl/tclAlloc.c
 tmp/external/tcl/tclProc.$(ObjSuf): \
 	external/tcl/tclProc.c
 tmp/external/tcl/tclExecute.$(ObjSuf): \
 	external/tcl/tclExecute.c
-tmp/external/tcl/tclParse.$(ObjSuf): \
-	external/tcl/tclParse.c
-tmp/external/tcl/tclCompile.$(ObjSuf): \
-	external/tcl/tclCompile.c
+tmp/external/tcl/tclCmdMZ.$(ObjSuf): \
+	external/tcl/tclCmdMZ.c
 TCL_OBJ +=  \
+	tmp/external/tcl/tclObj.$(ObjSuf) \
+	tmp/external/tcl/tclUtil.$(ObjSuf) \
+	tmp/external/tcl/tclAsync.$(ObjSuf) \
+	tmp/external/tcl/tclPosixStr.$(ObjSuf) \
+	tmp/external/tcl/tclCompile.$(ObjSuf) \
 	tmp/external/tcl/tclHistory.$(ObjSuf) \
 	tmp/external/tcl/tclResolve.$(ObjSuf) \
+	tmp/external/tcl/tclParse.$(ObjSuf) \
+	tmp/external/tcl/tclVar.$(ObjSuf) \
+	tmp/external/tcl/tclIndexObj.$(ObjSuf) \
+	tmp/external/tcl/tclCkalloc.$(ObjSuf) \
 	tmp/external/tcl/tclListObj.$(ObjSuf) \
-	tmp/external/tcl/tclAsync.$(ObjSuf) \
+	tmp/external/tcl/tclHash.$(ObjSuf) \
+	tmp/external/tcl/tclCmdIL.$(ObjSuf) \
 	tmp/external/tcl/tclStringObj.$(ObjSuf) \
-	tmp/external/tcl/tclHash.$(ObjSuf) \
+	tmp/external/tcl/tclAlloc.$(ObjSuf) \
 	tmp/external/tcl/tclCompExpr.$(ObjSuf) \
-	tmp/external/tcl/tclVar.$(ObjSuf) \
+	tmp/external/tcl/tclLink.$(ObjSuf) \
+	tmp/external/tcl/tclCmdAH.$(ObjSuf) \
+	tmp/external/tcl/panic.$(ObjSuf) \
+	tmp/external/tcl/tclBasic.$(ObjSuf) \
+	tmp/external/tcl/tclPreserve.$(ObjSuf) \
 	tmp/external/tcl/tclGet.$(ObjSuf) \
-	tmp/external/tcl/tclUtil.$(ObjSuf) \
-	tmp/external/tcl/tclPosixStr.$(ObjSuf) \
-	tmp/external/tcl/panic.$(ObjSuf) \
-	tmp/external/tcl/tclPreserve.$(ObjSuf) \
-	tmp/external/tcl/tclBasic.$(ObjSuf) \
-	tmp/external/tcl/tclObj.$(ObjSuf) \
 	tmp/external/tcl/tclNamesp.$(ObjSuf) \
-	tmp/external/tcl/tclCmdMZ.$(ObjSuf) \
-	tmp/external/tcl/tclCmdIL.$(ObjSuf) \
-	tmp/external/tcl/tclIndexObj.$(ObjSuf) \
-	tmp/external/tcl/tclCmdAH.$(ObjSuf) \
-	tmp/external/tcl/tclCkalloc.$(ObjSuf) \
-	tmp/external/tcl/tclLink.$(ObjSuf) \
-	tmp/external/tcl/tclAlloc.$(ObjSuf) \
 	tmp/external/tcl/tclProc.$(ObjSuf) \
 	tmp/external/tcl/tclExecute.$(ObjSuf) \
-	tmp/external/tcl/tclParse.$(ObjSuf) \
-	tmp/external/tcl/tclCompile.$(ObjSuf)
+	tmp/external/tcl/tclCmdMZ.$(ObjSuf)
 
 external/fastjet/internal/ClosestPair2D.hh: \
@@ -1474,8 +1474,4 @@
 	@touch $@
 
-external/fastjet/Error.hh: \
-	external/fastjet/internal/base.hh
-	@touch $@
-
 external/fastjet/internal/LazyTiling25.hh: \
 	external/fastjet/internal/MinHeap.hh \
@@ -1483,4 +1479,10 @@
 	external/fastjet/internal/LazyTiling9Alt.hh \
 	external/fastjet/internal/LazyTiling9.hh
+	@touch $@
+
+external/fastjet/Error.hh: \
+	external/fastjet/internal/base.hh \
+	external/fastjet/config.h \
+	external/fastjet/LimitedWarning.hh
 	@touch $@
 
@@ -1699,4 +1701,5 @@
 
 external/fastjet/tools/Subtractor.hh: \
+	external/fastjet/internal/base.hh \
 	external/fastjet/tools/Transformer.hh \
 	external/fastjet/tools/BackgroundEstimatorBase.hh
@@ -1709,4 +1712,8 @@
 	@touch $@
 
+external/fastjet/AreaDefinition.hh: \
+	external/fastjet/GhostedAreaSpec.hh
+	@touch $@
+
 external/fastjet/internal/Dnn3piCylinder.hh: \
 	external/fastjet/internal/DynamicNearestNeighbours.hh \
@@ -1715,8 +1722,4 @@
 	@touch $@
 
-external/fastjet/AreaDefinition.hh: \
-	external/fastjet/GhostedAreaSpec.hh
-	@touch $@
-
 modules/TimeSmearing.h: \
 	classes/DelphesModule.h
@@ -1741,10 +1744,10 @@
 	@touch $@
 
+external/fastjet/config.h: \
+	external/fastjet/config_win.h
+	@touch $@
+
 external/fastjet/LimitedWarning.hh: \
 	external/fastjet/internal/base.hh
-	@touch $@
-
-external/fastjet/config.h: \
-	external/fastjet/config_win.h
 	@touch $@
 
Index: doc/update_fastjet.sh
===================================================================
--- doc/update_fastjet.sh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ doc/update_fastjet.sh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,3 +1,3 @@
-version=3.1.0-beta.1
+version=3.1.0
 
 #wget http://fastjet.fr/repo/fastjet-${version}.tar.gz
Index: external/fastjet/AUTHORS
===================================================================
--- external/fastjet/AUTHORS	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/AUTHORS	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -35,4 +35,5 @@
 Chris Vermilion
 Markus Wobisch 
+Christopher Young
 
 ----------------------------------------------------------------------
Index: external/fastjet/ClusterSequence.cc
===================================================================
--- external/fastjet/ClusterSequence.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/ClusterSequence.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: ClusterSequence.cc 3619 2014-08-13 14:17:19Z salam $
+// $Id: ClusterSequence.cc 3685 2014-09-11 20:15:00Z salam $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -37,5 +37,7 @@
 #include "fastjet/internal/LazyTiling9.hh"
 #include "fastjet/internal/LazyTiling25.hh"
+#ifndef __FJCORE__
 #include "fastjet/internal/LazyTiling9SeparateGhosts.hh"
+#endif  // __FJCORE__
 #include<iostream>
 #include<sstream>
@@ -370,4 +372,5 @@
     _plugin_activated = false;
 
+#ifndef __FJCORE__
   } else if (_strategy == N2MHTLazy9AntiKtSeparateGhosts) {
     // attempt to use an external tiling routine -- it manipulates
@@ -377,4 +380,7 @@
     tiling.run();
     _plugin_activated = false;
+#else 
+    throw Error("N2MHTLazy9AntiKtSeparateGhosts strategy not supported with FJCORE");
+#endif  // __FJCORE__
 
   } else if (_strategy == NlnN) {
Index: external/fastjet/ClusterSequence.hh
===================================================================
--- external/fastjet/ClusterSequence.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/ClusterSequence.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -3,5 +3,5 @@
 
 //FJSTARTHEADER
-// $Id: ClusterSequence.hh 3619 2014-08-13 14:17:19Z salam $
+// $Id: ClusterSequence.hh 3709 2014-09-29 13:19:11Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -641,7 +641,10 @@
   Strategy _best_strategy() const;
   
+  /// \if internal_doc
+  /// \class _Parabola
   /// returns c*(a*R**2 + b*R + 1);
   /// Written as a class in case we want to give names to different
   /// parabolas
+  /// \endif
   class _Parabola {
   public:
@@ -652,5 +655,8 @@
   };
 
+  /// \if internal_doc
+  /// \class _Line
   /// operator()(R) returns a*R+b;
+  /// \endif
   class _Line {
   public:
Index: external/fastjet/CompositeJetStructure.hh
===================================================================
--- external/fastjet/CompositeJetStructure.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/CompositeJetStructure.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: CompositeJetStructure.hh 3453 2014-07-25 07:44:32Z soyez $
+// $Id: CompositeJetStructure.hh 3652 2014-09-03 13:31:13Z salam $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -244,4 +244,5 @@
 				    const JetDefinition::Recombiner & recombiner){
   std::vector<PseudoJet> pieces;
+  pieces.reserve(2);
   pieces.push_back(j1);
   pieces.push_back(j2);
@@ -255,4 +256,5 @@
 				    const JetDefinition::Recombiner & recombiner){
   std::vector<PseudoJet> pieces;
+  pieces.reserve(3);
   pieces.push_back(j1);
   pieces.push_back(j2);
@@ -267,4 +269,5 @@
 				    const JetDefinition::Recombiner & recombiner){
   std::vector<PseudoJet> pieces;
+  pieces.reserve(4);
   pieces.push_back(j1);
   pieces.push_back(j2);
Index: external/fastjet/Error.cc
===================================================================
--- external/fastjet/Error.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/Error.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: Error.cc 3433 2014-07-23 08:17:03Z salam $
+// $Id: Error.cc 3695 2014-09-18 13:57:56Z cacciari $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -33,9 +33,15 @@
 #include <sstream>
 
+#ifndef __FJCORE__
 // printing the stack would need execinfo
 #ifdef FASTJET_HAVE_EXECINFO_H
 #include <execinfo.h>
 #include <cstdlib>
-#endif
+#ifdef FASTJET_HAVE_DEMANGLING_SUPPORT
+#include <cstdio>
+#include <cxxabi.h>
+#endif // FASTJET_HAVE_DEMANGLING_SUPPORT
+#endif // FASTJET_HAVE_EXECINFO_H
+#endif  // __FJCORE__
 
 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
@@ -46,11 +52,70 @@
 bool Error::_print_backtrace = false;
 ostream * Error::_default_ostr = & cerr;
+#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
+  LimitedWarning Error::_execinfo_undefined;
+#endif
 
+//----------------------------------------------------------------------
+#ifndef __FJCORE__ 
+
+// demangling only is included, i.e. --enable-demangling is specified
+// at configure time, execinfo.h is present and the GNU C++ ABI is
+// supported
+#if defined(FASTJET_HAVE_EXECINFO_H) && defined(FASTJET_HAVE_DEMANGLING_SUPPORT)
+// demangle a given backtrace symbol
+//
+// Notes:
+//  - at the moment, only the symbol is parsed.
+//  - one can get the offset by using 
+//      "%*[^(]%*[^_]%127[^+)]%64[+x0123456789abcdef]", symbol, offset
+//    and checking if sscanf returns 0, 1 or 2
+//    (offset includes the leading +)
+//  - Similarly one could exctract the address and try to convert it
+//    into a filename+line number like addr2line does but this seems
+//    to require exteral dependencies. If we want to go down that
+//    route, one could look into the inplementation o faddr2line(.c)
+//    and/or dladdr.
+string Error::_demangle(const char* symbol) {
+  size_t size;
+  int status;
+  char temp[128];
+  char* demangled;
+  // first, try to demangle a c++ name
+  // decryption:
+  //   %*[^(]  matches any number of characters different from "("
+  //           the * tells not to store in input var 
+  //   %*[^_]  matches any number of characters different from "_"
+  //           the * tells not to store in input var 
+  //   %127[^)+]  matches at most 127 characters different from "+"
+  //              match is stored
+  if (1 == sscanf(symbol, "%*[^(]%*[^_]%127[^)+]", temp)) {
+    //cout << symbol << " -> " << temp << endl;
+    if (NULL != (demangled = abi::__cxa_demangle(temp, NULL, &size, &status))) {
+      string result(demangled);
+      free(demangled);
+      return result;
+    }
+  }
+  //if that didn't work, try to get a regular c symbol
+  if (1 == sscanf(symbol, "%127s", temp)) {
+    return temp;
+  }
+ 
+  //if all else fails, just return the symbol
+  return symbol;
+}
+#endif  // FASTJET_HAVE_DEMANGLING_SUPPORT && FASTJET_HAVE_EXECINFO_H
+#endif  // __FJCORE__
+
+
+//----------------------------------------------------------------------
 Error::Error(const std::string & message_in) {
   _message = message_in; 
+
   if (_print_errors && _default_ostr){
     ostringstream oss;
     oss << "fastjet::Error:  "<< message_in << endl;
 
+#ifndef __FJCORE__
     // only print the stack if execinfo is available and stack enabled
 #ifdef FASTJET_HAVE_EXECINFO_H
@@ -64,9 +129,15 @@
       oss << "stack:" << endl;
       for (int i = 1; i < size && messages != NULL; ++i){
+#ifdef FASTJET_HAVE_DEMANGLING_SUPPORT
+	oss << "  #" << i << ": " << _demangle(messages[i])
+	    << " [" << messages[i]  << "]" << endl;
+#else
 	oss << "  #" << i << ": " << messages[i] << endl;
+#endif
       }
       free(messages);
     }
-#endif
+#endif  // FASTJET_HAVE_EXECINFO_H
+#endif  // __FJCORE__
 
     *_default_ostr << oss.str();
@@ -85,4 +156,14 @@
 }
 
+//----------------------------------------------------------------------
+void Error::set_print_backtrace(bool enabled) {
+#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
+  if (enabled) {
+    _execinfo_undefined.warn("Error::set_print_backtrace(true) will not work with this build of FastJet");
+  }
+#endif    
+  _print_backtrace = enabled;
+}
+
 FASTJET_END_NAMESPACE
 
Index: external/fastjet/Error.hh
===================================================================
--- external/fastjet/Error.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/Error.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -3,5 +3,5 @@
 
 //FJSTARTHEADER
-// $Id: Error.hh 3433 2014-07-23 08:17:03Z salam $
+// $Id: Error.hh 3694 2014-09-18 13:21:54Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -35,4 +35,8 @@
 #include<string>
 #include "fastjet/internal/base.hh"
+#include "fastjet/config.h"
+#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
+#include "fastjet/LimitedWarning.hh"
+#endif
 
 FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
@@ -65,5 +69,5 @@
   /// controls whether the backtrace is printed out with the error message or not.
   /// The default is "false".
-  static void set_print_backtrace(bool enabled) {_print_backtrace = enabled;}
+  static void set_print_backtrace(bool enabled);
 
   /// sets the default output stream for all errors; by default
@@ -74,8 +78,19 @@
 
 private:
+
+#ifndef __FJCORE__
+#if defined(FASTJET_HAVE_EXECINFO_H) && defined(FASTJET_HAVE_DEMANGLING_SUPPORT)
+  /// demangle a given backtrace symbol
+  std::string _demangle(const char* symbol);
+#endif
+#endif
+
   std::string _message;                ///< error message
   static bool _print_errors;           ///< do we print anything?
   static bool _print_backtrace;        ///< do we print the backtrace?
   static std::ostream * _default_ostr; ///< the output stream (cerr if not set)
+#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
+  static LimitedWarning _execinfo_undefined;
+#endif
 };
 
Index: external/fastjet/JetDefinition.cc
===================================================================
--- external/fastjet/JetDefinition.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/JetDefinition.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: JetDefinition.cc 3492 2014-07-30 16:58:20Z soyez $
+// $Id: JetDefinition.cc 3677 2014-09-09 22:45:25Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -270,4 +270,13 @@
   case BIpt2_scheme:
     return "boost-invariant pt2 scheme recombination";
+  case WTA_pt_scheme:
+    return "pt-ordered Winner-Takes-All recombination";
+  // Energy-ordering can lead to dangerous situations with particles at
+  // rest. We instead implement the WTA_modp_scheme
+  //
+  //   case WTA_E_scheme:
+  //     return "energy-ordered Winner-Takes-All recombination";
+  case WTA_modp_scheme:
+    return "|3-momentum|-ordered Winner-Takes-All recombination";
   default:
     ostringstream err;
@@ -309,4 +318,50 @@
     weightb = pb.perp2();
     break;
+  case WTA_pt_scheme:{
+    const PseudoJet & phard = (pa.pt2() >= pb.pt2()) ? pa : pb;
+    /// keep y,phi and m from the hardest, sum pt
+    pab.reset_PtYPhiM(pa.pt()+pb.pt(), 
+                      phard.rap(), phard.phi(), phard.m());
+    return;}
+  // Energy-ordering can lead to dangerous situations with particles at
+  // rest. We instead implement the WTA_modp_scheme
+  //
+  //   case WTA_E_scheme:{
+  //     const PseudoJet & phard = (pa.E() >= pb.E()) ? pa : pb;
+  //     /// keep 3-momentum direction and mass from the hardest, sum energies
+  //     ///
+  //     /// If the particle with the largest energy is at rest, the sum
+  //     /// remains at rest, implying that the mass of the sum is larger
+  //     /// than the mass of pa.
+  //     double Eab = pa.E() + pb.E();
+  //     double scale = (phard.modp2()==0.0)
+  //       ? 0.0
+  //       : sqrt((Eab*Eab - phard.m2())/phard.modp2());
+  //     pab.reset(phard.px()*scale, phard.py()*scale, phard.pz()*scale, Eab);
+  //     return;}
+  case WTA_modp_scheme:{
+    // Note: we need to compute both a and b modp. And we need pthard
+    // and its modp. If we want to avoid repeating the test and do
+    // only 2 modp calculations, we'd have to duplicate the code (or
+    // use a pair<const PJ&>). An alternative is to write modp_soft as
+    // modp_ab-modp_hard but this could suffer from larger rounding
+    // errors
+    bool a_hardest = (pa.modp2() >= pb.modp2());
+    const PseudoJet & phard = a_hardest ? pa : pb;
+    const PseudoJet & psoft = a_hardest ? pb : pa;
+    /// keep 3-momentum direction and mass from the hardest, sum modp
+    ///
+    /// If the hardest particle is at rest, the sum remains at rest
+    /// (the energy of the sum is therefore the mass of pa)
+    double modp_hard = phard.modp();
+    double modp_ab = modp_hard + psoft.modp();
+    if (phard.modp2()==0.0){
+      pab.reset(0.0, 0.0, 0.0, phard.m());
+    } else {
+      double scale = modp_ab/modp_hard;
+      pab.reset(phard.px()*scale, phard.py()*scale, phard.pz()*scale,
+                sqrt(modp_ab*modp_ab + phard.m2()));
+    }
+    return;}
   default:
     ostringstream err;
@@ -344,4 +399,7 @@
   case BIpt_scheme:
   case BIpt2_scheme:
+  case WTA_pt_scheme:
+  //case WTA_E_scheme:
+  case WTA_modp_scheme:
     break;
   case pt_scheme:
Index: external/fastjet/JetDefinition.hh
===================================================================
--- external/fastjet/JetDefinition.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/JetDefinition.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -3,5 +3,5 @@
 
 //FJSTARTHEADER
-// $Id: JetDefinition.hh 3523 2014-08-02 13:15:21Z salam $
+// $Id: JetDefinition.hh 3677 2014-09-09 22:45:25Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -181,5 +181,13 @@
 
 //======================================================================
-/// the various recombination schemes
+/// The various recombination schemes
+///
+/// Note that the schemes that recombine with non-linear weighting of
+/// the directions (e.g. pt2, winner-takes-all) are collinear safe
+/// only for algorithms with a suitable ordering of the
+/// recombinations: orderings in which, for particles of comparable
+/// energies, small-angle clusterings take place before large-angle
+/// clusterings. This property is satisfied by all gen-kt algorithms.
+/// 
 enum RecombinationScheme {
   /// summing the 4-momenta
@@ -203,4 +211,22 @@
   /// no preprocessing
   BIpt2_scheme=6,
+  /// pt-based Winner-Takes-All (WTA) recombination: the
+  /// result of the recombination has the rapidity, azimuth and mass
+  /// of the the PseudoJet with the larger pt, and a pt equal to the
+  /// sum of the two pt's
+  WTA_pt_scheme=7,
+  /// mod-p-based Winner-Takes-All (WTA) recombination: the result of
+  /// the recombination gets the 3-vector direction and mass of the
+  /// PseudoJet with the larger |3-momentum| (modp), and a
+  /// |3-momentum| equal to the scalar sum of the two |3-momenta|.
+  WTA_modp_scheme=8,
+  // Energy-ordering can lead to dangerous situations with particles at
+  // rest. We instead implement the WTA_modp_scheme
+  //
+  // // energy-based Winner-Takes-All (WTA) recombination: the result of
+  // // the recombination gets the 3-vector direction and mass of the
+  // // PseudoJet with the larger energy, and an energy equal to the
+  // // to the sum of the two energies
+  // WTA_E_scheme=8,
   /// for the user's external scheme
   external_scheme = 99
Index: external/fastjet/PseudoJet.cc
===================================================================
--- external/fastjet/PseudoJet.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/PseudoJet.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: PseudoJet.cc 3565 2014-08-11 15:24:39Z salam $
+// $Id: PseudoJet.cc 3652 2014-09-03 13:31:13Z salam $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -861,4 +861,5 @@
 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2){
   vector<PseudoJet> pieces;
+  pieces.reserve(2);
   pieces.push_back(j1);
   pieces.push_back(j2);
@@ -869,4 +870,5 @@
 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3){
   vector<PseudoJet> pieces;
+  pieces.reserve(3);
   pieces.push_back(j1);
   pieces.push_back(j2);
@@ -878,4 +880,5 @@
 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3, const PseudoJet & j4){
   vector<PseudoJet> pieces;
+  pieces.reserve(4);
   pieces.push_back(j1);
   pieces.push_back(j2);
Index: external/fastjet/RectangularGrid.hh
===================================================================
--- external/fastjet/RectangularGrid.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/RectangularGrid.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -88,6 +88,6 @@
   ///  \param rapmax     the maximal absolute rapidity extent of the grid
   ///  \param cell_size  the grid spacing (equivalently, cell size)
-  RectangularGrid(double rapmax, double cell_size) :
-      _ymax(rapmax), _ymin(-rapmax), 
+  RectangularGrid(double rapmax_in, double cell_size) :
+      _ymax(rapmax_in), _ymin(-rapmax_in), 
       _requested_drap(cell_size), _requested_dphi(cell_size) {
     _setup_grid();
@@ -103,8 +103,8 @@
   ///                        a massless 4-vector at the center of the tile passes
   ///                        the selection
-  RectangularGrid(double rapmin, double rapmax, double drap, double dphi,
+  RectangularGrid(double rapmin_in, double rapmax_in, double drap_in, double dphi_in,
                   Selector tile_selector = Selector()) 
-    : _ymax(rapmax), _ymin(rapmin), 
-      _requested_drap(drap), _requested_dphi(dphi),
+    : _ymax(rapmax_in), _ymin(rapmin_in), 
+      _requested_drap(drap_in), _requested_dphi(dphi_in),
       _tile_selector(tile_selector)
   {
Index: external/fastjet/Selector.hh
===================================================================
--- external/fastjet/Selector.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/Selector.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -3,5 +3,5 @@
 
 //FJSTARTHEADER
-// $Id: Selector.hh 3504 2014-08-01 06:07:54Z soyez $
+// $Id: Selector.hh 3711 2014-09-29 13:54:51Z salam $
 //
 // Copyright (c) 2009-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -305,5 +305,5 @@
   }
 
-  /// class that gets throw when a Selector is applied despite it not
+  /// class that gets thrown when a Selector is applied despite it not
   /// having a valid underlying worker.
   class InvalidWorker : public Error {
@@ -312,6 +312,6 @@
   };
 
-  /// class that gets throw when a Selector is applied despite it not
-  /// having a valid underlying worker.
+  /// class that gets thrown when the area is requested from a Selector for which
+  /// the area is not meaningful
   class InvalidArea : public Error {
   public:
Index: external/fastjet/VERSION
===================================================================
--- external/fastjet/VERSION	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/VERSION	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,1 +1,1 @@
-3.1.0-beta.1
+3.1.0
Index: external/fastjet/config_auto.h
===================================================================
--- external/fastjet/config_auto.h	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/config_auto.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -64,4 +64,8 @@
 #endif
 
+/* defined if demangling is enabled at configure time and is supported through
+   the GNU C++ ABI */
+/* #undef HAVE_DEMANGLING_SUPPORT */
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #ifndef FASTJET_HAVE_DLFCN_H 
@@ -147,5 +151,5 @@
 /* Define to the full name and version of this package. */
 #ifndef FASTJET_PACKAGE_STRING 
-#define FASTJET_PACKAGE_STRING  "FastJet 3.1.0-beta.1" 
+#define FASTJET_PACKAGE_STRING  "FastJet 3.1.0" 
 #endif
 
@@ -157,5 +161,5 @@
 /* Define to the version of this package. */
 #ifndef FASTJET_PACKAGE_VERSION 
-#define FASTJET_PACKAGE_VERSION  "3.1.0-beta.1" 
+#define FASTJET_PACKAGE_VERSION  "3.1.0" 
 #endif
 
@@ -167,5 +171,5 @@
 /* Version number of package */
 #ifndef FASTJET_VERSION 
-#define FASTJET_VERSION  "3.1.0-beta.1" 
+#define FASTJET_VERSION  "3.1.0" 
 #endif
 
@@ -182,16 +186,14 @@
 /* Version of the package under the form XYYZZ (instead of X.Y.Z) */
 #ifndef FASTJET_VERSION_NUMBER 
-#define FASTJET_VERSION_NUMBER  30103 
+#define FASTJET_VERSION_NUMBER  30100 
 #endif
 
 /* Patch version of this package */
 #ifndef FASTJET_VERSION_PATCHLEVEL 
-#define FASTJET_VERSION_PATCHLEVEL  3 
+#define FASTJET_VERSION_PATCHLEVEL  0 
 #endif
 
 /* Pre-release version of this package */
-#ifndef FASTJET_VERSION_PRERELEASE 
-#define FASTJET_VERSION_PRERELEASE  ".1.0-beta.1" 
-#endif
+/* #undef VERSION_PRERELEASE */
  
 /* once: _INCLUDE_FASTJET_CONFIG_AUTO_H */
Index: external/fastjet/config_raw.h
===================================================================
--- external/fastjet/config_raw.h	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/config_raw.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -37,4 +37,8 @@
 /* The TrackJet plugin is enabled */
 #define ENABLE_PLUGIN_TRACKJET /**/
+
+/* defined if demangling is enabled at configure time and is supported through
+   the GNU C++ ABI */
+/* #undef HAVE_DEMANGLING_SUPPORT */
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
@@ -88,5 +92,5 @@
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "FastJet 3.1.0-beta.1"
+#define PACKAGE_STRING "FastJet 3.1.0"
 
 /* Define to the one symbol short name of this package. */
@@ -94,5 +98,5 @@
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "3.1.0-beta.1"
+#define PACKAGE_VERSION "3.1.0"
 
 /* Define to 1 if you have the ANSI C header files. */
@@ -100,5 +104,5 @@
 
 /* Version number of package */
-#define VERSION "3.1.0-beta.1"
+#define VERSION "3.1.0"
 
 /* Major version of this package */
@@ -109,9 +113,9 @@
 
 /* Version of the package under the form XYYZZ (instead of X.Y.Z) */
-#define VERSION_NUMBER 30103
+#define VERSION_NUMBER 30100
 
 /* Patch version of this package */
-#define VERSION_PATCHLEVEL 3
+#define VERSION_PATCHLEVEL 0
 
 /* Pre-release version of this package */
-#define VERSION_PRERELEASE ".1.0-beta.1"
+/* #undef VERSION_PRERELEASE */
Index: external/fastjet/config_win.h
===================================================================
--- external/fastjet/config_win.h	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/config_win.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,10 +1,9 @@
-#define FASTJET_PACKAGE_STRING  "FastJet 3.1.0-beta.1"
-#define FASTJET_PACKAGE_VERSION  "3.1.0-beta.1"
-#define FASTJET_VERSION  "3.1.0-beta.1"
+#define FASTJET_PACKAGE_STRING  "FastJet 3.1.0"
+#define FASTJET_PACKAGE_VERSION  "3.1.0"
+#define FASTJET_VERSION  "3.1.0"
 #define FASTJET_VERSION_MAJOR       3
 #define FASTJET_VERSION_MINOR       1
-#define FASTJET_VERSION_PATCHLEVEL  3
-#define FASTJET_VERSION_PRERELEASE  ".1.0-beta.1"
-#define FASTJET_VERSION_NUMBER      30103
+#define FASTJET_VERSION_PATCHLEVEL  0
+#define FASTJET_VERSION_NUMBER      30100
 
 /* The ATLASCone plugin is disabled by default*/
Index: external/fastjet/plugins/D0RunICone/fastjet/D0RunIConePlugin.hh
===================================================================
--- external/fastjet/plugins/D0RunICone/fastjet/D0RunIConePlugin.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/D0RunICone/fastjet/D0RunIConePlugin.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -32,4 +32,5 @@
 //FJENDHEADER
 
+#include "fastjet/internal/base.hh" // namespace macros (include explicitly to help Doxygen)
 #include "D0RunIBaseConePlugin.hh"
 
Index: external/fastjet/plugins/D0RunICone/fastjet/D0RunIpre96ConePlugin.hh
===================================================================
--- external/fastjet/plugins/D0RunICone/fastjet/D0RunIpre96ConePlugin.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/D0RunICone/fastjet/D0RunIpre96ConePlugin.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -32,4 +32,5 @@
 //FJENDHEADER
 
+#include "fastjet/internal/base.hh" // namespace macros (include explicitly to help Doxygen)
 #include "D0RunIBaseConePlugin.hh"
 
Index: external/fastjet/plugins/SISCone/SISConePlugin.cc
===================================================================
--- external/fastjet/plugins/SISCone/SISConePlugin.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/SISConePlugin.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -21,4 +21,56 @@
                       four_vector.E);
 }
+
+//======================================================================
+// wrap-up around siscone's user-defined scales
+namespace siscone_plugin_internal{
+  /// @ingroup internal
+  /// \class SISConeUserScale
+  /// class that makes the transition between the internal SISCone
+  /// user-defined scale choice (using SISCone's Cjet) and
+  /// user-defined scale choices in the plugn above (using FastJet's
+  /// PseudoJets)
+  class SISConeUserScale  : public siscone::Csplit_merge::Cuser_scale_base{
+  public:
+    /// ctor takes the "fastjet-style" user-defined scale as well as a
+    /// reference to the current cluster sequence (to access the
+    /// particles if needed)
+    SISConeUserScale(const SISConePlugin::UserScaleBase *user_scale,
+		     const ClusterSequence &cs)
+      : _user_scale(user_scale), _cs(cs){}
+
+    /// returns the scale associated to a given jet
+    virtual double operator()(const siscone::Cjet &jet) const{
+      return _user_scale->result(_build_PJ_from_Cjet(jet));
+    }
+
+    /// returns true id the scasle associated to jet a is larger than
+    /// the scale associated to jet b
+    virtual bool is_larger(const siscone::Cjet &a, const siscone::Cjet &b) const{
+      return _user_scale->is_larger(_build_PJ_from_Cjet(a), _build_PJ_from_Cjet(b));
+    }
+
+  private:
+    /// constructs a PseudoJet from a siscone::Cjet
+    ///
+    /// Note that it is tempting to overload the PseudoJet ctor. This
+    /// would not work because down the line we need to access the
+    /// original PseudoJet through the ClusterSequence and therefore
+    /// the PseudoJet structure needs to be aware of the
+    /// ClusterSequence.
+    PseudoJet _build_PJ_from_Cjet(const siscone::Cjet &jet) const{
+      PseudoJet j(jet.v.px, jet.v.py, jet.v.pz, jet.v.E);
+      j.set_structure_shared_ptr(SharedPtr<PseudoJetStructureBase>(
+                                   new SISConePlugin::UserScaleBaseStructureType<siscone::Cjet>(jet,_cs)));      
+      return j;
+    }
+
+    const SISConePlugin::UserScaleBase *_user_scale;
+    const ClusterSequence & _cs;
+  };
+}
+
+// end of the internal material
+//======================================================================
 
 
@@ -45,10 +97,21 @@
   desc << "SISCone jet algorithm with " ;
   desc << "cone_radius = "       << cone_radius        () << ", ";
-  desc << "overlap_threshold = " << overlap_threshold  () << ", ";
+  if (_progressive_removal)
+    desc << "progressive-removal mode, ";
+  else  
+    desc << "overlap_threshold = " << overlap_threshold  () << ", ";
   desc << "n_pass_max = "        << n_pass_max         () << ", ";
   desc << "protojet_ptmin = "    << protojet_ptmin()      << ", ";
-  desc <<  sm_scale_string                                << ", ";
-  desc << "caching turned "      << (caching() ? on : off);
-  desc << ", SM stop scale = "     << _split_merge_stopping_scale;
+  if (_progressive_removal && _user_scale) {
+    desc << "using a user-defined scale for ordering of stable cones";
+    string user_scale_desc = _user_scale->description();
+    if (user_scale_desc != "") desc << " (" << user_scale_desc << ")";
+  } else {
+    desc <<  sm_scale_string;
+  }
+  if (!_progressive_removal){
+    desc << ", caching turned "      << (caching() ? on : off);
+    desc << ", SM stop scale = "     << _split_merge_stopping_scale;
+  }
 
   // add a note to the description if we use the pt-weighted splitting
@@ -85,5 +148,5 @@
   bool new_siscone = true; // by default we'll be running it
 
-  if (caching()) {
+  if (caching() && !_progressive_removal) {
 
     // Establish if we have a cached run with the same R, npass and
@@ -138,7 +201,19 @@
     // run the jet finding
     //cout << "plg sms: " << split_merge_scale() << endl;
-    siscone->compute_jets(siscone_momenta, cone_radius(), overlap_threshold(),
-			  n_pass_max(), protojet_or_ghost_ptmin(), 
-			  Esplit_merge_scale(split_merge_scale()));
+    if (_progressive_removal){
+      // handle the optional user-defined scale choice
+      SharedPtr<siscone_plugin_internal::SISConeUserScale> internal_scale;
+      if (_user_scale){
+	internal_scale.reset(new siscone_plugin_internal::SISConeUserScale(_user_scale, clust_seq));
+	siscone->set_user_scale(internal_scale.get());
+      }
+      siscone->compute_jets_progressive_removal(siscone_momenta, cone_radius(),
+						n_pass_max(), protojet_or_ghost_ptmin(), 
+						Esplit_merge_scale(split_merge_scale()));
+    } else {
+      siscone->compute_jets(siscone_momenta, cone_radius(), overlap_threshold(),
+			    n_pass_max(), protojet_or_ghost_ptmin(), 
+			    Esplit_merge_scale(split_merge_scale()));
+    }
   } else {
     // rerun the jet finding
@@ -155,4 +230,8 @@
   SISConeExtras * extras = new SISConeExtras(n);
 
+  // the ordering in which the inclusive jets are transfered here is
+  // deliberate and ensures that when a user asks for
+  // inclusive_jets(), they are provided in the order in which SISCone
+  // created them.
   for (int ijet = njet-1; ijet >= 0; ijet--) {
     const Cjet & jet = siscone->jets[ijet]; // shorthand
@@ -220,3 +299,53 @@
 }
 
+// //======================================================================
+// // material to handle user-defined scales
+// 
+// //--------------------------------------------------
+// // SISCone structure type
+// 
+// // the textual descripotion
+// std::string SISConePlugin::UserScaleBase::StructureType::description() const{
+//   return "PseudoJet wrapping a siscone::Cjet stable cone"; 
+// }
+// 
+// // retrieve the constituents
+// //
+// // if you simply need to iterate over the constituents, it will be
+// // faster to access them via constituent(i)
+// vector<PseudoJet> SISConePlugin::UserScaleBase::StructureType::constituents(const PseudoJet &) const{ 
+//   vector<PseudoJet> constits;
+//   constits.reserve(_jet.n);
+//   for (unsigned int i=0; i<(unsigned int)_jet.n;i++)
+//     constits.push_back(constituent(i));
+//   return constits;
+// }
+// 
+// // returns the number of constituents
+// unsigned int SISConePlugin::UserScaleBase::StructureType::size() const{
+//   return _jet.n;
+// }
+// 
+// // returns the index (in the original particle list) of the ith
+// // constituent
+// int SISConePlugin::UserScaleBase::StructureType::constituent_index(unsigned int i) const{ 
+//   return _jet.contents[i];
+// }
+// 
+// // returns the ith constituent (as a PseusoJet)
+// const PseudoJet & SISConePlugin::UserScaleBase::StructureType::constituent(unsigned int i) const{
+//   return _cs.jets()[_jet.contents[i]];
+// }
+// 
+// // returns the scalar pt of this stable cone
+// double SISConePlugin::UserScaleBase::StructureType::pt_tilde() const{
+//   return _jet.pt_tilde;
+// }
+// 
+// // returns the sm_var2 (signed ordering variable squared) for this stable cone
+// double SISConePlugin::UserScaleBase::StructureType::ordering_var2() const{
+//   return _jet.sm_var2;
+// }
+
+
 FASTJET_END_NAMESPACE      // defined in fastjet/internal/base.hh
Index: external/fastjet/plugins/SISCone/config.h
===================================================================
--- external/fastjet/plugins/SISCone/config.h	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/config.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -49,11 +49,14 @@
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "SISCone 2.0.6"
+#define PACKAGE_STRING "SISCone 3.0.0"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "siscone"
 
+/* Define to the home page for this package. */
+/* #undef PACKAGE_URL */
+
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "2.0.6"
+#define PACKAGE_VERSION "3.0.0"
 
 /* Define to 1 if you have the ANSI C header files. */
@@ -61,3 +64,3 @@
 
 /* Version number of package */
-#define VERSION "2.0.6"
+#define VERSION "3.0.0"
Index: external/fastjet/plugins/SISCone/fastjet/SISConeBasePlugin.hh
===================================================================
--- external/fastjet/plugins/SISCone/fastjet/SISConeBasePlugin.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/fastjet/SISConeBasePlugin.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -43,4 +43,5 @@
   SISConeBasePlugin (){
     _use_jet_def_recombiner = false;
+    set_progressive_removal(false);
   }
 
@@ -49,4 +50,25 @@
     *this = plugin;
   }
+
+  /// set whether to use SISCone with progressive removal instead of
+  /// the default split_merge step.
+  ///
+  /// If progressive removal is enabled, the following SISCone
+  /// variables are not used:
+  ///
+  /// - overlap_threshold
+  /// - caching
+  /// - split_merge_stopping_scale
+  ///
+  /// The split_merge_scale choice is reinterpreted as the ordering
+  /// variable for progressive removal. It is also possible for the
+  /// user to supply his/her own function for the scale that orders
+  /// progressive removal, with set_user_scale(...)
+  void set_progressive_removal(bool progressive_removal_in=true){
+    _progressive_removal = progressive_removal_in;
+  }
+
+  /// returns true if progressive_removal is enabled
+  bool progressive_removal() const{ return _progressive_removal;}
 
   /// the cone radius
@@ -105,4 +127,64 @@
   }
 
+  // user-defined scale for progressive removal
+  //------------------------------------------------------------
+
+  /// \class UserScaleBase
+  /// base class for user-defined ordering of stable cones (used for
+  /// prorgessive removal)
+  ///
+  /// derived classes have to implement the () operator that returns
+  /// the scale associated with a given jet.
+  /// 
+  /// It is also highly recommended to implement the is_larger()
+  /// method whenever possible, in order to avoid rounding issues
+  /// known to lead to possible infrared unsafeties.
+  ///
+  /// The jets that are passed to this class will carry the structure
+  /// of type SISConePlugin::StructureType which allows to retreive
+  /// easily the following information:
+  ///
+  ///   vector<PseudoJet> constituents = jet.constituents();
+  ///   unsigned int n_constituents = jet.structure_of<SISConePlugin::UserScaleBase>().size();
+  ///   int index = jet.structure_of<SISConePlugin::UserScaleBase>().constituent_index(index i);
+  ///   const PseudoJet & p = jet.structure_of<SISConePlugin::UserScaleBase>().constituent(index i);
+  ///   double scalar_pt = jet.structure_of<SISConePlugin::UserScaleBase>().pt_tilde();
+  ///
+  /// see SISConePlugin::StructureType below for further details
+  class UserScaleBase : public FunctionOfPseudoJet<double>{
+  public:
+    /// empty virtual dtor
+    virtual ~UserScaleBase(){}
+
+    /// returns the scale associated with a given jet
+    ///
+    /// "progressive removal" iteratively removes the stable cone with
+    /// the largest scale
+    virtual double result(const PseudoJet & jet) const = 0;
+
+    /// returns true when the scale associated with jet a is larger than
+    /// the scale associated with jet b
+    ///
+    /// By default this does a simple direct comparison but it can be
+    /// overloaded for higher precision [recommended if possible]
+    virtual bool is_larger(const PseudoJet & a, const PseudoJet & b) const;
+
+    class StructureType; // defined below
+  };
+
+  // template class derived from UserScaleBase::StryctureType that
+  // works for both SISCone jet classes
+  // implemented below 
+  template<class Tjet> 
+  class UserScaleBaseStructureType;
+
+  /// set a user-defined scale for stable-cone ordering in
+  /// progressive removal
+  void set_user_scale(const UserScaleBase *user_scale_in){ _user_scale = user_scale_in;}
+
+  /// returns the user-defined scale in use (0 if none)
+  const UserScaleBase * user_scale() const{ return _user_scale;}
+
+
   // the things that one MUST overload required by base class
   //---------------------------------------------------------
@@ -120,4 +202,5 @@
   double _split_merge_stopping_scale;
   bool   _use_jet_def_recombiner;
+  bool   _progressive_removal;
 
   mutable double _ghost_sep_scale;
@@ -126,4 +209,6 @@
   /// call the re-clustering itself 
   virtual void reset_stored_plugin() const =0;
+
+  const UserScaleBase * _user_scale;
 
 };
@@ -185,4 +270,110 @@
 inline SISConeBaseExtras::~SISConeBaseExtras(){}
 
+//----------------------------------------------------------------------
+// implementation of the structure type associated with the UserScaleBase class
+
+/// \class SISConeBasePlugin::UserScaleBase::StructureType
+/// the structure that allows to store the information contained
+/// into a siscone::Cjet (built internally in SISCone from a stable
+/// cone) into a PseudoJet
+class SISConeBasePlugin::UserScaleBase::StructureType : public PseudoJetStructureBase {
+public:
+  /// base ctor (constructed from a ClusterSequence tin order to have
+  /// access to the initial particles
+  StructureType(const ClusterSequence &cs)
+    : _cs(cs){}
+
+  /// empty virtual dtor 
+  virtual ~StructureType(){}
+  
+  //--------------------------------------------------
+  // members inherited from the base class
+  /// the textual descripotion
+  virtual std::string description() const{
+    return "PseudoJet wrapping a siscone jet from a stable cone"; 
+  }
+
+  /// this structure has constituents
+  virtual bool has_constituents() const {return true;}
+
+  /// retrieve the constituents 
+  ///
+  /// if you simply need to iterate over the constituents, it will be
+  /// faster to access them via constituent(i)
+  virtual std::vector<PseudoJet> constituents(const PseudoJet & /*reference*/) const{ 
+    std::vector<PseudoJet> constits;
+    constits.reserve(size());
+    for (unsigned int i=0; i<size();i++)
+      constits.push_back(constituent(i));
+    return constits;
+  }
+  
+  //--------------------------------------------------
+  // additional information relevant for this structure
+
+  /// returns the number of constituents
+  virtual unsigned int size() const = 0;
+
+  /// returns the index (in the original particle list) of the ith
+  /// constituent
+  virtual int constituent_index(unsigned int i) const = 0;
+
+  /// returns the ith constituent (as a PseusoJet)
+  const PseudoJet & constituent(unsigned int i) const{
+    return _cs.jets()[constituent_index(i)];
+  }
+
+  // /// returns the scalar pt of this stable cone
+  // virtual double pt_tilde() const = 0;
+
+  /// returns the sm_var2 (signed ordering variable squared) for this stable cone
+  virtual double ordering_var2() const = 0;
+
+protected:
+  const ClusterSequence &_cs; ///< a reference to the CS (for access to the particles)
+};
+
+
+///@ingroup internal
+/// template class derived from UserScaleBase::StryctureType that
+/// works for both SISCone jet classes
+/// implemented below 
+template<class Tjet>
+class SISConeBasePlugin::UserScaleBaseStructureType : public UserScaleBase::StructureType{
+public:
+  UserScaleBaseStructureType(const Tjet &jet, const ClusterSequence &cs)
+    : UserScaleBase::StructureType(cs), _jet(jet){}
+
+  /// empty virtual dtor 
+  virtual ~UserScaleBaseStructureType(){}
+
+  //--------------------------------------------------
+  // additional information relevant for this structure
+
+  /// returns the number of constituents
+  virtual unsigned int size() const{
+    return _jet.n;
+  }
+
+  /// returns the index (in the original particle list) of the ith
+  /// constituent
+  virtual int constituent_index(unsigned int i) const{
+    return _jet.contents[i];
+  }
+
+  // /// returns the scalar pt of this stable cone
+  // virtual double pt_tilde() const{
+  //   return _jet.pt_tilde;
+  // }
+
+  /// returns the sm_var2 (signed ordering variable squared) for this stable cone
+  virtual double ordering_var2() const{
+    return _jet.sm_var2;
+  }
+
+protected:
+  const Tjet &_jet; ///< a reference to the internal jet in SISCone
+};
+
 
 FASTJET_END_NAMESPACE        // defined in fastjet/internal/base.hh
Index: external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh
===================================================================
--- external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -7,4 +7,5 @@
 namespace siscone{
   class Csiscone;
+  class Cjet;
 }
 
@@ -74,11 +75,12 @@
   /// enum for the different split-merge scale choices;
   /// Note that order _must_ be the same as in siscone
-  enum SplitMergeScale {SM_pt,     ///< transverse momentum (E-scheme), IR unsafe
-                        SM_Et,     ///< transverse energy (E-scheme), not long. boost invariant
-                                   ///< original run-II choice [may not be implemented]
-                        SM_mt,     ///< transverse mass (E-scheme), IR safe except
-                                   ///< in decays of two identical narrow heavy particles
-                        SM_pttilde ///< pt-scheme pt = \sum_{i in jet} |p_{ti}|, should
-                                   ///< be IR safe in all cases
+  enum SplitMergeScale {
+    SM_pt,     ///< transverse momentum (E-scheme), IR unsafe
+    SM_Et,     ///< transverse energy (E-scheme), not long. boost invariant
+               ///< original run-II choice [may not be implemented]
+    SM_mt,     ///< transverse mass (E-scheme), IR safe except
+               ///< in decays of two identical narrow heavy particles
+    SM_pttilde ///< pt-scheme pt = \sum_{i in jet} |p_{ti}|, should
+               ///< be IR safe in all cases
   };
 
@@ -108,5 +110,6 @@
     _split_merge_stopping_scale = split_merge_stopping_scale_in;
     _ghost_sep_scale       = 0.0;
-    _use_pt_weighted_splitting = false;}
+    _use_pt_weighted_splitting = false;
+    _user_scale = 0;}
 
 
@@ -125,5 +128,6 @@
     _split_merge_stopping_scale = 0.0;
     _split_merge_scale     = split_merge_on_transverse_mass_in ? SM_mt : SM_pttilde;
-    _ghost_sep_scale       = 0.0;}
+    _ghost_sep_scale       = 0.0;
+    _user_scale = 0;}
   
   /// backwards compatible constructor for the SISCone Plugin class
@@ -141,5 +145,6 @@
     _split_merge_stopping_scale = 0.0;
     _ghost_sep_scale       = 0.0;
-    _use_pt_weighted_splitting = false;}
+    _use_pt_weighted_splitting = false;
+    _user_scale = 0;}
 
   /// minimum pt for a protojet to be considered in the split-merge step
@@ -191,4 +196,51 @@
 };
 
+
+/////\class SISConePlugin::UserScaleBase::StructureType
+///// the structure that allows to store the information contained
+///// into a siscone::Cjet (built internally in SISCone from a stable
+///// cone) into a PseudoJet
+//class SISConePlugin::UserScaleBase::StructureType : public PseudoJetStructureBase {
+//public:
+//  StructureType(const siscone::Cjet & jet, const ClusterSequence &cs)
+//    : _jet(jet), _cs(cs){}
+//
+//  //--------------------------------------------------
+//  // members inherited from the base class
+//  /// the textual descripotion
+//  virtual std::string description() const;
+//
+//  /// this structure has constituents
+//  virtual bool has_constituents() const {return true;}
+//
+//  /// retrieve the constituents 
+//  ///
+//  /// if you simply need to iterate over the constituents, it will be
+//  /// faster to access them via constituent(i)
+//  virtual std::vector<PseudoJet> constituents(const PseudoJet & /*reference*/) const;
+//
+//  //--------------------------------------------------
+//  // additional information relevant for this structure
+//
+//  /// returns the number of constituents
+//  unsigned int size() const;
+//
+//  /// returns the index (in the original particle list) of the ith
+//  /// constituent
+//  int constituent_index(unsigned int i) const;
+//
+//  /// returns the ith constituent (as a PseusoJet)
+//  const PseudoJet & constituent(unsigned int i) const;
+//
+//  /// returns the scalar pt of this stable cone
+//  double pt_tilde() const;
+//
+//  /// returns the sm_var2 (signed ordering variable squared) for this stable cone
+//  double ordering_var2() const;
+//
+//protected:
+//  const siscone::Cjet &_jet;  ///< a dreference to the internal jet in SISCone
+//  const ClusterSequence &_cs; ///< a reference to the CS (for access to the particles)
+//};
 
 //======================================================================
Index: external/fastjet/plugins/SISCone/siscone.cc
===================================================================
--- external/fastjet/plugins/SISCone/siscone.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/siscone.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -21,6 +21,6 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
 //                                                                           //
-// $Revision:: 341                                                          $//
-// $Date:: 2013-04-08 12:21:06 +0200 (Mon, 08 Apr 2013)                     $//
+// $Revision:: 371                                                          $//
+// $Date:: 2014-09-09 10:05:32 +0200 (Tue, 09 Sep 2014)                     $//
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -29,5 +29,5 @@
 //#else
 //#define PACKAGE_NAME "SISCone"
-//#define VERSION "2.0.6"
+//#define VERSION "3.0.0"
 //#warning "No config.h file available, using preset values"
 //#endif
@@ -87,31 +87,5 @@
 			   int _n_pass_max, double _ptmin,
 			   Esplit_merge_scale _split_merge_scale){
-  // initialise random number generator
-  if (!init_done){
-    // initialise random number generator
-    ranlux_init();
-
-    // do not do this again
-    init_done=true;
-
-    // print the banner
-    if (_banner_ostr != 0){
-      (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
-      (*_banner_ostr) << "#                    SISCone   version " << setw(28) << left << siscone_version() << "o" << endl;
-      (*_banner_ostr) << "#              http://projects.hepforge.org/siscone                o" << endl;
-      (*_banner_ostr) << "#                                                                  o" << endl;
-      (*_banner_ostr) << "# This is SISCone: the Seedless Infrared Safe Cone Jet Algorithm   o" << endl;
-      (*_banner_ostr) << "# SISCone was written by Gavin Salam and Gregory Soyez             o" << endl;
-      (*_banner_ostr) << "# It is released under the terms of the GNU General Public License o" << endl;
-      (*_banner_ostr) << "#                                                                  o" << endl;
-      (*_banner_ostr) << "# A description of the algorithm is available in the publication   o" << endl;
-      (*_banner_ostr) << "# JHEP 05 (2007) 086 [arXiv:0704.0292 (hep-ph)].                   o" << endl;
-      (*_banner_ostr) << "# Please cite it if you use SISCone.                               o" << endl;
-      (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
-      (*_banner_ostr) << endl;
-
-      _banner_ostr->flush();
-    }
-  }
+  _initialise_if_needed();
 
   // run some general safety tests (NB: f will be checked in split-merge)
@@ -174,4 +148,66 @@
 }
 
+
+/*
+ * compute the jets from a given particle set doing multiple passes
+ * such pass N looks for jets among all particles not put into jets
+ * during previous passes.
+ *  - _particles   list of particles
+ *  - _radius      cone radius
+ *  - _n_pass_max  maximum number of runs
+ *  - _ptmin       minimum pT of the protojets
+ *  - _ordering_scale    the ordering scale to decide which stable
+ *                       cone is removed
+ * return the number of jets found.
+ **********************************************************************/
+int Csiscone::compute_jets_progressive_removal(vector<Cmomentum> &_particles, double _radius, 
+					       int _n_pass_max, double _ptmin,
+					       Esplit_merge_scale _ordering_scale){
+  _initialise_if_needed();
+
+  // run some general safety tests (NB: f will be checked in split-merge)
+  if (_radius <= 0.0 || _radius >= 0.5*M_PI) {
+    ostringstream message;
+    message << "Illegal value for cone radius, R = " << _radius 
+            << " (legal values are 0<R<pi/2)";
+    throw Csiscone_error(message.str());
+  }
+
+  ptcomparison.split_merge_scale = _ordering_scale;
+  partial_clear(); // make sure some things are initialised properly
+
+  // init the split_merge algorithm with the initial list of particles
+  // this initialises particle list p_left of remaining particles to deal with
+  //
+  // this stores the "processed" particles in p_uncol_hard
+  init_particles(_particles);
+  jets.clear();
+
+  bool unclustered_left;
+  rerun_allowed = false;
+  protocones_list.clear();
+
+  do{
+    //cout << n_left << " particle left" << endl; 
+
+    // initialise stable_cone finder
+    // here we use the list of remaining particles
+    // AFTER COLLINEAR CLUSTERING !!!!!!
+    Cstable_cones::init(p_uncol_hard);
+
+    // get stable cones (stored in 'protocones')
+    unclustered_left = get_stable_cones(_radius);
+
+    // add the hardest stable cone to the list of jets
+    if (add_hardest_protocone_to_jets(&protocones, R2, _ptmin)) break;
+  
+    _n_pass_max--;
+  } while ((unclustered_left) && (n_left>0) && (_n_pass_max!=0));
+
+  // split & merge
+  return jets.size();
+}
+
+
 /*
  * recompute the jets with a different overlap parameter.
@@ -205,4 +241,34 @@
 }  
 
+// ensure things are initialised
+void Csiscone::_initialise_if_needed(){
+  // initialise random number generator
+  if (init_done) return;
+
+  // initialise random number generator
+  ranlux_init();
+
+  // do not do this again
+  init_done=true;
+
+  // print the banner
+  if (_banner_ostr != 0){
+    (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
+    (*_banner_ostr) << "#                    SISCone   version " << setw(28) << left << siscone_version() << "o" << endl;
+    (*_banner_ostr) << "#              http://projects.hepforge.org/siscone                o" << endl;
+    (*_banner_ostr) << "#                                                                  o" << endl;
+    (*_banner_ostr) << "# This is SISCone: the Seedless Infrared Safe Cone Jet Algorithm   o" << endl;
+    (*_banner_ostr) << "# SISCone was written by Gavin Salam and Gregory Soyez             o" << endl;
+    (*_banner_ostr) << "# It is released under the terms of the GNU General Public License o" << endl;
+    (*_banner_ostr) << "#                                                                  o" << endl;
+    (*_banner_ostr) << "# A description of the algorithm is available in the publication   o" << endl;
+    (*_banner_ostr) << "# JHEP 05 (2007) 086 [arXiv:0704.0292 (hep-ph)].                   o" << endl;
+    (*_banner_ostr) << "# Please cite it if you use SISCone.                               o" << endl;
+    (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
+    (*_banner_ostr) << endl;
+
+    _banner_ostr->flush();
+  }
+}
 
 // finally, a bunch of functions to access to 
Index: external/fastjet/plugins/SISCone/siscone.h
===================================================================
--- external/fastjet/plugins/SISCone/siscone.h	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/siscone.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -22,6 +22,6 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
 //                                                                           //
-// $Revision:: 325                                                          $//
-// $Date:: 2011-11-25 12:41:17 +0100 (Fri, 25 Nov 2011)                     $//
+// $Revision:: 369                                                          $//
+// $Date:: 2014-09-04 16:57:55 +0200 (Thu, 04 Sep 2014)                     $//
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -79,4 +79,25 @@
 
   /**
+   * compute the jets from a given particle set.
+   * We are doing multiple passes such pass n_pass looks for jets among 
+   * all particles not put into jets during previous passes.
+   * By default the number of passes is infinite (0). 
+   * \param _particles   list of particles
+   * \param _radius      cone radius
+   * \param _n_pass_max  maximum number of passes (0=full search)
+   * \param _ptmin       minimum pT of the protojets
+   * \param _ordering_scale    the ordering scale to decide which stable
+   *                           cone is removed
+   *
+   * Note that the Csplit_merge::SM_var2_hardest_cut_off cut is not
+   * used in the progressive removal variant.
+   * 
+   * \return the number of jets found.
+   */
+  int compute_jets_progressive_removal(std::vector<Cmomentum> &_particles, double _radius, 
+				       int _n_pass_max=0, double _ptmin=0.0,
+				       Esplit_merge_scale _ordering_scale=SM_pttilde);
+
+  /**
    * recompute the jets with a different overlap parameter.
    * we use the same particles and R as in the preceeding call.
@@ -93,5 +114,5 @@
 		     Esplit_merge_scale _split_merge_scale=SM_pttilde);
 
-  /// list of protocones found pass-by-pass
+  /// list of protocones found pass-by-pass (not filled by compute_jets_progressive_removal)
   std::vector<std::vector<Cmomentum> > protocones_list;
 
@@ -125,4 +146,8 @@
   bool rerun_allowed;         ///< is recompute_jets allowed ?
   static std::ostream * _banner_ostr; ///< stream to use for banners
+
+  /// ensure things are initialised
+  void _initialise_if_needed();
+
 };
 
Index: external/fastjet/plugins/SISCone/split_merge.cc
===================================================================
--- external/fastjet/plugins/SISCone/split_merge.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/split_merge.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -21,6 +21,6 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
 //                                                                           //
-// $Revision:: 322                                                          $//
-// $Date:: 2011-11-15 10:12:36 +0100 (Tue, 15 Nov 2011)                     $//
+// $Revision:: 370                                                          $//
+// $Date:: 2014-09-04 17:03:15 +0200 (Thu, 04 Sep 2014)                     $//
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -28,5 +28,4 @@
 #include "siscone_error.h"
 #include "momentum.h"
-#include <math.h>
 #include <limits>   // for max
 #include <iostream>
@@ -34,4 +33,5 @@
 #include <sstream>
 #include <cassert>
+#include <cmath>
 
 namespace siscone{
@@ -229,4 +229,5 @@
 #endif
 #endif
+  _user_scale = NULL;
   indices = NULL;
 
@@ -237,5 +238,5 @@
 
   // no hardest cut (col-unsafe)
-  SM_var2_hardest_cut_off = -1.0;
+  SM_var2_hardest_cut_off = -numeric_limits<double>::max();
 
   // no pt cutoff for the particles to put in p_uncol_hard
@@ -555,4 +556,150 @@
 }
 
+
+/*
+ * remove the hardest protocone and declare it a a jet 
+ *  - protocones  list of protocones (initial jet candidates)
+ *  - R2          cone radius (squared)
+ *  - ptmin       minimal pT allowed for jets
+ * return 0 on success, 1 on error
+ *
+ * The list of remaining particles (and the uncollinear-hard ones)
+ * is updated.
+ */
+int Csplit_merge::add_hardest_protocone_to_jets(std::vector<Cmomentum> *protocones, double R2, double ptmin){
+
+  int i;
+  Cmomentum *c;
+  Cmomentum *v;
+  double eta, phi;
+  double dx, dy;
+  double R;
+  Cjet jet, jet_candidate;
+  bool found_jet = false;
+
+  if (protocones->size()==0)
+    return 1;
+
+  pt_min2 = ptmin*ptmin;
+  R = sqrt(R2);
+
+  // browse protocones
+  // for each of them, build the list of particles in them
+  for (vector<Cmomentum>::iterator p_it = protocones->begin();p_it != protocones->end();p_it++){
+    // initialise variables
+    c = &(*p_it);
+
+    // note: cones have been tested => their (eta,phi) coordinates are computed
+    eta = c->eta;
+    phi = c->phi;
+
+    // NOTE: this is common to this method and add_protocones, so it
+    // could be moved into a 'build_jet_from_protocone' method
+    //
+    // browse particles to create cone contents
+    jet_candidate.v = Cmomentum();
+    jet_candidate.pt_tilde=0;
+    jet_candidate.contents.clear();
+    for (i=0;i<n_left;i++){
+      v = &(p_remain[i]);
+      // for security, avoid including particles with infinite rapidity)
+      // NO NEEDED ANYMORE SINCE REMOVED FROM p_remain FROM THE BEGINNING
+      //if (fabs(v->pz)!=v->E){
+      dx = eta - v->eta;
+      dy = fabs(phi - v->phi);
+      if (dy>M_PI) 
+	dy -= twopi;
+      if (dx*dx+dy*dy<R2){
+	jet_candidate.contents.push_back(v->parent_index);
+	jet_candidate.v+= *v;
+	jet_candidate.pt_tilde+= pt[v->parent_index];
+	v->index=0;
+      }
+    }
+    jet_candidate.n=jet_candidate.contents.size();
+
+    // set the momentum in protocones 
+    // (it was only known through eta and phi up to now)
+    *c = jet_candidate.v;
+    c->eta = eta; // restore exact original coords
+    c->phi = phi; // to avoid rounding error inconsistencies
+
+    // set the jet range
+    jet_candidate.range=Ceta_phi_range(eta,phi,R);
+
+    // check that the protojet has large enough pt
+    if (jet_candidate.v.perp2()<pt_min2)
+      continue;
+
+    // assign the split-merge (or progressive-removal) squared scale variable
+    if (_user_scale) {
+      // sm_var2 is the signed square of the user scale returned
+      // for the jet candidate
+      jet_candidate.sm_var2 = (*_user_scale)(jet_candidate);
+      jet_candidate.sm_var2 *= abs(jet_candidate.sm_var2);
+    } else {
+      jet_candidate.sm_var2 = get_sm_var2(jet_candidate.v, jet_candidate.pt_tilde);
+    }
+
+    // now check if it is possibly the hardest
+    if ((! found_jet) ||
+	(_user_scale ? _user_scale->is_larger(jet_candidate, jet)
+	             : ptcomparison(jet_candidate, jet))){
+      jet = jet_candidate;
+      found_jet = true;
+    }
+  }
+
+  // make sure at least one of the jets has passed the selection
+  if (!found_jet) return 1;  
+  
+  // add the jet to the list of jets
+  jets.push_back(jet);
+  jets[jets.size()-1].v.build_etaphi();
+
+#ifdef DEBUG_SPLIT_MERGE
+  cout << "PR-Jet " << jets.size() << " [size " << next_jet.contents.size() << "]:";
+#endif
+    
+  // update the list of what particles are left
+  int p_remain_index = 0;
+  int contents_index = 0;
+  //sort(next_jet.contents.begin(),next_jet.contents.end());
+  for (int index=0;index<n_left;index++){
+    if ((contents_index<(int) jet.contents.size()) &&
+	(p_remain[index].parent_index == jet.contents[contents_index])){
+      // this particle belongs to the newly found jet
+      // set pass in initial list
+      particles[p_remain[index].parent_index].index = n_pass;
+#ifdef DEBUG_SPLIT_MERGE
+      cout << " " << jet.contents[contents_index];
+#endif
+      contents_index++;
+    } else {
+      // this particle still has to be clustered
+      p_remain[p_remain_index] = p_remain[index];
+      p_remain[p_remain_index].parent_index = p_remain[index].parent_index;
+      p_remain[p_remain_index].index=1;
+      p_remain_index++;
+    }
+  }
+  p_remain.resize(n_left-jet.contents.size());
+  n_left = p_remain.size();
+  jets[jets.size()-1].pass = particles[jet.contents[0]].index;
+
+  // increase the pass index
+  n_pass++;
+
+#ifdef DEBUG_SPLIT_MERGE
+  cout << endl;
+#endif
+
+  // male sure the list of uncol_hard particles (used for the next
+  // stable cone finding) is updated [could probably be more
+  // efficient]
+  merge_collinear_and_remove_soft();
+  
+  return 0;
+}
 
 /*
Index: external/fastjet/plugins/SISCone/split_merge.h
===================================================================
--- external/fastjet/plugins/SISCone/split_merge.h	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/plugins/SISCone/split_merge.h	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -22,6 +22,6 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
 //                                                                           //
-// $Revision:: 268                                                          $//
-// $Date:: 2009-03-12 21:24:16 +0100 (Thu, 12 Mar 2009)                     $//
+// $Revision:: 367                                                          $//
+// $Date:: 2014-09-04 15:57:37 +0200 (Thu, 04 Sep 2014)                     $//
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -141,5 +141,5 @@
   /// the split-merge process i.e. the variable we use for 
   ///  1. ordering jet candidates;
-  ///  2. computing te overlap fraction of two candidates.
+  ///  2. computing the overlap fraction of two candidates.
   /// The default value uses pttile (p-scheme pt). Other alternatives are
   /// pt, mt=sqrt(pt^2+m^2)=sqrt(E^2-pz^2) or Et. 
@@ -151,5 +151,5 @@
   ///   the default value i.e.  to use pt only for the purpose of
   ///   investigating the IR issue
-  /// - using Et is safe but do not respect boost invariance
+  /// - using Et is safe but does not respect boost invariance
   /// - using mt solves the IR unsafety issues with the pt variable
   ///   for QCD jets but the IR unsafety remains for nack-to-back 
@@ -234,4 +234,50 @@
   int full_clear();
 
+  ///////////////////////////////////////
+  // user-defined stable-cone ordering //
+  ///////////////////////////////////////
+
+  /// \class Cuser_scale_base
+  /// base class for user-defined ordering of stable cones
+  ///
+  /// derived classes have to implement the () operator that returns
+  /// the scale associated with a given jet.
+  class Cuser_scale_base{
+  public:
+    /// empty virtual dtor
+    virtual ~Cuser_scale_base(){}
+
+    /// the scale associated with a given jet
+    ///
+    /// "progressive removal" iteratively removes the stable cone with
+    /// the largest scale
+    virtual double operator()(const Cjet & jet) const = 0;
+
+    /// returns true when the scale associated with jet a is larger than
+    /// the scale associated with jet b
+    ///
+    /// By default this does a simple direct comparison but it can be
+    /// overloaded for higher precision [recommended if possible]
+    ///
+    /// This function assumes that a.sm_var2 and b.sm_var2 have been
+    /// correctly initialised with the signed squared output of
+    /// operator(), as is by default the case when is_larger is called
+    /// from within siscone.
+    virtual bool is_larger(const Cjet & a, const Cjet & b) const{
+      return (a.sm_var2 > b.sm_var2);
+    }
+  };
+
+  /// associate a user-defined scale to order the stable cones
+  ///
+  /// Note that this is only used in "progressive-removal mode",
+  /// e.g. in add_hardest_protocone_to_jets().
+  void set_user_scale(const Cuser_scale_base * user_scale_in){
+    _user_scale = user_scale_in;
+  }
+
+  /// return the user-defined scale (NULL if none)
+  const Cuser_scale_base * user_scale() const { return _user_scale; }
+
 
   /////////////////////////////////
@@ -256,4 +302,16 @@
    */
   int add_protocones(std::vector<Cmomentum> *protocones, double R2, double ptmin=0.0);
+
+  /**
+   * remove the hardest protocone and declare it a jet 
+   * \param protocones  list of protocones (initial jet candidates)
+   * \param R2          cone radius (squared)
+   * \param ptmin       minimal pT allowed for jets
+   * \return 0 on success, 1 on error
+   *
+   * The list of remaining particles (and the uncollinear-hard ones)
+   * is updated.
+   */
+  int add_hardest_protocone_to_jets(std::vector<Cmomentum> *protocones, double R2, double ptmin=0.0);
 
   /**
@@ -314,14 +372,19 @@
   Csplit_merge_ptcomparison ptcomparison;
 
-  /// stop split--merge when the SM_var of the hardest protojet 
-  /// is below this cut-off. 
+  /// stop split--merge or progressive-removal when the squared SM_var
+  /// of the hardest protojet is below this cut-off. Note that this is
+  /// a signed square (ie SM_var*|SM_var|) to be able to handle
+  /// negative values.
+  ///
+  /// Note that the cut-off is set on the variable squared.
+  double SM_var2_hardest_cut_off;
+
+  /// pt cutoff for the particles to put in p_uncol_hard 
+  /// this is meant to allow removing soft particles in the
+  /// stable-cone search.
+  ///
   /// This is not collinear-safe so you should not use this
   /// variable unless you really know what you are doing
   /// Note that the cut-off is set on the variable squared.
-  double SM_var2_hardest_cut_off;
-
-  /// pt cutoff for the particles to put in p_uncol_hard 
-  /// this is meant to allow removing soft particles in the
-  /// stable-cone search.
   double stable_cone_soft_pt2_cutoff;
 
@@ -390,4 +453,8 @@
   bool use_pt_weighted_splitting;
 
+  /// use a user-defined scale to order the stable cones and jet
+  /// candidates
+  const Cuser_scale_base *_user_scale;
+
 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES
   /// checkxor for the candidates (to avoid having twice the same contents)
Index: external/fastjet/tools/Recluster.hh
===================================================================
--- external/fastjet/tools/Recluster.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/tools/Recluster.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -2,5 +2,5 @@
 #define __FASTJET_TOOLS_RECLUSTER_HH__
 
-// $Id: Recluster.hh 3632 2014-08-15 10:42:53Z salam $
+// $Id: Recluster.hh 3714 2014-09-30 09:47:31Z soyez $
 //
 // Copyright (c) 2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -38,4 +38,5 @@
 
 //----------------------------------------------------------------------
+/// @ingroup tools_generic
 /// \class Recluster
 /// Recluster a jet's constituents with a new jet definition.
Index: external/fastjet/tools/Subtractor.cc
===================================================================
--- external/fastjet/tools/Subtractor.cc	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/tools/Subtractor.cc	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: Subtractor.cc 3594 2014-08-12 15:25:11Z soyez $
+// $Id: Subtractor.cc 3670 2014-09-08 14:17:59Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -43,10 +43,21 @@
 // ctor
 Subtractor::Subtractor(double rho) : _bge(0), _rho(rho) {
-  assert(_rho>0.0);
+  if (_rho<0.0) throw Error("Subtractor(rho) was passed a negative rho value; rho should be >= 0");
   set_defaults();
 }
 
 //----------------------------------------------------------------------
+// ctor
+Subtractor::Subtractor(double rho, double rho_m) : _bge(0), _rho(rho) {
+  if (_rho<0.0) throw Error("Subtractor(rho, rho_m) was passed a negative rho value; rho should be >= 0");
+  if (rho_m<0.0) throw Error("Subtractor(rho, rho_m) was passed a negative rho_m value; rho_m should be >= 0");
+  set_defaults();
+  _rho_m = rho_m;
+  set_use_rho_m(true);
+}
+
+//----------------------------------------------------------------------
 void Subtractor::set_defaults(){
+  _rho_m = _invalid_rho;
   _use_rho_m = false; // likely to change in future releases!!
   _safe_mass = false; // likely to change in future releases!!
@@ -60,5 +71,5 @@
 PseudoJet Subtractor::result(const PseudoJet & jet) const {
   if (!jet.has_area()){
-    throw Error("Trying to subtract a jet without area support");
+    throw Error("Subtractor::result(...): Trying to subtract a jet without area support");
   }
 
@@ -152,4 +163,5 @@
     ostringstream ostr;
     ostr << "Subtractor that uses a fixed value of rho = " << _rho;
+    if (use_rho_m()) ostr << " and rho_m = " << _rho_m;
     return ostr.str();
   } else {
@@ -169,5 +181,5 @@
     rho = _rho;
   } else {
-    throw Error("default Subtractor does not have any information about the background, which is needed to perform the subtraction");
+    throw Error("Subtractor::_amount_to_subtract(...): default Subtractor does not have any information about the background, needed to perform the subtraction");
   }
 
@@ -178,11 +190,20 @@
 
   // add an optional contribution from the unknown particles masses
-  if (_use_rho_m){
-    assert(_bge != 0); // test done in "set_use_rho_m()"
-    to_subtract += _bge->rho_m(jet) * PseudoJet(0.0, 0.0, area.pz(), area.E());
+  if (_use_rho_m) {
+    double rho_m;
+    
+    if (_bge != 0) {
+      if (!_bge->has_rho_m()) throw Error("Subtractor::_amount_to_subtract(...): requested subtraction with rho_m from a background estimator, but the estimator does not have rho_m support");
+      rho_m = _bge->rho_m(jet);
+    } else if (_rho_m != _invalid_rho) {
+      rho_m = _rho_m;
+    } else {
+      throw Error("Subtractor::_amount_to_subtract(...): default Subtractor does not have any information about the background rho_m, needed to perform the rho_m subtraction");
+    }
+    to_subtract += rho_m * PseudoJet(0.0, 0.0, area.pz(), area.E());
   } else if (_bge && 
              _bge->has_rho_m() && 
              _bge->rho_m(jet) > rho_m_warning_threshold * rho) {
-    _unused_rho_m_warning.warn("Background estimator indicates non-zero rho_m, but use_rho_m()==false in subtractor; consider calling set_use_rho_m(true) to include the rho_m information");
+    _unused_rho_m_warning.warn("Subtractor::_amount_to_subtract(...): Background estimator indicates non-zero rho_m, but use_rho_m()==false in subtractor; consider calling set_use_rho_m(true) to include the rho_m information");
   }
 
Index: external/fastjet/tools/Subtractor.hh
===================================================================
--- external/fastjet/tools/Subtractor.hh	(revision f14bd6a232a0c5f940f327c1f36da027f253ff56)
+++ external/fastjet/tools/Subtractor.hh	(revision 273e6686a07d03a86d9d25838b441c09754bdc34)
@@ -1,4 +1,4 @@
 //FJSTARTHEADER
-// $Id: Subtractor.hh 3584 2014-08-12 12:40:10Z soyez $
+// $Id: Subtractor.hh 3670 2014-09-08 14:17:59Z soyez $
 //
 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
@@ -32,4 +32,5 @@
 #define __FASTJET_TOOLS_SUBTRACTOR_HH__
 
+#include "fastjet/internal/base.hh"     // namespace macros (include explicitly to help Doxygen)
 #include "fastjet/tools/Transformer.hh" // to derive Subtractor from Transformer
 #include "fastjet/tools/BackgroundEstimatorBase.hh" // used as a ctor argument
@@ -69,4 +70,8 @@
   Subtractor(double rho);
 
+  /// define a subtractor that uses a fixed value of rho and rho_m;
+  /// both must be >= 0;
+  Subtractor(double rho, double rho_m);
+
   /// default constructor
   Subtractor() : _bge(0), _rho(_invalid_rho) { set_defaults(); }
@@ -96,6 +101,6 @@
   /// in a future release of FastJet
   void set_use_rho_m(bool use_rho_m_in = true){
-    if (_bge == 0) {
-      throw Error("Subtractor: rho_m support works only for Subtractors constructed with background estimator");
+    if (_bge == 0  && _rho_m < 0) {
+      throw Error("Subtractor: rho_m support works only for Subtractors constructed with a background estimator or an explicit rho_m value");
     }
     _use_rho_m=use_rho_m_in;
@@ -176,6 +181,6 @@
   /// if has to be mutable in case its underlying selector takes a reference jet
   mutable BackgroundEstimatorBase * _bge;
-  /// the fixed value of rho to use if the user has selected that option
-  double _rho;
+  /// the fixed value of rho and/or rho_m to use if the user has selected that option
+  double _rho, _rho_m;
 
   // configuration parameters/flags
