00001
00002
00003 #ifndef RECOSI_DATA_H
00004 #define RECOSI_DATA_H 1
00005
00006 #include "instrument/Glast.h"
00007 #include "geometry/Point.h"
00008 #include "idents/ModuleId.h"
00009 #include "data/SiData.h"
00010
00011 #include <iostream>
00012 #include <vector>
00013
00014
00015 class RecoSiData : public SiData {
00016 public:
00017
00018 RecoSiData ();
00019
00020 RecoSiData (unsigned int n);
00021
00022 virtual ~RecoSiData ();
00023
00024
00025 virtual const SiData::Id& moduleId (enum SiData::Axis a,
00026 unsigned int tray,
00027 unsigned int n) const;
00028
00029
00030 void load (const SiDetector& strips, idents::ModuleId module);
00031
00032
00033 void clear ();
00034
00035
00036 int nHits (enum SiData::Axis a, int tray) const;
00037
00038
00039 Point hit (enum SiData::Axis a, unsigned int tray, unsigned int n) const;
00040
00041
00042 unsigned int hitId (enum SiData::Axis a,
00043 unsigned int tray, unsigned int n) const;
00044
00045
00046
00047
00048
00049
00050
00051 int totalHits () const;
00052
00053
00054
00055
00056
00057
00058
00059
00060 void readData (std::istream& in);
00061
00062
00063
00064 void writeData (std::ostream& out);
00065
00066
00067 void printOn (std::ostream& cout = std::cout) const;
00068
00069 private:
00070
00071 int m_total_hits;
00072 int m_controller_max;
00073 class Strip;
00074
00075 std::vector< std::vector< class Strip >* > xhitList;
00076
00077
00078 std::vector< std::vector< class Strip >* > yhitList;
00079
00080 };
00081
00082 #endif