// $Id$ // // Copyright (c) 2012-, Matteo Cacciari, Jihun Kim, Gavin P. Salam and Gregory Soyez // //---------------------------------------------------------------------- // 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 . //---------------------------------------------------------------------- #ifndef __FASTJET_CONTRIB_EXAMPLE_SHAPES_HH__ #define __FASTJET_CONTRIB_EXAMPLE_SHAPES_HH__ #include "fastjet/FunctionOfPseudoJet.hh" #include "ShapeWithPartition.hh" FASTJET_BEGIN_NAMESPACE namespace contrib{ //------------------------------------------------------------------------ // a series of simple shapes: // - Pt // - ScalarPt // - Mt // - Mass // - MassSquare //------------------------------------------------------------------------ /// the jet transverse momentum class Pt : public FunctionOfPseudoJet{ public: virtual std::string description() const{return "jet pt";} virtual double result(const PseudoJet &jet) const{ return jet.pt();} }; /// the jet scalar transverse momentum class ScalarPt : public FunctionOfPseudoJet{ public: virtual std::string description() const{return "jet scalar pt";} virtual double result(const PseudoJet &jet) const; }; /// the transverse mass class Mt : public FunctionOfPseudoJet{ public: virtual std::string description() const{return "jet transverse mass";} virtual double result(const PseudoJet &jet) const{ return jet.mt();} }; /// the jet mass class Mass : public FunctionOfPseudoJet{ public: virtual std::string description() const{return "jet mass";} virtual double result(const PseudoJet &jet) const{ return jet.m();} }; /// the jet mass squared class MassSquare : public FunctionOfPseudoJet{ public: virtual std::string description() const{return "jet mass squared";} virtual double result(const PseudoJet &jet) const{ return jet.m2();} }; //------------------------------------------------------------------------ /// the of the kt distance between the 2 kt subjets class KtDij : public ShapeWithPartition{ public: virtual std::string description() const{return "kt distance between the 2 kt subjets";} virtual PseudoJet partition(const PseudoJet &jet) const; virtual double result_from_partition(const PseudoJet &partit) const; }; //------------------------------------------------------------------------ /// angularities /// /// This is defined as /// \f[ /// \theta^{(\alpha)} = 1/{\tilde p_t} \sum_i p_{ti} \Delta R_{i,jet}^{2-\alpha} /// \f] class Angularity : public FunctionOfPseudoJet{ public: /// default ctor Angularity(double alpha=1.0) : _alpha(alpha){} /// description virtual std::string description() const; /// compute the function virtual double result(const PseudoJet &jet) const; protected: double _alpha; }; /// angularities: numerator /// /// Angularities are defined as /// \f[ /// \theta^{(\alpha)} = 1/pttilde \sum_i p_{ti} \Delta R_{i,jet}^{2-\alpha} /// \f] /// this calss computes just the numerator class AngularityNumerator : public FunctionOfPseudoJet{ public: /// default ctor AngularityNumerator(double alpha=1.0) : _alpha(alpha){} /// description virtual std::string description() const; /// compute the function virtual double result(const PseudoJet &jet) const; protected: double _alpha; }; /// Energy-energy correlators /// /// Defined as /// \f[ /// \tau_EEC = \sum_{i,j} p_ti p_tj \theta_{ij}^\beta / p_t^2 /// \f] class TauEEC : public FunctionOfPseudoJet{ public: /// default ctor TauEEC(double i_beta=1.0) : _beta(i_beta){} /// description virtual std::string description() const; double beta() const {return _beta;} /// compute the function virtual double result(const PseudoJet &jet) const; protected: double _beta; }; //------------------------------------------------------------------------ /// Energy-energy correlators: numerator /// /// Defined as /// \f[ /// \tau_EEC = \sum_{i,j} p_ti p_tj \theta_{ij}^\beta / p_t^2 /// \f] class TauEECNumerator : public ShapeWithPartition{ public: /// default ctor TauEECNumerator(double beta=1.0) : _beta(beta){} /// description virtual std::string description() const; /// compute the function virtual double result(const PseudoJet &jet) const; protected: double _beta; }; // a quick coding of the "numerator" of N-subjettiness class NSubjettinessNumerator : public ShapeWithPartition{ public: NSubjettinessNumerator(unsigned int N) : _N(N){} virtual std::string description() const{ return "N-subjettiness numerator";} /// compute the partition associated with a given jet virtual PseudoJet partition(const PseudoJet &jet) const; /// compute the shape from the partition virtual double result_from_partition(const PseudoJet &partit) const; protected: const unsigned int _N; }; } // namespace contrib FASTJET_END_NAMESPACE #endif // __FASTJET_CONTRIB_EXAMPLE_SHAPES_HH__