8 std::vector<fastjet::PseudoJet>& fOutput) {
10 list<fastjet::PseudoJet>
input;
11 for (std::vector<fastjet::PseudoJet>::const_iterator candIter = fInput.begin(); candIter != fInput.end();
13 input.push_back(*candIter);
16 while (!
input.empty() &&
input.front().perp() > seedThresholdPt_) {
18 double seedEta =
input.front().eta();
19 double seedPhi =
input.front().phi();
22 list<inputListIter> maxCone;
25 maxCone.push_back(iCand++);
26 for (; iCand !=
input.end(); ++iCand) {
27 const fastjet::PseudoJet& candidate = *iCand;
28 if (
reco::deltaR2(seedEta, candidate.eta(), seedPhi, candidate.phi()) < maxSizeSquared_)
29 maxCone.push_back(iCand);
33 list<inputListIter>::const_iterator
position = maxCone.begin();
34 bool limitReached =
false;
35 double totalET = (**position).perp();
37 while (
position != maxCone.end() && !limitReached) {
38 const fastjet::PseudoJet& theCandidate = **
position;
39 double candidateET = theCandidate.perp() + totalET;
40 double candDR2 =
reco::deltaR2(seedEta, theCandidate.eta(), seedPhi, theCandidate.phi());
41 if (candDR2 < minSizeSquared_ || candDR2 * candidateET * candidateET < growthParameterSquared_)
42 totalET = candidateET;
48 fastjet::PseudoJet
final;
49 for (list<inputListIter>::const_iterator iNewJet = maxCone.begin(); iNewJet !=
position; ++iNewJet) {
51 input.erase(*iNewJet);
53 fOutput.push_back(
final);
bool greaterByEtPseudoJet(fastjet::PseudoJet const &j1, fastjet::PseudoJet const &j2)
static std::string const input
std::list< fastjet::PseudoJet >::iterator inputListIter
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
static int position[264][3]
void run(const std::vector< fastjet::PseudoJet > &fInput, std::vector< fastjet::PseudoJet > &fOutput)
Build from input candidate collection.