StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StEtaPhiGrid.h
1 // -*- mode: c++;-*-
2 // $Id: StEtaPhiGrid.h,v 1.7 2010/07/02 21:47:56 pibero Exp $
3 // Copyright (C) 2008 Tai Sakuma <sakuma@mit.edu>
4 #ifndef STETAPHIGRID_H
5 #define STETAPHIGRID_H
6 
7 #include "StEtGridKey.h"
8 #include "StEtaPhiCell.h"
9 
10 #include <map>
11 #include <list>
12 
13 class StJetEtCellFactory;
14 class StConePars;
15 
16 namespace StSpinJet {
17 
18 class StEtaPhiGrid {
19 
20 public:
21 
22  typedef std::list<StProtoJet> JetList;
23  typedef std::map<StEtGridKey, StEtaPhiCell*> CellMap;
24  typedef CellMap::value_type CellMapValType;
25  typedef StEtaPhiCell::CellList CellList;
26 
27  StEtaPhiGrid(StConePars& pars) : _pars(pars) { }
28 
29  ~StEtaPhiGrid();
30 
31  void buildGrid(StJetEtCellFactory* cellFactory);
32 
33  void fillGridWith(JetList& protoJetList);
34 
35  CellList EtSortedCellList();
36  CellList WithinTheConeRadiusCellList(const StEtaPhiCell& theCell) const;
37 
38  StEtaPhiCell* findMidpointCell(const StEtaPhiCell& cell1, const StEtaPhiCell& cell2);
39 
40  StEtaPhiCell* Cell(double eta, double phi);
41 
42 private:
43 
44  StEtaPhiCell* CellI(int iEta, int iPhi) const;
45 
46  StEtGridKey findKey(double eta, double phi) const;
47  int findEtaKey(double eta) const;
48  int findPhiKey(double phi) const;
49 
50  double midpoint(double v1, double v2);
51 
52  StConePars& _pars;
53  CellMap _EtCellMap;
54  CellList _EtCellList;
55 
56 };
57 
58 }
59 
60 #endif // STETAPHIGRID_H