00001
00015 #ifndef SPACEPOINT_HH
00016 #define SPACEPOINT_HH
00017
00018 #include "data_base.hh"
00019 #include "TVector3.h"
00020 #include "TMatrixD.h"
00021
00022 namespace larlight {
00027 class spacepoint : public data_base {
00028
00029 public:
00030
00032 spacepoint(DATA::DATA_TYPE type=DATA::SpacePoint);
00033
00034 spacepoint(Int_t id,
00035 Double_t x, Double_t y, Double_t z,
00036 Double_t ex, Double_t ey, Double_t ez,
00037 Double_t chi2) : data_base(DATA::SpacePoint)
00038 {
00039 clear_data();
00040 fID=id;
00041 fXYZ[0]=x;
00042 fXYZ[1]=y;
00043 fXYZ[2]=z;
00044 fErrXYZ[0]=ex;
00045 fErrXYZ[1]=ey;
00046 fErrXYZ[2]=ez;
00047 fChisq=chi2;
00048 }
00049
00051 spacepoint(const spacepoint& original) : data_base(original),
00052 fID(original.fID),
00053 fChisq(original.fChisq)
00054 {
00055 fXYZ[0]=original.fXYZ[0];
00056 fXYZ[1]=original.fXYZ[1];
00057 fXYZ[2]=original.fXYZ[2];
00058 fErrXYZ[0]=original.fErrXYZ[0];
00059 fErrXYZ[1]=original.fErrXYZ[1];
00060 fErrXYZ[2]=original.fErrXYZ[2];
00061 }
00062
00064 virtual ~spacepoint(){}
00065
00066 Int_t ID() const { return fID; }
00067 const Double_t* XYZ() const { return fXYZ; }
00068 const Double_t* ErrXYZ() const { return fErrXYZ; }
00069 Double_t Chisq() const { return fChisq; }
00070
00072 void clear_data() {
00073 data_base::clear_data();
00074 fID = -1;
00075 fXYZ[0]=-99999;
00076 fXYZ[1]=-99999;
00077 fXYZ[2]=-99999;
00078 fErrXYZ[0]=-99999;
00079 fErrXYZ[1]=-99999;
00080 fErrXYZ[2]=-99999;
00081 fChisq=-1;
00082 }
00083
00084 protected:
00085
00086 Int_t fID;
00087 Double_t fXYZ[3];
00088 Double_t fErrXYZ[6];
00089 Double_t fChisq;
00090
00091 private:
00092
00094 ClassDef(spacepoint,1)
00096
00097 };
00098
00103 class event_sps : public std::vector<larlight::spacepoint>,
00104 public event_base {
00105
00106 public:
00107
00109 event_sps(DATA::DATA_TYPE type=DATA::SpacePoint);
00110
00112 event_sps(const event_sps& original) : std::vector<larlight::spacepoint>(original),
00113 event_base(original)
00114 {}
00115
00117 ~event_sps(){}
00118
00120 virtual void clear_data(){event_base::clear_data(); clear();}
00121
00127 void get_axis_range (Double_t &max, Double_t &min, const int axis) const;
00128
00134 void get_axis_range (Double_t &xmax, Double_t &xmin,
00135 Double_t &ymax, Double_t &ymin,
00136 Double_t &zmax, Double_t &zmin) const;
00137
00138 private:
00139
00141 ClassDef(event_sps,3)
00143 };
00144 }
00145 #endif
00146