00001 #ifndef RECOSI_DATA_H
00002 #define RECOSI_DATA_H 1
00003
00004 #include "instrument/Glast.h"
00005 #include "geometry/Point.h"
00006 #include "idents/ModuleId.h"
00007 #include "data/SiData.h"
00008
00009 #include "GaudiKernel/Kernel.h"
00010 #include "GaudiKernel/DataObject.h"
00011 #include "GaudiKernel/SmartRefVector.h"
00012 #include "GlastEvent/TopLevel/Definitions.h"
00013 #include "GlastEvent/Utilities/CellID.h"
00014 #include "GaudiKernel/ObjectVector.h"
00015 #include "GaudiKernel/ObjectList.h"
00016
00017
00018 #include <iostream>
00019 #include <vector>
00020
00021 extern const CLID& CLID_TdSiData;
00022
00023 class TdSiData : virtual public SiData , virtual public DataObject {
00024 public:
00025
00026 virtual const CLID& clID() const { return TdSiData::classID(); }
00027 static const CLID& classID() { return CLID_TdSiData; }
00028
00029
00030 TdSiData ();
00031
00032 TdSiData (unsigned int n);
00033
00034
00035 TdSiData (TdSiData*,unsigned int n);
00036
00037 virtual ~TdSiData ();
00038
00039
00040 virtual const SiData::Id& moduleId (enum SiData::Axis a,
00041 unsigned int tray,
00042 unsigned int n) const;
00043
00044
00045 void load (const SiDetector& strips, idents::ModuleId module);
00046
00047
00048 void clear ();
00049
00050
00051 int nTrays(enum SiData::Axis a) const;
00052
00053
00054 int nHits (enum SiData::Axis a, int tray) const;
00055
00056
00057 int layerNum (enum SiData::Axis a, int tray) const;
00058
00059
00060 Point hit (enum SiData::Axis a, unsigned int tray, unsigned int n) const;
00061
00062
00063 unsigned int hitId (enum SiData::Axis a,
00064 unsigned int tray, unsigned int n) const;
00065
00066
00067
00068
00069
00070
00071 int totalHits () const;
00072
00073
00074
00075 void printOn (std::ostream& cout = std::cout) const;
00076
00077 private:
00078
00079 int m_total_hits;
00080 int m_controller_max;
00081 class Strip;
00082
00083 std::vector<int> xLayers;
00084 std::vector< std::vector< class Strip >* > xhitList;
00085
00086
00087 std::vector<int> yLayers;
00088 std::vector< std::vector< class Strip >* > yhitList;
00089
00090 };
00091
00092 #endif