32 #include "fastjet/ClusterSequence.hh" 33 #include "fastjet/JadePlugin.hh" 36 #include "fastjet/NNH.hh" 37 #include "fastjet/NNFJN2Plain.hh" 49 FASTJET_BEGIN_NAMESPACE
75 void init(
const PseudoJet & jet) {
76 double norm = 1.0/sqrt(jet.modp2());
80 rt2E = sqrt(2.0)*jet.E();
83 double distance(
const JadeBriefJet * jet)
const {
84 double dij = 1 - nx*jet->nx
87 dij *= rt2E*jet->rt2E;
91 double geometrical_distance(
const JadeBriefJet * jet)
const {
92 double dij = 1 - nx*jet->nx
95 dij *= max(rt2E,jet->rt2E);
99 double momentum_factor()
const {
103 double beam_distance()
const {
104 return numeric_limits<double>::max();
107 double geometrical_beam_distance()
const {
111 const double almost_max = numeric_limits<double>::max() * (1 - 1e-13);
112 return almost_max / rt2E;
116 double rt2E, nx, ny, nz;
121 string JadePlugin::description ()
const {
123 desc <<
"e+e- JADE algorithm plugin";
126 desc <<
", using NNH strategy";
break;
127 case strategy_NNFJN2Plain:
128 desc <<
", using NNFJN2Plain strategy";
break;
130 throw Error(
"Unrecognized strategy in JadePlugin");
179 template<
class N>
void JadePlugin::_actual_run_clustering(
ClusterSequence & cs)
const {
181 int njets = cs.
jets().size();
191 double dij = nn.dij_min(i, j);
195 nn.merge_jets(i, j, cs.
jets()[k], k);
197 double diB = cs.
jets()[i].E()*cs.
jets()[i].E();
211 _actual_run_clustering<NNH<JadeBriefJet> >(cs);
213 case strategy_NNFJN2Plain:
214 _actual_run_clustering<NNFJN2Plain<JadeBriefJet> >(cs);
217 throw Error(
"Unrecognized strategy in JadePlugin");
222 FASTJET_END_NAMESPACE
double norm(const VPoint p)
norm of a vector
void plugin_record_ij_recombination(int jet_i, int jet_j, double dij, int &newjet_k)
record the fact that there has been a recombination between jets()[jet_i] and jets()[jet_k], with the specified dij, and return the index (newjet_k) allocated to the new jet, whose momentum is assumed to be the 4-vector sum of that of jet_i and jet_j
void plugin_record_iB_recombination(int jet_i, double diB)
record the fact that there has been a recombination between jets()[jet_i] and the beam...
base class corresponding to errors that can be thrown by FastJet
const std::vector< PseudoJet > & jets() const
allow the user to access the internally stored _jets() array, which contains both the initial particl...