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...