UnstableFinalState Class Reference

#include <UnstableFinalState.hh>

Inheritance diagram for UnstableFinalState:

Inheritance graph
[legend]

Collaboration diagram for UnstableFinalState:

Collaboration graph
[legend]

List of all members.


Detailed Description

Project out all final-state particles in an event.

Definition at line 13 of file UnstableFinalState.hh.


Public Member Functions

virtual const ParticleVectorparticles () const
 Access the projected final-state particles.
virtual bool empty () const
 Is this final state empty?
virtual bool isEmpty () const
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.
Standard constructors and destructors.
 UnstableFinalState (double mineta=-MAXRAPIDITY, double maxeta=MAXRAPIDITY, double minpt=0.0 *GeV)
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

virtual void project (const Event &e)
 Apply the projection to the event.
virtual 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

double _etamin
 The minimum allowed pseudorapidity.
double _etamax
 The maximum allowed pseudorapidity.
double _ptmin
 The minimum allowed transverse momentum.
ParticleVector _theParticles
 The final-state particles.
bool _allowProjReg
 Flag to forbid projection registration in analyses until the init phase.

Friends

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

Constructor & Destructor Documentation

UnstableFinalState ( double  mineta = -MAXRAPIDITY,
double  maxeta = MAXRAPIDITY,
double  minpt = 0.0*GeV 
) [inline]

The default constructor. May specify the minimum and maximum pseudorapidity $ \eta $ and the min $ p_T $ (in GeV).

Definition at line 21 of file UnstableFinalState.hh.

References Projection::setName().

Referenced by UnstableFinalState::clone().

00024       : _etamin(mineta), _etamax(maxeta), _ptmin(minpt)
00025     {
00026       setName("UnstableFinalState");
00027       // addCut("eta", MORE_EQ, mineta);
00028       // addCut("eta", LESS_EQ, maxeta);
00029       // addCut("pT",  MORE_EQ, minpt);
00030     }


Member Function Documentation

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

Clone on the heap.

Implements Projection.

Definition at line 34 of file UnstableFinalState.hh.

References UnstableFinalState::UnstableFinalState().

00034                                             {
00035       return new UnstableFinalState(*this);
00036     }

virtual const ParticleVector& particles (  )  const [inline, virtual]

virtual bool empty (  )  const [inline, virtual]

Is this final state empty?

Definition at line 43 of file UnstableFinalState.hh.

References UnstableFinalState::_theParticles.

00043 { return _theParticles.empty(); }

virtual bool isEmpty (  )  const [inline, virtual]

Deprecated:
Is this final state empty?

Definition at line 45 of file UnstableFinalState.hh.

References UnstableFinalState::_theParticles.

00045 { return _theParticles.empty(); }

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

Apply the projection to the event.

Implements Projection.

Definition at line 20 of file UnstableFinalState.cc.

References UnstableFinalState::_etamax, UnstableFinalState::_etamin, UnstableFinalState::_ptmin, UnstableFinalState::_theParticles, Log::DEBUG, Rivet::eta(), Event::genEvent(), Projection::getLog(), IS_PARTON_PDGID, Log::isActive(), Rivet::isZero(), Rivet::pT(), and Log::TRACE.

00020                                                  {
00021     Log& log = getLog();
00022     _theParticles.clear();
00023 
00024     for (GenEvent::particle_const_iterator p = e.genEvent().particles_begin();
00025          p != e.genEvent().particles_end(); ++p) {
00026       const int st = (*p)->status();
00027       const double pT = (*p)->momentum().perp();
00028       const double eta = (*p)->momentum().eta();
00029       const GenVertex* pv = (*p)->production_vertex();
00030       const GenVertex* dv = (*p)->end_vertex();
00031       bool passed = ( st == 1 || (st == 2 && abs((*p)->pdg_id()) != 22) ) &&
00032                     !isZero(pT) &&
00033                     pT >= _ptmin &&
00034                     eta > _etamin &&
00035                     eta < _etamax &&
00036                     !IS_PARTON_PDGID((*p)->pdg_id());
00037       if (passed) {
00038         if (pv!=NULL) {
00039           for (GenVertex::particles_in_const_iterator pp = pv->particles_in_const_begin() ;
00040               pp != pv->particles_in_const_end() ; ++pp) {
00041             // Avoid double counting if particle == parent
00042             if ( (*p)->pdg_id() == (*pp)->pdg_id() )
00043               passed = false;
00044           }
00045         }
00046       }
00047 
00048       if (log.isActive(Log::TRACE)) {
00049         log << Log::TRACE << std::boolalpha
00050             << "ID = " << (*p)->pdg_id() << ", status = " << st << ", pT = " << pT
00051             << ", eta = " << eta << ": result = " << passed << endl;
00052         if (pv!=NULL) {
00053           for (GenVertex::particles_in_const_iterator pp = pv->particles_in_const_begin() ;
00054               pp != pv->particles_in_const_end() ; ++pp) {
00055             log << Log::TRACE << std::boolalpha
00056                 << "     parent ID = " << (*pp)->pdg_id() << endl;
00057           }
00058         }
00059         if (dv!=NULL) {
00060           for (GenVertex::particles_out_const_iterator pp = dv->particles_out_const_begin() ;
00061               pp != dv->particles_out_const_end() ; ++pp) {
00062             log << Log::TRACE << std::boolalpha
00063                 << "     child ID  = " << (*pp)->pdg_id() << endl;
00064           }
00065         }
00066       }
00067       if (passed) _theParticles.push_back(Particle(**p));
00068     }
00069     log << Log::DEBUG << "Number of final-state particles = "
00070         << _theParticles.size() << endl;
00071   }

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

Compare projections.

Implements Projection.

Definition at line 11 of file UnstableFinalState.cc.

References UnstableFinalState::_etamax, UnstableFinalState::_etamin, UnstableFinalState::_ptmin, and Rivet::cmp().

00011                                                            {
00012     const UnstableFinalState& other = dynamic_cast<const UnstableFinalState&>(p);
00013     return \
00014       cmp(_etamin, other._etamin) ||
00015       cmp(_etamax, other._etamax) ||
00016       cmp(_ptmin, other._ptmin);
00017   }

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

double _etamin [protected]

The minimum allowed pseudorapidity.

Definition at line 58 of file UnstableFinalState.hh.

Referenced by UnstableFinalState::compare(), and UnstableFinalState::project().

double _etamax [protected]

The maximum allowed pseudorapidity.

Definition at line 61 of file UnstableFinalState.hh.

Referenced by UnstableFinalState::compare(), and UnstableFinalState::project().

double _ptmin [protected]

The minimum allowed transverse momentum.

Definition at line 64 of file UnstableFinalState.hh.

Referenced by UnstableFinalState::compare(), and UnstableFinalState::project().

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: