Newer
Older
/**
\class THcRawHodoHit
\ingroup DetSupport
\brief Class representing a single raw hit for a hodoscope paddle.
- `signal 0` is ADC pos
- `signal 1` is ADC neg
- `signal 2` is TDC pos
- `signal 3` is TDC neg
#include "THcRawHodoHit.h"
#include <iostream>
#include <stdexcept>
THcRawHodoHit::THcRawHodoHit(Int_t plane, Int_t counter) :
THcRawHit(plane, counter), fAdcHits(), fTdcHits()
THcRawHodoHit& THcRawHodoHit::operator=(const THcRawHodoHit& right) {
THcRawHit::operator=(right);
if (this != &right) {
for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) {
fAdcHits[iAdcSig] = right.fAdcHits[iAdcSig];
}
for (Int_t iTdcSig=0; iTdcSig<fNTdcSignals; ++iTdcSig) {
fTdcHits[iTdcSig] = right.fTdcHits[iTdcSig];
}
return *this;
THcRawHodoHit::~THcRawHodoHit() {}
void THcRawHodoHit::Clear(Option_t* opt) {
THcRawHit::Clear(opt);
for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) {
fAdcHits[iAdcSig].Clear();
}
for (Int_t iTdcSig=0; iTdcSig<fNTdcSignals; ++iTdcSig) {
fTdcHits[iTdcSig].Clear();
void THcRawHodoHit::SetData(Int_t signal, Int_t data) {
if (0 <= signal && signal < fNAdcSignals) {
fAdcHits[signal].SetData(data);
}
else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
fTdcHits[signal-fNAdcSignals].SetTime(data);
}
else {
throw std::out_of_range(
"`THcRawHodoHit::SetData`: only signals `0` to `3` available!"
);
void THcRawHodoHit::SetSample(Int_t signal, Int_t data) {
if (0 <= signal && signal < fNAdcSignals) {
fAdcHits[signal].SetSample(data);
}
else {
throw std::out_of_range(
"`THcRawHodoHit::SetSample`: only signals `0` and `1` available!"
);
void THcRawHodoHit::SetDataTimePedestalPeak(
Int_t signal, Int_t data, Int_t time, Int_t pedestal, Int_t peak
) {
if (0 <= signal && signal < fNAdcSignals) {
fAdcHits[signal].SetDataTimePedestalPeak(data, time, pedestal, peak);
}
else {
throw std::out_of_range(
"`THcRawHodoHit::SetDataTimePedestalPeak`: only signals `0` and `1` available!"
);
void THcRawHodoHit::SetReference(Int_t signal, Int_t reference) {
if (signal < fNAdcSignals) {
fAdcHits[signal].SetRefTime(reference);
} else if (signal < fNAdcSignals+fNTdcSignals) {
fTdcHits[signal-fNAdcSignals].SetRefTime(reference);
throw std::out_of_range(
"`THcRawHodoHit::SetReference`: only signals `2` and `3` available!"
);
Int_t THcRawHodoHit::GetData(Int_t signal) {
if (0 <= signal && signal < fNAdcSignals) {
return fAdcHits[signal].GetPulseInt();
else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
return fTdcHits[signal-fNAdcSignals].GetTime();
}
else {
throw std::out_of_range(
"`THcRawHodoHit::GetData`: only signals `0` to `3` available!"
);
}
}
Int_t THcRawHodoHit::GetRawData(Int_t signal) {
if (0 <= signal && signal < fNAdcSignals) {
return fAdcHits[signal].GetPulseIntRaw();
}
else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
return fTdcHits[signal-fNAdcSignals].GetTimeRaw();
}
else {
throw std::out_of_range(
"`THcRawHodoHit::GetRawData`: only signals `0` to `3` available!"
}
}
Int_t THcRawHodoHit::GetReference(Int_t signal) {
if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
return fTdcHits[signal-fNAdcSignals].GetRefTime();
}
else {
throw std::out_of_range(
"`THcRawHodoHit::GetReference`: only signals `2` and `3` available!"
);
THcRawHit::ESignalType THcRawHodoHit::GetSignalType(Int_t signal) {
if (0 <= signal && signal < fNAdcSignals) {
return kADC;
}
else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
return kTDC;
}
else {
throw std::out_of_range(
"`THcRawHodoHit::GetSignalType`: only signals `0` to `3` available!"
);
Int_t THcRawHodoHit::GetNSignals() {
return fNAdcSignals + fNTdcSignals;
}
Bool_t THcRawHodoHit::HasReference(Int_t signal) {
if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
return fTdcHits[signal-fNAdcSignals].HasRefTime();
else {
throw std::out_of_range(
"`THcRawHodoHit::HasReference`: only signals `2` and `3` available!"
);
}
}
THcRawAdcHit& THcRawHodoHit::GetRawAdcHitPos() {
return fAdcHits[0];
}
THcRawAdcHit& THcRawHodoHit::GetRawAdcHitNeg() {
return fAdcHits[1];
}
THcRawTdcHit& THcRawHodoHit::GetRawTdcHitPos() {
return fTdcHits[0];
}
THcRawTdcHit& THcRawHodoHit::GetRawTdcHitNeg() {
return fTdcHits[1];
void THcRawHodoHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) {
for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) {
fAdcHits[iAdcSig].SetF250Params(NSA, NSB, NPED);
}
}