Public Member Functions |
Protected Member Functions |
Protected Attributes |
Private Member Functions |
Private Attributes |
Friends
Spherocity Class Reference Get the transverse spherocity scalars for hadron-colliders. More...
Detailed DescriptionGet the transverse spherocity scalars for hadron-colliders. The scalar (minimum) transverse spherocity is defined as
, with the direction of the unit vector Care must be taken in the case of Drell-Yan processes - there we should use the newly proposed observable Definition at line 30 of file Spherocity.hh. Constructor & Destructor Documentation
Definition at line 34 of file Spherocity.hh. {}
Constructor. Definition at line 37 of file Spherocity.hh. : _calculatedSpherocity(false) { setName("Spherocity"); addProjection(fsp, "FS"); } Member Function Documentation
Non-templated version of string-based applyProjection, to work around header dependency issue. Definition at line 22 of file ProjectionApplier.cc. { return evt.applyProjection(getProjection(name)); }
Non-templated version of proj-based applyProjection, to work around header dependency issue. Definition at line 28 of file ProjectionApplier.cc. {
return evt.applyProjection(proj);
}
Explicitly calculate the spherocity values. Definition at line 79 of file Spherocity.cc. { // Make a vector of the three-momenta in the final state // Explicitly set the z-component (parallel to beam axis) to zero // This creates a 3D-vector representation of the transverse momentum // but takes the full information momentum vectors as input // A small iteration over full momenta but set z-coord. to 0.0 to get transverse momenta vector<Vector3> fsperpmomenta; foreach (const Vector3& p, fsmomenta) { fsperpmomenta.push_back(Vector3(p.x(), p.y(), 0.0)); } // This returns the scalar sum of (transverse) momenta double perpmomentumSum(0.0); foreach (const Vector3& p, fsperpmomenta) { perpmomentumSum += p.mod(); } // Clear the caches _spherocities.clear(); _spherocityAxes.clear(); // Temporary variables for calcs Vector3 axis(0,0,0); double val = 0.; // Get spherocity _calcS(fsperpmomenta, val, axis); MSG_DEBUG("Mom sum = " << perpmomentumSum); double spherocity = 0.25 * PI * PI * val * val / (perpmomentumSum * perpmomentumSum); _spherocities.push_back(spherocity); // See if calculated spherocity value makes sense if (spherocity < 0.0 || spherocity > 1.0) { MSG_WARNING("Spherocity = " << spherocity); } MSG_DEBUG("Spherocity value = " << spherocity); MSG_DEBUG("Sperocity axis = " << axis); _spherocityAxes.push_back(axis); }
Untemplated function to do the work... Definition at line 34 of file ProjectionApplier.cc. { if (!_allowProjReg) { cerr << "Trying to register projection '" << proj.name() << "' before init phase in '" << this->name() << "'." << endl; exit(2); } const Projection& reg = getProjHandler().registerProjection(*this, proj, name); return reg; }
Add a colliding beam pair. Definition at line 108 of file Projection.hh. { _beamPairs.insert(PdgIdPair(beam1, beam2)); return *this; }
Register a contained projection (user-facing version)
Definition at line 157 of file ProjectionApplier.hh. { return declareProjection(proj, name); }
Apply the supplied projection on event evt (user-facing alias).
Definition at line 80 of file ProjectionApplier.hh. { return applyProjection<PROJ>(evt, proj); }
Apply the supplied projection on event evt (user-facing alias).
Definition at line 92 of file ProjectionApplier.hh. { return applyProjection<PROJ>(evt, proj); }
Apply the supplied projection on event evt (user-facing alias).
Definition at line 104 of file ProjectionApplier.hh. { return applyProjection<PROJ>(evt, name); }
Apply the supplied projection on event evt.
Definition at line 74 of file ProjectionApplier.hh. { return pcast<PROJ>(_applyProjection(evt, proj)); }
Apply the supplied projection on event evt.
Definition at line 86 of file ProjectionApplier.hh. { return pcast<PROJ>(_applyProjection(evt, proj)); }
Apply the named projection on event evt.
Definition at line 98 of file ProjectionApplier.hh. { return pcast<PROJ>(_applyProjection(evt, name)); } Axis accessors, in decreasing order of significance. The main axis. Implements AxesDefinition. Definition at line 86 of file Spherocity.hh. { return spherocityAxis(); } The 2nd most significant ("major") axis. Implements AxesDefinition. Definition at line 87 of file Spherocity.hh. { return spherocityMajorAxis(); } The least significant ("minor") axis. Implements AxesDefinition. Definition at line 88 of file Spherocity.hh. { return spherocityMinorAxis(); } Return the allowed beam pairs on which this projection can operate, 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 35 of file Projection.cc. { set<PdgIdPair> ret = _beamPairs; set<ConstProjectionPtr> projs = getProjections(); for (set<ConstProjectionPtr>::const_iterator ip = projs.begin(); ip != projs.end(); ++ip) { ConstProjectionPtr p = *ip; getLog() << Log::TRACE << "Proj addr = " << p << endl; if (p) ret = intersection(ret, p->beamPairs()); } return ret; }
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 24 of file Projection.cc.
Manually calculate the spherocity, without engaging the caching system. Definition at line 10 of file Spherocity.cc. { calc(fs.particles()); } Manually calculate the spherocity, without engaging the caching system. Definition at line 15 of file Spherocity.cc. { vector<Vector3> threeMomenta; threeMomenta.reserve(fsparticles.size()); foreach (const Particle& p, fsparticles) { threeMomenta.push_back( p.momentum().vector3() ); } _calcSpherocity(threeMomenta); }
Manually calculate the spherocity, without engaging the caching system. Definition at line 25 of file Spherocity.cc. { vector<Vector3> threeMomenta; threeMomenta.reserve(fsmomenta.size()); foreach (const FourMomentum& v, fsmomenta) { threeMomenta.push_back(v.vector3()); } _calcSpherocity(threeMomenta); } Manually calculate the spherocity, without engaging the caching system. Definition at line 35 of file Spherocity.cc. { _calcSpherocity(fsmomenta); }
Clone on the heap. Implements Projection.
Compare projections. Implements Projection. Definition at line 59 of file Spherocity.hh. { return mkNamedPCmp(p, "FS"); }
Register a contained projection (user-facing version)
Definition at line 151 of file ProjectionApplier.hh. { return declareProjection(proj, name); }
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
Definition at line 142 of file ProjectionApplier.hh. { const Projection& reg = _declareProjection(proj, name); const PROJ& rtn = dynamic_cast<const PROJ&>(reg); return rtn; } Clone on the heap.
Get the named projection, specifying return type via a template argument (user-facing alias).
Definition at line 57 of file ProjectionApplier.hh. { return getProjection<PROJ>(name); } Get a Log object based on the getName() property of the calling projection object. Reimplemented from ProjectionApplier. Definition at line 115 of file Projection.hh. { string logname = "Rivet.Projection." + name(); return Log::getLog(logname); }
Get the named projection, specifying return type via a template argument.
Definition at line 50 of file ProjectionApplier.hh. { const Projection& p = getProjHandler().getProjection(*this, name); return pcast<PROJ>(p); }
Get the named projection (non-templated, so returns as a reference to a Projection base class). Definition at line 61 of file ProjectionApplier.hh. { return getProjHandler().getProjection(*this, name); }
Get the contained projections, including recursion. Definition at line 43 of file ProjectionApplier.hh. { return getProjHandler().getChildProjections(*this, ProjectionHandler::DEEP); }
Get a reference to the ProjectionHandler for this thread. Definition at line 122 of file ProjectionApplier.hh. { return _projhandler; }
Mark object as owned by the _projhandler
Definition at line 111 of file ProjectionApplier.hh. { _owned = true; }
Shortcut to make a named Cmp<Projection> comparison with the Definition at line 47 of file Projection.cc. { return pcmp(*this, otherparent, pname); }
Shortcut to make a named Cmp<Projection> comparison with the
Definition at line 51 of file Projection.cc. { return pcmp(*this, otherparent, pname); }
Get the name of the projection. Implements ProjectionApplier. Definition at line 102 of file Projection.hh. { return _name; } Perform the projection on the Event. Implements Projection. Definition at line 51 of file Spherocity.hh.
Used by derived classes to set their name. Definition at line 121 of file Projection.hh.
The spherocity scalar, Definition at line 69 of file Spherocity.hh. { return _spherocities[0]; }
The spherocity major axis (axis of max spherocity perpendicular to spherocity axis). Definition at line 78 of file Spherocity.hh. { return _spherocityAxes[1]; }
The spherocity minor axis (axis perpendicular to spherocity and spherocity major). Definition at line 80 of file Spherocity.hh. { return _spherocityAxes[2]; } Friends And Related Function Documentation
The Cmp specialization for Projection is a friend. Definition at line 36 of file Projection.hh.
Event is a friend. Definition at line 33 of file Projection.hh. Member Data Documentation
Flag to forbid projection registration in analyses until the init phase. Definition at line 176 of file ProjectionApplier.hh.
Caching flag to avoid costly recalculations. Definition at line 122 of file Spherocity.hh.
The spherocity scalars. Definition at line 116 of file Spherocity.hh.
The spherocity axes. Definition at line 119 of file Spherocity.hh. The documentation for this class was generated from the following files: Generated on Tue Dec 13 2016 16:32:50 for The Rivet MC analysis system by ![]() |