|
The Rivet MC analysis system
1.8.2
|
Calculate the sphericity event shape.
More...
#include <Sphericity.hh>
List of all members.
Public Member Functions |
void | clear () |
| Reset the projection.
|
bool | before (const Projection &p) const |
virtual const std::set< PdgIdPair > | beamPairs () const |
virtual std::string | name () const |
| Get the name of the projection.
|
Projection & | addPdgIdPair (PdgId beam1, PdgId beam2) |
| Add a colliding beam pair.
|
Log & | getLog () 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.
|
|
| Sphericity (double rparam=2.0) |
| Constructor.
|
| Sphericity (const FinalState &fsp, double rparam=2.0) |
virtual const Projection * | clone () const |
| Clone on the heap.
|
|
|
double | sphericity () const |
double | transSphericity () const |
| Transverse Sphericity.
|
double | planarity () const |
| Planarity.
|
double | aplanarity () const |
| Aplanarity.
|
|
|
const Vector3 & | sphericityAxis () const |
const Vector3 & | sphericityMajorAxis () const |
| Sphericity major axis.
|
const Vector3 & | sphericityMinorAxis () const |
| Sphericity minor axis.
|
|
const Vector3 & | axis1 () const |
| AxesDefinition axis accessors.
|
const Vector3 & | axis2 () const |
| The 2nd most significant ("major") axis.
|
const Vector3 & | axis3 () const |
| The least significant ("minor") axis.
|
|
double | lambda1 () const |
double | lambda2 () const |
double | lambda3 () const |
|
Ways to do the calculation directly, without engaging the caching system
|
void | calc (const FinalState &fs) |
| Manually calculate the sphericity, without engaging the caching system.
|
void | calc (const vector< Particle > &fsparticles) |
| Manually calculate the sphericity, without engaging the caching system.
|
void | calc (const vector< FourMomentum > &fsmomenta) |
| Manually calculate the sphericity, without engaging the caching system.
|
void | calc (const vector< Vector3 > &fsmomenta) |
| Manually calculate the sphericity, without engaging the caching system.
|
|
std::set< ConstProjectionPtr > | getProjections () 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 Projection & | getProjection (const std::string &name) const |
|
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 with other projections.
|
Cmp< Projection > | mkNamedPCmp (const Projection &otherparent, const std::string &pname) const |
Cmp< Projection > | mkPCmp (const Projection &otherparent, const std::string &pname) const |
ProjectionHandler & | getProjHandler () const |
| Get a reference to the ProjectionHandler for this thread.
|
|
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 |
void | _calcSphericity (const vector< Vector3 > &fsmomenta) |
| Actually do the calculation.
|
Private Attributes |
vector< double > | _lambdas |
| Eigenvalues.
|
vector< Vector3 > | _sphAxes |
| Sphericity axes.
|
const double | _regparam |
| Regularizing parameter, used to force infra-red safety.
|
Friends |
class | Event |
| Event is a friend.
|
class | Cmp< Projection > |
| The Cmp specialization for Projection is a friend.
|
Detailed Description
Calculate the sphericity event shape.
The sphericity tensor (or quadratic momentum tensor) is defined as
, where the Greek indices are spatial components and the Latin indices are used for sums over particles. From this, the sphericity, aplanarity and planarity can be calculated by combinations of eigenvalues.
Defining the three eigenvalues , with , the sphericity is
The aplanarity is and the planarity is . The eigenvectors define a set of spatial axes comparable with the thrust axes, but more sensitive to high momentum particles due to the quadratic sensitivity of the tensor to the particle momenta.
Since the sphericity is quadratic in the particle momenta, it is not an infrared safe observable in perturbative QCD. This can be fixed by adding a regularizing power of to the definition:
is available as a constructor argument on this class and will be taken into account by the Cmp<Projection> operation, so a single analysis can use several sphericity projections with different values without fear of a clash.
Definition at line 51 of file Sphericity.hh.
Constructor & Destructor Documentation
Member Function Documentation
Actually do the calculation.
Definition at line 69 of file Sphericity.cc.
References Sphericity::_lambdas, Sphericity::_regparam, Sphericity::_sphAxes, Sphericity::clear(), Rivet::diagonalize(), Rivet::fuzzyEquals(), Matrix< N >::get(), EigenSystem< N >::getDiagMatrix(), EigenSystem< N >::getEigenPairs(), Matrix< N >::isSymm(), Sphericity::lambda1(), Sphericity::lambda2(), Sphericity::lambda3(), Vector< N >::mod(), MSG_DEBUG, MSG_ERROR, MSG_TRACE, Rivet::second, Matrix< N >::set(), Sphericity::sphericityAxis(), Sphericity::sphericityMajorAxis(), and Sphericity::sphericityMinorAxis().
Referenced by Sphericity::calc().
{
MSG_DEBUG("Calculating sphericity with r = " << _regparam);
if (fsmomenta.empty()) {
MSG_DEBUG("No particles in final state...");
clear();
return;
}
Matrix3 mMom;
double totalMomentum = 0.0;
MSG_DEBUG("Number of particles = " << fsmomenta.size());
foreach (const Vector3& p3, fsmomenta) {
totalMomentum += pow(p3.mod(), _regparam);
const double regfactor = pow(p3.mod(), _regparam-2);
if (!fuzzyEquals(regfactor, 1.0)) {
MSG_TRACE("Regfactor (r=" << _regparam << ") = " << regfactor);
}
Matrix3 mMomPart;
for (size_t i = 0; i < 3; ++i) {
for (size_t j = 0; j < 3; ++j) {
mMomPart.set(i,j, p3[i]*p3[j]);
}
}
mMom += regfactor * mMomPart;
}
mMom /= totalMomentum;
MSG_DEBUG("Momentum tensor = " << "\n" << mMom);
const bool isSymm = mMom.isSymm();
if (!isSymm) {
MSG_ERROR("Error: momentum tensor not symmetric (r=" << _regparam << ")");
MSG_ERROR("[0,1] vs. [1,0]: " << mMom.get(0,1) << ", " << mMom.get(1,0));
MSG_ERROR("[0,2] vs. [2,0]: " << mMom.get(0,2) << ", " << mMom.get(2,0));
MSG_ERROR("[1,2] vs. [2,1]: " << mMom.get(1,2) << ", " << mMom.get(2,1));
}
assert(isSymm);
const EigenSystem<3> eigen3 = diagonalize(mMom);
MSG_DEBUG("Diag momentum tensor = " << "\n" << eigen3.getDiagMatrix());
_lambdas.clear();
_sphAxes.clear();
const EigenSystem<3>::EigenPairs epairs = eigen3.getEigenPairs();
assert(epairs.size() == 3);
for (size_t i = 0; i < 3; ++i) {
_lambdas.push_back(epairs[i].first);
_sphAxes.push_back(Vector3(epairs[i].second));
}
MSG_DEBUG("Lambdas = ("
<< lambda1() << ", " << lambda2() << ", " << lambda3() << ")");
MSG_DEBUG("Sum of lambdas = " << lambda1() + lambda2() + lambda3());
MSG_DEBUG("Vectors = "
<< sphericityAxis() << ", "
<< sphericityMajorAxis() << ", "
<< sphericityMinorAxis() << ")");
}
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 113 of file ProjectionApplier.hh.
References ProjectionApplier::_addProjection().
Referenced by ZFinder::_init(), WFinder::_init(), VetoedFinalState::addVetoOnThisFinalState(), BeamThrust::BeamThrust(), CDF_2009_S8057893::CDF_2009_S8057893::init(), CentralEtHCM::CentralEtHCM(), ChargedFinalState::ChargedFinalState(), ChargedLeptons::ChargedLeptons(), ClusteredPhotons::ClusteredPhotons(), DISFinalState::DISFinalState(), DISKinematics::DISKinematics(), DISLepton::DISLepton(), FinalState::FinalState(), FoxWolframMoments::FoxWolframMoments(), FParameter::FParameter(), HadronicFinalState::HadronicFinalState(), Hemispheres::Hemispheres(), IdentifiedFinalState::IdentifiedFinalState(), ATLAS_2010_S8894728::init(), CMS_2010_S8547297::init(), CMS_2010_S8656010::init(), CMS_2011_S8968497::init(), ATLAS_2011_S8994773::init(), ATLAS_2011_I894867::init(), CMS_2011_S8950903::init(), ATLAS_2010_CONF_2010_049::init(), CMS_2012_I1087342::init(), ALICE_2011_S8909580::init(), ALICE_2011_S8945144::init(), CMS_2011_S8941262::init(), CMS_2011_S8973270::init(), CMS_2011_S8978280::init(), CMS_2011_S9086218::init(), CMS_2011_S9088458::init(), CMS_2011_S9215166::init(), CMS_2012_I1107658::init(), LHCF_2012_I1115479::init(), CDF_2007_S7057202::init(), TOTEM_2012_I1115294::init(), ATLAS_2010_S8591806::init(), D0_2011_I895662::init(), CMS_2011_S8957746::init(), MC_JETS::init(), CDF_2012_NOTE10874::init(), CMS_QCD_10_024::init(), ATLAS_2011_S9002537::init(), CDF_1997_S3541940::init(), UA5_1987_S1640666::init(), MC_DIJET::init(), STAR_2006_S6500200::init(), STAR_2008_S7993412::init(), CDF_2000_S4155203::init(), CDF_2005_S6080774::init(), CDF_2006_S6450792::init(), MC_DIPHOTON::init(), SFM_1984_S1178091::init(), UA5_1982_S875503::init(), D0_2008_S6879055::init(), CDF_1993_S2742446::init(), H1_1995_S3167097::init(), MC_HJETS::init(), CDF_2008_S8093652::init(), MC_ZJETS::init(), STAR_2006_S6870392::init(), UA5_1989_S1926373::init(), CMS_2012_I1102908::init(), CDF_1988_S1865951::init(), E735_1998_S3905616::init(), MC_PHOTONJETS::init(), MC_TTBAR::init(), MC_ZZJETS::init(), CDF_2008_S7782535::init(), ATLAS_2012_I1091481::init(), ATLAS_2012_I1183818::init(), D0_1996_S3324664::init(), ALEPH_1991_S2435284::init(), ATLAS_2010_S8817804::init(), DELPHI_1999_S3960137::init(), CDF_1990_S2089246::init(), OPAL_1998_S3749908::init(), UA5_1986_S1583476::init(), ALEPH_1996_S3196992::init(), MC_IDENTIFIED::init(), MC_LEADJETUE::init(), ALEPH_2002_S4823664::init(), MC_PHOTONJETUE::init(), MC_WJETS::init(), MC_WWJETS::init(), OPAL_1995_S3198391::init(), OPAL_1996_S3257789::init(), OPAL_1997_S3608263::init(), OPAL_1998_S3702294::init(), OPAL_2000_S4418603::init(), ATLAS_2011_S8924791::init(), D0_2010_S8570965::init(), CDF_1994_S2952106::init(), JADE_OPAL_2000_S4300807::init(), MC_GENERIC::init(), CDF_2005_S6217184::init(), ATLAS_2011_I954993::init(), D0_2001_S4674421::init(), D0_2007_S7075677::init(), LHCB_2011_I919315::init(), CDF_2008_S7540469::init(), CDF_2008_S7828950::init(), ATLAS_2011_I925932::init(), UA1_1990_S2044935::init(), ZEUS_2001_S4815815::init(), D0_1996_S3214044::init(), ALICE_2010_S8624100::init(), D0_2008_S7554427::init(), D0_2008_S7863608::init(), D0_2010_S8671338::init(), DELPHI_1995_S3137023::init(), ATLAS_2011_S9131140::init(), JADE_1998_S3612880::init(), MC_PHOTONS::init(), OPAL_1997_S3396100::init(), STAR_2006_S6860818::init(), STAR_2009_UE_HELEN::init(), ALEPH_2004_S5765862::init(), EXAMPLE::init(), ATLAS_2011_S9128077::init(), ALICE_2010_S8706239::init(), CDF_2009_NOTE_9936::init(), D0_2000_S4480767::init(), ALICE_2010_S8625980::init(), D0_2009_S8202443::init(), D0_2009_S8349509::init(), CDF_2008_S8095620::init(), MC_SUSY::init(), D0_2009_S8320160::init(), ATLAS_2011_S8971293::init(), CDF_1996_S3108457::init(), CDF_2000_S4266730::init(), CDF_2001_S4563131::init(), CDF_2009_S8383952::init(), CDF_2009_S8436959::init(), CDF_1998_S3618439::init(), D0_2006_S6438750::init(), D0_2008_S7837160::init(), D0_2010_S8566488::init(), ALEPH_2001_S4656318::init(), CDF_2001_S4517016::init(), DELPHI_2002_069_CONF_603::init(), ATLAS_2012_I1082936::init(), ATLAS_2011_I926145::init(), SLD_2002_S4869273::init(), CDF_1996_S3349578::init(), D0_2010_S8821313::init(), CDF_1996_S3418421::init(), MC_WPOL::init(), ATLAS_2011_I944826::init(), D0_2008_S7662670::init(), ATLAS_2010_S8919674::init(), ATLAS_2012_I1083318::init(), UA5_1988_S1867512::init(), ATLAS_2011_S9108483::init(), ATLAS_2011_S9212183::init(), CDF_2006_S6653332::init(), CDF_2008_S7541902::init(), ATLAS_2012_I1125961::init(), ATLAS_2012_I1190891::init(), ATLAS_2011_CONF_2011_090::init(), ATLAS_2012_CONF_2012_103::init(), ATLAS_2012_I1095236::init(), ATLAS_2012_I1180197::init(), DELPHI_2000_S4328825::init(), ATLAS_2011_S9212353::init(), ATLAS_2011_S8983313::init(), ATLAS_2012_I946427::init(), ATLAS_2012_CONF_2012_104::init(), OPAL_2002_S5361494::init(), ATLAS_2012_I943401::init(), ATLAS_2012_CONF_2012_001::init(), ATLAS_2012_I1112263::init(), ATLAS_2011_S9019561::init(), SLD_1996_S3398250::init(), ATLAS_2012_CONF_2012_105::init(), ATLAS_2011_S9225137::init(), TASSO_1990_S2148048::init(), ATLAS_2012_I1117704::init(), ATLAS_2012_CONF_2012_109::init(), ATLAS_2011_CONF_2011_098::init(), ATLAS_2012_I1082009::init(), ATLAS_2012_I1186556::init(), ATLAS_2012_I1084540::init(), D0_2008_S7719523::init(), ATLAS_2012_I1126136::init(), CDF_2009_S8233977::init(), ATLAS_2012_CONF_2012_153::init(), CDF_2008_NOTE_9351::init(), CDF_2010_S8591881_DY::init(), CDF_2010_S8591881_QCD::init(), CDF_2008_LEADINGJETS::init(), D0_2004_S5992206::init(), ATLAS_2010_S8914702::init(), ATLAS_2011_S9120807::init(), ATLAS_2010_S8918562::init(), CDF_2001_S4751469::init(), LHCB_2011_I917009::init(), ATLAS_2011_I945498::init(), ATLAS_2011_S9041966::init(), DELPHI_1996_S3430090::init(), ALEPH_1996_S3486095::init(), ALEPH_1999_S4193598::init(), ATLAS_2012_I1094568::init(), OPAL_2004_S6132243::init(), ATLAS_2012_I1093738::init(), OPAL_1994_S2927284::init(), ATLAS_2011_S9126244::init(), STAR_2008_S7869363::init(), BABAR_2007_S6895344::init(), MC_VH2BB::init(), BABAR_2005_S6181155::init(), BELLE_2001_S4598261::init(), ATLAS_2011_I919017::init(), OPAL_2001_S4553896::init(), DELPHI_2003_WUD_03_11::init(), CDF_2004_S5839831::init(), CLEO_2004_S5809304::init(), ARGUS_1993_S2653028::init(), OPAL_1998_S3780481::init(), BABAR_2007_S7266081::init(), OPAL_1993_S2692198::init(), ARGUS_1993_S2669951::init(), H1_1994_S2919893::init(), H1_2000_S4129130::init(), ARGUS_1993_S2789213::init(), SLD_2004_S5693039::init(), BELLE_2006_S6265367::init(), SLD_1999_S3743934::init(), PDG_HADRON_MULTIPLICITIES::init(), PDG_HADRON_MULTIPLICITIES_RATIOS::init(), IsolationProjection< PROJ1, PROJ2, EST >::IsolationProjection(), JetAlg::JetAlg(), JetShape::JetShape(), LeadingParticlesFinalState::LeadingParticlesFinalState(), LeptonClusters::LeptonClusters(), LossyFinalState< ConstRandomFilter >::LossyFinalState(), MergedFinalState::MergedFinalState(), MissingMomentum::MissingMomentum(), Multiplicity::Multiplicity(), NeutralFinalState::NeutralFinalState(), NonHadronicFinalState::NonHadronicFinalState(), ParisiTensor::ParisiTensor(), Sphericity::Sphericity(), Spherocity::Spherocity(), Thrust::Thrust(), TriggerCDFRun0Run1::TriggerCDFRun0Run1(), TriggerCDFRun2::TriggerCDFRun2(), TriggerUA5::TriggerUA5(), VetoedFinalState::VetoedFinalState(), and VisibleFinalState::VisibleFinalState().
{
const Projection& reg = _addProjection(proj, name);
const PROJ& rtn = dynamic_cast<const PROJ&>(reg);
return rtn;
}
const PROJ& applyProjection |
( |
const Event & |
evt, |
|
|
const std::string & |
name |
|
) |
| const [inline, 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()().
{
const std::type_info& thisid = typeid(*this);
const std::type_info& otherid = typeid(p);
if (thisid == otherid) {
return compare(p) < 0;
} else {
return thisid.before(otherid);
}
}
const PROJ& getProjection |
( |
const std::string & |
name | ) |
const [inline, inherited] |
Shortcut to make a named Cmp<Projection> comparison with the *this object automatically passed as one of the parent projections.
Definition at line 51 of file Projection.cc.
References Rivet::pcmp().
Referenced by BeamThrust::compare(), ChargedLeptons::compare(), Multiplicity::compare(), FParameter::compare(), CentralEtHCM::compare(), DISLepton::compare(), MergedFinalState::compare(), DISKinematics::compare(), DISFinalState::compare(), ChargedFinalState::compare(), ClusteredPhotons::compare(), NeutralFinalState::compare(), VisibleFinalState::compare(), LeptonClusters::compare(), LeadingParticlesFinalState::compare(), ParisiTensor::compare(), Spherocity::compare(), MissingMomentum::compare(), FoxWolframMoments::compare(), LossyFinalState< ConstRandomFilter >::compare(), Thrust::compare(), InvMassFinalState::compare(), Sphericity::compare(), Hemispheres::compare(), ZFinder::compare(), IdentifiedFinalState::compare(), WFinder::compare(), JetShape::compare(), VetoedFinalState::compare(), and FastJets::compare().
{
return pcmp(*this, otherparent, pname);
}
Shortcut to make a named Cmp<Projection> comparison with the *this object automatically passed as one of the parent projections.
Definition at line 57 of file Projection.cc.
References Rivet::pcmp().
{
return pcmp(*this, otherparent, pname);
}
virtual std::string name |
( |
| ) |
const [inline, virtual, inherited] |
void setName |
( |
const std::string & |
name | ) |
[inline, inherited] |
Used by derived classes to set their name.
Definition at line 120 of file Projection.hh.
References Projection::_name, and Projection::name().
Referenced by ZFinder::_init(), WFinder::_init(), FastJets::_init1(), FastJets::_init2(), FastJets::_init3(), Beam::Beam(), BeamThrust::BeamThrust(), CentralEtHCM::CentralEtHCM(), ChargedFinalState::ChargedFinalState(), ChargedLeptons::ChargedLeptons(), ClusteredPhotons::ClusteredPhotons(), ConstLossyFinalState::ConstLossyFinalState(), DISFinalState::DISFinalState(), DISKinematics::DISKinematics(), DISLepton::DISLepton(), FinalState::FinalState(), FoxWolframMoments::FoxWolframMoments(), FParameter::FParameter(), HadronicFinalState::HadronicFinalState(), Hemispheres::Hemispheres(), IdentifiedFinalState::IdentifiedFinalState(), InitialQuarks::InitialQuarks(), IsolationProjection< PROJ1, PROJ2, EST >::IsolationProjection(), JetAlg::JetAlg(), JetShape::JetShape(), LeadingParticlesFinalState::LeadingParticlesFinalState(), LeptonClusters::LeptonClusters(), LossyFinalState< ConstRandomFilter >::LossyFinalState(), MergedFinalState::MergedFinalState(), MissingMomentum::MissingMomentum(), Multiplicity::Multiplicity(), NeutralFinalState::NeutralFinalState(), NonHadronicFinalState::NonHadronicFinalState(), ParisiTensor::ParisiTensor(), Sphericity::Sphericity(), Spherocity::Spherocity(), Thrust::Thrust(), TriggerCDFRun0Run1::TriggerCDFRun0Run1(), TriggerCDFRun2::TriggerCDFRun2(), TriggerUA5::TriggerUA5(), UnstableFinalState::UnstableFinalState(), VetoedFinalState::VetoedFinalState(), and VisibleFinalState::VisibleFinalState().
Friends And Related Function Documentation
friend class Event [friend, inherited] |
Member Data Documentation
The documentation for this class was generated from the following files:
|