+
+FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
+
+namespace contrib{
+
+/// \mainpage EnergyCorrelator contrib
+///
+/// The EnergyCorrelator contrib provides an implementation of energy
+/// correlators and their ratios as described in arXiv:1305.0007 by
+/// Larkoski, Salam and Thaler. Additionally, the ratio observable
+/// D2 described in arXiv:1409.6298 by Larkoski, Moult and Neill
+/// is also included in this contrib. Finally, a generalized version of
+/// the energy correlation functions is added, defined in
+/// arXiv:1609.07483 by Moult, Necib and Thaler, which allow the
+/// definition of the M series, N series, and U series observables.
+/// There is also a generalized version of D2.
+///
+///
+/// There are 4 main classes:
+///
+/// - EnergyCorrelator
+/// - EnergyCorrelatorRatio
+/// - EnergyCorrelatorDoubleRatio
+/// - EnergyCorrelatorGeneralized
+///
+///
There are five classes that define useful combinations of the ECFs.
+///
+/// - EnergyCorrelatorNseries
+/// - EnergyCorrelatorMseries
+/// - EnergyCorrelatorUseries
+/// - EnergyCorrelatorD2
+/// - EnergyCorrelatorGeneralizedD2
+///
+///
There are also aliases for easier access:
+/// - EnergyCorrelatorCseries (same as EnergyCorrelatorDoubleRatio)
+/// - EnergyCorrelatorC1 (EnergyCorrelatorCseries with i=1)
+/// - EnergyCorrelatorC2 (EnergyCorrelatorCseries with i=2)
+/// - EnergyCorrelatorN2 (EnergyCorrelatorNseries with i=2)
+/// - EnergyCorrelatorN3 (EnergyCorrelatorNseries with i=3)
+/// - EnergyCorrelatorM2 (EnergyCorrelatorMseries with i=2)
+/// - EnergyCorrelatorU1 (EnergyCorrelatorUseries with i=1)
+/// - EnergyCorrelatorU2 (EnergyCorrelatorUseries with i=2)
+/// - EnergyCorrelatorU3 (EnergyCorrelatorUseries with i=3)
+///
+/// Each of these classes is a FastJet FunctionOfPseudoJet.
+/// EnergyCorrelatorDoubleRatio (which is equivalent to EnergyCorrelatorCseries)
+/// is in particular is useful for quark/gluon discrimination and boosted
+/// object tagging.
+///
+/// Using the original 2- and 3-point correlators, EnergyCorrelationD2 has
+/// been shown to be the optimal combination for boosted 2-prong tagging.
+///
+/// The EnergyCorrelatorNseries and EnergyCorrelatorMseries use
+/// generalized correlation functions with different angular scaling,
+/// and are intended for use on 2-prong and 3-prong jets.
+/// The EnergyCorrelatorUseries is useful for quark/gluon discrimimation.
+///
+/// See the file example.cc for an illustration of usage and
+/// example_basic_usage.cc for the most commonly used functions.
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelator
+/// ECF(N,beta) is the N-point energy correlation function, with an angular exponent beta.
+///
+/// It is defined as follows
+///
+/// - \f$ \mathrm{ECF}(1,\beta) = \sum_i E_i \f$
+/// - \f$ \mathrm{ECF}(2,\beta) = \sum_{i {
+ friend class EnergyCorrelatorGeneralized; ///< This allow ECFG to access the energy and angle definitions
+ ///< of this class, which are otherwise private.
+ public:
+
+ enum Measure {
+ pt_R, ///< use transverse momenta and boost-invariant angles,
+ ///< eg \f$\mathrm{ECF}(2,\beta) = \sum_{i=3 this leads to many expensive recomputations,
+ ///< but has only O(n) memory usage for n particles
+
+ storage_array /// the interparticle angles are cached. This gives a significant speed
+ /// improvement for N>=3, but has a memory requirement of (4n^2) bytes.
+ };
+
+ public:
+
+ /// constructs an N-point correlator with angular exponent beta,
+ /// using the specified choice of energy and angular measure as well
+ /// one of two possible underlying computational Strategy
+ EnergyCorrelator(unsigned int N,
+ double beta,
+ Measure measure = pt_R,
+ Strategy strategy = storage_array) :
+ _N(N), _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ /// destructor
+ virtual ~EnergyCorrelator(){}
+
+ /// returns the value of the energy correlator for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ /// returns the the part of the description related to the parameters
+ std::string description_parameters() const;
+ std::string description_no_N() const;
+
+ private:
+
+ unsigned int _N;
+ double _beta;
+ Measure _measure;
+ Strategy _strategy;
+
+ double energy(const PseudoJet& jet) const;
+ double angleSquared(const PseudoJet& jet1, const PseudoJet& jet2) const;
+ double multiply_angles(double angles[], int n_angles, unsigned int N_total) const;
+ void precompute_energies_and_angles(std::vector const &particles, double* energyStore, double** angleStore) const;
+ double evaluate_n3(unsigned int nC, unsigned int n_angles, double* energyStore, double** angleStore) const;
+ double evaluate_n4(unsigned int nC, unsigned int n_angles, double* energyStore, double** angleStore) const;
+ double evaluate_n5(unsigned int nC, unsigned int n_angles, double* energyStore, double** angleStore) const;
+ };
+
+// core EnergyCorrelator::result code in .cc file.
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorRatio
+/// A class to calculate the ratio of (N+1)-point to N-point energy correlators,
+/// ECF(N+1,beta)/ECF(N,beta),
+/// called \f$ r_N^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorRatio : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs an (N+1)-point to N-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorRatio(unsigned int N,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _N(N), _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorRatio() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ unsigned int _N;
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+ inline double EnergyCorrelatorRatio::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelator(_N + 1, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelator(_N, _beta, _measure, _strategy).result(jet);
+
+ return numerator/denominator;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorDoubleRatio
+/// Calculates the double ratio of energy correlators, ECF(N-1,beta)*ECF(N+1)/ECF(N,beta)^2.
+///
+/// A class to calculate a double ratio of energy correlators,
+/// ECF(N-1,beta)*ECF(N+1,beta)/ECF(N,beta)^2,
+/// called \f$C_N^{(\beta)}\f$ in the publication, and equal to
+/// \f$ r_N^{(\beta)}/r_{N-1}^{(\beta)} \f$.
+///
+
+ class EnergyCorrelatorDoubleRatio : public FunctionOfPseudoJet {
+
+ public:
+
+ EnergyCorrelatorDoubleRatio(unsigned int N,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _N(N), _beta(beta), _measure(measure), _strategy(strategy) {
+
+ if (_N < 1) throw Error("EnergyCorrelatorDoubleRatio: N must be 1 or greater.");
+
+ };
+
+ virtual ~EnergyCorrelatorDoubleRatio() {}
+
+
+ /// returns the value of the energy correlator double-ratio for a
+ /// jet's constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ unsigned int _N;
+ double _beta;
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorDoubleRatio::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelator(_N - 1, _beta, _measure, _strategy).result(jet) * EnergyCorrelator(_N + 1, _beta, _measure, _strategy).result(jet);
+ double denominator = pow(EnergyCorrelator(_N, _beta, _measure, _strategy).result(jet), 2.0);
+
+ return numerator/denominator;
+
+ }
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorC1
+/// A class to calculate the normalized 2-point energy correlators,
+/// ECF(2,beta)/ECF(1,beta)^2,
+/// called \f$ C_1^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorC1 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorC1(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorC1() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorC1::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelator(2, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelator(1, _beta, _measure, _strategy).result(jet);
+
+ return numerator/denominator/denominator;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorC2
+/// A class to calculate the double ratio of 3-point to 2-point
+/// energy correlators,
+/// ECF(3,beta)*ECF(1,beta)/ECF(2,beta)^2,
+/// called \f$ C_2^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorC2 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a 3-point to 2-point correlator double ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorC2(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorC2() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorC2::result(const PseudoJet& jet) const {
+
+ double numerator3 = EnergyCorrelator(3, _beta, _measure, _strategy).result(jet);
+ double numerator1 = EnergyCorrelator(1, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelator(2, _beta, _measure, _strategy).result(jet);
+
+ return numerator3*numerator1/denominator/denominator;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorD2
+/// A class to calculate the observable formed from the ratio of the
+/// 3-point and 2-point energy correlators,
+/// ECF(3,beta)*ECF(1,beta)^3/ECF(2,beta)^3,
+/// called \f$ D_2^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorD2 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs an 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorD2(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorD2() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorD2::result(const PseudoJet& jet) const {
+
+ double numerator3 = EnergyCorrelator(3, _beta, _measure, _strategy).result(jet);
+ double numerator1 = EnergyCorrelator(1, _beta, _measure, _strategy).result(jet);
+ double denominator2 = EnergyCorrelator(2, _beta, _measure, _strategy).result(jet);
+
+ return numerator3*numerator1*numerator1*numerator1/denominator2/denominator2/denominator2;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorGeneralized
+/// A generalized and normalized version of the N-point energy correlators, with
+/// angular exponent beta and v number of pairwise angles. When \f$v = {N \choose 2}\f$
+/// (or, for convenience, \f$v = -1\f$), EnergyCorrelatorGeneralized just gives normalized
+/// versions of EnergyCorrelator:
+/// - \f$ \mathrm{ECFG}(-1,1,\beta) = \mathrm{ECFN}(N,\beta) = \mathrm{ECF}(N,\beta)/\mathrm{ECF}(1,\beta)\f$
+///
+/// Note that there is no separate class that implements ECFN, though it is a
+/// notation that we will use in this documentation. Examples of the low-point normalized
+/// correlators are:
+/// - \f$\mathrm{ECFN}(1,\beta) = 1\f$
+/// - \f$\mathrm{ECFN}(2,\beta) = \sum_{i {
+ public:
+
+ /// constructs an N-point correlator with v_angles pairwise angles
+ /// and angular exponent beta,
+ /// using the specified choice of energy and angular measure as well
+ /// one of two possible underlying computational Strategy
+ EnergyCorrelatorGeneralized(int v_angles,
+ unsigned int N,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _angles(v_angles), _N(N), _beta(beta), _measure(measure), _strategy(strategy), _helper_correlator(1,_beta, _measure, _strategy) {};
+
+ /// destructor
+ virtual ~EnergyCorrelatorGeneralized(){}
+
+ /// returns the value of the normalized energy correlator for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+
+ double result(const PseudoJet& jet) const;
+ std::vector result_all_angles(const PseudoJet& jet) const;
+
+ private:
+
+ int _angles;
+ unsigned int _N;
+ double _beta;
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+ EnergyCorrelator _helper_correlator;
+
+ double energy(const PseudoJet& jet) const;
+ double angleSquared(const PseudoJet& jet1, const PseudoJet& jet2) const;
+ double multiply_angles(double angles[], int n_angles, unsigned int N_total) const;
+ void precompute_energies_and_angles(std::vector const &particles, double* energyStore, double** angleStore) const;
+ double evaluate_n3(unsigned int nC, unsigned int n_angles, double* energyStore, double** angleStore) const;
+ double evaluate_n4(unsigned int nC, unsigned int n_angles, double* energyStore, double** angleStore) const;
+ double evaluate_n5(unsigned int nC, unsigned int n_angles, double* energyStore, double** angleStore) const;
+ };
+
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorGeneralizedD2
+/// A class to calculate the observable formed from the ratio of the
+/// 3-point and 2-point energy correlators,
+/// ECFN(3,alpha)/ECFN(2,beta)^3 alpha/beta,
+/// called \f$ D_2^{(\alpha, \beta)} \f$ in the publication.
+ class EnergyCorrelatorGeneralizedD2 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs an 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorGeneralizedD2(
+ double alpha,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _alpha(alpha), _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorGeneralizedD2() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _alpha;
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorGeneralizedD2::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelatorGeneralized(-1, 3, _alpha, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelatorGeneralized(-1, 2, _beta, _measure, _strategy).result(jet);
+
+ return numerator/pow(denominator, 3.0*_alpha/_beta);
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorNseries
+/// A class to calculate the observable formed from the ratio of the
+/// 3-point and 2-point energy correlators,
+/// N_n = ECFG(2,n+1,beta)/ECFG(1,n,beta)^2,
+/// called \f$ N_i^{(\alpha, \beta)} \f$ in the publication.
+/// By definition, N_1^{beta} = ECFG(1, 2, 2*beta), where the angular exponent
+/// is twice as big since the N series should involve two pairwise angles.
+ class EnergyCorrelatorNseries : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a n 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorNseries(
+ unsigned int n,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _n(n), _beta(beta), _measure(measure), _strategy(strategy) {
+
+ if (_n < 1) throw Error("EnergyCorrelatorNseries: n must be 1 or greater.");
+
+ };
+
+ virtual ~EnergyCorrelatorNseries() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ unsigned int _n;
+ double _beta;
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+ };
+
+
+ inline double EnergyCorrelatorNseries::result(const PseudoJet& jet) const {
+
+ if (_n == 1) return EnergyCorrelatorGeneralized(1, 2, 2*_beta, _measure, _strategy).result(jet);
+ // By definition, N1 = ECFN(2, 2 beta)
+ double numerator = EnergyCorrelatorGeneralized(2, _n + 1, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelatorGeneralized(1, _n, _beta, _measure, _strategy).result(jet);
+
+ return numerator/denominator/denominator;
+
+ }
+
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorN2
+/// A class to calculate the observable formed from the ratio of the
+/// 3-point and 2-point energy correlators,
+/// ECFG(2,3,beta)/ECFG(1,2,beta)^2,
+/// called \f$ N_2^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorN2 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs an 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorN2(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorN2() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorN2::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelatorGeneralized(2, 3, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelatorGeneralized(1, 2, _beta, _measure, _strategy).result(jet);
+
+ return numerator/denominator/denominator;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorN3
+/// A class to calculate the observable formed from the ratio of the
+/// 3-point and 2-point energy correlators,
+/// ECFG(2,4,beta)/ECFG(1,3,beta)^2,
+/// called \f$ N_3^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorN3 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs an 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorN3(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorN3() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorN3::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelatorGeneralized(2, 4, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelatorGeneralized(1, 3, _beta, _measure, _strategy).result(jet);
+
+ return numerator/denominator/denominator;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorMseries
+/// A class to calculate the observable formed from the ratio of the
+/// 3-point and 2-point energy correlators,
+/// M_n = ECFG(1,n+1,beta)/ECFG(1,n,beta),
+/// called \f$ M_i^{(\alpha, \beta)} \f$ in the publication.
+/// By definition, M_1^{beta} = ECFG(1,2,beta)
+ class EnergyCorrelatorMseries : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a n 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorMseries(
+ unsigned int n,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _n(n), _beta(beta), _measure(measure), _strategy(strategy) {
+
+ if (_n < 1) throw Error("EnergyCorrelatorMseries: n must be 1 or greater.");
+
+ };
+
+ virtual ~EnergyCorrelatorMseries() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ unsigned int _n;
+ double _beta;
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+ };
+
+
+ inline double EnergyCorrelatorMseries::result(const PseudoJet& jet) const {
+
+ if (_n == 1) return EnergyCorrelatorGeneralized(1, 2, _beta, _measure, _strategy).result(jet);
+
+ double numerator = EnergyCorrelatorGeneralized(1, _n + 1, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelatorGeneralized(1, _n, _beta, _measure, _strategy).result(jet);
+
+ return numerator/denominator;
+
+ }
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorM2
+/// A class to calculate the observable formed from the ratio of the
+/// 3-point and 2-point energy correlators,
+/// ECFG(1,3,beta)/ECFG(1,2,beta),
+/// called \f$ M_2^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorM2 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs an 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorM2(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorM2() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorM2::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelatorGeneralized(1, 3, _beta, _measure, _strategy).result(jet);
+ double denominator = EnergyCorrelatorGeneralized(1, 2, _beta, _measure, _strategy).result(jet);
+
+ return numerator/denominator;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorCseries
+/// Calculates the C series energy correlators, ECFN(N-1,beta)*ECFN(N+1,beta)/ECFN(N,beta)^2.
+/// This is equivalent to EnergyCorrelatorDoubleRatio
+///
+/// A class to calculate a double ratio of energy correlators,
+/// ECFN(N-1,beta)*ECFN(N+1,beta)/ECFN(N,beta)^2,
+/// called \f$C_N^{(\beta)}\f$ in the publication, and equal to
+/// \f$ r_N^{(\beta)}/r_{N-1}^{(\beta)} \f$.
+///
+
+ class EnergyCorrelatorCseries : public FunctionOfPseudoJet {
+
+ public:
+
+ EnergyCorrelatorCseries(unsigned int N,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _N(N), _beta(beta), _measure(measure), _strategy(strategy) {
+
+ if (_N < 1) throw Error("EnergyCorrelatorCseries: N must be 1 or greater.");
+
+ };
+
+ virtual ~EnergyCorrelatorCseries() {}
+
+
+ /// returns the value of the energy correlator double-ratio for a
+ /// jet's constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ unsigned int _N;
+ double _beta;
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorCseries::result(const PseudoJet& jet) const {
+
+ double numerator = EnergyCorrelatorGeneralized(-1, _N - 1, _beta, _measure, _strategy).result(jet) * EnergyCorrelatorGeneralized(-1, _N + 1, _beta, _measure, _strategy).result(jet);
+ double denominator = pow(EnergyCorrelatorGeneralized(-1, _N, _beta, _measure, _strategy).result(jet), 2.0);
+
+ return numerator/denominator;
+
+ }
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorUseries
+/// A class to calculate the observable used for quark versus gluon discrimination
+/// U_n = ECFG(1,n+1,beta),
+/// called \f$ U_i^{(\beta)} \f$ in the publication.
+
+ class EnergyCorrelatorUseries : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a n 3-point to 2-point correlator ratio with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorUseries(
+ unsigned int n,
+ double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _n(n), _beta(beta), _measure(measure), _strategy(strategy) {
+
+ if (_n < 1) throw Error("EnergyCorrelatorUseries: n must be 1 or greater.");
+
+ };
+
+ virtual ~EnergyCorrelatorUseries() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ unsigned int _n;
+ double _beta;
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+ };
+
+
+ inline double EnergyCorrelatorUseries::result(const PseudoJet& jet) const {
+
+ double answer = EnergyCorrelatorGeneralized(1, _n + 1, _beta, _measure, _strategy).result(jet);
+ return answer;
+
+ }
+
+
+//------------------------------------------------------------------------
+/// \class EnergyCorrelatorU1
+/// A class to calculate the observable formed from
+/// ECFG(1,2,beta),
+/// called \f$ U_1^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorU1 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a 2-point correlator with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorU1(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorU1() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorU1::result(const PseudoJet& jet) const {
+
+ double answer = EnergyCorrelatorGeneralized(1, 2, _beta, _measure, _strategy).result(jet);
+
+ return answer;
+
+ }
+
+
+ //------------------------------------------------------------------------
+ /// \class EnergyCorrelatorU2
+ /// A class to calculate the observable formed from
+ /// ECFG(1,3,beta),
+ /// called \f$ U_2^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorU2 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a 3-point correlator with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorU2(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorU2() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorU2::result(const PseudoJet& jet) const {
+
+ double answer = EnergyCorrelatorGeneralized(1, 3, _beta, _measure, _strategy).result(jet);
+
+ return answer;
+
+ }
+
+
+ //------------------------------------------------------------------------
+ /// \class EnergyCorrelatorU3
+ /// A class to calculate the observable formed from
+ /// ECFG(1,4,beta),
+ /// called \f$ U_3^{(\beta)} \f$ in the publication.
+ class EnergyCorrelatorU3 : public FunctionOfPseudoJet {
+
+ public:
+
+ /// constructs a 4-point correlator with
+ /// angular exponent beta, using the specified choice of energy and
+ /// angular measure as well one of two possible underlying
+ /// computational strategies
+ EnergyCorrelatorU3(double beta,
+ EnergyCorrelator::Measure measure = EnergyCorrelator::pt_R,
+ EnergyCorrelator::Strategy strategy = EnergyCorrelator::storage_array)
+ : _beta(beta), _measure(measure), _strategy(strategy) {};
+
+ virtual ~EnergyCorrelatorU3() {}
+
+ /// returns the value of the energy correlator ratio for a jet's
+ /// constituents. (Normally accessed by the parent class's
+ /// operator()).
+ double result(const PseudoJet& jet) const;
+
+ std::string description() const;
+
+ private:
+
+ double _beta;
+
+ EnergyCorrelator::Measure _measure;
+ EnergyCorrelator::Strategy _strategy;
+
+
+ };
+
+
+ inline double EnergyCorrelatorU3::result(const PseudoJet& jet) const {
+
+ double answer = EnergyCorrelatorGeneralized(1, 4, _beta, _measure, _strategy).result(jet);
+
+ return answer;
+
+ }
+
+
+
+} // namespace contrib
+
+FASTJET_END_NAMESPACE
+
+#endif // __FASTJET_CONTRIB_ENERGYCORRELATOR_HH__
Property changes on: contrib/contribs/EnergyCorrelator/tags/1.3.2/EnergyCorrelator.hh
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: contrib/contribs/EnergyCorrelator/tags/1.3.2/example_basic_usage.cc
===================================================================
--- contrib/contribs/EnergyCorrelator/tags/1.3.2/example_basic_usage.cc (revision 0)
+++ contrib/contribs/EnergyCorrelator/tags/1.3.2/example_basic_usage.cc (revision 1393)
@@ -0,0 +1,234 @@
+// Example showing basic usage of energy correlator classes.
+//
+// Compile it with "make example" and run it with
+//
+// ./example_basic_usage < ../data/single-event.dat
+//
+// Copyright (c) 2013-2016
+// Andrew Larkoski, Lina Necib, Gavin Salam, and Jesse Thaler
+//
+// $Id: example.cc 958 2016-08-17 00:25:14Z linoush $
+//----------------------------------------------------------------------
+// This file is part of FastJet contrib.
+//
+// It is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2 of the License, or (at
+// your option) any later version.
+//
+// It is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+// License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this code. If not, see .
+//----------------------------------------------------------------------
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "fastjet/PseudoJet.hh"
+#include "fastjet/ClusterSequence.hh"
+#include "fastjet/JetDefinition.hh"
+
+#include
+#include "EnergyCorrelator.hh" // In external code, this should be fastjet/contrib/EnergyCorrelator.hh
+
+using namespace std;
+using namespace fastjet;
+using namespace fastjet::contrib;
+
+// forward declaration to make things clearer
+void read_event(vector &event);
+void analyze(const vector & input_particles);
+
+//----------------------------------------------------------------------
+int main(){
+
+ //----------------------------------------------------------
+ // read in input particles
+ vector event;
+ read_event(event);
+ cout << "# read an event with " << event.size() << " particles" << endl;
+
+ //----------------------------------------------------------
+ // illustrate how this EnergyCorrelator contrib works
+
+ analyze(event);
+
+ return 0;
+}
+
+// read in input particles
+void read_event(vector &event){
+ string line;
+ while (getline(cin, line)) {
+ istringstream linestream(line);
+ // take substrings to avoid problems when there are extra "pollution"
+ // characters (e.g. line-feed).
+ if (line.substr(0,4) == "#END") {return;}
+ if (line.substr(0,1) == "#") {continue;}
+ double px,py,pz,E;
+ linestream >> px >> py >> pz >> E;
+ PseudoJet particle(px,py,pz,E);
+
+ // push event onto back of full_event vector
+ event.push_back(particle);
+ }
+}
+
+////////
+//
+// Main Routine for Analysis
+//
+///////
+
+void analyze(const vector & input_particles) {
+
+ /////// EnergyCorrelator /////////////////////////////
+
+ // Initial clustering with anti-kt algorithm
+ JetAlgorithm algorithm = antikt_algorithm;
+ double jet_rad = 1.00; // jet radius for anti-kt algorithm
+ JetDefinition jetDef = JetDefinition(algorithm,jet_rad,E_scheme,Best);
+ ClusterSequence clust_seq(input_particles,jetDef);
+ vector antikt_jets = sorted_by_pt(clust_seq.inclusive_jets());
+
+ for (int j = 0; j < 1; j++) { // Hardest jet per event
+ if (antikt_jets[j].perp() > 200) {
+
+ PseudoJet myJet = antikt_jets[j];
+
+
+ // The angularity is set by the value of beta
+ double beta;
+
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ cout << "EnergyCorrelator: C series " << endl;
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ printf("%7s %14s %14s %14s\n","beta", "C1", "C2", "C3");
+
+
+ beta = 1.0;
+ //Defining the Cseries for beta= 1.0
+ EnergyCorrelatorC1 C1s(beta);
+ EnergyCorrelatorC2 C2s(beta);
+ EnergyCorrelatorCseries C3s(3, beta);
+
+
+ printf("%7.3f %14.6f %14.6f %14.6f\n",beta,C1s(myJet),C2s(myJet),C3s(myJet));
+
+ beta = 2.0;
+ //Defining the Cseries for beta= 2.0
+ EnergyCorrelatorC1 C1s_2(beta);
+ EnergyCorrelatorC2 C2s_2(beta);
+ EnergyCorrelatorCseries C3s_2(3, beta);
+
+
+ printf("%7.3f %14.6f %14.6f %14.6f\n",beta,C1s_2(myJet),C2s_2(myJet),C3s_2(myJet));
+
+
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ cout << "EnergyCorrelator: D2, orignal (alpha=beta) and generalized " << endl;
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ printf("%7s %14s %14s %14s\n","beta","D2", "D2(alpha=1)", "D2(alpha=2)");
+
+
+ beta = 1.0;
+ EnergyCorrelatorD2 d2(beta);
+ double alpha = 1.0;
+ EnergyCorrelatorGeneralizedD2 d2_generalized(alpha, beta);
+ alpha = 2.0;
+ EnergyCorrelatorGeneralizedD2 d2_generalized_2(alpha, beta);
+
+ printf("%7.3f %14.6f %14.6f %14.6f\n",beta,d2(myJet), d2_generalized(myJet), d2_generalized_2(myJet));
+ beta = 2.0;
+ EnergyCorrelatorD2 d2_2(beta);
+ alpha = 1.0;
+ EnergyCorrelatorGeneralizedD2 d2_generalized_3(alpha, beta);
+ alpha = 2.0;
+ EnergyCorrelatorGeneralizedD2 d2_generalized_4(alpha, beta);
+ printf("%7.3f %14.6f %14.6f %14.6f\n",beta,d2_2(myJet), d2_generalized_3(myJet), d2_generalized_4(myJet));
+
+
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ cout << "EnergyCorrelator: N series " << endl;
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ printf("%7s %14s %14s\n","beta", "N2", "N3");
+
+
+ beta = 1.0;
+ // Directly defining the EnergyCorrelator N2 and N3
+ EnergyCorrelatorN2 N2(beta);
+ EnergyCorrelatorN3 N3(beta);
+ printf("%7.3f %14.6f %14.6f\n",beta, N2(myJet), N3(myJet));
+
+ beta = 2.0;
+ EnergyCorrelatorN2 N2_2(beta);
+ EnergyCorrelatorN3 N3_2(beta);
+ printf("%7.3f %14.6f %14.6f\n",beta, N2_2(myJet), N3_2(myJet));
+
+
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ cout << "EnergyCorrelator: M series " << endl;
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ printf("%7s %14s %14s\n","beta", "M2", "M3");
+
+ beta = 1.0;
+ //Directly defining M2
+ EnergyCorrelatorM2 M2(beta);
+ EnergyCorrelatorMseries M3(3, beta);
+ printf("%7.3f %14.6f %14.6f\n", beta, M2(myJet), M3(myJet));
+
+ beta = 2.0;
+ EnergyCorrelatorM2 M2_2(beta);
+ EnergyCorrelatorMseries M3_2(3, beta);
+ printf("%7.3f %14.6f %14.6f\n", beta, M2_2(myJet), M3_2(myJet));
+
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ cout << "EnergyCorrelator: U series " << endl;
+ cout << "-------------------------------------------------------------------------------------" << endl;
+ printf("%7s %14s %14s %14s\n","beta", "U1", "U2", "U3");
+
+
+ beta = 0.5;
+ //Defining the Useries for beta= 0.5
+ EnergyCorrelatorU1 U1s(beta);
+ EnergyCorrelatorU2 U2s(beta);
+ EnergyCorrelatorU3 U3s(beta);
+
+
+ printf("%7.3f %14.8f %14.8f %14.8f\n",beta,U1s(myJet),U2s(myJet),U3s(myJet));
+
+ beta = 1.0;
+ //Defining the Useries for beta= 1.0
+ EnergyCorrelatorU1 U1s_2(beta);
+ EnergyCorrelatorU2 U2s_2(beta);
+ EnergyCorrelatorU3 U3s_2(beta);
+
+
+ printf("%7.3f %14.8f %14.8f %14.8f\n",beta,U1s_2(myJet),U2s_2(myJet),U3s_2(myJet));
+
+ beta = 2.0;
+ //Defining the Useries for beta= 2.0
+ EnergyCorrelatorU1 U1s_3(beta);
+ EnergyCorrelatorU2 U2s_3(beta);
+ EnergyCorrelatorU3 U3s_3(beta);
+
+
+ printf("%7.3f %14.8f %14.8f %14.8f\n",beta,U1s_3(myJet),U2s_3(myJet),U3s_3(myJet));
+ }
+ }
+}
+
+
+
+
Index: contrib/contribs/EnergyCorrelator/tags/1.3.2/AUTHORS
===================================================================
--- contrib/contribs/EnergyCorrelator/tags/1.3.2/AUTHORS (revision 0)
+++ contrib/contribs/EnergyCorrelator/tags/1.3.2/AUTHORS (revision 1393)
@@ -0,0 +1,23 @@
+The EnergyCorrelator FastJet contrib was written and is maintained and developed by:
+
+ Andrew Larkoski
+ Lina Necib
+ Gavin Salam
+ Jesse Thaler
+
+For physics details, see:
+
+ Energy Correlation Functions for Jet Substructure.
+ Andrew J. Larkoski, Gavin P. Salam, and Jesse Thaler.
+ JHEP 1306, 108 (2013)
+ arXiv:1305.0007.
+
+ Power Counting to Better Jet Observables.
+ Andrew J. Larkoski, Ian Moult, and Duff Neill.
+ JHEP 1412, 009 (2014)
+ arXiv:1409.6298.
+
+ New Angles on Energy Correlation Functions.
+ Ian Moult, Lina Necib, and Jesse Thaler.
+ arXiv:1609.07483.
+----------------------------------------------------------------------
Index: contrib/contribs/EnergyCorrelator/tags/1.3.2/VERSION
===================================================================
--- contrib/contribs/EnergyCorrelator/tags/1.3.2/VERSION (revision 0)
+++ contrib/contribs/EnergyCorrelator/tags/1.3.2/VERSION (revision 1393)
@@ -0,0 +1 @@
+1.3.2
\ No newline at end of file
Index: contrib/contribs/EnergyCorrelator/tags/1.3.2/example.ref
===================================================================
--- contrib/contribs/EnergyCorrelator/tags/1.3.2/example.ref (revision 0)
+++ contrib/contribs/EnergyCorrelator/tags/1.3.2/example.ref (revision 1393)
@@ -0,0 +1,922 @@
+# read an event with 354 particles
+#--------------------------------------------------------------------------
+# FastJet release 3.4.2
+# M. Cacciari, G.P. Salam and G. Soyez
+# A software package for jet finding and analysis at colliders
+# http://fastjet.fr
+#
+# Please cite EPJC72(2012)1896 [arXiv:1111.6097] if you use this package
+# for scientific work and optionally PLB641(2006)57 [hep-ph/0512210].
+#
+# FastJet is provided without warranty under the GNU GPL v2 or higher.
+# It uses T. Chan's closest pair algorithm, S. Fortune's Voronoi code
+# and 3rd party plugin jet algorithms. See COPYING file for details.
+#--------------------------------------------------------------------------
+-------------------------------------------------------------------------------------
+EnergyCorrelator: ECF(N,beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 (GeV) N=2 (GeV^2) N=3 (GeV^3) N=4 (GeV^4) N=5 (GeV^5)
+ 0.100 983.64 265690.56 2.75407e+07 1.28721e+09 3.01137e+10
+ 0.200 983.64 172787.11 8.22275e+06 1.34175e+08 8.88561e+08
+ 0.500 983.64 52039.98 364021 608244 356259
+ 1.000 983.64 10006.49 9934.06 2670.1 271.978
+ 1.500 983.64 3001.20 1066.15 118.174 4.24269
+ 2.000 983.64 1272.64 260.176 14.8758 0.223955
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorRatio: r_N^(beta) = ECF(N+1,beta)/ECF(N,beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=0 (GeV) N=1 (GeV) N=2 (GeV) N=3 (GeV) N=4 (GeV)
+ 0.100 983.6369 270.1104 103.657 46.7387 23.3945
+ 0.200 983.6369 175.6615 47.5889 16.3175 6.62239
+ 0.500 983.6369 52.9057 6.99503 1.6709 0.585717
+ 1.000 983.6369 10.1730 0.992762 0.268782 0.101861
+ 1.500 983.6369 3.0511 0.355242 0.110841 0.0359022
+ 2.000 983.6369 1.2938 0.204437 0.0571759 0.015055
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorDoubleRatio: C_N^(beta) = r_N^(beta)/r_{N-1}^(beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 0.274604 0.383758 0.450898 0.500538
+ 0.200 0.178584 0.270913 0.342885 0.405845
+ 0.500 0.053786 0.132217 0.238870 0.350540
+ 1.000 0.010342 0.097588 0.270742 0.378972
+ 1.500 0.003102 0.116430 0.312016 0.323906
+ 2.000 0.001315 0.158011 0.279675 0.263310
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC1: C_1^(beta) = ECF(2,beta)/ECF(1,beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta C1 obs
+ 0.100 0.274604
+ 0.200 0.178584
+ 0.500 0.053786
+ 1.000 0.010342
+ 1.500 0.003102
+ 2.000 0.001315
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC2: C_2^(beta) = ECF(3,beta)*ECF(1,beta)/ECF(2,beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta C2 obs
+ 0.100 0.383758
+ 0.200 0.270913
+ 0.500 0.132217
+ 1.000 0.097588
+ 1.500 0.116430
+ 2.000 0.158011
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorD2: D_2^(beta) = ECF(3,beta)*ECF(1,beta)^3/ECF(2,beta)^3 with pt_R
+-------------------------------------------------------------------------------------
+ beta D2 obs
+ 0.100 1.397496
+ 0.200 1.517007
+ 0.500 2.458216
+ 1.000 9.435950
+ 1.500 37.535182
+ 2.000 120.129760
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralizedD2: D_2^(alpha, beta) = ECFN(3,alpha)/ECFN(2,beta)^(3*alpha/beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta alpha = 0.100 alpha = 0.200 alpha = 0.500 alpha = 1.000
+ 0.200 0.383449 1.51701 156.246 1.74179e+06
+ 0.500 0.167136 0.288212 2.45822 431.139
+ 1.000 0.114048 0.134198 0.363667 9.43595
+ 1.500 0.0918639 0.0870688 0.12331 1.08485
+ 2.000 0.0782734 0.0632123 0.0553789 0.21881
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized (angles = N Choose 2): ECFN(N, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 1.00 0.2746037664 0.0289380967 0.0013750278
+ 0.200 1.00 0.1785836568 0.0086399808 0.0001433286
+ 0.500 1.00 0.0537857869 0.0003824922 0.0000006497
+ 1.000 1.00 0.0103421840 0.0000104381 0.0000000029
+ 1.500 1.00 0.0031018827 0.0000011202 0.0000000001
+ 2.000 1.00 0.0013153375 0.0000002734 0.0000000000
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized: ECFG(angles, N, beta=1) with pt_R
+-------------------------------------------------------------------------------------
+ angles N=1 N=2 N=3 N=4
+ 1 1.00 0.0103421840 0.0007353402 0.0000733472
+ 2 0.0000460939 0.0000010704
+ 3 0.0000104381 0.0000000552
+ 4 0.0000000114
+ 5 0.0000000045
+ 6 0.0000000029
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorNseries: N_i(beta) = ECFG(i+1, 2, beta)/ECFG(i, 1, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.178584 0.551898 1.506618
+ 0.200 0.078954 0.534774 1.521976
+ 0.500 0.010342 0.487547 1.601014
+ 1.000 0.001315 0.430942 1.979487
+ 1.500 0.000437 0.391935 3.250084
+ 2.000 0.000220 0.365859 6.700247
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN2: N2(beta) = ECFG(3, 2, beta)/ECFG(2, 1, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N2 obs
+ 0.100 0.551898
+ 0.200 0.534774
+ 0.500 0.487547
+ 1.000 0.430942
+ 1.500 0.391935
+ 2.000 0.365859
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN3: N3(beta) = ECFG(4, 2, beta)/ECFG(3, 1, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N3 obs
+ 0.100 1.506618
+ 0.200 1.521976
+ 0.500 1.601014
+ 1.000 1.979487
+ 1.500 3.250084
+ 2.000 6.700247
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorMseries: M_i(beta) = ECFG(i+1, 1, beta)/ECFN(i, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.274604 0.225158 0.151396
+ 0.200 0.178584 0.206357 0.146715
+ 0.500 0.053786 0.149827 0.130985
+ 1.000 0.010342 0.071101 0.099746
+ 1.500 0.003102 0.027603 0.065806
+ 2.000 0.001315 0.010448 0.036511
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorM2: M2(beta) = ECFG(3, 1, beta)/ECFG(3, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta M2 obs
+ 0.100 0.225158
+ 0.200 0.206357
+ 0.500 0.149827
+ 1.000 0.071101
+ 1.500 0.027603
+ 2.000 0.010448
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorCseries: C_i(beta) = ECFN(i-1, beta)*ECFN(i+1, beta)/ECFN(i, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.2746037664 0.3837575950 0.4508977207
+ 0.200 0.1785836568 0.2709126926 0.3428854490
+ 0.500 0.0537857869 0.1322170711 0.2388696533
+ 1.000 0.0103421840 0.0975883303 0.2707417692
+ 1.500 0.0031018827 0.1164297328 0.3120164994
+ 2.000 0.0013153375 0.1580111821 0.2796746959
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorUseries: U_i(beta) = ECFG(i+1, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.2746037664 0.0618292258 0.0093606928
+ 0.200 0.1785836568 0.0368519186 0.0054067344
+ 0.500 0.0537857869 0.0080585540 0.0010555469
+ 1.000 0.0103421840 0.0007353402 0.0000733472
+ 1.500 0.0031018827 0.0000856204 0.0000056343
+ 2.000 0.0013153375 0.0000137425 0.0000005017
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU1: U1(beta) = ECFG(2, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta U1 obs
+ 0.100 0.2746037664
+ 0.200 0.1785836568
+ 0.500 0.0537857869
+ 1.000 0.0103421840
+ 1.500 0.0031018827
+ 2.000 0.0013153375
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU2: U2(beta) = ECFG(3, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta U2 obs
+ 0.100 0.0618292258
+ 0.200 0.0368519186
+ 0.500 0.0080585540
+ 1.000 0.0007353402
+ 1.500 0.0000856204
+ 2.000 0.0000137425
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU3: U3(beta) = ECFG(4, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta U3 obs
+ 0.100 0.0093606928
+ 0.200 0.0054067344
+ 0.500 0.0010555469
+ 1.000 0.0000733472
+ 1.500 0.0000056343
+ 2.000 0.0000005017
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelator: ECF(N,beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 (GeV) N=2 (GeV^2) N=3 (GeV^3) N=4 (GeV^4) N=5 (GeV^5)
+ 0.100 1378.16 504056.94 6.83627e+07 4.04064e+09 1.15642e+11
+ 0.200 1378.16 316828.68 1.84412e+07 3.45185e+08 2.47586e+09
+ 0.500 1378.16 86243.22 614652 941845 459093
+ 1.000 1378.16 14186.79 11682.6 2060.77 92.9815
+ 1.500 1378.16 3751.90 907.112 39.3366 0.273239
+ 2.000 1378.16 1439.57 152.709 1.84456 0.00237065
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorRatio: r_N^(beta) = ECF(N+1,beta)/ECF(N,beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=0 (GeV) N=1 (GeV) N=2 (GeV) N=3 (GeV) N=4 (GeV)
+ 0.100 1378.1622 365.7457 135.625 59.1058 28.6198
+ 0.200 1378.1622 229.8922 58.2055 18.7182 7.17256
+ 0.500 1378.1622 62.5784 7.12696 1.53232 0.48744
+ 1.000 1378.1622 10.2940 0.823486 0.176396 0.0451197
+ 1.500 1378.1622 2.7224 0.241774 0.0433647 0.00694617
+ 2.000 1378.1622 1.0446 0.10608 0.0120789 0.00128521
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorDoubleRatio: C_N^(beta) = r_N^(beta)/r_{N-1}^(beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 0.265387 0.370818 0.435803 0.484212
+ 0.200 0.166811 0.253186 0.321588 0.383186
+ 0.500 0.045407 0.113888 0.215004 0.318106
+ 1.000 0.007469 0.079997 0.214207 0.255786
+ 1.500 0.001975 0.088810 0.179360 0.160180
+ 2.000 0.000758 0.101555 0.113867 0.106401
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC1: C_1^(beta) = ECF(2,beta)/ECF(1,beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta C1 obs
+ 0.100 0.265387
+ 0.200 0.166811
+ 0.500 0.045407
+ 1.000 0.007469
+ 1.500 0.001975
+ 2.000 0.000758
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC2: C_2^(beta) = ECF(3,beta)*ECF(1,beta)/ECF(2,beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta C2 obs
+ 0.100 0.370818
+ 0.200 0.253186
+ 0.500 0.113888
+ 1.000 0.079997
+ 1.500 0.088810
+ 2.000 0.101555
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorD2: D_2^(beta) = ECF(3,beta)*ECF(1,beta)^3/ECF(2,beta)^3 with E_theta
+-------------------------------------------------------------------------------------
+ beta D2 obs
+ 0.100 1.397274
+ 0.200 1.517804
+ 0.500 2.508161
+ 1.000 10.709981
+ 1.500 44.958245
+ 2.000 133.988418
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralizedD2: D_2^(alpha, beta) = ECFN(3,alpha)/ECFN(2,beta)^(3*alpha/beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta alpha = 0.100 alpha = 0.200 alpha = 0.500 alpha = 1.000
+ 0.200 0.383339 1.5178 159.974 2.07149e+06
+ 0.500 0.166972 0.287964 2.50816 509.206
+ 1.000 0.113484 0.13302 0.36375 10.71
+ 1.500 0.0907379 0.0850408 0.118872 1.14377
+ 2.000 0.0767315 0.0608132 0.0514049 0.21389
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized (angles = N Choose 2): ECFN(N, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 1.00 0.2653865755 0.0261167137 0.0011200786
+ 0.200 1.00 0.1668106769 0.0070451023 0.0000956866
+ 0.500 1.00 0.0454071552 0.0002348163 0.0000002611
+ 1.000 1.00 0.0074693640 0.0000044631 0.0000000006
+ 1.500 1.00 0.0019753776 0.0000003465 0.0000000000
+ 2.000 1.00 0.0007579352 0.0000000583 0.0000000000
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized: ECFG(angles, N, beta=1) with E_theta
+-------------------------------------------------------------------------------------
+ angles N=1 N=2 N=3 N=4
+ 1 1.00 0.0074693640 0.0005219446 0.0000521319
+ 2 0.0000242551 0.0000005388
+ 3 0.0000044631 0.0000000205
+ 4 0.0000000035
+ 5 0.0000000011
+ 6 0.0000000006
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorNseries: N_i(beta) = ECFG(i+1, 2, beta)/ECFG(i, 1, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.166811 0.551800 1.506192
+ 0.200 0.068920 0.534652 1.521253
+ 0.500 0.007469 0.487710 1.598907
+ 1.000 0.000758 0.434746 1.977674
+ 1.500 0.000207 0.401351 3.333270
+ 2.000 0.000082 0.372570 7.518334
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN2: N2(beta) = ECFG(3, 2, beta)/ECFG(2, 1, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N2 obs
+ 0.100 0.551800
+ 0.200 0.534652
+ 0.500 0.487710
+ 1.000 0.434746
+ 1.500 0.401351
+ 2.000 0.372570
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN3: N3(beta) = ECFG(4, 2, beta)/ECFG(3, 1, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N3 obs
+ 0.100 1.506192
+ 0.200 1.521253
+ 0.500 1.598907
+ 1.000 1.977674
+ 1.500 3.333270
+ 2.000 7.518334
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorMseries: M_i(beta) = ECFG(i+1, 1, beta)/ECFN(i, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.265387 0.225134 0.151350
+ 0.200 0.166811 0.206335 0.146685
+ 0.500 0.045407 0.149607 0.131015
+ 1.000 0.007469 0.069878 0.099880
+ 1.500 0.001975 0.025930 0.065823
+ 2.000 0.000758 0.009248 0.036027
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorM2: M2(beta) = ECFG(3, 1, beta)/ECFG(3, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta M2 obs
+ 0.100 0.225134
+ 0.200 0.206335
+ 0.500 0.149607
+ 1.000 0.069878
+ 1.500 0.025930
+ 2.000 0.009248
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorCseries: C_i(beta) = ECFN(i-1, beta)*ECFN(i+1, beta)/ECFN(i, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.2653865755 0.3708178471 0.4358031826
+ 0.200 0.1668106769 0.2531859580 0.3215882713
+ 0.500 0.0454071552 0.1138884647 0.2150035566
+ 1.000 0.0074693640 0.0799967491 0.2142068062
+ 1.500 0.0019753776 0.0888095113 0.1793603915
+ 2.000 0.0007579352 0.1015545382 0.1138668084
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorUseries: U_i(beta) = ECFG(i+1, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.2653865755 0.0597476192 0.0090428096
+ 0.200 0.1668106769 0.0344188111 0.0050487063
+ 0.500 0.0454071552 0.0067932369 0.0008900155
+ 1.000 0.0074693640 0.0005219446 0.0000521319
+ 1.500 0.0019753776 0.0000512213 0.0000033715
+ 2.000 0.0007579352 0.0000070092 0.0000002525
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU1: U1(beta) = ECFG(2, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta U1 obs
+ 0.100 0.2653865755
+ 0.200 0.1668106769
+ 0.500 0.0454071552
+ 1.000 0.0074693640
+ 1.500 0.0019753776
+ 2.000 0.0007579352
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU2: U2(beta) = ECFG(3, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta U2 obs
+ 0.100 0.0597476192
+ 0.200 0.0344188111
+ 0.500 0.0067932369
+ 1.000 0.0005219446
+ 1.500 0.0000512213
+ 2.000 0.0000070092
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU3: U3(beta) = ECFG(4, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta U3 obs
+ 0.100 0.0090428096
+ 0.200 0.0050487063
+ 0.500 0.0008900155
+ 1.000 0.0000521319
+ 1.500 0.0000033715
+ 2.000 0.0000002525
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelator: ECF(N,beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 (GeV) N=2 (GeV^2) N=3 (GeV^3) N=4 (GeV^4) N=5 (GeV^5)
+ 0.100 910.03 163661.63 1.08582e+07 3.40995e+08 5.90794e+09
+ 0.200 910.03 111307.49 3.95012e+06 5.96384e+07 4.78368e+08
+ 0.500 910.03 40470.38 446453 2.14768e+06 5.56487e+06
+ 1.000 910.03 13863.90 65435.2 142223 166409
+ 1.500 910.03 8417.59 26549 39560.1 31484.2
+ 2.000 910.03 6328.24 16871.1 21082 13743.6
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorRatio: r_N^(beta) = ECF(N+1,beta)/ECF(N,beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=0 (GeV) N=1 (GeV) N=2 (GeV) N=3 (GeV) N=4 (GeV)
+ 0.100 910.0320 179.8416 66.3456 31.4043 17.3256
+ 0.200 910.0320 122.3116 35.4884 15.0979 8.02115
+ 0.500 910.0320 44.4714 11.0316 4.81054 2.59111
+ 1.000 910.0320 15.2345 4.71983 2.17349 1.17006
+ 1.500 910.0320 9.2498 3.15399 1.49008 0.795857
+ 2.000 910.0320 6.9539 2.66601 1.24959 0.651912
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorDoubleRatio: C_N^(beta) = r_N^(beta)/r_{N-1}^(beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 0.197621 0.368911 0.473344 0.551696
+ 0.200 0.134404 0.290147 0.425431 0.531277
+ 0.500 0.048868 0.248061 0.436069 0.538632
+ 1.000 0.016741 0.309811 0.460503 0.538330
+ 1.500 0.010164 0.340980 0.472444 0.534103
+ 2.000 0.007641 0.383385 0.468712 0.521701
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC1: C_1^(beta) = ECF(2,beta)/ECF(1,beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta C1 obs
+ 0.100 0.197621
+ 0.200 0.134404
+ 0.500 0.048868
+ 1.000 0.016741
+ 1.500 0.010164
+ 2.000 0.007641
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC2: C_2^(beta) = ECF(3,beta)*ECF(1,beta)/ECF(2,beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta C2 obs
+ 0.100 0.368911
+ 0.200 0.290147
+ 0.500 0.248061
+ 1.000 0.309811
+ 1.500 0.340980
+ 2.000 0.383385
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorD2: D_2^(beta) = ECF(3,beta)*ECF(1,beta)^3/ECF(2,beta)^3 with pt_R
+-------------------------------------------------------------------------------------
+ beta D2 obs
+ 0.100 1.866758
+ 0.200 2.158775
+ 0.500 5.076145
+ 1.000 18.506536
+ 1.500 33.547049
+ 2.000 50.172493
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralizedD2: D_2^(alpha, beta) = ECFN(3,alpha)/ECFN(2,beta)^(3*alpha/beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta alpha = 0.100 alpha = 0.200 alpha = 0.500 alpha = 1.000
+ 0.200 0.292397 2.15878 2039.5 1.02914e+09
+ 0.500 0.0881403 0.196161 5.07615 6375.25
+ 1.000 0.0491425 0.0609786 0.273494 18.5065
+ 1.500 0.0360723 0.0328557 0.0582816 0.840412
+ 2.000 0.0299305 0.0226199 0.0229208 0.129983
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized (angles = N Choose 2): ECFN(N, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 1.00 0.1976212201 0.0144075072 0.0004971883
+ 0.200 1.00 0.1344036550 0.0052413202 0.0000869560
+ 0.500 1.00 0.0488679347 0.0005923876 0.0000031314
+ 1.000 1.00 0.0167406417 0.0000868243 0.0000002074
+ 1.500 1.00 0.0101642297 0.0000352272 0.0000000577
+ 2.000 1.00 0.0076413374 0.0000223859 0.0000000307
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized: ECFG(angles, N, beta=1) with pt_R
+-------------------------------------------------------------------------------------
+ angles N=1 N=2 N=3 N=4
+ 1 1.00 0.0167406417 0.0005149099 0.0000275956
+ 2 0.0001201519 0.0000010521
+ 3 0.0000868243 0.0000003239
+ 4 0.0000002207
+ 5 0.0000001864
+ 6 0.0000002074
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorNseries: N_i(beta) = ECFG(i+1, 2, beta)/ECFG(i, 1, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.134404 0.501515 2.093230
+ 0.200 0.066590 0.490962 2.107355
+ 0.500 0.016741 0.472128 2.270271
+ 1.000 0.007641 0.428733 3.968204
+ 1.500 0.005197 0.367850 11.456776
+ 2.000 0.003938 0.329248 20.513687
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN2: N2(beta) = ECFG(3, 2, beta)/ECFG(2, 1, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N2 obs
+ 0.100 0.501515
+ 0.200 0.490962
+ 0.500 0.472128
+ 1.000 0.428733
+ 1.500 0.367850
+ 2.000 0.329248
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN3: N3(beta) = ECFG(4, 2, beta)/ECFG(3, 1, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N3 obs
+ 0.100 2.093230
+ 0.200 2.107355
+ 0.500 2.270271
+ 1.000 3.968204
+ 1.500 11.456776
+ 2.000 20.513687
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorMseries: M_i(beta) = ECFG(i+1, 1, beta)/ECFN(i, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.197621 0.140440 0.090587
+ 0.200 0.134404 0.127907 0.086996
+ 0.500 0.048868 0.087042 0.076041
+ 1.000 0.016741 0.030758 0.053593
+ 1.500 0.010164 0.010637 0.025871
+ 2.000 0.007641 0.005839 0.009492
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorM2: M2(beta) = ECFG(3, 1, beta)/ECFG(3, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta M2 obs
+ 0.100 0.140440
+ 0.200 0.127907
+ 0.500 0.087042
+ 1.000 0.030758
+ 1.500 0.010637
+ 2.000 0.005839
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorCseries: C_i(beta) = ECFN(i-1, beta)*ECFN(i+1, beta)/ECFN(i, beta)^2 with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.1976212201 0.3689110739 0.4733439247
+ 0.200 0.1344036550 0.2901472976 0.4254309496
+ 0.500 0.0488679347 0.2480607340 0.4360689366
+ 1.000 0.0167406417 0.3098112813 0.4605028221
+ 1.500 0.0101642297 0.3409799143 0.4724436009
+ 2.000 0.0076413374 0.3833849510 0.4687122507
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorUseries: U_i(beta) = ECFG(i+1, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.1976212201 0.0277540195 0.0025141656
+ 0.200 0.1344036550 0.0171911179 0.0014955586
+ 0.500 0.0488679347 0.0042535497 0.0003234433
+ 1.000 0.0167406417 0.0005149099 0.0000275956
+ 1.500 0.0101642297 0.0001081211 0.0000027972
+ 2.000 0.0076413374 0.0000446167 0.0000004235
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU1: U1(beta) = ECFG(2, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta U1 obs
+ 0.100 0.1976212201
+ 0.200 0.1344036550
+ 0.500 0.0488679347
+ 1.000 0.0167406417
+ 1.500 0.0101642297
+ 2.000 0.0076413374
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU2: U2(beta) = ECFG(3, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta U2 obs
+ 0.100 0.0277540195
+ 0.200 0.0171911179
+ 0.500 0.0042535497
+ 1.000 0.0005149099
+ 1.500 0.0001081211
+ 2.000 0.0000446167
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU3: U3(beta) = ECFG(4, 1, beta) with pt_R
+-------------------------------------------------------------------------------------
+ beta U3 obs
+ 0.100 0.0025141656
+ 0.200 0.0014955586
+ 0.500 0.0003234433
+ 1.000 0.0000275956
+ 1.500 0.0000027972
+ 2.000 0.0000004235
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelator: ECF(N,beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 (GeV) N=2 (GeV^2) N=3 (GeV^3) N=4 (GeV^4) N=5 (GeV^5)
+ 0.100 934.39 173035.93 1.18699e+07 3.87688e+08 7.03067e+09
+ 0.200 934.39 117791.85 4.35182e+06 6.9149e+07 5.87495e+08
+ 0.500 934.39 43220.34 507379 2.59e+06 7.00209e+06
+ 1.000 934.39 15182.02 75656.7 165116 178354
+ 1.500 934.39 9296.03 30143 40417 24563.7
+ 2.000 934.39 6943.30 18259.8 17679.3 7116.38
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorRatio: r_N^(beta) = ECF(N+1,beta)/ECF(N,beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=0 (GeV) N=1 (GeV) N=2 (GeV) N=3 (GeV) N=4 (GeV)
+ 0.100 934.3868 185.1866 68.5978 32.6615 18.1349
+ 0.200 934.3868 126.0633 36.945 15.8896 8.49608
+ 0.500 934.3868 46.2553 11.7394 5.10466 2.70351
+ 1.000 934.3868 16.2481 4.98331 2.18244 1.08017
+ 1.500 934.3868 9.9488 3.24257 1.34084 0.607757
+ 2.000 934.3868 7.4309 2.62985 0.968209 0.402525
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorDoubleRatio: C_N^(beta) = r_N^(beta)/r_{N-1}^(beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 0.198191 0.370425 0.476130 0.555237
+ 0.200 0.134916 0.293067 0.430089 0.534693
+ 0.500 0.049503 0.253795 0.434833 0.529617
+ 1.000 0.017389 0.306701 0.437950 0.494940
+ 1.500 0.010647 0.325926 0.413512 0.453265
+ 2.000 0.007953 0.353909 0.368161 0.415742
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC1: C_1^(beta) = ECF(2,beta)/ECF(1,beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta C1 obs
+ 0.100 0.198191
+ 0.200 0.134916
+ 0.500 0.049503
+ 1.000 0.017389
+ 1.500 0.010647
+ 2.000 0.007953
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorC2: C_2^(beta) = ECF(3,beta)*ECF(1,beta)/ECF(2,beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta C2 obs
+ 0.100 0.370425
+ 0.200 0.293067
+ 0.500 0.253795
+ 1.000 0.306701
+ 1.500 0.325926
+ 2.000 0.353909
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorD2: D_2^(beta) = ECF(3,beta)*ECF(1,beta)^3/ECF(2,beta)^3 with E_theta
+-------------------------------------------------------------------------------------
+ beta D2 obs
+ 0.100 1.869035
+ 0.200 2.172229
+ 0.500 5.126818
+ 1.000 17.637552
+ 1.500 30.610782
+ 2.000 44.502015
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralizedD2: D_2^(alpha, beta) = ECFN(3,alpha)/ECFN(2,beta)^(3*alpha/beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta alpha = 0.100 alpha = 0.200 alpha = 0.500 alpha = 1.000
+ 0.200 0.293612 2.17223 2081.08 1.03834e+09
+ 0.500 0.0883254 0.196576 5.12682 6301.71
+ 1.000 0.0490663 0.0606632 0.27123 17.6376
+ 1.500 0.0360925 0.0328242 0.0584128 0.818048
+ 2.000 0.0300462 0.0227477 0.0233544 0.130767
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized (angles = N Choose 2): ECFN(N, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3 N=4
+ 0.100 1.00 0.1981905437 0.0145501117 0.0005085991
+ 0.200 1.00 0.1349155085 0.0053344701 0.0000907149
+ 0.500 1.00 0.0495033749 0.0006219455 0.0000033978
+ 1.000 1.00 0.0173890665 0.0000927400 0.0000002166
+ 1.500 1.00 0.0106474132 0.0000369493 0.0000000530
+ 2.000 1.00 0.0079526591 0.0000223829 0.0000000232
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorGeneralized: ECFG(angles, N, beta=1) with E_theta
+-------------------------------------------------------------------------------------
+ angles N=1 N=2 N=3 N=4
+ 1 1.00 0.0173890665 0.0005243822 0.0000276026
+ 2 0.0001290539 0.0000011436
+ 3 0.0000927400 0.0000003720
+ 4 0.0000002479
+ 5 0.0000002021
+ 6 0.0000002166
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorNseries: N_i(beta) = ECFG(i+1, 2, beta)/ECFG(i, 1, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.134916 0.502292 2.091587
+ 0.200 0.067180 0.491827 2.107891
+ 0.500 0.017389 0.472830 2.289141
+ 1.000 0.007953 0.426794 4.159019
+ 1.500 0.005251 0.366194 11.630367
+ 2.000 0.003828 0.328039 19.240170
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN2: N2(beta) = ECFG(3, 2, beta)/ECFG(2, 1, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N2 obs
+ 0.100 0.502292
+ 0.200 0.491827
+ 0.500 0.472830
+ 1.000 0.426794
+ 1.500 0.366194
+ 2.000 0.328039
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorN3: N3(beta) = ECFG(4, 2, beta)/ECFG(3, 1, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N3 obs
+ 0.100 2.091587
+ 0.200 2.107891
+ 0.500 2.289141
+ 1.000 4.159019
+ 1.500 11.630367
+ 2.000 19.240170
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorMseries: M_i(beta) = ECFG(i+1, 1, beta)/ECFN(i, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.198191 0.140807 0.091081
+ 0.200 0.134916 0.127947 0.087436
+ 0.500 0.049503 0.086121 0.076197
+ 1.000 0.017389 0.030156 0.052638
+ 1.500 0.010647 0.010921 0.024416
+ 2.000 0.007953 0.006325 0.009110
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorM2: M2(beta) = ECFG(3, 1, beta)/ECFG(3, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta M2 obs
+ 0.100 0.140807
+ 0.200 0.127947
+ 0.500 0.086121
+ 1.000 0.030156
+ 1.500 0.010921
+ 2.000 0.006325
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorCseries: C_i(beta) = ECFN(i-1, beta)*ECFN(i+1, beta)/ECFN(i, beta)^2 with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.1981905437 0.3704251544 0.4761303115
+ 0.200 0.1349155085 0.2930674174 0.4300888197
+ 0.500 0.0495033749 0.2537948134 0.4348330516
+ 1.000 0.0173890665 0.3067005727 0.4379497669
+ 1.500 0.0106474132 0.3259256469 0.4135119649
+ 2.000 0.0079526591 0.3539093501 0.3681613681
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorUseries: U_i(beta) = ECFG(i+1, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta N=1 N=2 N=3
+ 0.100 0.1981905437 0.0279066279 0.0025417550
+ 0.200 0.1349155085 0.0172619856 0.0015093221
+ 0.500 0.0495033749 0.0042632685 0.0003248489
+ 1.000 0.0173890665 0.0005243822 0.0000276026
+ 1.500 0.0106474132 0.0001162849 0.0000028392
+ 2.000 0.0079526591 0.0000503042 0.0000004582
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU1: U1(beta) = ECFG(2, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta U1 obs
+ 0.100 0.1981905437
+ 0.200 0.1349155085
+ 0.500 0.0495033749
+ 1.000 0.0173890665
+ 1.500 0.0106474132
+ 2.000 0.0079526591
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU2: U2(beta) = ECFG(3, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta U2 obs
+ 0.100 0.0279066279
+ 0.200 0.0172619856
+ 0.500 0.0042632685
+ 1.000 0.0005243822
+ 1.500 0.0001162849
+ 2.000 0.0000503042
+-------------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------------
+EnergyCorrelatorU3: U3(beta) = ECFG(4, 1, beta) with E_theta
+-------------------------------------------------------------------------------------
+ beta U3 obs
+ 0.100 0.0025417550
+ 0.200 0.0015093221
+ 0.500 0.0003248489
+ 1.000 0.0000276026
+ 1.500 0.0000028392
+ 2.000 0.0000004582
+-------------------------------------------------------------------------------------
+
Index: contrib/contribs/EnergyCorrelator/tags/1.3.2/ChangeLog
===================================================================
--- contrib/contribs/EnergyCorrelator/tags/1.3.2/ChangeLog (revision 0)
+++ contrib/contribs/EnergyCorrelator/tags/1.3.2/ChangeLog (revision 1393)
@@ -0,0 +1,321 @@
+2024-02-22 Jesse Thaler
+
+ * NEWS
+ * VERSION
+ Preparing for 1.3.2 release
+
+ * Makefile
+ Removed extraneous "-lm"
+
+ * example.cc
+ * example.ref
+ Changed some of the print formats from "f" to "g" to minimize floating point
+ rounding issues
+
+2018-02-08 Jesse Thaler
+
+ * NEWS
+ * VERSION
+ Making 1.3.1
+
+
+2018-02-08 Lina Necib
+
+ * EnergyCorrelator.cc
+ Debugging memory allocation, deleting energyStore/angleStore properly this time
+
+
+2018-02-04 Lina Necib
+
+ * EnergyCorrelator.cc
+ Debugging memory allocation, deleting energyStore/angleStore
+
+ * VERSION
+ Making 1.3.1-devel
+
+2018-01-09 Jesse Thaler
+
+ * NEWS
+ * VERSION
+ Finalizing 1.3.0
+
+2018-01-09 Lina Necib
+
+ * NEWS
+ Preparing for version candidate
+
+ * VERSION
+ Making 1.3.0-rc1
+
+2018-01-07 Lina Necib
+
+ * EnergyCorrelator.hh/cc
+ Sped up evaluations of ECFs.
+ Functions are defined in ECFs and called to evaluate ECFGs.
+
+ * VERSION
+ Making 1.2.3-devel
+
+
+2018-01-04 Lina Necib
+
+ * EnergyCorrelator.hh/cc
+ Sped up evaluations of ECFG by a factor of 4.
+ Refactored some of the code in functions
+
+ * VERSION
+ Making 1.2.2-devel
+
+ * example.cc
+ Added some timings tests for ECFGs, N2, and N3.
+
+
+2017-01-25 Jesse Thaler
+
+ * EnergyCorrelator.hh/cc
+ Converting all _N to unsigned integers, removing _N < 0 warning
+ Added warning to constructors for N < 1 in some cases.
+
+ * VERSION
+ Making 1.2.1-devel
+
+ * Makefile
+ Added -Wextra to compiler flags
+
+2016-10-07 Jesse Thaler
+
+ * AUTHORS/COPYING:
+ Updated the publication arXiv number to 1609.07483.
+
+ * EnergyCorrelator.hh
+ Fixed typo in EnergyCorrelatorGeneralized description
+
+ * NEWS
+ Added "USeries" to news.
+
+ * VERSION
+ Changed version to 1.2.0
+
+2016-09-27 Lina Necib
+
+ * EnergyCorrelator.hh/README
+ Updated the publication arXiv number to 1609.07483.
+
+2016-09-23 Lina Necib
+
+ * EnergyCorrelator.cc
+ Made the evaluation of ECFG faster by replacing sort -> partial_sort and simplified multiplication syntax
+ * example.cc/ref
+ Fixed minor typo
+ * VERSION
+ Changed version to 1.2.0-rc3
+
+2016-09-23 Lina Necib
+
+ * EnergyCorrelator.hh
+ Fixed minor doxygen typo
+ * example.cc/ref
+ Changed EnergyCorrelatorNormalized -> EnergyCorrelatorGeneralized in function explanations
+ * VERSION
+ Changed version to 1.2.0-rc2
+
+2016-09-22 Jesse Thaler
+
+ * EnergyCorrelator.cc/hh
+ Renamed EnergyCorrelatorNormalized -> EnergyCorrelatorGeneralized
+ Changed order of arguments for EnergyCorrelatorGeneralized
+ Updated doxygen documentation
+ * example_basic_usage.cc
+ Changed EnergyCorrelatorNormalized -> EnergyCorrelatorGeneralized
+ * README
+ Updated for EnergyCorrelatorGeneralized
+
+2016-09-15 Lina Necib
+
+ *VERSION:
+ 1.2.0-rc1
+
+2016-08-24 Jesse Thaler
+
+ Minor comment fixes throughout.
+
+ * EnergyCorrelator.cc/hh
+ Put in _helper_correlator when defining overall normalization
+ Removed angle error for result_all_angles()
+ *NEWS:
+ Made this more readable.
+ *README:
+ Clarified some of the documentation.
+
+2016-08-23 Lina Necib
+
+ *VERSION:
+ *NEWS:
+ *AUTHORS:
+ *COPYING:
+ *README:
+ *EnergyCorrelator.cc
+ Added if statement that the ECF and ECFNs return exactly zero
+ if the number of particles is less than N of the ECF.
+ *EnergyCorrelator.hh
+ *example.cc
+ *example_basic_usage.cc
+ Updated this example.
+
+2016-08-21 Lina Necib
+
+ *VERSION:
+ *NEWS:
+ *AUTHORS:
+ *COPYING:
+ *README:
+ *EnergyCorrelator.cc
+ Added Cseries.
+ *EnergyCorrelator.hh
+ Added Cseries.
+ *example.cc
+ Added example of Cseries
+ *example_basic_usage.cc
+ Simplified examples.
+
+2016-08-17 Lina Necib
+
+ *VERSION:
+ *NEWS:
+ *AUTHORS:
+ Added placeholder for new reference
+ *COPYING:
+ Added placeholder for new reference
+ *README:
+ added information on different measures E_inv
+ *EnergyCorrelator.cc
+ Minor text edits + added comments
+ *EnergyCorrelator.hh
+ Minor text edits + added comments
+ *example_basic_usage.cc
+ added a simplified example file that shows the use of the
+ different observables.
+
+
+2016-06-23 Lina Necib
+
+ *VERSION:
+ 1.2.0-alpha0
+ *NEWS:
+ *AUTHORS:
+ Lina Necib
+ *COPYING:
+ *README:
+ added descriptions of functions that will appear shortly
+ arXiv:160X.XXXXX
+
+ *EnergyCorrelator.cc
+ added code to calculate normalized ECFS.
+ *EnergyCorrelator.hh
+ added code to calculate normalized ECFS, Nseries, generalized
+ D2, N2, N3, and M2.
+
+ *example.cc
+ added calculation of normalized ECFS, Nseries, generalized
+ D2, N2, N3, and M2 to example file.
+
+
+2014-11-20 Jesse Thaler
+
+ * README:
+ Typos fixed
+
+2014-11-13 Andrew Larkoski
+
+ *VERSION:
+ *NEWS:
+ release of version 1.1.0
+
+ *AUTHORS:
+ *COPYING:
+ *README:
+ added reference to arXiv:1409.6298.
+
+ *EnergyCorrelator.cc
+ *EnergyCorrelator.hh
+ added code to calculate C1, C2, and D2 observables.
+
+ *example.cc
+ added calculation of C1, C2, and D2 to example file.
+
+2013-05-01 Gavin Salam
+
+ * VERSION:
+ * NEWS:
+ release of version 1.0.1
+
+ * README:
+ updated to reflect v1.0 interface.
+
+2013-05-01 Jesse Thaler
+
+ * EnergyCorrelator.cc
+ Switched from NAN to std::numeric_limits::quiet_NaN()
+
+2013-04-30 Jesse Thaler
+
+ * EnergyCorrelator.cc
+ Implemented Gregory Soyez's suggestions on errors/asserts
+
+2013-04-30 Gavin Salam
+
+ * VERSION:
+ * NEWS:
+ released v. 1.0.0
+
+ * EnergyCorrelator.hh:
+ * example.cc
+ small changes to documentation to reflect the change below + an
+ gave an explicit command-line in the example.
+
+2013-04-29 Jesse Thaler
+
+ * EnergyCorrelator.cc
+ - Added support for N = 5
+
+ * example.cc|.ref
+ - Added N = 5 to test suite.
+
+2013-04-29 Gavin Salam
+
+ * EnergyCorrelator.hh|cc:
+ - reduced memory usage from roughly 8n^2 to 4n^2 bytes (note that
+ sums are now performed in a different order, so results may
+ change to within rounding error).
+
+ - Implemented description() for all three classes.
+
+ - Worked on doxygen-style comments and moved some bits of code into
+ the .cc file.
+
+ * Doxyfile: *** ADDED ***
+
+ * example.cc:
+ developers' timing component now uses clock(), to get
+ finer-grained timing, and also outputs a description for some of
+ the correlators being used.
+
+2013-04-26 + 04-27 Jesse Thaler
+
+ * EnergyCorrelator.hh|cc:
+ added temporary storage array for interparticle angles, to speed
+ up the energy correlator calculation for N>2
+
+ * example.cc
+ has internal option for printing out timing info.
+
+2013-04-26 Gavin Salam + Jesse & Andrew
+
+ * Makefile:
+ added explicit dependencies
+
+ * example.cc (analyze):
+ added a little bit of commented code for timing tests.
+
+2013-03-10
+ Initial creation
Index: contrib/contribs/EnergyCorrelator/tags/1.3.2/COPYING
===================================================================
--- contrib/contribs/EnergyCorrelator/tags/1.3.2/COPYING (revision 0)
+++ contrib/contribs/EnergyCorrelator/tags/1.3.2/COPYING (revision 1393)
@@ -0,0 +1,360 @@
+The EnergyCorrelator contrib to FastJet is released
+under the terms of the GNU General Public License v2 (GPLv2).
+
+A copy of the GPLv2 is to be found at the end of this file.
+
+While the GPL license grants you considerable freedom, please bear in
+mind that this code's use falls under guidelines similar to those that
+are standard for Monte Carlo event generators
+(http://www.montecarlonet.org/GUIDELINES). In particular, if you use
+this code as part of work towards a scientific publication, whether
+directly or contained within another program you should include a citation
+to
+
+ arXiv:1305.0007
+ arXiv:1409.6298
+ arXiv:1609.07483
+
+======================================================================
+======================================================================
+======================================================================
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: contrib/contribs/EnergyCorrelator/tags/1.3.2
===================================================================
--- contrib/contribs/EnergyCorrelator/tags/1.3.2 (revision 1392)
+++ contrib/contribs/EnergyCorrelator/tags/1.3.2 (revision 1393)
Property changes on: contrib/contribs/EnergyCorrelator/tags/1.3.2
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,5 ##
+example
+
+Makefile.bak
+
+html