00001
00002
00003 #ifndef StConeJetFinder_HH
00004 #define StConeJetFinder_HH
00005
00006 #include "StConeJetFinderBase.h"
00007
00008 #include <vector>
00009
00010 class StConeJetFinder : public StConeJetFinderBase {
00011
00012 public:
00013
00014 StConeJetFinder(const StConePars& pars);
00015 virtual ~StConeJetFinder();
00016
00017 StJetEtCellFactory* makeCellFactory();
00018
00019 void findJets(JetList& protoJetList, const FourVecList& particleList);
00020
00021 private:
00022
00023 CellList generateEtOrderedCellList(const FourVecList& particleList);
00024
00025 CellList findProtoJetsAroundCells(CellList& toSearchList);
00026
00027 StEtaPhiCell* findJetAroundThis(StEtaPhiCell* cell);
00028
00029
00030 bool shouldNotSearchForJetAroundThis(const StEtaPhiCell* cell) const;
00031
00032 StEtaPhiCell* createJetCellFor(StEtaPhiCell& cell);
00033 StEtaPhiCell* findJetWithStableCone();
00034
00035 CellList generateMidpointList(const CellList& protoJetCellList);
00036
00037 CellList findProtoJetsAroundMidpoints(CellList& midpointList);
00038
00039 bool shouldNotAddToTheCell(const StEtaPhiCell& theCell, const StEtaPhiCell& otherCell) const;
00040
00041 bool isInTheVolume(double eta, double phi);
00042
00043 bool areTheyInTheSameCell(double eta1, double phi1, double eta2, double phi2);
00044
00045 void storeTheResults(JetList& protoJetList, const CellList& protoJetCellList);
00046
00047 StJetSpliterMerger* mMerger;
00048
00049 std::vector<StEtaPhiCell*> _toDelete;
00050 void deleteToDelete();
00051
00052 };
00053
00054 #endif
00055