00001
00015 #ifndef SIMCH_HH
00016 #define SIMCH_HH
00017
00018 #include "data_base.hh"
00019
00020 namespace larlight {
00021
00026 class ide : public TObject {
00027
00028 public:
00029
00031 ide() : TObject() {clear_data();}
00032
00034 ~ide(){}
00035
00037 ide(const ide& origin) : TObject(origin),
00038 trackID(origin.trackID),
00039 numElectrons(origin.numElectrons),
00040 energy(origin.energy),
00041 x(origin.x),
00042 y(origin.y),
00043 z(origin.z)
00044 {}
00045
00046 Int_t trackID;
00047 Double_t numElectrons;
00048 Double_t energy;
00049 Double_t x;
00050 Double_t y;
00051 Double_t z;
00052
00054 void clear_data();
00055
00056 private:
00057
00059 ClassDef(ide,1)
00061
00062 };
00063
00068 class simch : public data_base {
00069
00070 public:
00071
00073 simch(DATA::DATA_TYPE type=DATA::SimChannel);
00074
00076 virtual ~simch(){}
00077
00079 simch(const simch& origin) : data_base(origin),
00080 fChannel(origin.fChannel),
00081 fTDCIDEs(origin.fTDCIDEs)
00082 {}
00083
00085 virtual void clear_data();
00086
00088 void set_channel(UShort_t ch)
00089 { fChannel = ch; }
00090
00091 void add_ide(UShort_t tdc, ide in);
00092
00094
00096 UShort_t Channel() const
00097 { return fChannel; }
00098
00103 std::vector<larlight::ide> TrackIDsAndEnergies(UShort_t startTDC,
00104 UShort_t endTDC) const;
00105
00107 const std::map<UShort_t, std::vector<larlight::ide> >& TDCIDEMap() const
00108 { return fTDCIDEs; }
00109
00114 Double_t Charge(UShort_t tdc) const;
00115
00119 Double_t Energy(UShort_t tdc) const;
00120
00122
00123
00124 private:
00125
00127 UShort_t fChannel;
00128
00130 std::map<UShort_t, std::vector< larlight::ide > > fTDCIDEs;
00131
00133 ClassDef(simch,1)
00135
00136 };
00137
00142 class event_simch : public std::vector<larlight::simch>,
00143 public event_base {
00144
00145 public:
00146
00148 event_simch(DATA::DATA_TYPE type=DATA::SimChannel);
00149
00151 event_simch(const event_simch& original) : std::vector<larlight::simch>(original),
00152 event_base(original)
00153 {}
00154
00156 ~event_simch(){}
00157
00159 virtual void clear_data(){event_base::clear_data(); clear();}
00160
00161 private:
00162
00164 ClassDef(event_simch,1)
00166 };
00167
00168 }
00169 #endif
00170