diff --git a/src/THcDCHit.cxx b/src/THcDCHit.cxx new file mode 100644 index 0000000000000000000000000000000000000000..261245a6399bd9b4eda92bf35fc3003694676cbd --- /dev/null +++ b/src/THcDCHit.cxx @@ -0,0 +1,78 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// THcDCHit // +// // +// Class representing for drift chamber wire (or other device with // +// a single multihit TDC channel per detector element // +// // +/////////////////////////////////////////////////////////////////////////////// + +#include "THcDCHit.h" + +using namespace std; + + +void THcDCHit::SetData(Int_t signal, Int_t data) { + fTDC[fNHits++] = data; +} + +// Return just the first hit +Int_t THcDCHit::GetData(Int_t signal) { + if(fNHits>0) { + return(fTDC[0]); + } else { + return(-1); + } +} + +// Return a requested hit +Int_t THcDCHit::GetData(Int_t signal, Int_t ihit) { + if(ihit >=0 && ihit< fNHits) { + return(fTDC[ihit]); + } else { + return(-1); + } +} + + +Int_t THcDCHit::Compare(const TObject* obj) const +{ + // Compare to sort by plane and counter + // Should we be able to move this into THcRawHit + + const THcDCHit* hit = dynamic_cast<const THcDCHit*>(obj); + + if(!hit) return -1; + Int_t p1 = fPlane; + Int_t p2 = hit->fPlane; + if(p1 < p2) return -1; + else if(p1 > p2) return 1; + else { + Int_t c1 = fCounter; + Int_t c2 = hit->fCounter; + if(c1 < c2) return -1; + else if (c1 == c2) return 0; + else return 1; + } +} +//_____________________________________________________________________________ +THcDCHit& THcDCHit::operator=( const THcDCHit& rhs ) +{ + // Assignment operator. + + THcRawHit::operator=(rhs); + if ( this != &rhs ) { + fPlane = rhs.fPlane; + fCounter = rhs.fCounter; + fNHits = rhs.fNHits; + for(Int_t ihit=0;ihit<fNHits;ihit++) { + fTDC[ihit] = rhs.fTDC[ihit]; + } + } + return *this; +} + + +////////////////////////////////////////////////////////////////////////// +ClassImp(THcDCHit) + diff --git a/src/THcDCHit.h b/src/THcDCHit.h new file mode 100644 index 0000000000000000000000000000000000000000..5523c79770c9a39f9a83c336faff7a330f4ed50f --- /dev/null +++ b/src/THcDCHit.h @@ -0,0 +1,37 @@ +#ifndef ROOT_THcDCHit +#define ROOT_THcDCHit + +#include "THcRawHit.h" + +#define MAXHITS 16 + +class THcDCHit : public THcRawHit { + + public: + + THcDCHit(Int_t plane=0, Int_t counter=0) : THcRawHit(plane, counter), + fNHits(0) { + } + THcDCHit& operator=( const THcDCHit& ); + virtual ~THcDCHit() {} + + virtual void Clear( Option_t* opt="" ) { fNHits=0; } + + void SetData(Int_t signal, Int_t data); + Int_t GetData(Int_t signal); + Int_t GetData(Int_t signal, Int_t ihit); + + virtual Bool_t IsSortable () const {return kTRUE; } + virtual Int_t Compare(const TObject* obj) const; + + Int_t fNHits; + Int_t fTDC[MAXHITS]; + + protected: + + private: + + ClassDef(THcDCHit, 0); // DC hit class +}; + +#endif