00001 00015 #ifndef CLUSTER_HH 00016 #define CLUSTER_HH 00017 00018 #include "data_base.hh" 00019 00020 namespace larlight{ 00021 00027 class cluster : public data_base { 00028 00029 public: 00030 00032 cluster(DATA::DATA_TYPE type=DATA::Cluster); 00033 00035 virtual ~cluster(){} 00036 00037 void set_charge (Double_t q) { fTotalCharge = q; } 00038 void set_dtdw (Double_t v) { fdTdW=v; } 00039 void set_dqdw (Double_t v) { fdQdW=v; } 00040 void set_dtdw_err (Double_t v) { fSigmadTdW=v; } 00041 void set_dqdw_err (Double_t v) { fSigmadQdW=v; } 00042 void set_id (Int_t i) { fID = i; } 00043 void set_view (GEO::View_t v) { fView=v; } 00044 void set_start_vtx (const std::vector<Double_t> vtx) { fStartPos=vtx; } 00045 void set_end_vtx (const std::vector<Double_t> vtx) { fEndPos=vtx; } 00046 void set_start_vtx_err (const std::vector<Double_t> vtx) { fSigmaStartPos=vtx; } 00047 void set_end_vtx_err (const std::vector<Double_t> vtx) { fSigmaEndPos=vtx; } 00048 00049 inline Double_t Charge() const { return fTotalCharge; } 00050 inline Double_t dTdW() const { return fdTdW; } 00051 inline Double_t dQdW() const { return fdQdW; } 00052 inline Double_t SigmadTdW() const { return fSigmadTdW; } 00053 inline Double_t SigmadQdW() const { return fSigmadQdW; } 00054 inline Int_t ID() const { return fID; } 00055 inline GEO::View_t View() const { return fView; } 00056 00057 inline const std::vector<Double_t>& StartPos() const { return fStartPos; } 00058 inline const std::vector<Double_t>& EndPos() const { return fEndPos; } 00059 inline const std::vector<Double_t>& SigmaStartPos() const { return fSigmaStartPos; } 00060 inline const std::vector<Double_t>& SigmaEndPos() const { return fSigmaEndPos; } 00061 virtual void clear_data(){ 00062 data_base::clear_data(); 00063 fTotalCharge = -1; 00064 fdTdW = fdQdW = fSigmadTdW = fSigmadQdW = -1; 00065 fStartPos.resize(2,0); 00066 fEndPos.resize(2,0); 00067 fSigmaStartPos.resize(2,0); 00068 fSigmaEndPos.resize(2,0); 00069 fID = -1; 00070 fView = GEO::kUnknown; 00071 } 00072 00073 DATA::DATA_TYPE get_hit_type() const; 00074 00075 private: 00076 00077 Double_t fTotalCharge; 00078 Double_t fdTdW; 00079 Double_t fdQdW; 00080 Double_t fSigmadTdW; 00081 Double_t fSigmadQdW; 00082 std::vector<Double_t> fStartPos; 00083 std::vector<Double_t> fEndPos; 00084 std::vector<Double_t> fSigmaStartPos; 00085 std::vector<Double_t> fSigmaEndPos; 00086 Int_t fID; 00087 GEO::View_t fView; 00088 00090 ClassDef(cluster,2) 00092 00093 }; 00094 00099 class event_cluster : public std::vector<larlight::cluster>, 00100 public event_base { 00101 00102 public: 00103 00105 event_cluster(DATA::DATA_TYPE type=DATA::Cluster); 00106 00108 event_cluster(const event_cluster& original) 00109 : std::vector<larlight::cluster>(original), event_base(original) 00110 {} 00111 00113 virtual void clear_data(){event_base::clear_data(); clear();} 00114 00116 ~event_cluster(){} 00117 00118 DATA::DATA_TYPE get_hit_type() const; 00119 00120 private: 00121 00123 ClassDef(event_cluster,3) 00125 }; 00126 } 00127 #endif 00128 // end of doxygen group 00130