DAS  3.0
Das Analysis System
JetDefinition

#include <fjcore.hh>

+ Collaboration diagram for JetDefinition:

Classes

class  DefaultRecombiner
 
class  Plugin
 
class  Recombiner
 

Public Member Functions

 JetDefinition (JetAlgorithm jet_algorithm_in, double R_in, RecombinationScheme recomb_scheme_in=E_scheme, Strategy strategy_in=Best)
 
 JetDefinition (JetAlgorithm jet_algorithm_in, RecombinationScheme recomb_scheme_in=E_scheme, Strategy strategy_in=Best)
 
 JetDefinition (JetAlgorithm jet_algorithm_in, double R_in, double xtra_param_in, RecombinationScheme recomb_scheme_in=E_scheme, Strategy strategy_in=Best)
 
 JetDefinition (JetAlgorithm jet_algorithm_in, double R_in, const Recombiner *recombiner_in, Strategy strategy_in=Best)
 
 JetDefinition (JetAlgorithm jet_algorithm_in, const Recombiner *recombiner_in, Strategy strategy_in=Best)
 
 JetDefinition (JetAlgorithm jet_algorithm_in, double R_in, double xtra_param_in, const Recombiner *recombiner_in, Strategy strategy_in=Best)
 
 JetDefinition ()
 
 JetDefinition (const Plugin *plugin_in)
 
 JetDefinition (JetAlgorithm jet_algorithm_in, double R_in, RecombinationScheme recomb_scheme_in, Strategy strategy_in, int nparameters_in)
 
 JetDefinition (JetAlgorithm jet_algorithm_in, double R_in, Strategy strategy_in, RecombinationScheme recomb_scheme_in=E_scheme, int nparameters_in=1)
 
template<class L >
std::vector< PseudoJetoperator() (const std::vector< L > &particles) const
 
void set_recombination_scheme (RecombinationScheme)
 
void set_recombiner (const Recombiner *recomb)
 
void set_recombiner (const JetDefinition &other_jet_def)
 
void delete_recombiner_when_unused ()
 
const Pluginplugin () const
 
void delete_plugin_when_unused ()
 
JetAlgorithm jet_algorithm () const
 
JetAlgorithm jet_finder () const
 
double R () const
 
double extra_param () const
 
Strategy strategy () const
 
RecombinationScheme recombination_scheme () const
 
void set_jet_algorithm (JetAlgorithm njf)
 
void set_jet_finder (JetAlgorithm njf)
 
void set_extra_param (double xtra_param)
 
const Recombinerrecombiner () const
 
bool has_same_recombiner (const JetDefinition &other_jd) const
 
bool is_spherical () const
 
std::string description () const
 
std::string description_no_recombiner () const
 

Static Public Member Functions

static std::string algorithm_description (const JetAlgorithm jet_alg)
 
static unsigned int n_parameters_for_algorithm (const JetAlgorithm jet_alg)
 

Static Public Attributes

static const double max_allowable_R = 1000.0
 

Private Attributes

JetAlgorithm _jet_algorithm
 
double _Rparam
 
double _extra_param
 
Strategy _strategy
 
const Plugin_plugin
 
SharedPtr< const Plugin_plugin_shared
 
DefaultRecombiner _default_recombiner
 
const Recombiner_recombiner
 
SharedPtr< const Recombiner_shared_recombiner
 

Constructor & Destructor Documentation

◆ JetDefinition() [1/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
double  R_in,
RecombinationScheme  recomb_scheme_in = E_scheme,
Strategy  strategy_in = Best 
)
inline
1072  {
1073  *this = JetDefinition(jet_algorithm_in, R_in, recomb_scheme_in, strategy_in, 1);
1074  }

◆ JetDefinition() [2/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
RecombinationScheme  recomb_scheme_in = E_scheme,
Strategy  strategy_in = Best 
)
inline
1077  {
1078  double dummyR = 0.0;
1079  *this = JetDefinition(jet_algorithm_in, dummyR, recomb_scheme_in, strategy_in, 0);
1080  }

◆ JetDefinition() [3/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
double  R_in,
double  xtra_param_in,
RecombinationScheme  recomb_scheme_in = E_scheme,
Strategy  strategy_in = Best 
)
inline
1085  {
1086  *this = JetDefinition(jet_algorithm_in, R_in, recomb_scheme_in, strategy_in, 2);
1087  set_extra_param(xtra_param_in);
1088  }

◆ JetDefinition() [4/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
double  R_in,
const Recombiner recombiner_in,
Strategy  strategy_in = Best 
)
inline
1092  {
1093  *this = JetDefinition(jet_algorithm_in, R_in, external_scheme, strategy_in);
1094  _recombiner = recombiner_in;
1095  }

◆ JetDefinition() [5/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
const Recombiner recombiner_in,
Strategy  strategy_in = Best 
)
inline
1098  {
1099  *this = JetDefinition(jet_algorithm_in, external_scheme, strategy_in);
1100  _recombiner = recombiner_in;
1101  }

◆ JetDefinition() [6/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
double  R_in,
double  xtra_param_in,
const Recombiner recombiner_in,
Strategy  strategy_in = Best 
)
inline
1106  {
1107  *this = JetDefinition(jet_algorithm_in, R_in, xtra_param_in, external_scheme, strategy_in);
1108  _recombiner = recombiner_in;
1109  }

◆ JetDefinition() [7/10]

JetDefinition ( )
inline
1110  {
1111  *this = JetDefinition(undefined_jet_algorithm, 1.0);
1112  }

◆ JetDefinition() [8/10]

JetDefinition ( const Plugin plugin_in)
inline
1113  {
1114  _plugin = plugin_in;
1116  _Rparam = _plugin->R();
1117  _extra_param = 0.0; // a dummy value to keep static code checkers happy
1120  }

◆ JetDefinition() [9/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
double  R_in,
RecombinationScheme  recomb_scheme_in,
Strategy  strategy_in,
int  nparameters_in 
)
3361  :
3362  _jet_algorithm(jet_algorithm_in), _Rparam(R_in), _strategy(strategy_in) {
3364  _Rparam = 4.0; // introduce a fictional R that ensures that
3365  } else {
3366  if (R_in > max_allowable_R) {
3367  ostringstream oss;
3368  oss << "Requested R = " << R_in << " for jet definition is larger than max_allowable_R = " << max_allowable_R;
3369  throw Error(oss.str());
3370  }
3371  }
3372  unsigned int nparameters_expected = n_parameters_for_algorithm(jet_algorithm_in);
3373  if (nparameters != (int) nparameters_expected){
3374  ostringstream oss;
3375  oss << "The jet algorithm you requested ("
3376  << jet_algorithm_in << ") should be constructed with " << nparameters_expected
3377  << " parameter(s) but was called with " << nparameters << " parameter(s)\n";
3378  throw Error(oss.str());
3379  }
3380  assert (_strategy != plugin_strategy);
3381  _plugin = NULL;
3382  set_recombination_scheme(recomb_scheme_in);
3383  set_extra_param(0.0); // make sure it's defined
3384 }

◆ JetDefinition() [10/10]

JetDefinition ( JetAlgorithm  jet_algorithm_in,
double  R_in,
Strategy  strategy_in,
RecombinationScheme  recomb_scheme_in = E_scheme,
int  nparameters_in = 1 
)
inline
1131  {
1132  (*this) = JetDefinition(jet_algorithm_in,R_in,recomb_scheme_in,strategy_in,nparameters_in);
1133  }

Member Function Documentation

◆ algorithm_description()

string algorithm_description ( const JetAlgorithm  jet_alg)
static
3429  {
3430  ostringstream name;
3431  switch (jet_alg){
3432  case plugin_algorithm: return "plugin algorithm";
3433  case kt_algorithm: return "Longitudinally invariant kt algorithm";
3434  case cambridge_algorithm: return "Longitudinally invariant Cambridge/Aachen algorithm";
3435  case antikt_algorithm: return "Longitudinally invariant anti-kt algorithm";
3436  case genkt_algorithm: return "Longitudinally invariant generalised kt algorithm";
3437  case cambridge_for_passive_algorithm: return "Longitudinally invariant Cambridge/Aachen algorithm";
3438  case ee_kt_algorithm: return "e+e- kt (Durham) algorithm (NB: no R)";
3439  case ee_genkt_algorithm: return "e+e- generalised kt algorithm";
3440  case undefined_jet_algorithm: return "undefined jet algorithm";
3441  default:
3442  throw Error("JetDefinition::algorithm_description(): unrecognized jet_algorithm");
3443  };
3444 }

◆ delete_plugin_when_unused()

void delete_plugin_when_unused ( )
3484  {
3485  if (_plugin == 0){
3486  throw Error("tried to call JetDefinition::delete_plugin_when_unused() for a JetDefinition without a plugin");
3487  }
3488  _plugin_shared.reset(_plugin);
3489 }

◆ delete_recombiner_when_unused()

void delete_recombiner_when_unused ( )
3476  {
3477  if (_recombiner == 0){
3478  throw Error("tried to call JetDefinition::delete_recombiner_when_unused() for a JetDefinition without a user-defined recombination scheme");
3479  } else if (_shared_recombiner.get()) {
3480  throw Error("Error in JetDefinition::delete_recombiner_when_unused: the recombiner is already scheduled for deletion when unused (or was already set as shared)");
3481  }
3483 }

◆ description()

string description ( ) const
3394  {
3395  ostringstream name;
3398  return name.str();
3399  }
3401  name << " with ";
3402  else
3403  name << " and ";
3404  name << recombiner()->description();
3405  return name.str();
3406 }

◆ description_no_recombiner()

string description_no_recombiner ( ) const
3407  {
3408  ostringstream name;
3409  if (jet_algorithm() == plugin_algorithm) {
3410  return plugin()->description();
3411  } else if (jet_algorithm() == undefined_jet_algorithm) {
3412  return "uninitialised JetDefinition (jet_algorithm=undefined_jet_algorithm)" ;
3413  }
3416  case 0: name << " (NB: no R)"; break;
3417  case 1: name << " with R = " << R(); break; // the parameter is always R
3418  case 2:
3419  name << " with R = " << R();
3421  name << "and a special hack whereby particles with kt < "
3422  << extra_param() << "are treated as passive ghosts";
3423  } else {
3424  name << ", p = " << extra_param();
3425  }
3426  };
3427  return name.str();
3428 }

◆ extra_param()

double extra_param ( ) const
inline
1150 {return _extra_param ;}

◆ has_same_recombiner()

bool has_same_recombiner ( const JetDefinition other_jd) const
3470  {
3471  const RecombinationScheme & scheme = recombination_scheme();
3472  if (other_jd.recombination_scheme() != scheme) return false;
3473  return (scheme != external_scheme)
3474  || (recombiner() == other_jd.recombiner());
3475 }

◆ is_spherical()

bool is_spherical ( ) const
3385  {
3386  if (jet_algorithm() == plugin_algorithm) {
3387  return plugin()->is_spherical();
3388  } else {
3389  return (jet_algorithm() == ee_kt_algorithm || // as of 2013-02-14, the two
3390  jet_algorithm() == ee_genkt_algorithm // native spherical algorithms
3391  );
3392  }
3393 }

◆ jet_algorithm()

JetAlgorithm jet_algorithm ( ) const
inline
1147 {return _jet_algorithm ;}

◆ jet_finder()

JetAlgorithm jet_finder ( ) const
inline
1148 {return _jet_algorithm ;}

◆ n_parameters_for_algorithm()

unsigned int n_parameters_for_algorithm ( const JetAlgorithm  jet_alg)
static
3445  {
3446  switch (jet_alg) {
3447  case ee_kt_algorithm: return 0;
3448  case genkt_algorithm:
3449  case ee_genkt_algorithm: return 2;
3450  default: return 1;
3451  };
3452 }

◆ operator()()

std::vector< PseudoJet > operator() ( const std::vector< L > &  particles) const
1682  {
1683  ClusterSequence * cs = new ClusterSequence(particles, *this);
1684  std::vector<PseudoJet> jets;
1685  if (is_spherical()) {
1686  jets = sorted_by_E(cs->inclusive_jets());
1687  } else {
1688  jets = sorted_by_pt(cs->inclusive_jets());
1689  }
1690  if (jets.size() != 0) {
1692  } else {
1693  delete cs;
1694  }
1695  return jets;
1696 }

◆ plugin()

const Plugin* plugin ( ) const
inline
1145 {return _plugin;};

◆ R()

double R ( ) const
inline
1149 {return _Rparam ;}

◆ recombination_scheme()

RecombinationScheme recombination_scheme ( ) const
inline
1152  {
1153  return _default_recombiner.scheme();}

◆ recombiner()

const Recombiner* recombiner ( ) const
inline
1157  {
1158  return _recombiner == 0 ? & _default_recombiner : _recombiner;}

◆ set_extra_param()

void set_extra_param ( double  xtra_param)
inline
1156 {_extra_param = xtra_param;}

◆ set_jet_algorithm()

void set_jet_algorithm ( JetAlgorithm  njf)
inline
1154 {_jet_algorithm = njf;}

◆ set_jet_finder()

void set_jet_finder ( JetAlgorithm  njf)
inline
1155 {_jet_algorithm = njf;}

◆ set_recombination_scheme()

void set_recombination_scheme ( RecombinationScheme  recomb_scheme)
3454  {
3457  _recombiner = 0;
3458 }

◆ set_recombiner() [1/2]

void set_recombiner ( const JetDefinition other_jet_def)
3459  {
3460  assert(other_jet_def._recombiner ||
3461  other_jet_def.recombination_scheme() != external_scheme);
3462  if (other_jet_def._recombiner == 0){
3464  return;
3465  }
3466  _recombiner = other_jet_def._recombiner;
3467  _default_recombiner = DefaultRecombiner(external_scheme);
3468  _shared_recombiner.reset(other_jet_def._shared_recombiner);
3469 }

◆ set_recombiner() [2/2]

void set_recombiner ( const Recombiner recomb)
inline
1138  {
1139  if (_shared_recombiner) _shared_recombiner.reset(recomb);
1140  _recombiner = recomb;
1141  _default_recombiner = DefaultRecombiner(external_scheme);
1142  }

◆ strategy()

Strategy strategy ( ) const
inline
1151 {return _strategy ;}

Member Data Documentation

◆ _default_recombiner

DefaultRecombiner _default_recombiner
private

◆ _extra_param

double _extra_param
private

parameter whose meaning varies according to context

◆ _jet_algorithm

JetAlgorithm _jet_algorithm
private

◆ _plugin

const Plugin* _plugin
private

◆ _plugin_shared

SharedPtr<const Plugin> _plugin_shared
private

◆ _recombiner

const Recombiner* _recombiner
private

◆ _Rparam

double _Rparam
private

◆ _shared_recombiner

SharedPtr<const Recombiner> _shared_recombiner
private

◆ _strategy

Strategy _strategy
private

◆ max_allowable_R

const double max_allowable_R = 1000.0
static

The documentation for this class was generated from the following files:
genkt_algorithm
@ genkt_algorithm
Definition: fjcore.hh:1041
DYToLL_M-50_13TeV_pythia8_cff_GEN_SIM_RECOBEFMIX_DIGI_L1_DIGI2RAW_L1Reco_RECO.name
name
Definition: DYToLL_M-50_13TeV_pythia8_cff_GEN_SIM_RECOBEFMIX_DIGI_L1_DIGI2RAW_L1Reco_RECO.py:48
JetDefinition::_default_recombiner
DefaultRecombiner _default_recombiner
Definition: fjcore.hh:1210
JetDefinition::DefaultRecombiner::scheme
RecombinationScheme scheme() const
Definition: fjcore.hh:1187
plugin_strategy
@ plugin_strategy
Definition: fjcore.hh:1035
JetDefinition::Plugin::description
virtual std::string description() const =0
JetDefinition::extra_param
double extra_param() const
Definition: fjcore.hh:1150
ee_kt_algorithm
@ ee_kt_algorithm
Definition: fjcore.hh:1044
JetDefinition::max_allowable_R
static const double max_allowable_R
Definition: fjcore.hh:1136
JetDefinition::recombiner
const Recombiner * recombiner() const
Definition: fjcore.hh:1157
JetDefinition::JetDefinition
JetDefinition()
Definition: fjcore.hh:1110
ClusterSequence
Definition: fjcore.hh:1382
kt_algorithm
@ kt_algorithm
Definition: fjcore.hh:1038
JetDefinition::_strategy
Strategy _strategy
Definition: fjcore.hh:1207
JetDefinition::_extra_param
double _extra_param
parameter whose meaning varies according to context
Definition: fjcore.hh:1206
JetDefinition::description_no_recombiner
std::string description_no_recombiner() const
Definition: fjcore.cc:3407
undefined_jet_algorithm
@ undefined_jet_algorithm
Definition: fjcore.hh:1047
sorted_by_pt
std::vector< PseudoJet > sorted_by_pt(const std::vector< PseudoJet > &jets)
Definition: fjcore.cc:4063
JetDefinition::Plugin::is_spherical
virtual bool is_spherical() const
Definition: fjcore.hh:1200
Ntupliser_cfg.jets
string jets
Definition: Ntupliser_cfg.py:41
JetDefinition::_Rparam
double _Rparam
Definition: fjcore.hh:1205
antikt_algorithm
@ antikt_algorithm
Definition: fjcore.hh:1040
JetDefinition::_recombiner
const Recombiner * _recombiner
Definition: fjcore.hh:1211
JetDefinition::set_recombination_scheme
void set_recombination_scheme(RecombinationScheme)
Definition: fjcore.cc:3453
JetDefinition::Plugin::R
virtual double R() const =0
ClusterSequence::inclusive_jets
std::vector< PseudoJet > inclusive_jets(const double ptmin=0.0) const
Definition: fjcore.cc:1820
JetDefinition::is_spherical
bool is_spherical() const
Definition: fjcore.cc:3385
JetDefinition::Recombiner::description
virtual std::string description() const =0
JetDefinition::_plugin
const Plugin * _plugin
Definition: fjcore.hh:1208
JetDefinition::jet_algorithm
JetAlgorithm jet_algorithm() const
Definition: fjcore.hh:1147
Ntupliser_cfg.particles
particles
Definition: Ntupliser_cfg.py:270
sorted_by_E
std::vector< PseudoJet > sorted_by_E(const std::vector< PseudoJet > &jets)
Definition: fjcore.cc:4073
JetDefinition::set_extra_param
void set_extra_param(double xtra_param)
Definition: fjcore.hh:1156
plugin_algorithm
@ plugin_algorithm
Definition: fjcore.hh:1046
JetDefinition::DefaultRecombiner
Definition: fjcore.hh:1179
JetDefinition::_plugin_shared
SharedPtr< const Plugin > _plugin_shared
Definition: fjcore.hh:1209
JetDefinition::R
double R() const
Definition: fjcore.hh:1149
Error
Definition: fjcore.hh:462
cambridge_algorithm
@ cambridge_algorithm
Definition: fjcore.hh:1039
ee_genkt_algorithm
@ ee_genkt_algorithm
Definition: fjcore.hh:1045
JetDefinition::_shared_recombiner
SharedPtr< const Recombiner > _shared_recombiner
Definition: fjcore.hh:1212
ClusterSequence::delete_self_when_unused
void delete_self_when_unused()
Definition: fjcore.cc:2271
external_scheme
@ external_scheme
Definition: fjcore.hh:1062
RecombinationScheme
RecombinationScheme
Definition: fjcore.hh:1052
JetDefinition::algorithm_description
static std::string algorithm_description(const JetAlgorithm jet_alg)
Definition: fjcore.cc:3429
JetDefinition::_jet_algorithm
JetAlgorithm _jet_algorithm
Definition: fjcore.hh:1204
JetDefinition::recombination_scheme
RecombinationScheme recombination_scheme() const
Definition: fjcore.hh:1152
E_scheme
@ E_scheme
Definition: fjcore.hh:1053
JetDefinition::plugin
const Plugin * plugin() const
Definition: fjcore.hh:1145
cambridge_for_passive_algorithm
@ cambridge_for_passive_algorithm
Definition: fjcore.hh:1042
JetDefinition::n_parameters_for_algorithm
static unsigned int n_parameters_for_algorithm(const JetAlgorithm jet_alg)
Definition: fjcore.cc:3445