FastJet 3.0alpha3
Subtractor.hh
00001 //STARTHEADER
00002 // $Id: Subtractor.hh 2188 2011-05-31 15:44:46Z soyez $
00003 //
00004 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin Salam and Gregory Soyez
00005 //
00006 //----------------------------------------------------------------------
00007 // This file is part of FastJet.
00008 //
00009 //  FastJet is free software; you can redistribute it and/or modify
00010 //  it under the terms of the GNU General Public License as published by
00011 //  the Free Software Foundation; either version 2 of the License, or
00012 //  (at your option) any later version.
00013 //
00014 //  The algorithms that underlie FastJet have required considerable
00015 //  development and are described in hep-ph/0512210. If you use
00016 //  FastJet as part of work towards a scientific publication, please
00017 //  include a citation to the FastJet paper.
00018 //
00019 //  FastJet is distributed in the hope that it will be useful,
00020 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00021 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00022 //  GNU General Public License for more details.
00023 //
00024 //  You should have received a copy of the GNU General Public License
00025 //  along with FastJet; if not, write to the Free Software
00026 //  Foundation, Inc.:
00027 //      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00028 //----------------------------------------------------------------------
00029 //ENDHEADER
00030 
00031 #ifndef __FASTJET_TOOLS_SUBTRACTOR_HH__
00032 #define __FASTJET_TOOLS_SUBTRACTOR_HH__
00033 
00034 #include <fastjet/tools/Transformer.hh> // to derive Subtractor from Transformer
00035 #include <fastjet/tools/BackgroundEstimator.hh> // used as a ctor argument
00036 
00037 FASTJET_BEGIN_NAMESPACE     // defined in fastjet/internal/base.hh
00038 
00039 
00040 //----------------------------------------------------------------------
00041 /// @ingroup tools
00042 /// \class Subtractor
00043 /// Class that helps performing jet background subtraction
00044 ///
00045 /// This class is nothing but a transformer that makes use of the
00046 /// BackgroundEstimator introduced above to subtract the background 
00047 /// from the jet.
00048 ///
00049 /// \section desc Options
00050 /// 
00051 /// The constructor takes as an argument a BackgroundEstimator.
00052 ///
00053 /// \section input Input conditions
00054 /// 
00055 ///  - the original jet must have area support (4-vector)
00056 ///
00057 /// \section output Output/interface
00058 /// 
00059 ///  The structure of the jet is not modified.
00060 ///
00061 class Subtractor : public Transformer{
00062 public:
00063   /// define a subtractor based on a BackgroundEstimator
00064   Subtractor(BackgroundEstimator * bge) : 
00065     _bge(bge) {}
00066 
00067   /// default dtor
00068   virtual ~Subtractor(){};
00069 
00070   /// returns a jet that's subtracted
00071   ///
00072   /// \param jet    the jet that is to be subtracted
00073   /// \return       the subtracted jet
00074   virtual PseudoJet result(const PseudoJet & jet) const;
00075 
00076   /// class description
00077   virtual std::string description() const{
00078     return "Subtractor";
00079   }
00080 
00081 protected:
00082   /// the tool used to estimate the background
00083   /// if has to be mutable in case its underlying selector takes a reference jet
00084   mutable BackgroundEstimator * _bge;
00085 };
00086 
00087 FASTJET_END_NAMESPACE
00088 
00089 #endif  // __FASTJET_TOOLS_SUBTRACTOR_HH__
00090 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends