Warning, file /include/Rivet/Projections/Spherocity.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002 #ifndef RIVET_Spherocity_HH
0003 #define RIVET_Spherocity_HH
0004
0005 #include "Rivet/Projection.hh"
0006 #include "Rivet/Projections/AxesDefinition.hh"
0007 #include "Rivet/Projections/FinalState.hh"
0008 #include "Rivet/Event.hh"
0009
0010 namespace Rivet {
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 class Spherocity : public AxesDefinition {
0031 public:
0032
0033 using AxesDefinition::operator=;
0034
0035
0036 Spherocity() {}
0037
0038
0039 Spherocity(const FinalState& fsp) {
0040 setName("Spherocity");
0041 declare(fsp, "FS");
0042 }
0043
0044
0045 RIVET_DEFAULT_PROJ_CLONE(Spherocity);
0046
0047
0048 using Projection::operator =;
0049
0050
0051 protected:
0052
0053
0054 void project(const Event& e) {
0055 const vector<Particle> ps = apply<FinalState>(e, "FS").particles();
0056 calc(ps);
0057 }
0058
0059
0060
0061 CmpState compare(const Projection& p) const {
0062 return mkNamedPCmp(p, "FS");
0063 }
0064
0065
0066 public:
0067
0068
0069
0070
0071 double spherocity() const { return _spherocities[0]; }
0072
0073
0074
0075
0076
0077
0078 const Vector3& spherocityAxis() const { return _spherocityAxes[0]; }
0079
0080 const Vector3& spherocityMajorAxis() const { return _spherocityAxes[1]; }
0081
0082 const Vector3& spherocityMinorAxis() const { return _spherocityAxes[2]; }
0083
0084
0085
0086
0087
0088 const Vector3& axis1() const { return spherocityAxis(); }
0089 const Vector3& axis2() const { return spherocityMajorAxis(); }
0090 const Vector3& axis3() const { return spherocityMinorAxis(); }
0091
0092
0093
0094 public:
0095
0096
0097
0098
0099
0100
0101 void calc(const FinalState& fs);
0102
0103
0104 void calc(const vector<Particle>& fsparticles);
0105
0106
0107 void calc(const vector<FourMomentum>& fsmomenta);
0108
0109
0110 void calc(const vector<Vector3>& threeMomenta);
0111
0112
0113
0114
0115 protected:
0116
0117
0118 vector<double> _spherocities;
0119
0120
0121 vector<Vector3> _spherocityAxes;
0122
0123
0124 protected:
0125
0126
0127 void _calcSpherocity(const vector<Vector3>& fsmomenta);
0128
0129 };
0130
0131 }
0132
0133 #endif