Hall C ROOT/C++ Analyzer (hcana)
THcRawHodoHit.cxx
Go to the documentation of this file.
1 
13 #include "THcRawHodoHit.h"
14 
15 #include <iostream>
16 #include <stdexcept>
17 
18 
20  THcRawHit(plane, counter), fAdcHits(), fTdcHits()
21 {}
22 
23 
25  THcRawHit::operator=(right);
26 
27  if (this != &right) {
28  for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) {
29  fAdcHits[iAdcSig] = right.fAdcHits[iAdcSig];
30  }
31  for (Int_t iTdcSig=0; iTdcSig<fNTdcSignals; ++iTdcSig) {
32  fTdcHits[iTdcSig] = right.fTdcHits[iTdcSig];
33  }
34  }
35 
36  return *this;
37 }
38 
39 
41 
42 
44  THcRawHit::Clear(opt);
45 
46  for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) {
47  fAdcHits[iAdcSig].Clear();
48  }
49  for (Int_t iTdcSig=0; iTdcSig<fNTdcSignals; ++iTdcSig) {
50  fTdcHits[iTdcSig].Clear();
51  }
52 }
53 
54 
55 void THcRawHodoHit::SetData(Int_t signal, Int_t data) {
56  if (0 <= signal && signal < fNAdcSignals) {
57  fAdcHits[signal].SetData(data);
58  }
59  else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
60  fTdcHits[signal-fNAdcSignals].SetTime(data);
61  }
62  else {
63  throw std::out_of_range(
64  "`THcRawHodoHit::SetData`: only signals `0` to `3` available!"
65  );
66  }
67 }
68 
69 
70 void THcRawHodoHit::SetSample(Int_t signal, Int_t data) {
71  if (0 <= signal && signal < fNAdcSignals) {
72  fAdcHits[signal].SetSample(data);
73  }
74  else {
75  throw std::out_of_range(
76  "`THcRawHodoHit::SetSample`: only signals `0` and `1` available!"
77  );
78  }
79 }
80 
81 
83  Int_t signal, Int_t data, Int_t time, Int_t pedestal, Int_t peak
84 ) {
85  if (0 <= signal && signal < fNAdcSignals) {
86  fAdcHits[signal].SetDataTimePedestalPeak(data, time, pedestal, peak);
87  }
88  else {
89  throw std::out_of_range(
90  "`THcRawHodoHit::SetDataTimePedestalPeak`: only signals `0` and `1` available!"
91  );
92  }
93 }
94 
95 
96 void THcRawHodoHit::SetReference(Int_t signal, Int_t reference) {
97  if (signal < fNAdcSignals) {
98  fAdcHits[signal].SetRefTime(reference);
99  } else if (signal < fNAdcSignals+fNTdcSignals) {
100  fTdcHits[signal-fNAdcSignals].SetRefTime(reference);
101  } else {
102  throw std::out_of_range(
103  "`THcRawHodoHit::SetReference`: only signals `2` and `3` available!"
104  );
105  }
106 }
107 
108 void THcRawHodoHit::SetReferenceDiff(Int_t signal, Int_t referenceDiff) {
109  if (signal < fNAdcSignals) {
110  fAdcHits[signal].SetRefDiffTime(referenceDiff);
111  } else if (signal < fNAdcSignals+fNTdcSignals) {
112  fTdcHits[signal-fNAdcSignals].SetRefDiffTime(referenceDiff);
113  } else {
114  throw std::out_of_range(
115  "`THcRawHodoHit::SetReference`: only signals `2` and `3` available!"
116  );
117  }
118 }
119 
120 
122  if (0 <= signal && signal < fNAdcSignals) {
123  return fAdcHits[signal].GetPulseInt();
124  }
125  else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
126  return fTdcHits[signal-fNAdcSignals].GetTime();
127  }
128  else {
129  throw std::out_of_range(
130  "`THcRawHodoHit::GetData`: only signals `0` to `3` available!"
131  );
132  }
133 }
134 
135 
137  if (0 <= signal && signal < fNAdcSignals) {
138  return fAdcHits[signal].GetPulseIntRaw();
139  }
140  else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
141  return fTdcHits[signal-fNAdcSignals].GetTimeRaw();
142  }
143  else {
144  throw std::out_of_range(
145  "`THcRawHodoHit::GetRawData`: only signals `0` to `3` available!"
146  );
147  }
148 }
149 
150 
152  if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
153  return fTdcHits[signal-fNAdcSignals].GetRefTime();
154  }
155  else {
156  throw std::out_of_range(
157  "`THcRawHodoHit::GetReference`: only signals `2` and `3` available!"
158  );
159  }
160 }
161 
163  if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
164  return fTdcHits[signal-fNAdcSignals].GetRefDiffTime();
165  }
166  else {
167  throw std::out_of_range(
168  "`THcRawHodoHit::GetReference`: only signals `2` and `3` available!"
169  );
170  }
171 }
172 
173 
175  if (0 <= signal && signal < fNAdcSignals) {
176  return kADC;
177  }
178  else if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
179  return kTDC;
180  }
181  else {
182  throw std::out_of_range(
183  "`THcRawHodoHit::GetSignalType`: only signals `0` to `3` available!"
184  );
185  }
186 }
187 
188 
190  return fNAdcSignals + fNTdcSignals;
191 }
192 
194  if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
195  return fTdcHits[signal-fNAdcSignals].HasRefTime();
196  }
197  else {
198  throw std::out_of_range(
199  "`THcRawHodoHit::HasReference`: only signals `2` and `3` available!"
200  );
201  }
202 }
203 
204 
206  return fAdcHits[0];
207 }
208 
209 
211  return fAdcHits[1];
212 }
213 
214 
216  return fTdcHits[0];
217 }
218 
219 
221  return fTdcHits[1];
222 }
223 
224 
226  for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) {
227  fAdcHits[iAdcSig].SetF250Params(NSA, NSB, NPED);
228  }
229 }
230 
231 
virtual ESignalType GetSignalType(Int_t signal)
virtual void Clear(Option_t *="")
Int_t GetTimeRaw(UInt_t iHit=0) const
Gets raw TDC time. In channels.
virtual void SetData(Int_t signal, Int_t data)
virtual Int_t GetNSignals()
void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED)
virtual void Clear(Option_t *opt="")
void SetSample(Int_t data)
Sets raw signal sample.
const char Option_t
THcRawAdcHit fAdcHits[fNAdcSignals]
Definition: THcRawHodoHit.h:50
int Int_t
bool Bool_t
Class representing a single raw TDC hit.
Definition: THcRawTdcHit.h:7
void SetTime(Int_t time)
Sets raw TDC time from the modules. In channels.
void SetRefTime(Int_t refTime)
Sets reference time. In channels.
virtual Int_t GetData(Int_t signal)
virtual void Clear(Option_t *opt="")
Clears variables before next event.
virtual Int_t GetReferenceDiff(Int_t signal)
THcRawHodoHit(Int_t plane=0, Int_t counter=0)
virtual void SetReferenceDiff(Int_t signal, Int_t referenceDiff)
virtual Bool_t HasReference(Int_t signal)
void SetRefTime(Int_t refTime)
Sets reference time. In channels.
void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED)
Sets F250 parameters used for pedestal subtraction.
THcRawAdcHit & GetRawAdcHitNeg()
Int_t GetRefDiffTime() const
THcRawTdcHit & GetRawTdcHitNeg()
THcRawAdcHit & GetRawAdcHitPos()
Double_t GetPulseInt(UInt_t iPulse=0) const
Gets pedestal subtracted pulse integral. In channels.
virtual void SetReference(Int_t signal, Int_t reference)
Bool_t HasRefTime() const
Queries whether reference time has been set.
void SetRefDiffTime(Int_t refDiffTime)
virtual Int_t GetRawData(Int_t signal)
static const Int_t fNTdcSignals
Definition: THcRawHodoHit.h:48
void SetDataTimePedestalPeak(Int_t data, Int_t time, Int_t pedestal, Int_t peak)
Sets various bits of ADC data.
virtual void SetDataTimePedestalPeak(Int_t signal, Int_t data, Int_t time, Int_t pedestal, Int_t peak)
Base class detector specific raw hit that go into hit lists.
Definition: THcRawHit.h:11
virtual void Clear(Option_t *opt="")
Clears variables before next event.
Int_t GetPulseIntRaw(UInt_t iPulse=0) const
Gets raw pulse integral. In channels.
THcRawTdcHit fTdcHits[fNTdcSignals]
Definition: THcRawHodoHit.h:51
Int_t GetTime(UInt_t iHit=0) const
Gets TDC time. In channels.
void SetData(Int_t data)
Sets raw ADC value.
THcRawTdcHit & GetRawTdcHitPos()
ClassImp(THcDCLookupTTDConv) THcDCLookupTTDConv
Int_t GetRefTime() const
Gets reference time. In channels.
void SetRefDiffTime(Int_t refDiffTime)
static const Int_t fNAdcSignals
Definition: THcRawHodoHit.h:47
Class representing a single raw hit for a hodoscope paddle.
Definition: THcRawHodoHit.h:9
virtual Int_t GetReference(Int_t signal)
THcRawHodoHit & operator=(const THcRawHodoHit &right)
Class representing a single raw ADC hit.
Definition: THcRawAdcHit.h:7
virtual ~THcRawHodoHit()
virtual void SetSample(Int_t signal, Int_t data)
THcRawHit & operator=(const THcRawHit &rhs)
Definition: THcRawHit.h:17