31 #include "fastjet/PxConePlugin.hh"
33 #include "fastjet/ClusterSequence.hh"
40 FASTJET_BEGIN_NAMESPACE
44 bool PxConePlugin::_first_time =
true;
46 string PxConePlugin::description ()
const {
49 desc <<
"PxCone jet algorithm with "
50 <<
"cone_radius = " << cone_radius () <<
", "
51 <<
"min_jet_energy = " << min_jet_energy () <<
", "
52 <<
"overlap_threshold = " << overlap_threshold () <<
", "
53 <<
"E_scheme_jets = " << E_scheme_jets ()
54 <<
" (NB: non-standard version of PxCone, containing small bug fixes by Gavin Salam)";
67 int ntrak = clust_seq.
jets().size(), itkdm = 4;
68 double *ptrak =
new double[ntrak*4+1];
69 for (
int i = 0; i < ntrak; i++) {
70 ptrak[4*i+0] = clust_seq.
jets()[i].px();
71 ptrak[4*i+1] = clust_seq.
jets()[i].py();
72 ptrak[4*i+2] = clust_seq.
jets()[i].pz();
73 ptrak[4*i+3] = clust_seq.
jets()[i].E();
79 double *pjet =
new double[mxjet*5+1];
80 int *ipass =
new int[ntrak+1];
81 int *ijmul =
new int[mxjet+1];
102 if (ierr != 0)
throw Error(
"An error occurred while running PXCONE");
105 valarray<int> last_index_created(njet);
107 vector<vector<int> > jet_particle_content(njet);
110 for (
int itrak = 0; itrak < ntrak; itrak++) {
111 int jet_i = ipass[itrak] - 1;
112 if (jet_i >= 0) jet_particle_content[jet_i].push_back(itrak);
118 for(
int ipxjet = njet-1; ipxjet >= 0; ipxjet--) {
119 const vector<int> & jet_trak_list = jet_particle_content[ipxjet];
120 int jet_k = jet_trak_list[0];
122 for (
unsigned ilist = 1; ilist < jet_trak_list.size(); ilist++) {
125 int jet_j = jet_trak_list[ilist];
129 if (ilist != jet_trak_list.size()-1 || E_scheme_jets()) {
136 PseudoJet(pjet[5*ipxjet+0],pjet[5*ipxjet+1],
137 pjet[5*ipxjet+2],pjet[5*ipxjet+3]),
143 double d_iB = clust_seq.
jets()[jet_k].perp2();
169 void PxConePlugin::_print_banner(ostream *ostr)
const{
170 if (! _first_time)
return;
176 (*ostr) <<
"#-------------------------------------------------------------------------" << endl;
177 (*ostr) <<
"# You are running the PxCone plugin for FastJet " << endl;
178 (*ostr) <<
"# Original code by the Luis Del Pozo, David Ward and Michael H. Seymour " << endl;
179 (*ostr) <<
"# If you use this plugin, please cite " << endl;
180 (*ostr) <<
"# M. H. Seymour and C. Tevlin, JHEP 0611 (2006) 052 [hep-ph/0609100]. " << endl;
181 (*ostr) <<
"# in addition to the usual FastJet reference. " << endl;
182 (*ostr) <<
"#-------------------------------------------------------------------------" << endl;
188 FASTJET_END_NAMESPACE
const std::vector< PseudoJet > & jets() const
allow the user to access the internally stored _jets() array, which contains both the initial particl...
void plugin_record_ij_recombination(int jet_i, int jet_j, double dij, int &newjet_k)
record the fact that there has been a recombination between jets()[jet_i] and jets()[jet_k], with the specified dij, and return the index (newjet_k) allocated to the new jet, whose momentum is assumed to be the 4-vector sum of that of jet_i and jet_j
void plugin_record_iB_recombination(int jet_i, double diB)
record the fact that there has been a recombination between jets()[jet_i] and the beam...
base class corresponding to errors that can be thrown by FastJet
Class to contain pseudojets, including minimal information of use to jet-clustering routines...