00001
00015 #ifndef CALORIMETRY_HH
00016 #define CALORIMETRY_HH
00017
00018 #include "data_base.hh"
00019
00020 namespace larlight{
00025 class calorimetry : public data_base {
00026
00027 public:
00028
00030 calorimetry(DATA::DATA_TYPE type=DATA::Calorimetry);
00031
00033 calorimetry(const calorimetry& original) : data_base(original),
00034 fKineticEnergy(original.fKineticEnergy),
00035 fdEdx(original.fdEdx),
00036 fdQdx(original.fdQdx),
00037 fResidualRange(original.fResidualRange),
00038 fDeadWireResR(original.fDeadWireResR),
00039 fRange(original.fRange),
00040 fTrkPitch(original.fTrkPitch)
00041 {}
00042
00044 virtual ~calorimetry(){}
00045
00046 virtual void clear_data();
00047
00048
00049 void set_dedx(const std::vector<double> &v) { fdEdx = v; }
00050 void set_dqdx(const std::vector<double> &v) { fdQdx = v; }
00051 void set_residual_range(const std::vector<double> &v) { fResidualRange = v; }
00052 void set_deadwire_range(const std::vector<double> &v) { fDeadWireResR = v; }
00053 void set_kinetic_energy(const double v) { fKineticEnergy = v; }
00054 void set_range(const double v) { fRange = v; }
00055 void set_track_pitch(const std::vector<double> &v) { fTrkPitch = v; }
00056
00057
00058 inline const std::vector<double>& dEdx() const { return fdEdx; }
00059 inline const std::vector<double>& dQdx() const { return fdQdx; }
00060 inline const std::vector<double>& ResidualRange() const { return fResidualRange; }
00061 inline const std::vector<double>& DeadWireResRC() const { return fDeadWireResR; }
00062 inline double KineticEnergy() const { return fKineticEnergy; }
00063 inline double Range() const { return fRange; }
00064 inline const std::vector<double>& TrkPitchVec() const { return fTrkPitch; }
00065 inline double TrkPitchC() const
00066 {
00067 if (fTrkPitch.size())
00068 return fTrkPitch[0];
00069 else return 0;
00070 }
00071
00072 protected:
00073
00074 double fKineticEnergy;
00075 std::vector<double> fdEdx;
00076 std::vector<double> fdQdx;
00077 std::vector<double> fResidualRange;
00078 std::vector<double> fDeadWireResR;
00079 double fRange;
00080 std::vector<double> fTrkPitch;
00081
00082 private:
00083
00085 ClassDef(calorimetry,1)
00087
00088 };
00089
00094 class event_calorimetry : public std::vector<larlight::calorimetry>,
00095 public event_base {
00096
00097 public:
00098
00100 event_calorimetry(DATA::DATA_TYPE type=DATA::Calorimetry);
00101
00103 event_calorimetry(const event_calorimetry& original) : std::vector<larlight::calorimetry>(original),
00104 event_base(original)
00105 {}
00106
00108 ~event_calorimetry(){}
00109
00111 virtual void clear_data(){event_base::clear_data(); clear();}
00112
00113 protected:
00114
00115 std::vector<larlight::calorimetry> fCalorimetry_v;
00116
00117 private:
00118
00120 ClassDef(event_calorimetry,2)
00122 };
00123 }
00124 #endif
00125