00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <vector>
00021 #include "fastjet/ClusterSequence.hh"
00022 #include "StjFastJet.h"
00023
00024 void StjFastJet::findJets(JetList& protoJetList, const FourVecList& particleList)
00025 {
00026
00027 std::vector<fastjet::PseudoJet> inputParticles;
00028 for (size_t i = 0; i < particleList.size(); ++i) {
00029 fastjet::PseudoJet pseudojet(particleList[i]->px(),particleList[i]->py(),particleList[i]->pz(),particleList[i]->e());
00030 pseudojet.set_user_index(i);
00031 inputParticles.push_back(pseudojet);
00032 }
00033
00034
00035 fastjet::ClusterSequence clusterSequence(inputParticles,jetDefinition());
00036
00037
00038 std::vector<fastjet::PseudoJet> inclusiveJets = clusterSequence.inclusive_jets(mPars.ptMin());
00039 for (size_t i = 0; i < inclusiveJets.size(); ++i) {
00040 StProtoJet protojet;
00041 std::vector<fastjet::PseudoJet> constituents = clusterSequence.constituents(inclusiveJets[i]);
00042 for (size_t j = 0; j < constituents.size(); ++j) {
00043 const_cast<FourVecList&>(protojet.list()).push_back(particleList[constituents[j].user_index()]);
00044 }
00045 protojet.update();
00046 protoJetList.push_back(protojet);
00047 }
00048 }
00049
00050 fastjet::JetDefinition StjFastJet::jetDefinition() const
00051 {
00052 return (mPars.jetAlgorithm() == fastjet::plugin_algorithm)
00053 ? fastjet::JetDefinition(static_cast<fastjet::JetDefinition::Plugin*>(mPars.plugin()))
00054 : fastjet::JetDefinition(static_cast<fastjet::JetAlgorithm>(mPars.jetAlgorithm()),
00055 mPars.Rparam(),
00056 static_cast<fastjet::RecombinationScheme>(mPars.recombinationScheme()),
00057 static_cast<fastjet::Strategy>(mPars.strategy()));
00058 }