Changeset 35cdc46 in git for external/fastjet/plugins/GridJet
- Timestamp:
- Sep 3, 2014, 3:18:54 PM (10 years ago)
- Branches:
- ImprovedOutputFile, Timing, dual_readout, llp, master
- Children:
- be2222c
- Parents:
- 5b5a56b
- Location:
- external/fastjet/plugins/GridJet
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
external/fastjet/plugins/GridJet/GridJetPlugin.cc
r5b5a56b r35cdc46 1 // STARTHEADER2 // $Id $3 // 4 // Copyright (c) 20 11, Matteo Cacciari, GavinSalam and Gregory Soyez1 //FJSTARTHEADER 2 // $Id: GridJetPlugin.cc 2268 2011-06-20 15:12:26Z salam $ 3 // 4 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 14 // The algorithms that underlie FastJet have required considerable 15 // development and are described in hep-ph/0512210. If you use 15 // development. They are described in the original FastJet paper, 16 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use 16 17 // FastJet as part of work towards a scientific publication, please 17 // include a citation to the FastJet paper. 18 // quote the version you use and include a citation to the manual and 19 // optionally also to hep-ph/0512210. 18 20 // 19 21 // FastJet is distributed in the hope that it will be useful, … … 25 27 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 26 28 //---------------------------------------------------------------------- 27 // ENDHEADER29 //FJENDHEADER 28 30 29 31 // fastjet stuff … … 43 45 double requested_grid_spacing, 44 46 const JetDefinition & post_jet_def) : 47 #ifdef FASTJET_GRIDJET_USEFJGRID 48 RectangularGrid(ymax, requested_grid_spacing), _post_jet_def(post_jet_def) { 49 } 50 #else 45 51 _ymin(-ymax), _ymax(ymax), 46 52 _requested_grid_spacing(requested_grid_spacing) , … … 49 55 setup_grid(); 50 56 } 51 57 #endif 58 59 #ifdef FASTJET_GRIDJET_USEFJGRID 60 GridJetPlugin::GridJetPlugin (const RectangularGrid & grid, 61 const JetDefinition & post_jet_def) : 62 RectangularGrid(grid), _post_jet_def(post_jet_def) { 63 if (!RectangularGrid::is_initialised()) 64 throw Error("attempt to construct GridJetPlugin with uninitialised RectangularGrid"); 65 } 66 #endif // FASTJET_GRIDJET_USEFJGRID 67 68 #ifndef FASTJET_GRIDJET_USEFJGRID 52 69 void GridJetPlugin::setup_grid() { 53 70 // since we've exchanged the arguments of the constructor, … … 69 86 } 70 87 71 72 //---------------------------------------------------------------------- 73 string GridJetPlugin::description () const { 74 ostringstream desc; 75 desc << "GridJetPlugin plugin with ymax = " << _ymax << ", dy = " << _dy << ", dphi = " << _dphi << " (requested grid spacing was " << _requested_grid_spacing << ")"; 76 if (_post_jet_def.jet_algorithm() != undefined_jet_algorithm) { 77 desc << ", followed by " << _post_jet_def.description(); 78 } 79 return desc.str(); 80 } 81 82 83 //---------------------------------------------------------------------- 84 double GridJetPlugin::R() const {return sqrt(_dy*_dphi/pi);} 85 86 87 //---------------------------------------------------------------------- 88 int GridJetPlugin::igrid(const PseudoJet & p) const { 88 //---------------------------------------------------------------------- 89 int GridJetPlugin::tile_index(const PseudoJet & p) const { 89 90 // directly taking int does not work for values between -1 and 0 90 91 // so use floor instead … … 108 109 return igrid_res; 109 110 } 111 #endif // not FASTJET_GRIDJET_USEFJGRID 112 113 114 //---------------------------------------------------------------------- 115 string GridJetPlugin::description () const { 116 ostringstream desc; 117 desc << "GridJetPlugin plugin with "; 118 #ifndef FASTJET_GRIDJET_USEFJGRID 119 desc << "ymax = " << _ymax << ", dy = " << _dy << ", dphi = " << _dphi << " (requested grid spacing was " << _requested_grid_spacing << ")"; 120 #else 121 desc << RectangularGrid::description(); 122 #endif 123 if (_post_jet_def.jet_algorithm() != undefined_jet_algorithm) { 124 desc << ", followed by " << _post_jet_def.description(); 125 } 126 return desc.str(); 127 } 128 129 130 //---------------------------------------------------------------------- 131 double GridJetPlugin::R() const {return sqrt(drap()*dphi()/pi);} 110 132 111 133 … … 117 139 // * a number >= 0 will mean that particle indicated by the index 118 140 // is currently the jet on the grid 119 vector<int> grid( _ntotal, -1);141 vector<int> grid(n_tiles(), -1); 120 142 121 143 int nparticles = cs.jets().size(); … … 126 148 // combine particles with whatever is in the grid 127 149 for (int i = 0; i < nparticles; i++) { 128 int igrd = igrid(cs.jets()[i]);150 int igrd = tile_index(cs.jets()[i]); 129 151 //cout << i << " " << cs.jets()[i].rap() << " " << cs.jets()[i].phi() 130 152 // << " " << igrd << " " << grid.size() << " " << _ntotal << endl; 131 153 if (igrd < 0) continue; 132 assert(igrd <= _ntotal);154 assert(igrd <= n_tiles()); 133 155 if (grid[igrd] == -1) { 134 156 grid[igrd] = i; // jet index of initial particle i is i … … 145 167 // make the final jets via iB recombinations 146 168 for (unsigned igrd = 0; igrd < grid.size(); igrd++) { 147 if (grid[igrd] != -1 ) cs.plugin_record_iB_recombination(grid[igrd],148 169 if (grid[igrd] != -1 && tile_is_good(igrd)) 170 cs.plugin_record_iB_recombination(grid[igrd], dij_or_diB); 149 171 } 150 172 } else { -
external/fastjet/plugins/GridJet/fastjet/GridJetPlugin.hh
r5b5a56b r35cdc46 1 #ifndef __ GRIDJETPLUGIN_HH__2 #define __ GRIDJETPLUGIN_HH__1 #ifndef __FASTJET_GRIDJETPLUGIN_HH__ 2 #define __FASTJET_GRIDJETPLUGIN_HH__ 3 3 4 // STARTHEADER4 //FJSTARTHEADER 5 5 // $Id: GridJetPlugin.hh 2267 2011-06-20 15:10:23Z salam $ 6 6 // 7 // Copyright (c) 20 11, Matteo Cacciari, GavinSalam and Gregory Soyez7 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 17 // The algorithms that underlie FastJet have required considerable 18 // development and are described in hep-ph/0512210. If you use 18 // development. They are described in the original FastJet paper, 19 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use 19 20 // FastJet as part of work towards a scientific publication, please 20 // include a citation to the FastJet paper. 21 // quote the version you use and include a citation to the manual and 22 // optionally also to hep-ph/0512210. 21 23 // 22 24 // FastJet is distributed in the hope that it will be useful, … … 28 30 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 29 31 //---------------------------------------------------------------------- 30 // ENDHEADER32 //FJENDHEADER 31 33 32 34 33 35 #include "fastjet/JetDefinition.hh" 36 37 // makes it easy to switch back and forth between use of 38 // RectangularGrid or not; this got enabled in FJ3.1 39 #define FASTJET_GRIDJET_USEFJGRID 40 41 #ifdef FASTJET_GRIDJET_USEFJGRID 42 #include "fastjet/RectangularGrid.hh" 43 #endif 34 44 35 45 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 49 59 /// but is rather provided for comparison purposes with the 50 60 /// GridMedianBackgroundEstimator (which is even faster). 51 class GridJetPlugin : public JetDefinition::Plugin { 61 class GridJetPlugin : public JetDefinition::Plugin 62 #ifdef FASTJET_GRIDJET_USEFJGRID 63 , RectangularGrid 64 #endif 65 { 52 66 public: 53 /// Mainconstructor for the GridJetPlugin Plugin class.67 /// Basic constructor for the GridJetPlugin Plugin class. 54 68 /// 55 69 /// \param ymax The maximal rapidity extent of the grid … … 62 76 const JetDefinition & post_jet_def = JetDefinition()); 63 77 64 /// copy constructor 65 GridJetPlugin (const GridJetPlugin & plugin) { 66 *this = plugin; 67 } 78 #ifdef FASTJET_GRIDJET_USEFJGRID 79 /// Constructor for the GridJetPlugin Plugin class that allows 80 /// full control over the underlying grid. New in FastJet 3.1. 81 /// 82 /// \param grid The maximal rapidity extent of the grid 83 /// \param post_jet_def if present, and not == JetDefinition() 84 /// (which has undefined_jet_algorithm), then 85 /// run the post_jet_def on the result of the grid 86 /// clustering. 87 GridJetPlugin (const RectangularGrid & grid, 88 const JetDefinition & post_jet_def = JetDefinition()); 89 #endif // FASTJET_GRIDJET_USEFJGRID 90 91 92 93 // /// copy constructor 94 // GridJetPlugin (const GridJetPlugin & plugin) { 95 // *this = plugin; 96 // } 68 97 69 98 // the things that are required by base class … … 75 104 virtual double R() const; 76 105 106 // As of FastJet 3.1 the following functions become available through 107 // the underlying RectangularGrid class. 108 #ifndef FASTJET_GRIDJET_USEFJGRID 77 109 /// returns the actual rapidity spacing of the grid 78 110 double drap() const {return _dy;} … … 83 115 /// returns the maximum rapidity of the grid 84 116 double rapmax() const {return _ymax;} 117 #endif 85 118 86 119 private: 87 120 121 #ifndef FASTJET_GRIDJET_USEFJGRID 88 122 void setup_grid(); 89 123 90 int igrid(const PseudoJet & p) const; 124 int n_tiles() const {return _ntotal;} 125 int n_good_tiles() const {return _ntotal;} 126 127 int tile_index(const PseudoJet & p) const; 128 bool tile_is_good(int /* itile */) const {return true;} 91 129 92 130 double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing; 93 131 int _ny, _nphi, _ntotal; 132 #endif 94 133 95 134 JetDefinition _post_jet_def; … … 99 138 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh 100 139 101 #endif // __ GRIDJETPLUGIN_HH__140 #endif // __FASTJET_GRIDJETPLUGIN_HH__ 102 141
Note:
See TracChangeset
for help on using the changeset viewer.