// $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_SHAPE_WITH_PARTITION_HH__ #define __FASTJET_CONTRIB_SHAPE_WITH_PARTITION_HH__ #include "fastjet/FunctionOfPseudoJet.hh" FASTJET_BEGIN_NAMESPACE namespace contrib{ //------------------------------------------------------------------------ /// \class ShapeWithPartition /// /// This class describes a shape where the partitioning has been /// disconnected from the result of the shape (obtained from that /// pre-computed partition) /// /// This is meant to be a helper for operations in which we want to /// recompute the result several times while keeping the partition /// fixed (such as GenericSubtraction for which this would avoid any /// back-reaction effect) class ShapeWithPartition : public FunctionOfPseudoJet{ public: /// just a reminder that one has to define this too in derived classes virtual std::string description() const = 0; /// compute the partition associated with a given jet. /// It is returned under the form of a composite jet. virtual PseudoJet partition(const PseudoJet &jet) const = 0; /// return the result of the shape computed from a given partition virtual double result_from_partition(const PseudoJet &partit) const = 0; /// the overall result of the shape. This is nothing that the /// "result_from_partition" obtained from the partition of the given /// jet. virtual double result(const PseudoJet &jet) const{ return result_from_partition(partition(jet)); } }; } // namespace contrib FASTJET_END_NAMESPACE #endif // __FASTJET_CONTRIB_SHAPE_WITH_PARTITION_HH__