CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Namespaces | Functions | Variables
fastjetfortran_madfks.cc File Reference
#include <iostream>
#include <memory>
#include "fastjet/ClusterSequence.hh"
#include "fastjet/ClusterSequenceArea.hh"
#include "fastjet/Selector.hh"
#include "fastjet/SISConePlugin.hh"

Go to the source code of this file.

Namespaces

 fwrapper
 

Functions

double fastjetarea_ (const int &ijet)
 
void fastjetconstituents_ (const int &ijet, int *constituent_indices, int &nconstituents)
 
double fastjetdmerge_ (const int &n)
 
double fastjetdmergemax_ (const int &n)
 
void fastjetglobalrhoandsigma_ (const double &rapmin, const double &rapmax, const double &phimin, const double &phimax, double &rho, double &sigma, double &meanarea)
 
void fastjetppgenkt_ (const double *p, const int &npart, const double &R, const double &ptjetmin, const double &palg, double *f77jets, int &njets, int *whichjet)
 
void fastjetppgenktwitharea_ (const double *p, const int &npart, const double &R, const double &palg, const double &ghost_rapmax, const int &nrepeat, const double &ghost_area, double *f77jets, int &njets, int *whichjet)
 
void fastjetsiscone_ (const double *p, const int &npart, const double &R, const double &f, double *f77jets, int &njets, int *whichjet)
 
void fastjetsisconewitharea_ (const double *p, const int &npart, const double &R, const double &f, const double &ghost_rapmax, const int &nrepeat, const double &ghost_area, double *f77jets, int &njets, int *whichjet)
 
void fwrapper::transfer_cluster_transfer (const double *p, const int &npart, const JetDefinition &jet_def, const double &ptmin, double *f77jets, int &njets, int *whichjet, const double &ghost_maxrap=0.0, const int &nrepeat=0, const double &ghost_area=0.0)
 
void fwrapper::transfer_input_particles (const double *p, const int &npart)
 helper routine to transfer fortran input particles into More...
 
void fwrapper::transfer_jets (double *f77jets, int &njets)
 helper routine to help transfer jets -> f77jets[4*ijet+0..3] More...
 

Variables

unique_ptr< ClusterSequence > fwrapper::cs
 
vector< PseudoJet > fwrapper::input_particles
 
JetDefinition fwrapper::jet_def
 
vector< PseudoJet > fwrapper::jets
 
unique_ptr< JetDefinition::Plugin > fwrapper::plugin
 

Function Documentation

double fastjetarea_ ( const int &  ijet)

f77 interface to provide access to the area of a jet found in the jet clustering with one of the above "...witharea" routines.

Given the index ijet of a jet (in the range 1...njets) obtained in the last call to jet clustering, return its area. If the jets have not been obtained with a "...witharea" soutine it returns 0.

Definition at line 392 of file fastjetfortran_madfks.cc.

References cms::cuda::assert(), fwrapper::cs, and fwrapper::jets.

392  {
393  assert(ijet > 0 && ijet <= int(jets.size()));
394  const ClusterSequenceAreaBase *csab = dynamic_cast<const ClusterSequenceAreaBase *>(cs.get());
395  if (csab != nullptr) {
396  // we have areas and can use csab to access all the area-related info
397  return csab->area(jets[ijet - 1]);
398  } else {
399  return 0.;
400  // Error("No area information associated to this jet.");
401  }
402 }
unique_ptr< ClusterSequence > cs
assert(be >=bs)
vector< PseudoJet > jets
void fastjetconstituents_ ( const int &  ijet,
int *  constituent_indices,
int &  nconstituents 
)

f77 interface to provide access to the constituents of a jet found in the jet clustering with one of the above routines.

Given the index ijet of a jet (in the range 1...njets) obtained in the last call to jet clustering, fill the array constituent_indices, with nconstituents entries, with the indices of the constituents that belong to that jet (which will be in the range 1...npart)

Definition at line 366 of file fastjetfortran_madfks.cc.

References cms::cuda::assert(), fwrapper::cs, mps_fire::i, and fwrapper::jets.

366  {
367  assert(cs.get() != nullptr);
368  assert(ijet > 0 && ijet <= int(jets.size()));
369 
370  vector<PseudoJet> constituents = cs->constituents(jets[ijet - 1]);
371 
372  nconstituents = constituents.size();
373  for (int i = 0; i < nconstituents; i++) {
374  constituent_indices[i] = constituents[i].cluster_hist_index() + 1;
375  }
376 }
unique_ptr< ClusterSequence > cs
assert(be >=bs)
vector< PseudoJet > jets
double fastjetdmerge_ ( const int &  n)

return the dmin corresponding to the recombination that went from n+1 to n jets (sometimes known as d_{n n+1}).

Definition at line 413 of file fastjetfortran_madfks.cc.

References cms::cuda::assert(), and fwrapper::cs.

413  {
414  assert(cs.get() != nullptr);
415  return cs->exclusive_dmerge(n);
416 }
unique_ptr< ClusterSequence > cs
assert(be >=bs)
double fastjetdmergemax_ ( const int &  n)

return the maximum of the dmin encountered during all recombinations up to the one that led to an n-jet final state; identical to exclusive_dmerge, except in cases where the dmin do not increase monotonically.

Definition at line 429 of file fastjetfortran_madfks.cc.

References cms::cuda::assert(), and fwrapper::cs.

429  {
430  assert(cs.get() != nullptr);
431  return cs->exclusive_dmerge_max(n);
432 }
unique_ptr< ClusterSequence > cs
assert(be >=bs)
void fastjetglobalrhoandsigma_ ( const double &  rapmin,
const double &  rapmax,
const double &  phimin,
const double &  phimax,
double &  rho,
double &  sigma,
double &  meanarea 
)

return the background transverse momentum density per unit scalar area rho, its fluctuation sigma, and the mean area of the jets used for the background estimation in a given event, as evaluated in the range [rapmin,rapmax] in rapidity and [phimin,phimax] in azimuth

Definition at line 445 of file fastjetfortran_madfks.cc.

References fwrapper::cs, and sistrip::SpyUtilities::range().

451  {
452  const ClusterSequenceAreaBase *csab = dynamic_cast<const ClusterSequenceAreaBase *>(cs.get());
453  if (csab != nullptr) {
454  // we have areas and can use csab to access all the area-related info
455  Selector range = SelectorRapRange(rapmin, rapmax) && SelectorPhiRange(phimin, phimax);
456  bool use_area_4vector = false;
457  csab->get_median_rho_and_sigma(range, use_area_4vector, rho, sigma, meanarea);
458  } else {
459  Error("Clustering with area is necessary in order to be able to evaluate rho.");
460  }
461 }
edm::ErrorSummaryEntry Error
unique_ptr< ClusterSequence > cs
const uint16_t range(const Frame &aFrame)
Functor that operates on &lt;T&gt;
Definition: Selector.h:22
void fastjetppgenkt_ ( const double *  p,
const int &  npart,
const double &  R,
const double &  ptjetmin,
const double &  palg,
double *  f77jets,
int &  njets,
int *  whichjet 
)

f77 interface to the pp generalised-kt (sequential recombination) algorithms, as defined in arXiv.org:0802.1189, which includes kt, Cambridge/Aachen and anti-kt as special cases.

Definition at line 259 of file fastjetfortran_madfks.cc.

References fwrapper::jet_def, and fwrapper::transfer_cluster_transfer().

266  {
267  // prepare jet def
268  if (palg == 1.0) {
269  jet_def = JetDefinition(kt_algorithm, R);
270  } else if (palg == 0.0) {
271  jet_def = JetDefinition(cambridge_algorithm, R);
272  } else if (palg == -1.0) {
273  jet_def = JetDefinition(antikt_algorithm, R);
274  } else {
275  jet_def = JetDefinition(genkt_algorithm, R, palg);
276  }
277 
278  // do everything
279  transfer_cluster_transfer(p, npart, jet_def, ptjetmin, f77jets, njets, whichjet);
280 }
JetDefinition jet_def
double npart
Definition: HydjetWrapper.h:46
void transfer_cluster_transfer(const double *p, const int &npart, const JetDefinition &jet_def, const double &ptmin, double *f77jets, int &njets, int *whichjet, const double &ghost_maxrap=0.0, const int &nrepeat=0, const double &ghost_area=0.0)
void fastjetppgenktwitharea_ ( const double *  p,
const int &  npart,
const double &  R,
const double &  palg,
const double &  ghost_rapmax,
const int &  nrepeat,
const double &  ghost_area,
double *  f77jets,
int &  njets,
int *  whichjet 
)

f77 interface to the pp generalised-kt (sequential recombination) algorithms, as defined in arXiv.org:0802.1189, which includes kt, Cambridge/Aachen and anti-kt as special cases. Also calculates the active area of the jets, as defined in arXiv.org:0802.1188

Definition at line 324 of file fastjetfortran_madfks.cc.

References fwrapper::jet_def.

333  {
334  // prepare jet def
335  if (palg == 1.0) {
336  jet_def = JetDefinition(kt_algorithm, R);
337  } else if (palg == 0.0) {
338  jet_def = JetDefinition(cambridge_algorithm, R);
339  } else if (palg == -1.0) {
340  jet_def = JetDefinition(antikt_algorithm, R);
341  } else {
342  jet_def = JetDefinition(genkt_algorithm, R, palg);
343  }
344 
345  // do everything
346  // transfer_cluster_transfer(p,npart,jet_def,f77jets,njets,whichjet,ghost_rapmax,nrepeat,ghost_area);
347 }
JetDefinition jet_def
void fastjetsiscone_ ( const double *  p,
const int &  npart,
const double &  R,
const double &  f,
double *  f77jets,
int &  njets,
int *  whichjet 
)

f77 interface to SISCone (via fastjet), as defined in arXiv:0704.0292 [see below for the interface to kt, Cam/Aachen & kt]

Definition at line 159 of file fastjetfortran_madfks.cc.

References validate-o2o-wbm::f, fwrapper::jet_def, fwrapper::plugin, and dttmaxenums::R.

160  {
161  // prepare jet def
162  plugin = std::make_unique<SISConePlugin>(R, f);
163  jet_def = plugin.get();
164 
165  // do everything
166  // transfer_cluster_transfer(p,npart,jet_def,f77jets,njets,whichjet);
167 }
JetDefinition jet_def
unique_ptr< JetDefinition::Plugin > plugin
void fastjetsisconewitharea_ ( const double *  p,
const int &  npart,
const double &  R,
const double &  f,
const double &  ghost_rapmax,
const int &  nrepeat,
const double &  ghost_area,
double *  f77jets,
int &  njets,
int *  whichjet 
)

f77 interface to SISCone (via fastjet), as defined in arXiv:0704.0292 [see below for the interface to kt, Cam/Aachen & kt] Also calculates the active area of the jets, as defined in arXiv.org:0802.1188

Definition at line 204 of file fastjetfortran_madfks.cc.

References validate-o2o-wbm::f, fwrapper::jet_def, fwrapper::plugin, and dttmaxenums::R.

213  {
214  // prepare jet def
215  plugin = std::make_unique<SISConePlugin>(R, f);
216  jet_def = plugin.get();
217 
218  // do everything
219  // transfer_cluster_transfer(p,npart,jet_def,f77jets,njets,whichjet,ghost_rapmax,nrepeat,ghost_area);
220 }
JetDefinition jet_def
unique_ptr< JetDefinition::Plugin > plugin