FastJet 3.0beta1
|
00001 //STARTHEADER 00002 // $Id: ClusterSequence1GhostPassiveArea.hh 2041 2011-04-12 13:33:58Z soyez $ 00003 // 00004 // Copyright (c) 2005-2007, 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_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__ 00032 #define __FASTJET_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__ 00033 00034 00035 #include "fastjet/PseudoJet.hh" 00036 #include "fastjet/ClusterSequenceAreaBase.hh" 00037 #include "fastjet/ClusterSequenceActiveArea.hh" 00038 #include<iostream> 00039 #include<vector> 00040 00041 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 00042 00043 //using namespace std; 00044 00045 /// @ingroup sec_area_classes 00046 /// \class ClusterSequence1GhostPassiveArea 00047 /// Like ClusterSequence with computation of the passive jet area by 00048 /// adding a single ghost 00049 /// 00050 /// Class that behaves essentially like ClusterSequence except 00051 /// that it also provides access to the area of a jet (which 00052 /// will be a random quantity... Figure out what to do about seeds 00053 /// later...) 00054 /// 00055 /// This class should not be used directly. Rather use 00056 /// ClusterSequenceArea 00057 class ClusterSequence1GhostPassiveArea : public ClusterSequenceActiveArea { 00058 public: 00059 00060 ClusterSequence1GhostPassiveArea() {} 00061 00062 /// constructor based on JetDefinition and 1GhostPassiveAreaSpec 00063 template<class L> ClusterSequence1GhostPassiveArea 00064 (const std::vector<L> & pseudojets, 00065 const JetDefinition & jet_def, 00066 const GhostedAreaSpec & area_spec, 00067 const bool & writeout_combinations = false) ; 00068 00069 /// return an estimate for the number of empty jets -- one uses the 00070 /// AreaBase one rather than the ActiveArea one (which for which we 00071 /// do not have the information). 00072 virtual double n_empty_jets(const Selector & selector) const { 00073 return ClusterSequenceAreaBase::n_empty_jets(selector); 00074 } 00075 00076 protected: 00077 /// does the initialisation and running specific to the passive 00078 /// areas class 00079 void _initialise_and_run_1GPA (const JetDefinition & jet_def, 00080 const GhostedAreaSpec & area_spec, 00081 const bool & writeout_combinations = false); 00082 00083 private: 00084 00085 void _run_1GPA(const GhostedAreaSpec & area_spec); 00086 }; 00087 00088 00089 00090 00091 template<class L> ClusterSequence1GhostPassiveArea::ClusterSequence1GhostPassiveArea 00092 (const std::vector<L> & pseudojets, 00093 const JetDefinition & jet_def, 00094 const GhostedAreaSpec & area_spec, 00095 const bool & writeout_combinations) { 00096 00097 // transfer the initial jets (type L) into our own array 00098 _transfer_input_jets(pseudojets); 00099 00100 // run the clustering for passive areas 00101 _initialise_and_run_1GPA(jet_def, area_spec, writeout_combinations); 00102 00103 } 00104 00105 00106 00107 FASTJET_END_NAMESPACE 00108 00109 #endif // __FASTJET_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__