Skip to content

Commit

Permalink
Merge pull request #10 from matplo/nsubjettiness
Browse files Browse the repository at this point in the history
Nsubjettiness
  • Loading branch information
jdmulligan authored Mar 5, 2021
2 parents 687cdc2 + dd2c74f commit f8cf75c
Show file tree
Hide file tree
Showing 13 changed files with 1,025 additions and 0 deletions.
11 changes: 11 additions & 0 deletions cpptools/src/fjcontrib/buildtools/get_fj_contrib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ if [ -d ${srcdir} ]; then
[ ! -e fjcontrib-${fjcontrib_version}.tar.gz ] && wget http://fastjet.hepforge.org/contrib/downloads/fjcontrib-${fjcontrib_version}.tar.gz
cd -
if [ -e ${wdir}/fjcontrib-${fjcontrib_version}.tar.gz ]; then
# RecursiveTools
if [ ! -d ${srcdir}/fjcontrib-${fjcontrib_version}/RecursiveTools ]; then
cd ${srcdir}
tar zxvf ${wdir}/fjcontrib-${fjcontrib_version}.tar.gz fjcontrib-${fjcontrib_version}/RecursiveTools
Expand All @@ -25,6 +26,7 @@ if [ -d ${srcdir} ]; then
cp -v ${srcdir}/custom/Util.* ${srcdir}/fjcontrib-${fjcontrib_version}/RecursiveTools
fi

# LundPlane
if [ ! -d ${srcdir}/fjcontrib-${fjcontrib_version}/LundPlane ]; then
cd ${srcdir}
tar zxvf ${wdir}/fjcontrib-${fjcontrib_version}.tar.gz fjcontrib-${fjcontrib_version}/LundPlane
Expand All @@ -38,12 +40,21 @@ if [ -d ${srcdir} ]; then
# cp -v ${srcdir}/custom/GroomerShopUI.* ${srcdir}/fjcontrib-${fjcontrib_version}/LundPlane
fi

# ConstituentSubtractor
if [ ! -d ${srcdir}/fjcontrib-${fjcontrib_version}/ConstituentSubtractor ]; then
cd ${srcdir}
tar zxvf ${wdir}/fjcontrib-${fjcontrib_version}.tar.gz fjcontrib-${fjcontrib_version}/ConstituentSubtractor
rm fjcontrib-${fjcontrib_version}/ConstituentSubtractor/example_*.cc
fi

# Nsubjettiness
if [ ! -d ${srcdir}/fjcontrib-${fjcontrib_version}/Nsubjettiness ]; then
cd ${srcdir}
tar zxvf ${wdir}/fjcontrib-${fjcontrib_version}.tar.gz fjcontrib-${fjcontrib_version}/Nsubjettiness
rm fjcontrib-${fjcontrib_version}/Nsubjettiness/example_*.cc
patch fjcontrib-${fjcontrib_version}/Nsubjettiness/MeasureDefinition.hh -i ${srcdir}/patches/MeasureDefinition.patch
patch fjcontrib-${fjcontrib_version}/Nsubjettiness/AxesDefinition.hh -i ${srcdir}/patches/AxesDefinition.patch
fi
fi
fi
fi
314 changes: 314 additions & 0 deletions cpptools/src/fjcontrib/interface/Nsubjettiness/AxesDefinition_i.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,314 @@
#include "MeasureDefinition.hh"
#include "ExtraRecombiners.hh"

#include "fastjet/PseudoJet.hh"
#include <fastjet/LimitedWarning.hh>

#include <iomanip>
#include <cmath>
#include <vector>
#include <list>

class AxesDefinition {
public:
virtual std::vector<fastjet::PseudoJet> get_starting_axes(int n_jets,
const std::vector<fastjet::PseudoJet>& inputs,
const MeasureDefinition * measure);
virtual std::string short_description();
virtual std::string description();
virtual AxesDefinition* create();

std::vector<fastjet::PseudoJet> get_refined_axes(int n_jets,
const std::vector<fastjet::PseudoJet>& inputs,
const std::vector<fastjet::PseudoJet>& seedAxes,
const MeasureDefinition * measure = NULL) const;
std::vector<fastjet::PseudoJet> get_axes(int n_jets,
const std::vector<fastjet::PseudoJet>& inputs,
const MeasureDefinition * measure = NULL) const;
inline std::vector<fastjet::PseudoJet> operator() (int n_jets,
const std::vector<fastjet::PseudoJet>& inputs,
const MeasureDefinition * measure = NULL) const;

enum AxesRefiningEnum {
UNDEFINED_REFINE = -1, // added to create a default value
NO_REFINING = 0,
ONE_PASS = 1,
MULTI_PASS = 100,
};

int nPass() const;
bool givesRandomizedResults() const;
bool needsManualAxes() const;
void setNPass(int nPass,
int nAttempts = 1000,
double accuracy = 0.0001,
double noise_range = 1.0 // only needed for MultiPass minimization
);
virtual ~AxesDefinition();
};

class ExclusiveJetAxes : public AxesDefinition {
public:
ExclusiveJetAxes(fastjet::JetDefinition def);
virtual std::vector<fastjet::PseudoJet> get_starting_axes(int n_jets,
const std::vector <fastjet::PseudoJet> & inputs,
const MeasureDefinition * ) const;
virtual std::string short_description() const;
virtual std::string description() const;
virtual ExclusiveJetAxes* create() const;
};

class ExclusiveCombinatorialJetAxes : public AxesDefinition {
public:
ExclusiveCombinatorialJetAxes(fastjet::JetDefinition def, int nExtra = 0);
virtual std::vector<fastjet::PseudoJet> get_starting_axes(int n_jets,
const std::vector<fastjet::PseudoJet> & inputs,
const MeasureDefinition *measure) const;
virtual std::string short_description() const;
virtual std::string description() const;
virtual ExclusiveCombinatorialJetAxes* create() const;
};

class HardestJetAxes : public AxesDefinition {
public:
HardestJetAxes(fastjet::JetDefinition def);
virtual std::vector<fastjet::PseudoJet> get_starting_axes(int n_jets,
const std::vector <fastjet::PseudoJet> & inputs,
const MeasureDefinition * ) const;
virtual std::string short_description() const;
virtual std::string description() const;
virtual HardestJetAxes* create() const;
// private:
// fastjet::JetDefinition _def; ///< Jet Definition to use.
// static LimitedWarning _too_few_axes_warning;
};

class KT_Axes : public ExclusiveJetAxes {
public:
/// Constructor
KT_Axes()
: ExclusiveJetAxes(fastjet::JetDefinition(fastjet::kt_algorithm,
fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
fastjet::E_scheme,
fastjet::Best)
);
virtual std::string short_description() const;
virtual std::string description() const;
virtual KT_Axes* create() const;
};

class CA_Axes : public ExclusiveJetAxes {
public:
CA_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual CA_Axes* create() const;
};


class AntiKT_Axes : public HardestJetAxes {
public:
AntiKT_Axes(double R0);
virtual std::string short_description() const;
virtual std::string description() const;
virtual AntiKT_Axes* create() const;
// protected:
// double _R0; ///< AKT jet radius
};

class JetDefinitionWrapper {
public:
JetDefinitionWrapper(JetAlgorithm jet_algorithm_in, double R_in, double xtra_param_in, const JetDefinition::Recombiner *recombiner);
JetDefinitionWrapper(JetAlgorithm jet_algorithm_in, double R_in, const JetDefinition::Recombiner *recombiner, fastjet::Strategy strategy_in);
JetDefinition getJetDef();
// private:
// JetDefinition jet_def; ///< my jet definition
};

class WTA_KT_Axes : public ExclusiveJetAxes {
public:
WTA_KT_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual WTA_KT_Axes* create() const;
};

class WTA_CA_Axes : public ExclusiveJetAxes {
public:
WTA_CA_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual WTA_CA_Axes* create() const;
};

class GenKT_Axes : public ExclusiveJetAxes {
public:
GenKT_Axes(double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual GenKT_Axes* create() const;
// protected:
// double _p; ///< genkT power
// double _R0; ///< jet radius
};

class WTA_GenKT_Axes : public ExclusiveJetAxes {
public:
WTA_GenKT_Axes(double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual WTA_GenKT_Axes* create() const;
// protected:
// double _p; ///< genkT power
// double _R0; ///< jet radius
};

class GenET_GenKT_Axes : public ExclusiveJetAxes {
public:
GenET_GenKT_Axes(double delta, double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual GenET_GenKT_Axes* create() const;
// protected:
// double _delta; ///< Recombination pT weighting
// double _p; ///< GenkT power
// double _R0; ///< jet radius
};

class OnePass_KT_Axes : public KT_Axes {
public:
OnePass_KT_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_KT_Axes* create() const;
};

class OnePass_CA_Axes : public CA_Axes {
public:
OnePass_CA_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_CA_Axes* create() const;
};

class OnePass_AntiKT_Axes : public AntiKT_Axes {
public:
OnePass_AntiKT_Axes(double R0);
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_AntiKT_Axes* create() const;

};

class OnePass_WTA_KT_Axes : public WTA_KT_Axes {
public:
OnePass_WTA_KT_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_WTA_KT_Axes* create() const;
};

class OnePass_WTA_CA_Axes : public WTA_CA_Axes {
public:
OnePass_WTA_CA_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_WTA_CA_Axes* create() const;
};

class OnePass_GenKT_Axes : public GenKT_Axes {
public:
OnePass_GenKT_Axes(double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_GenKT_Axes* create() const;
};

class OnePass_WTA_GenKT_Axes : public WTA_GenKT_Axes {
public:
OnePass_WTA_GenKT_Axes(double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_WTA_GenKT_Axes* create() const;
};

class OnePass_GenET_GenKT_Axes : public GenET_GenKT_Axes {
public:
OnePass_GenET_GenKT_Axes(double delta, double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_GenET_GenKT_Axes* create() const;
};

class Manual_Axes : public AxesDefinition {
public:
Manual_Axes();
virtual std::vector<fastjet::PseudoJet> get_starting_axes(int,
const std::vector<fastjet::PseudoJet>&,
const MeasureDefinition *) const;
virtual std::string short_description() const;
virtual std::string description() const;
virtual Manual_Axes* create() const;
};

class OnePass_Manual_Axes : public Manual_Axes {
public:
OnePass_Manual_Axes();
virtual std::string short_description() const;
virtual std::string description() const;
virtual OnePass_Manual_Axes* create() const;
};

class MultiPass_Axes : public KT_Axes {
public:
MultiPass_Axes(unsigned int Npass);
virtual std::string short_description() const;
virtual std::string description() const;
virtual MultiPass_Axes* create() const;
};

class MultiPass_Manual_Axes : public Manual_Axes {
public:
MultiPass_Manual_Axes(unsigned int Npass);
virtual std::string short_description() const;
virtual std::string description() const;
virtual MultiPass_Manual_Axes* create() const;
};

class Comb_GenKT_Axes : public ExclusiveCombinatorialJetAxes {
public:
Comb_GenKT_Axes(int nExtra, double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual Comb_GenKT_Axes* create() const;
// private:
// double _nExtra; ///< Number of extra axes
// double _p; ///< GenkT power
// double _R0; ///< jet radius
};

class Comb_WTA_GenKT_Axes : public ExclusiveCombinatorialJetAxes {
public:
Comb_WTA_GenKT_Axes(int nExtra, double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual Comb_WTA_GenKT_Axes* create() const;
// private:
// double _nExtra; ///< Number of extra axes
// double _p; ///< GenkT power
// double _R0; ///< jet radius
};

class Comb_GenET_GenKT_Axes : public ExclusiveCombinatorialJetAxes {
public:
Comb_GenET_GenKT_Axes(int nExtra, double delta, double p, double R0 = fastjet::JetDefinition::max_allowable_R);
virtual std::string short_description() const;
virtual std::string description() const;
virtual Comb_GenET_GenKT_Axes* create() const;
// private:
// double _nExtra; ///< Number of extra axes
// double _delta; ///< Recombination pT weighting exponent
// double _p; ///< GenkT power
// double _R0; ///< jet radius
};

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include "fastjet/PseudoJet.hh"
#include "fastjet/JetDefinition.hh"

#include <cmath>
#include <vector>
#include <list>
#include <limits>
#include <stdio.h>
#include <string.h>
#include <errno.h>

class GeneralEtSchemeRecombiner : public fastjet::JetDefinition::Recombiner {
public:
GeneralEtSchemeRecombiner(double delta);
virtual std::string description() const;
virtual void recombine(const fastjet::PseudoJet & pa,
const fastjet::PseudoJet & pb,
fastjet::PseudoJet & pab) const;
};

class WinnerTakeAllRecombiner : public fastjet::JetDefinition::Recombiner {
public:
WinnerTakeAllRecombiner(double alpha = 1.0);
virtual std::string description() const;
virtual void recombine(const fastjet::PseudoJet & pa,
const fastjet::PseudoJet & pb,
fastjet::PseudoJet & pab) const;
};
Loading

0 comments on commit f8cf75c

Please sign in to comment.