00001
00002
00003 #ifndef STCONEJETFINDERBASE_H
00004 #define STCONEJETFINDERBASE_H
00005
00006 #include "StJetEtCellFactory.h"
00007
00008 #include "TObject.h"
00009
00010
00011
00012
00013 #include "StJetFinder.h"
00014 #include "Functors.h"
00015 #include "StJetEtCell.h"
00016
00017 class StJetSpliterMerger;
00018 class StConeJetFinderBase;
00019
00020 #include "StConePars.h"
00021
00022 #include "StEtaPhiGrid.h"
00023
00029 class StConeJetFinderBase : public StJetFinder {
00030
00031 public:
00032
00033 typedef StEtaPhiCell::CellList CellList;
00034
00035 StConeJetFinderBase(const StConePars& pars);
00036 virtual ~StConeJetFinderBase();
00037
00038 void Init();
00039
00040 virtual void findJets(JetList& protoJetList, const FourVecList& particleList) = 0;
00041
00042 protected:
00043
00045 friend struct PreJetInitializer;
00046
00048 StConeJetFinderBase();
00049
00050 virtual StJetEtCellFactory* makeCellFactory() = 0;
00051
00052
00053 void initializeWorkCell(const StEtaPhiCell* other);
00054
00055 void formCone();
00056
00057
00058 const StProtoJet& collectCell(StEtaPhiCell* seed);
00059
00060 StConePars mPars;
00061
00062 StEtaPhiCell *mWorkCell;
00063
00064
00065 StSpinJet::StEtaPhiGrid _cellGrid;
00066
00067
00068 CellList generateToSearchListFrom(CellList& orderedList);
00069
00070
00071
00072 private:
00073
00074
00075
00076 virtual bool shouldNotAddToTheCell(const StEtaPhiCell& theCell, const StEtaPhiCell& otherCell) const = 0;
00077
00078 };
00079
00080 #endif // STCONEJETFINDERBASE_H
00081
00082