FastJets Class Reference

#include <FastJets.hh>

Inheritance diagram for FastJets:

Inheritance graph
[legend]

Collaboration diagram for FastJets:

Collaboration graph
[legend]

List of all members.


Detailed Description

Project out jets found using fastJet package.

Definition at line 33 of file FastJets.hh.


Public Types

enum  JetAlgName {
  KT, CAM, SISCONE, ANTIKT,
  PXCONE, CDFJETCLU, CDFMIDPOINT, D0ILCONE,
  JADE, DURHAM, TRACKJET
}
 Wrapper enum for selected Fastjet jet algorithms. More...
typedef Jet entity_type
typedef Jets collection_type

Public Member Functions

void reset ()
 Reset the projection. Jet def etc are unchanged.
size_t numJets (double ptmin=0.0) const
 Number of jets above the $ p_\perp $ cut.
size_t size () const
 Number of jets.
Jets jets (double ptmin=0.0) const
 Get the jets (unordered).
Jets jetsByPt (double ptmin=0.0) const
 Get the jets, ordered by $ p_T $.
Jets jetsByE (double ptmin=0.0) const
 Get the jets, ordered by $ E $.
Jets jetsByRapidity (double ptmin=0.0) const
 Get the jets, ordered by rapidity.
PseudoJets pseudoJets (double ptmin=0.0) const
 Get the pseudo jets (unordered).
PseudoJets pseudoJetsByPt (double ptmin=0.0) const
 Get the pseudo jets, ordered by $ p_T $.
PseudoJets pseudoJetsByE (double ptmin=0.0) const
 Get the pseudo jets, ordered by $ E $.
PseudoJets pseudoJetsByRapidity (double ptmin=0.0) const
 Get the pseudo jets, ordered by rapidity.
const fastjet::ClusterSequence * clusterSeq () const
 Return the cluster sequence (FastJet-specific).
const fastjet::JetDefinition & jetDef () const
 Return the jet definition (FastJet-specific).
vector< double > ySubJet (const fastjet::PseudoJet &jet) const
 Get the subjet splitting variables for the given jet.
fastjet::PseudoJet splitJet (fastjet::PseudoJet jet, double &last_R) const
 Split a jet a la PRL100,242001(2008). Based on code from G.Salam, A.Davison.
fastjet::PseudoJet filterJet (fastjet::PseudoJet jet, double &stingy_R, const double def_R) const
 Filter a jet a la PRL100,242001(2008). Based on code from G.Salam, A.Davison.
void calc (const ParticleVector &ps)
 Do the calculation locally (no caching).
template<typename F>
Jets jets (F sorter, double ptmin=0.0) const
 Get the jets, ordered by supplied sorting function object.
Jets jetsByEt (double ptmin=0.0) const
 Get the jets, ordered by $ E_T $.
collection_type entities () const
 Template-usable interface common to FinalState.
bool before (const Projection &p) const
virtual const std::set< BeamPairbeamPairs () const
virtual std::string name () const
 Get the name of the projection.
ProjectionaddBeamPair (const ParticleName &beam1, const ParticleName &beam2)
 Add a colliding beam pair.
LoggetLog () const
 Get a Log object based on the getName() property of the calling projection object.
void setName (const std::string &name)
 Used by derived classes to set their name.
Constructors etc.
 FastJets (const FinalState &fsp, JetAlgName alg, double rparameter, double seed_threshold=1.0)
 FastJets (const FinalState &fsp, fastjet::JetAlgorithm type, fastjet::RecombinationScheme recom, double rparameter)
 Native argument constructor, using FastJet alg/scheme enums.
 FastJets (const FinalState &fsp, fastjet::JetDefinition::Plugin &plugin)
 Explicitly pass in an externally-constructed plugin.
virtual const Projectionclone () const
 Clone on the heap.
Projection "getting" functions
std::set< ConstProjectionPtrgetProjections () const
 Get the contained projections, including recursion.
template<typename PROJ>
const PROJ & getProjection (const std::string &name) const
 Get the named projection, specifying return type via a template argument.
const ProjectiongetProjection (const std::string &name) const
Projection applying functions
template<typename PROJ>
const PROJ & applyProjection (const Event &evt, const PROJ &proj) const
 Apply the supplied projection on event.
template<typename PROJ>
const PROJ & applyProjection (const Event &evt, const Projection &proj) const
 Apply the supplied projection on event.
template<typename PROJ>
const PROJ & applyProjection (const Event &evt, const std::string &name) const
 Apply the named projection on event.

Protected Member Functions

void project (const Event &e)
 Perform the projection on the Event.
int compare (const Projection &p) const
 Compare projections.
Cmp< ProjectionmkNamedPCmp (const Projection &otherparent, const std::string &pname) const
Cmp< ProjectionmkPCmp (const Projection &otherparent, const std::string &pname) const
ProjectionHandlergetProjHandler () const
 Get a reference to the ProjectionHandler for this thread.
Projection registration functions
template<typename PROJ>
const PROJ & addProjection (const PROJ &proj, const std::string &name)
const Projection_addProjection (const Projection &proj, const std::string &name)
 Untemplated function to do the work...

Protected Attributes

bool _allowProjReg
 Flag to forbid projection registration in analyses until the init phase.

Private Member Functions

Jets _pseudojetsToJets (const PseudoJets &pjets) const

Private Attributes

fastjet::JetDefinition _jdef
 Jet definition.
shared_ptr
< fastjet::ClusterSequence > 
_cseq
 Cluster sequence.
shared_ptr
< fastjet::JetDefinition::Plugin > 
_plugin
 FastJet external plugin.
map< int, vector< double > > _yscales
 Map of vectors of y scales. This is mutable so we can use caching/lazy evaluation.
map< int, Particle_particles
 set of particles sorted by their PT2

Friends

class Event
 Event is a friend.
class Cmp< Projection >
 The Cmp specialization for Projection is a friend.
class Projectionhandler

Member Typedef Documentation

typedef Jet entity_type [inherited]

Definition at line 108 of file JetAlg.hh.

typedef Jets collection_type [inherited]

Definition at line 109 of file JetAlg.hh.


Member Enumeration Documentation

enum JetAlgName

Wrapper enum for selected Fastjet jet algorithms.

Enumerator:
KT 
CAM 
SISCONE 
ANTIKT 
PXCONE 
CDFJETCLU 
CDFMIDPOINT 
D0ILCONE 
JADE 
DURHAM 
TRACKJET 

Definition at line 37 of file FastJets.hh.


Constructor & Destructor Documentation

FastJets ( const FinalState fsp,
JetAlgName  alg,
double  rparameter,
double  seed_threshold = 1.0 
)

"Wrapped" argument constructor using Rivet enums for most common jet alg choices (including some plugins). For the built-in algs, E-scheme recombination is used. For full control of FastJet built-in jet algs, use the native arg constructor.

Definition at line 19 of file FastJets.cc.

References FastJets::_jdef, FastJets::_plugin, FastJets::ANTIKT, FastJets::CAM, FastJets::CDFJETCLU, FastJets::CDFMIDPOINT, FastJets::D0ILCONE, Log::DEBUG, FastJets::DURHAM, Projection::getLog(), FastJets::JADE, FastJets::KT, FastJets::PXCONE, Projection::setName(), FastJets::SISCONE, and FastJets::TRACKJET.

Referenced by FastJets::clone().

00020     : JetAlg(fsp)
00021   {
00022     setName("FastJets");
00023     getLog() << Log::DEBUG << "R parameter = " << rparameter << endl;
00024     getLog() << Log::DEBUG << "Seed threshold = " << seed_threshold << endl;
00025     if (alg == KT) {
00026       _jdef = fastjet::JetDefinition(fastjet::kt_algorithm, rparameter, fastjet::E_scheme);
00027     } else if (alg == CAM) {
00028       _jdef = fastjet::JetDefinition(fastjet::cambridge_algorithm, rparameter, fastjet::E_scheme);
00029     } else if (alg == ANTIKT) {
00030       _jdef = fastjet::JetDefinition(fastjet::antikt_algorithm, rparameter, fastjet::E_scheme);
00031     } else if (alg == DURHAM) {
00032       _jdef = fastjet::JetDefinition(fastjet::ee_kt_algorithm, fastjet::E_scheme);
00033     } else {
00034       // Plugins:
00035       if (alg == SISCONE) {
00036         const double OVERLAP_THRESHOLD = 0.75;
00037         _plugin.reset(new fastjet::SISConePlugin(rparameter, OVERLAP_THRESHOLD));
00038       } else if (alg == PXCONE) {
00039         throw Error("PxCone currently not supported, since FastJet doesn't install it by default");
00040         //_plugin.reset(new fastjet::PxConePlugin(rparameter));
00041       } else if (alg == CDFJETCLU) {
00042         const double OVERLAP_THRESHOLD = 0.75;
00043         _plugin.reset(new fastjet::CDFJetCluPlugin(rparameter, OVERLAP_THRESHOLD, seed_threshold));
00044       } else if (alg == CDFMIDPOINT) {
00045         const double OVERLAP_THRESHOLD = 0.75;
00046         _plugin.reset(new fastjet::CDFMidPointPlugin(rparameter, OVERLAP_THRESHOLD, seed_threshold));
00047       } else if (alg == D0ILCONE) {
00048         const double min_jet_Et = 6.0;
00049         _plugin.reset(new fastjet::D0RunIIConePlugin(rparameter, min_jet_Et));
00050       } else if (alg == JADE) {
00051         _plugin.reset(new fastjet::JadePlugin());
00052       } else if (alg == TRACKJET) {
00053         _plugin.reset(new fastjet::TrackJetPlugin(rparameter));
00054       }
00055       _jdef = fastjet::JetDefinition(_plugin.get());
00056     }
00057   }

FastJets ( const FinalState fsp,
fastjet::JetAlgorithm  type,
fastjet::RecombinationScheme  recom,
double  rparameter 
)

Native argument constructor, using FastJet alg/scheme enums.

Definition at line 60 of file FastJets.cc.

References FastJets::_jdef, and Projection::setName().

00062     : JetAlg(fsp)
00063   {
00064     setName("FastJets");
00065     _jdef = fastjet::JetDefinition(type, rparameter, recom);
00066   }

FastJets ( const FinalState fsp,
fastjet::JetDefinition::Plugin &  plugin 
)

Explicitly pass in an externally-constructed plugin.

Todo:
Should we be copying the plugin?

Definition at line 69 of file FastJets.cc.

References FastJets::_jdef, FastJets::_plugin, and Projection::setName().

00071     : JetAlg(fsp)
00072   {
00073     setName("FastJets");
00074     /// @todo Should we be copying the plugin?
00075     _plugin.reset(&plugin);
00076     _jdef = fastjet::JetDefinition(_plugin.get());
00077   }


Member Function Documentation

virtual const Projection* clone (  )  const [inline, virtual]

Clone on the heap.

Implements JetAlg.

Definition at line 63 of file FastJets.hh.

References FastJets::FastJets().

00063                                             {
00064       return new FastJets(*this);
00065     }

void reset (  )  [virtual]

Reset the projection. Jet def etc are unchanged.

Todo:
_cseq = fastjet::ClusterSequence();

Implements JetAlg.

Definition at line 144 of file FastJets.cc.

References FastJets::_particles, and FastJets::_yscales.

00144                        {
00145     _yscales.clear();
00146     _particles.clear();
00147     /// @todo _cseq = fastjet::ClusterSequence();
00148   }

size_t numJets ( double  ptmin = 0.0  )  const

Number of jets above the $ p_\perp $ cut.

Definition at line 151 of file FastJets.cc.

References FastJets::_cseq.

Referenced by FastJets::size().

00151                                              {
00152     if (_cseq.get() != 0) {
00153       return _cseq->inclusive_jets(ptmin).size();
00154     } else {
00155       return 0;
00156     }
00157   }

size_t size (  )  const [inline, virtual]

Number of jets.

Implements JetAlg.

Definition at line 79 of file FastJets.hh.

References FastJets::numJets().

Referenced by CDF_2008_S8095620::analyze(), and CDF_2006_S6653332::analyze().

00079                         {
00080       return numJets();
00081     }

Jets jets ( double  ptmin = 0.0  )  const [virtual]

Get the jets (unordered).

Implements JetAlg.

Definition at line 160 of file FastJets.cc.

References FastJets::_pseudojetsToJets(), and FastJets::pseudoJets().

Referenced by D0_2008_S7719523::analyze(), and CDF_2008_S7540469::analyze().

00160                                         {
00161     Jets rtn = _pseudojetsToJets(pseudoJets(ptmin));
00162     return rtn;
00163   }

Jets jetsByPt ( double  ptmin = 0.0  )  const

Jets jetsByE ( double  ptmin = 0.0  )  const

Get the jets, ordered by $ E $.

Reimplemented from JetAlg.

Definition at line 171 of file FastJets.cc.

References FastJets::_pseudojetsToJets(), and FastJets::pseudoJetsByE().

00171                                            {
00172     return _pseudojetsToJets(pseudoJetsByE(ptmin));
00173   }

Jets jetsByRapidity ( double  ptmin = 0.0  )  const

Get the jets, ordered by rapidity.

Definition at line 176 of file FastJets.cc.

References FastJets::_pseudojetsToJets(), and FastJets::pseudoJetsByRapidity().

00176                                                   {
00177     return _pseudojetsToJets(pseudoJetsByRapidity(ptmin));
00178   }

PseudoJets pseudoJets ( double  ptmin = 0.0  )  const

Get the pseudo jets (unordered).

Definition at line 181 of file FastJets.cc.

References FastJets::_cseq.

Referenced by FastJets::jets(), FastJets::pseudoJetsByE(), FastJets::pseudoJetsByPt(), and FastJets::pseudoJetsByRapidity().

00181                                                     {
00182     if (_cseq.get() != 0) {
00183       return _cseq->inclusive_jets(ptmin);
00184     } else {
00185       return PseudoJets();
00186     }
00187   }

PseudoJets pseudoJetsByPt ( double  ptmin = 0.0  )  const [inline]

Get the pseudo jets, ordered by $ p_T $.

Definition at line 99 of file FastJets.hh.

References FastJets::pseudoJets().

Referenced by CDF_2008_S8095620::analyze(), CDF_2006_S6653332::analyze(), and FastJets::jetsByPt().

00099                                                         {
00100       return sorted_by_pt(pseudoJets(ptmin));
00101     }

PseudoJets pseudoJetsByE ( double  ptmin = 0.0  )  const [inline]

Get the pseudo jets, ordered by $ E $.

Definition at line 104 of file FastJets.hh.

References FastJets::pseudoJets().

Referenced by FastJets::jetsByE().

00104                                                        {
00105       return sorted_by_E(pseudoJets(ptmin));
00106     }

PseudoJets pseudoJetsByRapidity ( double  ptmin = 0.0  )  const [inline]

Get the pseudo jets, ordered by rapidity.

Definition at line 109 of file FastJets.hh.

References FastJets::pseudoJets().

Referenced by FastJets::jetsByRapidity().

00109                                                               {
00110       return sorted_by_rapidity(pseudoJets(ptmin));
00111     }

const fastjet::ClusterSequence* clusterSeq (  )  const [inline]

const fastjet::JetDefinition& jetDef (  )  const [inline]

Return the jet definition (FastJet-specific).

Definition at line 119 of file FastJets.hh.

References FastJets::_jdef.

00119                                                {
00120       return _jdef;
00121     }

vector< double > ySubJet ( const fastjet::PseudoJet &  jet  )  const

Get the subjet splitting variables for the given jet.

Definition at line 190 of file FastJets.cc.

References FastJets::_jdef, FastJets::_yscales, and FastJets::clusterSeq().

00190                                                                     {
00191     assert(clusterSeq());
00192     map<int,vector<double> >::iterator iter = _yscales.find(jet.cluster_hist_index());
00193     fastjet::ClusterSequence subjet_cseq(clusterSeq()->constituents(jet), _jdef);
00194     vector<double> yMergeVals;
00195     for (int i = 1; i < 4; ++i) {
00196       // Multiply the dmerge value by R^2 so that it corresponds to a
00197       // relative k_T (fastjet has 1/R^2 in the d_ij distance by default)
00198       const double ktmerge = subjet_cseq.exclusive_dmerge(i) * _jdef.R()*_jdef.R();
00199       yMergeVals.push_back(ktmerge/jet.perp2());
00200     }
00201     _yscales.insert(make_pair( jet.cluster_hist_index(), yMergeVals ));
00202     return yMergeVals;
00203   }

fastjet::PseudoJet splitJet ( fastjet::PseudoJet  jet,
double &  last_R 
) const

Split a jet a la PRL100,242001(2008). Based on code from G.Salam, A.Davison.

Definition at line 207 of file FastJets.cc.

References FastJets::_cseq, FastJets::_jdef, FastJets::clusterSeq(), Log::DEBUG, Projection::getLog(), and Rivet::split().

00207                                                                                 {
00208     // Sanity cuts
00209     if (jet.E() <= 0 || _cseq->constituents(jet).size() <= 1) {
00210       return jet;
00211     }
00212 
00213     // Build a new cluster sequence just using the consituents of this jet.
00214     assert(clusterSeq());
00215     fastjet::ClusterSequence cs(clusterSeq()->constituents(jet), _jdef);
00216 
00217     // Get the jet back again
00218     fastjet::PseudoJet remadeJet = cs.inclusive_jets()[0];
00219     getLog() << Log::DEBUG << "Jet2:" << remadeJet.m() << "," << remadeJet.e() << endl;
00220 
00221     fastjet::PseudoJet parent1, parent2;
00222     fastjet::PseudoJet split(0.0, 0.0, 0.0, 0.0);
00223     while (cs.has_parents(remadeJet, parent1, parent2)) {
00224       getLog() << Log::DEBUG << "Parents:" << parent1.m() << "," << parent2.m() << endl;
00225       if (parent1.m2() < parent2.m2()) {
00226         fastjet::PseudoJet tmp;
00227         tmp = parent1; parent1 = parent2; parent2 = tmp;
00228       }
00229 
00230       double ktdist = parent1.kt_distance(parent2);
00231       double rtycut2 = 0.3*0.3;
00232       if (parent1.m() < ((2.0*remadeJet.m())/3.0) && ktdist > rtycut2*remadeJet.m2()) {
00233         break;
00234       } else {
00235         remadeJet = parent1;
00236       }
00237     }
00238 
00239     last_R = 0.5 * sqrt(parent1.squared_distance(parent2));
00240     split.reset(remadeJet.px(), remadeJet.py(), remadeJet.pz(), remadeJet.E());
00241     return split;
00242   }

fastjet::PseudoJet filterJet ( fastjet::PseudoJet  jet,
double &  stingy_R,
const double  def_R 
) const

Filter a jet a la PRL100,242001(2008). Based on code from G.Salam, A.Davison.

Definition at line 246 of file FastJets.cc.

References FastJets::clusterSeq().

00247                                                                                      {
00248     assert(clusterSeq());
00249 
00250     if (jet.E() <= 0.0 || clusterSeq()->constituents(jet).size() == 0) {
00251       return jet;
00252     }
00253     if (stingy_R == 0.0) {
00254       stingy_R = def_R;
00255     }
00256 
00257     stingy_R = def_R < stingy_R ? def_R : stingy_R;
00258     fastjet::JetDefinition stingy_jet_def(fastjet::cambridge_algorithm, stingy_R);
00259 
00260     //FlavourRecombiner recom;
00261     //stingy_jet_def.set_recombiner(&recom);
00262     fastjet::ClusterSequence scs(clusterSeq()->constituents(jet), stingy_jet_def);
00263     std::vector<fastjet::PseudoJet> stingy_jets = sorted_by_pt(scs.inclusive_jets());
00264 
00265     fastjet::PseudoJet reconst_jet(0.0, 0.0, 0.0, 0.0);
00266 
00267     for (unsigned isj = 0; isj < std::min(3U, (unsigned int) stingy_jets.size()); ++isj) {
00268       reconst_jet += stingy_jets[isj];
00269     }
00270     return reconst_jet;
00271   }

Jets _pseudojetsToJets ( const PseudoJets pjets  )  const [private]

Definition at line 127 of file FastJets.cc.

References FastJets::_particles, and FastJets::clusterSeq().

Referenced by FastJets::jets(), FastJets::jetsByE(), FastJets::jetsByPt(), and FastJets::jetsByRapidity().

00127                                                                 {
00128     Jets rtn;
00129     foreach (const fastjet::PseudoJet& pj, pjets) {
00130       Jet j;
00131       assert(clusterSeq());
00132       const PseudoJets parts = clusterSeq()->constituents(pj);
00133       foreach (const fastjet::PseudoJet& p, parts) {
00134         map<int, Particle>::const_iterator found = _particles.find(p.user_index());
00135         assert(found != _particles.end());
00136         j.addParticle(found->second);
00137       }
00138       rtn.push_back(j);
00139     }
00140     return rtn;
00141   }

void project ( const Event e  )  [protected, virtual]

Perform the projection on the Event.

Implements JetAlg.

Definition at line 103 of file FastJets.cc.

References FastJets::calc(), and FinalState::particles().

00103                                        {
00104     const FinalState& fs = applyProjection<FinalState>(e, "FS");
00105     calc(fs.particles());
00106   }

int compare ( const Projection p  )  const [protected, virtual]

Compare projections.

Implements JetAlg.

Definition at line 91 of file FastJets.cc.

References FastJets::_jdef, Rivet::cmp(), and Projection::mkNamedPCmp().

00091                                                  {
00092     const FastJets& other = dynamic_cast<const FastJets&>(p);
00093     return \
00094       mkNamedPCmp(other, "FS") ||
00095       cmp(_jdef.jet_algorithm(), other._jdef.jet_algorithm()) ||
00096       cmp(_jdef.recombination_scheme(), other._jdef.recombination_scheme()) ||
00097       cmp(_jdef.plugin(), other._jdef.plugin()) ||
00098       cmp(_jdef.R(), other._jdef.R());
00099   }

void calc ( const ParticleVector ps  ) 

Do the calculation locally (no caching).

Reimplemented from JetAlg.

Definition at line 109 of file FastJets.cc.

References FastJets::_cseq, FastJets::_jdef, FastJets::_particles, Log::DEBUG, FourMomentum::E(), Projection::getLog(), Particle::momentum(), FourMomentum::px(), FourMomentum::py(), and FourMomentum::pz().

Referenced by D0_2008_S7719523::analyze(), CDF_2008_S7540469::analyze(), and FastJets::project().

00109                                               {
00110     _particles.clear();
00111     vector<fastjet::PseudoJet> vecs;
00112     // Store 4 vector data about each particle into vecs
00113     int counter = 1;
00114     foreach (const Particle& p, ps) {
00115       const FourMomentum fv = p.momentum();
00116       fastjet::PseudoJet pJet(fv.px(), fv.py(), fv.pz(), fv.E());
00117       pJet.set_user_index(counter);
00118       vecs.push_back(pJet);
00119       _particles[counter] = p;
00120       ++counter;
00121     }
00122     getLog() << Log::DEBUG << "Running FastJet ClusterSequence construction" << endl;
00123     _cseq.reset(new fastjet::ClusterSequence(vecs, _jdef));
00124   }

Jets jets ( sorter,
double  ptmin = 0.0 
) const [inline, inherited]

Get the jets, ordered by supplied sorting function object.

Definition at line 76 of file JetAlg.hh.

References JetAlg::jets().

00076                                                 {
00077       Jets js = jets(ptmin);
00078       if (sorter != 0) {
00079         std::sort(js.begin(), js.end(), sorter);
00080       }
00081       return js;
00082     }

Jets jetsByEt ( double  ptmin = 0.0  )  const [inline, inherited]

Get the jets, ordered by $ E_T $.

Definition at line 95 of file JetAlg.hh.

References JetAlg::jets().

Referenced by CDF_2008_S7541902::analyze().

00095                                           {
00096       return jets(cmpJetsByEt, ptmin);
00097     }

collection_type entities (  )  const [inline, inherited]

Template-usable interface common to FinalState.

Definition at line 112 of file JetAlg.hh.

References JetAlg::jets().

00112 { return jets(); }

bool before ( const Projection p  )  const [inherited]

Determine whether this object should be ordered before the object p given as argument. If p is of a different class than this, the before() function of the corresponding type_info objects is used. Otherwise, if the objects are of the same class, the virtual compare(const Projection &) will be returned.

Definition at line 28 of file Projection.cc.

References Projection::compare().

Referenced by less< const Rivet::Projection * >::operator()().

00028                                                    {
00029     const std::type_info& thisid = typeid(*this);
00030     const std::type_info& otherid = typeid(p);
00031     if (thisid == otherid) {
00032       return compare(p) < 0;
00033     } else {
00034       return thisid.before(otherid);
00035     }
00036   }

const set< BeamPair > beamPairs (  )  const [virtual, inherited]

Return the BeamConstraints for this projection, not including recursion. Derived classes should ensure that all contained projections are registered in the _projections set for the beam constraint chaining to work.

Definition at line 39 of file Projection.cc.

References Projection::_beamPairs, Projection::beamPairs(), Projection::getLog(), ProjectionApplier::getProjections(), Rivet::intersection(), and Log::TRACE.

Referenced by Projection::beamPairs().

00039                                                   {
00040     set<BeamPair> ret = _beamPairs;
00041     set<ConstProjectionPtr> projs = getProjections();
00042     for (set<ConstProjectionPtr>::const_iterator ip = projs.begin(); ip != projs.end(); ++ip) {
00043       ConstProjectionPtr p = *ip;
00044       getLog() << Log::TRACE << "Proj addr = " << p << endl;
00045       if (p) ret = intersection(ret, p->beamPairs());
00046     }
00047     return ret;
00048   }

virtual std::string name (  )  const [inline, virtual, inherited]

Projection& addBeamPair ( const ParticleName beam1,
const ParticleName beam2 
) [inline, inherited]

Add a colliding beam pair.

Definition at line 105 of file Projection.hh.

References Projection::_beamPairs.

Referenced by Projection::Projection().

00105                                                                                   {
00106       _beamPairs.insert(BeamPair(beam1, beam2));
00107       return *this;
00108     }

Log& getLog (  )  const [inline, inherited]

void setName ( const std::string &  name  )  [inline, inherited]

Cmp<Projection> mkNamedPCmp ( const Projection otherparent,
const std::string &  pname 
) const [protected, inherited]

Cmp<Projection> mkPCmp ( const Projection otherparent,
const std::string &  pname 
) const [protected, inherited]

Shortcut to make a named Cmp<Projection> comparison with the *this object automatically passed as one of the parent projections.

std::set<ConstProjectionPtr> getProjections (  )  const [inline, inherited]

Get the contained projections, including recursion.

Definition at line 43 of file ProjectionApplier.hh.

References ProjectionHandler::DEEP, ProjectionHandler::getChildProjections(), and ProjectionApplier::getProjHandler().

Referenced by Projection::beamPairs().

00043                                                       {
00044       return getProjHandler().getChildProjections(*this, ProjectionHandler::DEEP);
00045     }

const PROJ& getProjection ( const std::string &  name  )  const [inline, inherited]

Get the named projection, specifying return type via a template argument.

Definition at line 50 of file ProjectionApplier.hh.

References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().

Referenced by VetoedFinalState::compare(), Rivet::pcmp(), and Hemispheres::project().

00050                                                            {
00051       const Projection& p = getProjHandler().getProjection(*this, name);
00052       return pcast<PROJ>(p);
00053     }

const Projection& getProjection ( const std::string &  name  )  const [inline, inherited]

Get the named projection (non-templated, so returns as a reference to a Projection base class).

Definition at line 58 of file ProjectionApplier.hh.

References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().

00058                                                                  {
00059       return getProjHandler().getProjection(*this, name);
00060     }

const PROJ& applyProjection ( const Event evt,
const PROJ &  proj 
) const [inline, inherited]

Apply the supplied projection on event.

Definition at line 68 of file ProjectionApplier.hh.

References ProjectionApplier::_applyProjection().

Referenced by HadronicFinalState::project(), and FinalStateHCM::project().

00068                                                                           {
00069       return pcast<PROJ>(_applyProjection(evt, proj));
00070     }

const PROJ& applyProjection ( const Event evt,
const Projection proj 
) const [inline, inherited]

Apply the supplied projection on event.

Definition at line 75 of file ProjectionApplier.hh.

References ProjectionApplier::_applyProjection().

00075                                                                                 {
00076       return pcast<PROJ>(_applyProjection(evt, proj));
00077     }

const PROJ& applyProjection ( const Event evt,
const std::string &  name 
) const [inline, inherited]

Apply the named projection on event.

Definition at line 82 of file ProjectionApplier.hh.

References ProjectionApplier::_applyProjection().

00082                                                                                {
00083       return pcast<PROJ>(_applyProjection(evt, name));
00084     }

ProjectionHandler& getProjHandler (  )  const [inline, protected, inherited]

Get a reference to the ProjectionHandler for this thread.

Definition at line 95 of file ProjectionApplier.hh.

References ProjectionApplier::_projhandler.

Referenced by ProjectionApplier::_addProjection(), ProjectionApplier::getProjection(), ProjectionApplier::getProjections(), and ProjectionApplier::~ProjectionApplier().

00095                                               {
00096       assert(_projhandler);
00097       return *_projhandler;
00098     }

const PROJ& addProjection ( const PROJ &  proj,
const std::string &  name 
) [inline, protected, inherited]

Register a contained projection. The type of the argument is used to instantiate a new projection internally: this new object is applied to events rather than the argument object. Hence you are advised to only use locally-scoped Projection objects in your Projection and Analysis constructors, and to avoid polymorphism (e.g. handling ConcreteProjection via a pointer or reference to type Projection) since this will screw up the internal type management.

Definition at line 115 of file ProjectionApplier.hh.

References ProjectionApplier::_addProjection().

Referenced by ZFinder::_init(), WFinder::_init(), VetoedFinalState::addVetoOnThisFinalState(), CDF_2009_S8057893::CDF_2009_S8057893::init(), CentralEtHCM::CentralEtHCM(), ChargedFinalState::ChargedFinalState(), ChargedLeptons::ChargedLeptons(), ClusteredPhotons::ClusteredPhotons(), DISKinematics::DISKinematics(), DISLepton::DISLepton(), FinalState::FinalState(), FinalStateHCM::FinalStateHCM(), FoxWolframMoments::FoxWolframMoments(), HadronicFinalState::HadronicFinalState(), Hemispheres::Hemispheres(), IdentifiedFinalState::IdentifiedFinalState(), ZEUS_2001_S4815815::init(), UA5_1989_S1926373::init(), UA5_1988_S1867512::init(), UA5_1986_S1583476::init(), UA5_1982_S875503::init(), UA1_1990_S2044935::init(), STAR_2009_UE_HELEN::init(), STAR_2008_S7993412::init(), STAR_2006_S6870392::init(), STAR_2006_S6860818::init(), STAR_2006_S6500200::init(), SFM_1984_S1178091::init(), PDG_HADRON_MULTIPLICITIES_RATIOS::init(), PDG_HADRON_MULTIPLICITIES::init(), OPAL_2004_S6132243::init(), OPAL_1998_S3780481::init(), MC_ZJETS::init(), MC_WJETS::init(), MC_TTBAR::init(), MC_SUSY::init(), MC_PHOTONJETUE::init(), MC_PHOTONJETS::init(), MC_LEADINGJETS::init(), MC_JETS::init(), MC_DIPHOTON::init(), MC_DIJET::init(), JADE_OPAL_2000_S4300807::init(), H1_2000_S4129130::init(), H1_1995_S3167097::init(), H1_1994_S2919893::init(), ExampleAnalysis::init(), E735_1998_S3905616::init(), DELPHI_2002_069_CONF_603::init(), DELPHI_1995_S3137023::init(), D0_2010_S8570965::init(), D0_2010_S8566488::init(), D0_2009_S8349509::init(), D0_2009_S8320160::init(), D0_2009_S8202443::init(), D0_2008_S7863608::init(), D0_2008_S7837160::init(), D0_2008_S7719523::init(), D0_2008_S7662670::init(), D0_2008_S7554427::init(), D0_2008_S6879055::init(), D0_2007_S7075677::init(), D0_2006_S6438750::init(), D0_2004_S5992206::init(), D0_2001_S4674421::init(), D0_1998_S3711838::init(), D0_1996_S3324664::init(), D0_1996_S3214044::init(), CDF_2009_S8436959::init(), CDF_2009_S8383952::init(), CDF_2009_S8233977::init(), CDF_2008_S8095620::init(), CDF_2008_S8093652::init(), CDF_2008_S7828950::init(), CDF_2008_S7782535::init(), CDF_2008_S7541902::init(), CDF_2008_S7540469::init(), CDF_2008_NOTE_9351::init(), CDF_2008_LEADINGJETS::init(), CDF_2007_S7057202::init(), CDF_2006_S6653332::init(), CDF_2006_S6450792::init(), CDF_2005_S6217184::init(), CDF_2005_S6080774::init(), CDF_2004_S5839831::init(), CDF_2002_S4796047::init(), CDF_2001_S4751469::init(), CDF_2001_S4563131::init(), CDF_2001_S4517016::init(), CDF_2000_S4266730::init(), CDF_2000_S4155203::init(), CDF_1998_S3618439::init(), CDF_1997_S3541940::init(), CDF_1996_S3418421::init(), CDF_1996_S3349578::init(), CDF_1996_S3108457::init(), CDF_1994_S2952106::init(), CDF_1991_S2313472::init(), CDF_1990_S2089246::init(), CDF_1988_S1865951::init(), BELLE_2006_S6265367::init(), ATLAS_2010_S8591806::init(), ALEPH_2004_S5765862::init(), ALEPH_1996_S3486095::init(), ALEPH_1996_S3196992::init(), ALEPH_1991_S2435284::init(), IsolationProjection::IsolationProjection(), JetAlg::JetAlg(), JetShape::JetShape(), KtJets::KtJets(), LeadingParticlesFinalState::LeadingParticlesFinalState(), LossyFinalState::LossyFinalState(), MergedFinalState::MergedFinalState(), Multiplicity::Multiplicity(), NeutralFinalState::NeutralFinalState(), ParisiTensor::ParisiTensor(), Sphericity::Sphericity(), SVertex::SVertex(), Thrust::Thrust(), TotalVisibleMomentum::TotalVisibleMomentum(), TriggerCDFRun0Run1::TriggerCDFRun0Run1(), TriggerUA5::TriggerUA5(), and VetoedFinalState::VetoedFinalState().

00115                                                                        {
00116       const Projection& reg = _addProjection(proj, name);
00117       return dynamic_cast<const PROJ&>(reg);
00118     }

const Projection & _addProjection ( const Projection proj,
const std::string &  name 
) [protected, inherited]

Untemplated function to do the work...

Definition at line 33 of file ProjectionApplier.cc.

References ProjectionApplier::_allowProjReg, Log::ERROR, ProjectionApplier::getLog(), ProjectionApplier::getProjHandler(), ProjectionApplier::name(), Projection::name(), and ProjectionHandler::registerProjection().

Referenced by ProjectionApplier::addProjection().

00034                                                                              {
00035     if (!_allowProjReg) {
00036       getLog() << Log::ERROR << "Trying to register projection '"
00037                << proj.name() << "' before init phase in '" << this->name() << "'." << endl;
00038       exit(2);
00039     }
00040     const Projection& reg = getProjHandler().registerProjection(*this, proj, name);
00041     return reg;
00042   }


Friends And Related Function Documentation

friend class Event [friend, inherited]

Event is a friend.

Definition at line 31 of file Projection.hh.

friend class Cmp< Projection > [friend, inherited]

The Cmp specialization for Projection is a friend.

Definition at line 34 of file Projection.hh.

friend class Projectionhandler [friend, inherited]

Definition at line 23 of file ProjectionApplier.hh.


Member Data Documentation

fastjet::JetDefinition _jdef [private]

shared_ptr<fastjet::ClusterSequence> _cseq [private]

Cluster sequence.

Definition at line 158 of file FastJets.hh.

Referenced by FastJets::calc(), FastJets::clusterSeq(), FastJets::numJets(), FastJets::pseudoJets(), and FastJets::splitJet().

shared_ptr<fastjet::JetDefinition::Plugin> _plugin [private]

FastJet external plugin.

Definition at line 161 of file FastJets.hh.

Referenced by FastJets::FastJets().

map<int, vector<double> > _yscales [mutable, private]

Map of vectors of y scales. This is mutable so we can use caching/lazy evaluation.

Definition at line 164 of file FastJets.hh.

Referenced by FastJets::reset(), and FastJets::ySubJet().

map<int, Particle> _particles [private]

set of particles sorted by their PT2

Definition at line 168 of file FastJets.hh.

Referenced by FastJets::_pseudojetsToJets(), FastJets::calc(), and FastJets::reset().

bool _allowProjReg [protected, inherited]

Flag to forbid projection registration in analyses until the init phase.

Definition at line 141 of file ProjectionApplier.hh.

Referenced by ProjectionApplier::_addProjection(), and AnalysisHandler::init().


The documentation for this class was generated from the following files: