00001
00002
00003
00004
00005
00007
00008
00009
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027
00028 #ifndef TpcHitUtilities_H
00029 #define TpcHitUtilities_H
00030
00031 class StTrack;
00032 class StTpcHit;
00033 #include "StThreeVectorD.hh"
00034
00035 #include <vector>
00036 #include <map>
00037
00038 #ifndef ST_NO_NAMESPACES
00039 using std::vector;
00040 using std::map;
00041 using std::pair;
00042 #endif
00043
00044 #include "TpcMapUtilities.h"
00045
00046 typedef map<HitMapQAKey, PadrowLocation, MapQAKeyLessThan>::value_type padrowMapValType;
00047
00048 class TpcHitUtilities {
00049 public:
00050 TpcHitUtilities();
00051 TpcHitUtilities(StTrack*, double MagneticField);
00052 virtual ~TpcHitUtilities();
00053
00054
00055 void clear();
00056 void setTrack(StTrack*);
00057 void setBField(double);
00058
00059 const vector<StTpcHit*>& tpcHitVec() const;
00060
00061
00062 void findHits();
00063 double dx(StTpcHit*);
00064
00065 protected:
00066
00067 void buildMaps();
00068 bool keepHit(StTpcHit*);
00069 const StThreeVectorD sectorNormal(int sector);
00070
00071 map<int, StThreeVectorD> m_SectorNormalMap;
00072 map<HitMapQAKey, PadrowLocation, MapQAKeyLessThan> m_PadrowMap;
00073
00074
00075 vector<StTpcHit*> m_tpcHitVec;
00076 StTrack* m_StTrack;
00077 double m_BField;
00078 };
00079
00080 #endif