-
Stephen A. Wood authored
Start adding to the drift chamber code. Setup a class structure similar to what podd uses for the VDCs. Raw hit class renamed to THcRawDCHit. Signal hits are how THcDCHit, modeled after podd hits. Add THcDCWire, and classes for time to distance conversion. Time to distnace conversion doesn't do anything yet. Find some improved DC parameter files so that min and max TDC limits are good for the run we are using. THcDriftChamberPlane asks ThcDriftChamber for many parameters.
Stephen A. Wood authoredStart adding to the drift chamber code. Setup a class structure similar to what podd uses for the VDCs. Raw hit class renamed to THcRawDCHit. Signal hits are how THcDCHit, modeled after podd hits. Add THcDCWire, and classes for time to distance conversion. Time to distnace conversion doesn't do anything yet. Find some improved DC parameter files so that min and max TDC limits are good for the run we are using. THcDriftChamberPlane asks ThcDriftChamber for many parameters.
THcRawDCHit.cxx 2.04 KiB
///////////////////////////////////////////////////////////////////////////////
// //
// THcRawDCHit //
// //
// Class representing for drift chamber wire (or other device with //
// a single multihit TDC channel per detector element //
// //
///////////////////////////////////////////////////////////////////////////////
#include "THcRawDCHit.h"
using namespace std;
void THcRawDCHit::SetData(Int_t signal, Int_t data) {
fTDC[fNHits++] = data;
}
// Return just the first hit
Int_t THcRawDCHit::GetData(Int_t signal) {
if(fNHits>0) {
return(fTDC[0]);
} else {
return(-1);
}
}
// Return a requested hit
Int_t THcRawDCHit::GetData(Int_t signal, Int_t ihit) {
if(ihit >=0 && ihit< fNHits) {
return(fTDC[ihit]);
} else {
return(-1);
}
}
Int_t THcRawDCHit::Compare(const TObject* obj) const
{
// Compare to sort by plane and counter
// Should we be able to move this into THcRawHit
const THcRawDCHit* hit = dynamic_cast<const THcRawDCHit*>(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;
}
}
//_____________________________________________________________________________
THcRawDCHit& THcRawDCHit::operator=( const THcRawDCHit& 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(THcRawDCHit)