#ifndef _L1HitsL1HitsSortHelper_h_ #define _L1HitsL1HitsSortHelper_h_ #include #include #include "L1StsHit.h" #include "L1HitPoint.h" #include "L1Grid.h" #include #include using std::vector; using std::map; struct L1HitsSortHelperData{ L1StsHit* h; L1HitPoint* p; unsigned int bin; THitI i; static bool compare(const L1HitsSortHelperData &a, const L1HitsSortHelperData &b){ return a.bin < b.bin; //return (a.bin < b.bin ||( a.bin == b.bin && ( a.p->Ys() < b.p->Ys() || ((a.p->Ys() == b.p->Ys()) && (a.i > b.i)) ) )); // return a.bin < b.bin || ( a.bin == b.bin && a.p->Ys() < b.p->Ys() ); } }; class L1HitsSortHelper{ public: L1HitsSortHelper( vector &hits, vector &points, vector &indices, const L1Grid* grid, THitI* iStart, THitI* iStop, int nStations, int nDontUsedHits); L1HitsSortHelper(); void Sort(int nDontUsedHits, vector * pointsBuf, vector * hitsBuf); void Fill(vector * hits, vector * points, vector * indices, const L1Grid* grid, int nStations, THitI* iStart, THitI* iStop); private: vector fD; vector *fHits; vector *fPoints; vector *fIndices; const L1Grid* fGrid; THitI *fStsHitsUnusedStartIndex, *fStsHitsUnusedStopIndex; int fNStations; }; #endif