/usr/include/Rivet/ParticleBase.hh is in librivet-dev 1.8.3-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #ifndef RIVET_ParticleBase_HH
#define RIVET_ParticleBase_HH
#include "Rivet/Rivet.hh"
#include "Rivet/Math/Vectors.hh"
namespace Rivet {
/// @brief Base class for particle-like things like Particle and Jet
class ParticleBase {
public:
ParticleBase() { }
virtual ~ParticleBase() { }
// virtual FourMomentum& momentum() = 0;
virtual const FourMomentum& momentum() const = 0;
/// Struct for sorting by increasing transverse momentum in STL set, sort, etc.
struct byPTAscending {
bool operator()(const ParticleBase& left, const ParticleBase& right) const {
double pt2left = left.momentum().pT2();
double pt2right = right.momentum().pT2();
return pt2left < pt2right;
}
bool operator()(const ParticleBase* left, const ParticleBase* right) const {
return (*this)(*left, *right);
}
};
/// Struct for sorting by decreasing transverse momentum in STL set, sort etc.
struct byPTDescending {
bool operator()(const ParticleBase& left, const ParticleBase& right) const {
return byPTAscending()(right, left);
}
bool operator()(const ParticleBase* left, const ParticleBase* right) const {
return (*this)(*left, *right);
}
};
/// Struct for sorting by increasing transverse energy
struct byETAscending {
bool operator()(const ParticleBase& left, const ParticleBase& right) const {
double pt2left = left.momentum().Et2();
double pt2right = right.momentum().Et2();
return pt2left < pt2right;
}
bool operator()(const ParticleBase* left, const ParticleBase* right) const {
return (*this)(*left, *right);
}
};
/// Struct for sorting by decreasing transverse energy
struct byETDescending {
bool operator()(const ParticleBase& left, const ParticleBase& right) const {
return byETAscending()(right, left);
}
bool operator()(const ParticleBase* left, const ParticleBase* right) const {
return (*this)(*left, *right);
}
};
/// Struct for sorting by increasing energy
struct byEAscending {
bool operator()(const ParticleBase& left, const ParticleBase& right) const {
double pt2left = left.momentum().E();
double pt2right = right.momentum().E();
return pt2left < pt2right;
}
bool operator()(const ParticleBase* left, const ParticleBase* right) const {
return (*this)(*left, *right);
}
};
/// Struct for sorting by decreasing energy
struct byEDescending {
bool operator()(const ParticleBase& left, const ParticleBase& right) const {
return byEAscending()(right, left);
}
bool operator()(const ParticleBase* left, const ParticleBase* right) const {
return (*this)(*left, *right);
}
};
};
}
#endif
|