ParticleBase.hh
Go to the documentation of this file.
00001 #ifndef RIVET_ParticleBase_HH 00002 #define RIVET_ParticleBase_HH 00003 00004 #include "Rivet/Config/RivetCommon.hh" 00005 #include "Rivet/Jet.fhh" 00006 #include "Rivet/Math/Vectors.hh" 00007 00008 namespace Rivet { 00009 00010 00011 /// @brief Base class for particle-like things like Particle and Jet 00012 class ParticleBase { 00013 public: 00014 00015 /// Default constructor 00016 ParticleBase() { } 00017 00018 /// Virtual destructor 00019 virtual ~ParticleBase() { } 00020 00021 00022 /// @name Effective momentum accessors 00023 //@{ 00024 00025 /// Get equivalent single momentum four-vector (const). 00026 virtual const FourMomentum& momentum() const = 0; 00027 00028 /// Cast operator for conversion to FourMomentum 00029 operator const FourMomentum& () const { return momentum(); } 00030 00031 /// @todo Add a converter and cast operator to FJ3 PseudoJet 00032 // virtual PseudoJet pseudojet() const { ... } 00033 // operator PseudoJet () const { return pseudojet(); } 00034 00035 //@} 00036 00037 00038 /// @name Convenience access to the effective 4-vector properties 00039 //@{ 00040 00041 /// Get the energy directly. 00042 double E() const { return momentum().E(); } 00043 /// Get the energy directly (alias). 00044 double energy() const { return momentum().E(); } 00045 00046 /// Get the \f$ p_T \f$ directly. 00047 double pt() const { return momentum().pt(); } 00048 /// Get the \f$ p_T \f$ directly (alias). 00049 double pT() const { return pt(); } 00050 /// Get the \f$ p_T \f$ directly (alias). 00051 double perp() const { return pt(); } 00052 00053 /// Get the \f$ E_T \f$ directly. 00054 double Et() const { return momentum().Et(); } 00055 00056 /// Get the mass directly. 00057 double mass() const { return momentum().mass(); } 00058 /// Get the mass**2 directly. 00059 double mass2() const { return momentum().mass2(); } 00060 00061 /// Get the \f$ \eta \f$ directly. 00062 double pseudorapidity() const { return momentum().eta(); } 00063 /// Get the \f$ \eta \f$ directly (alias). 00064 double eta() const { return momentum().eta(); } 00065 /// Get the \f$ |\eta| \f$ directly. 00066 double abspseudorapidity() const { return momentum().abspseudorapidity(); } 00067 /// Get the \f$ |\eta| \f$ directly (alias). 00068 double abseta() const { return momentum().abseta(); } 00069 00070 /// Get the \f$ y \f$ directly. 00071 double rapidity() const { return momentum().rapidity(); } 00072 /// Get the \f$ y \f$ directly (alias). 00073 double rap() const { return momentum().rapidity(); } 00074 /// Get the \f$ |y| \f$ directly. 00075 double absrapidity() const { return momentum().absrapidity(); } 00076 /// Get the \f$ |y| \f$ directly (alias). 00077 double absrap() const { return momentum().absrap(); } 00078 00079 /// Get the \f$ \phi \f$ directly. 00080 double phi() const { return momentum().phi(); } 00081 00082 //@} 00083 00084 }; 00085 00086 00087 /// @name deltaR, deltaEta, deltaPhi functions specifically for Particle/Jet arguments 00088 //@{ 00089 00090 inline double deltaR(const ParticleBase& p1, const ParticleBase& p2, 00091 RapScheme scheme = PSEUDORAPIDITY) { 00092 return deltaR(p1.momentum(), p2.momentum(), scheme); 00093 } 00094 00095 inline double deltaR(const ParticleBase& p, const FourMomentum& v, 00096 RapScheme scheme = PSEUDORAPIDITY) { 00097 return deltaR(p.momentum(), v, scheme); 00098 } 00099 00100 inline double deltaR(const ParticleBase& p, const FourVector& v, 00101 RapScheme scheme = PSEUDORAPIDITY) { 00102 return deltaR(p.momentum(), v, scheme); 00103 } 00104 00105 inline double deltaR(const ParticleBase& p, const Vector3& v) { 00106 return deltaR(p.momentum(), v); 00107 } 00108 00109 inline double deltaR(const ParticleBase& p, double eta, double phi) { 00110 return deltaR(p.momentum(), eta, phi); 00111 } 00112 00113 inline double deltaR(const FourMomentum& v, const ParticleBase& p, 00114 RapScheme scheme = PSEUDORAPIDITY) { 00115 return deltaR(v, p.momentum(), scheme); 00116 } 00117 00118 inline double deltaR(const FourVector& v, const ParticleBase& p, 00119 RapScheme scheme = PSEUDORAPIDITY) { 00120 return deltaR(v, p.momentum(), scheme); 00121 } 00122 00123 inline double deltaR(const Vector3& v, const ParticleBase& p) { 00124 return deltaR(v, p.momentum()); 00125 } 00126 00127 inline double deltaR(double eta, double phi, const ParticleBase& p) { 00128 return deltaR(eta, phi, p.momentum()); 00129 } 00130 00131 00132 inline double deltaPhi(const ParticleBase& p1, const ParticleBase& p2) { 00133 return deltaPhi(p1.momentum(), p2.momentum()); 00134 } 00135 00136 inline double deltaPhi(const ParticleBase& p, const FourMomentum& v) { 00137 return deltaPhi(p.momentum(), v); 00138 } 00139 00140 inline double deltaPhi(const ParticleBase& p, const FourVector& v) { 00141 return deltaPhi(p.momentum(), v); 00142 } 00143 00144 inline double deltaPhi(const ParticleBase& p, const Vector3& v) { 00145 return deltaPhi(p.momentum(), v); 00146 } 00147 00148 inline double deltaPhi(const ParticleBase& p, double phi) { 00149 return deltaPhi(p.momentum(), phi); 00150 } 00151 00152 inline double deltaPhi(const FourMomentum& v, const ParticleBase& p) { 00153 return deltaPhi(v, p.momentum()); 00154 } 00155 00156 inline double deltaPhi(const FourVector& v, const ParticleBase& p) { 00157 return deltaPhi(v, p.momentum()); 00158 } 00159 00160 inline double deltaPhi(const Vector3& v, const ParticleBase& p) { 00161 return deltaPhi(v, p.momentum()); 00162 } 00163 00164 inline double deltaPhi(double phi, const ParticleBase& p) { 00165 return deltaPhi(phi, p.momentum()); 00166 } 00167 00168 00169 inline double deltaEta(const ParticleBase& p1, const ParticleBase& p2) { 00170 return deltaEta(p1.momentum(), p2.momentum()); 00171 } 00172 00173 inline double deltaEta(const ParticleBase& p, const FourMomentum& v) { 00174 return deltaEta(p.momentum(), v); 00175 } 00176 00177 inline double deltaEta(const ParticleBase& p, const FourVector& v) { 00178 return deltaEta(p.momentum(), v); 00179 } 00180 00181 inline double deltaEta(const ParticleBase& p, const Vector3& v) { 00182 return deltaEta(p.momentum(), v); 00183 } 00184 00185 inline double deltaEta(const ParticleBase& p, double eta) { 00186 return deltaEta(p.momentum(), eta); 00187 } 00188 00189 inline double deltaEta(const FourMomentum& v, const ParticleBase& p) { 00190 return deltaEta(v, p.momentum()); 00191 } 00192 00193 inline double deltaEta(const FourVector& v, const ParticleBase& p) { 00194 return deltaEta(v, p.momentum()); 00195 } 00196 00197 inline double deltaEta(const Vector3& v, const ParticleBase& p) { 00198 return deltaEta(v, p.momentum()); 00199 } 00200 00201 inline double deltaEta(double eta, const ParticleBase& p) { 00202 return deltaEta(eta, p.momentum()); 00203 } 00204 00205 00206 inline double deltaRap(const ParticleBase& p1, const ParticleBase& p2) { 00207 return deltaRap(p1.momentum(), p2.momentum()); 00208 } 00209 00210 inline double deltaRap(const ParticleBase& p, const FourMomentum& v) { 00211 return deltaRap(p.momentum(), v); 00212 } 00213 00214 inline double deltaRap(const ParticleBase& p, double y) { 00215 return deltaRap(p.momentum(), y); 00216 } 00217 00218 inline double deltaRap(const FourMomentum& v, const ParticleBase& p) { 00219 return deltaRap(v, p.momentum()); 00220 } 00221 00222 inline double deltaRap(double y, const ParticleBase& p) { 00223 return deltaRap(y, p.momentum()); 00224 } 00225 00226 //@} 00227 00228 00229 } 00230 00231 #endif Generated on Tue May 13 2014 11:38:29 for The Rivet MC analysis system by ![]() |