Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:15:33

0001 // -*- C++ -*-
0002 ///////////////////////////////////////////////////////////////////////////////
0003 // File: area.h                                                              //
0004 // Description: header file for the computation of jet area                  //
0005 // This file is part of the SISCone project.                                 //
0006 // For more details, see http://projects.hepforge.org/siscone                //
0007 //                                                                           //
0008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez                          //
0009 //                                                                           //
0010 // This program is free software; you can redistribute it and/or modify      //
0011 // it under the terms of the GNU General Public License as published by      //
0012 // the Free Software Foundation; either version 2 of the License, or         //
0013 // (at your option) any later version.                                       //
0014 //                                                                           //
0015 // This program is distributed in the hope that it will be useful,           //
0016 // but WITHOUT ANY WARRANTY; without even the implied warranty of            //
0017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             //
0018 // GNU General Public License for more details.                              //
0019 //                                                                           //
0020 // You should have received a copy of the GNU General Public License         //
0021 // along with this program; if not, write to the Free Software               //
0022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
0023 //                                                                           //
0024 // $Revision:: 149                                                          $//
0025 // $Date:: 2007-03-15 00:13:58 +0100 (Thu, 15 Mar 2007)                     $//
0026 ///////////////////////////////////////////////////////////////////////////////
0027 
0028 #ifndef __SISCONE_AREA_H__
0029 #define __SISCONE_AREA_H__
0030 
0031 #include "momentum.h"
0032 #include "siscone.h"
0033 
0034 namespace siscone{
0035 
0036 /**
0037  * \class Cjet_area
0038  * real Jet information, including its area(s)
0039  *
0040  * This class contains information for one single jet. 
0041  * That is, first, its momentum carrying information
0042  * about its centre and pT, and second, its particle
0043  * contents.
0044  * Compared to the Cjet class, it also includes the 
0045  * passive and active areas of the jet computed using 
0046  * the Carea class.
0047  */
0048 class Cjet_area : public Cjet{
0049  public:
0050   /// default ctor
0051   Cjet_area();
0052 
0053   /// jet-initialised ctor
0054   Cjet_area(Cjet &j);
0055 
0056   /// default dtor
0057   ~Cjet_area();
0058 
0059   // area information
0060   double passive_area;   ///< passive area
0061   double active_area;    ///< active area
0062 };
0063 
0064 /**
0065  * \class Carea
0066  * class for the computation of jet areas.
0067  * 
0068  * This is the class user should use whenever you want to compute
0069  * the jet area (passive and active). .
0070  * It uses the SISCone algorithm to perform the jet analysis.
0071  */
0072 class Carea : public Csiscone{
0073  public:
0074   /// default ctor
0075   Carea();
0076 
0077   /// default dtor
0078   ~Carea();
0079 
0080   /**
0081    * compute the jet areas from a given particle set.
0082    * The parameters of this method are the ones which control the jet clustering alghorithn.
0083    * Note that the pt_min is not allowed here soince the jet-area determination involves soft 
0084    * particles/jets and thus is used internally.
0085    * \param _particles   list of particles
0086    * \param _radius      cone radius
0087    * \param _f           shared energy threshold for splitting&merging
0088    * \param _n_pass_max  maximum number of passes (0=full search, the default)
0089    * \param _split_merge_scale    the scale choice for the split-merge procedure
0090    *        NOTE: SM_pt leads to IR unsafety for some events with momentum conservation. 
0091    *              SM_Et is IR safe but not boost invariant and not implemented(!)
0092    *              SM_mt is IR safe for hadronic events, but not for decays of two 
0093    *                    back-to-back particles of identical mass
0094    *              SM_pttilde  
0095    *                    is always IR safe, and also boost invariant (default)
0096    * \param _hard_only  when this is set on, only hard jets are computed
0097    *                    and not the purely ghosted jets (default: false)
0098    * \return the number of jets (including pure-ghost ones if they are included)
0099    */
0100   int compute_areas(std::vector<Cmomentum> &_particles, double _radius, double _f, 
0101             int _n_pass_max=0, Esplit_merge_scale _split_merge_scale=SM_pttilde,
0102             bool _hard_only=false);
0103 
0104   /**
0105    * compute the jet active areas from a given particle set.
0106    * The parameters of this method are the ones which control the jet clustering alghorithn.
0107    * Note that the pt_min is not allowed here soince the jet-area determination involves soft 
0108    * particles/jets and thus is used internally.
0109    * See compute_areas for paramters definition.
0110    * \return the number of jets (including pure-ghost ones if they are included)
0111    */
0112   int compute_active_areas(std::vector<Cmomentum> &_particles, double _radius, double _f, 
0113                int _n_pass_max=0, Esplit_merge_scale _split_merge_scale=SM_pttilde,
0114                bool _hard_only=false);
0115 
0116   /**
0117    * compute the jet passive areas from a given particle set.
0118    * The parameters of this method are the ones which control the jet clustering alghorithn.
0119    * Note that the pt_min is not allowed here soince the jet-area determination involves soft 
0120    * particles/jets and thus is used internally.
0121    * See compute_areas for paramters definition.
0122    */
0123   int compute_passive_areas(std::vector<Cmomentum> &_particles, double _radius, double _f, 
0124                 int _n_pass_max=0, Esplit_merge_scale _split_merge_scale=SM_pttilde);
0125 
0126   int grid_size;        ///< size of the grid we add soft particles on (N_soft=(grid_size^2))
0127   double grid_eta_max;  ///< maximal value of eta we add soft particles on
0128   double grid_shift;    ///< fractional (random) displacement of the points om the grid
0129 
0130   double pt_soft;       ///< pt of the soft particles added
0131   double pt_shift;      ///< amplitude of the pt random shift
0132   double pt_soft_min;   ///< pt_min used in SM to compute passive areas
0133 
0134   /// jets with their areas
0135   std::vector<Cjet_area> jet_areas;
0136 };
0137 
0138 }
0139 #endif