QwAnalysis
QwF1TDContainer.h
Go to the documentation of this file.
1 #ifndef __QwF1TDContainer__
2 #define __QwF1TDContainer__
3 /**
4  * \file QwF1TDContainer.h
5  * \brief
6  * \author jhlee@jlab.org
7  * \date Tuesday, September 14 23:04:45 EDT 2010
8  */
9 
10 #include <iostream>
11 #include <math.h>
12 
13 
14 #include "QwTypes.h"
15 #include "MQwF1TDC.h"
16 
17 #include "TObject.h"
18 #include "TClonesArray.h"
19 #include "TArrayD.h"
20 #include "TList.h"
21 #include "TString.h"
22 #include "TObjString.h"
23 
24 #include "TROOT.h"
25 #include "TFile.h"
26 #include "TH2F.h"
27 
28 
29 
30 /**
31  * \class QwF1TDC
32  * \ingroup QwAnalysis
33  *
34  * \brief one F1TDC configuration and reference signal(s) holder
35  *
36  */
37 
38 #if __STDC_VERSION__ < 199901L
39 # if __GNUC__ >= 2
40 # define __func__ __FUNCTION__
41 # else
42 # define __func__ "<unknown>"
43 # endif
44 #endif
45 
46 
47 class QwF1TDC : public TObject
48 {
49 
50  public:
51  QwF1TDC();
52  QwF1TDC(const Int_t roc, const Int_t slot);
53  virtual ~QwF1TDC();
54  friend std::ostream& operator<<(std::ostream& os, const QwF1TDC &f1tdc);
55 
56  Int_t GetROCNumber() const {return fROC;};
57  Int_t GetSlotNumber() const {return fSlot;};
58  Int_t GetChannelNumber() const {return fChannelNumber;};
59 
60  Bool_t IsReferenceSlot() const {return fReferenceSlotFlag;};
61  Bool_t IsNormResolution() const {return fF1TDCNormResFlag;};
62  Bool_t IsSyncMode() const {return fF1TDCSyncFlag;};
63 
64  UInt_t GetF1TDC_refcnt() const {return fF1TDC_refcnt;};
65  UInt_t GetF1TDC_hsdiv() const {return fF1TDC_hsdiv;};
66  UInt_t GetF1TDC_refclkdiv() const {return fF1TDC_refclkdiv;};
67  UInt_t GetF1TDC_trigwin() const {return fF1TDC_trigwin;};
68  UInt_t GetF1TDC_triglat() const {return fF1TDC_triglat;};
69 
70  Double_t GetF1TDC_tframe() const {return fF1TDC_tframe_ns;};
71  Double_t GetF1TDC_full_range() const {return fF1TDC_full_range_ns;};
72  Double_t GetF1TDC_window() const {return fF1TDC_window_ns;};
73  Double_t GetF1TDC_latency() const {return fF1TDC_latency_ns;};
74  Double_t GetF1TDC_resolution() const {return fF1TDC_resolution_ns;};
75  Double_t GetF1TDC_bin_size() const {return fF1TDC_resolution_ns;};
76 
77  Double_t GetF1TDC_t_offset() const {return fF1TDC_t_offset;};
78 
79  Double_t GetF1TDC_trig_t_offset() const {return fF1TDC_trig_t_offset;};
81 
82  Int_t GetF1TDCIndex() const {return fF1TDCIndex;};
83  Int_t GetF1BankIndex() const {return fF1BankIndex;};
84  const TString GetF1SystemName() const {return fSystemName;};
85 
86  void SetROCNumber (const Int_t roc) {fROC = roc;};
87  void SetSlotNumber (const Int_t slot) {fSlot = slot;};
88  void SetReferenceSlot (const Bool_t reflag) {fReferenceSlotFlag = reflag;};
89 
90 
91  void SetF1TDCIndex (const Int_t tdc_index) {fF1TDCIndex = tdc_index;};
92  void SetF1BankIndex (const Int_t bank_index) {fF1BankIndex = bank_index;};
93  void SetF1SystemName(const TString name) {fSystemName = name;};
94 
95  void SetF1TDCBuffer(UInt_t *buffer, UInt_t num_words);
96  const UInt_t * GetF1TDCBuffer() const {return fBuffer;};
97 
98  void PrintF1TDCBuffer();
99  void PrintF1TDCConfigure();
100 
101  void PrintChannelErrorCounter(Int_t channel);
102  void PrintErrorCounter();
103  void PrintTotalErrorCounter();
104 
105  void PrintContact();
106 
107  TString GetChannelErrorCounter(Int_t channel);
108  TString GetErrorCounter();
109  TString GetTotalErrorCounter();
110 
111  void AddSEU(Int_t channel) {fF1TDC_SEU_counter[channel]++;};
112  void AddSYN(Int_t channel) {fF1TDC_SYN_counter[channel]++;};
113  void AddEMM(Int_t channel) {fF1TDC_EMM_counter[channel]++;};
114  void AddTFO(Int_t channel) {fF1TDC_TFO_counter[channel]++;};
115  void AddRLF(Int_t channel) {fF1TDC_RLF_counter[channel]++;};
116  void AddHFO(Int_t channel) {fF1TDC_HFO_counter[channel]++;};
117  void AddOFO(Int_t channel) {fF1TDC_OFO_counter[channel]++;};
118  void AddFDF(Int_t channel) {fF1TDC_FDF_counter[channel]++;};
119  void AddS30(Int_t channel) {fF1TDC_S30_counter[channel]++;};
120 
121 
122  UInt_t GetSEU(Int_t channel) const {return fF1TDC_SEU_counter[channel];};
123  UInt_t GetSYN(Int_t channel) const {return fF1TDC_SYN_counter[channel];};
124  UInt_t GetEMM(Int_t channel) const {return fF1TDC_EMM_counter[channel];};
125  UInt_t GetTFO(Int_t channel) const {return fF1TDC_TFO_counter[channel];};
126 
127  UInt_t GetRLF(Int_t channel) const {return fF1TDC_RLF_counter[channel];}; // Resolution Lock Fail couter
128  UInt_t GetHFO(Int_t channel) const {return fF1TDC_HFO_counter[channel];}; // Hit Fifo Overflow counter
129  UInt_t GetOFO(Int_t channel) const {return fF1TDC_OFO_counter[channel];}; // Output Fifo Overflow coutner;
130 
131  UInt_t GetFDF(Int_t channel) const {return fF1TDC_FDF_counter[channel];};
132  UInt_t GetS30(Int_t channel) const {return fF1TDC_S30_counter[channel];};
133 
134  UInt_t GetTotalSEU();
135  UInt_t GetTotalSYN();
136  UInt_t GetTotalEMM();
137  UInt_t GetTotalTFO();
138 
139  UInt_t GetTotalRLF();
140  UInt_t GetTotalHFO();
141  UInt_t GetTotalOFO();
142 
143  UInt_t GetTotalFDF();
144  UInt_t GetTotalS30();
145 
146  UInt_t GetTotalRFM() {return fF1TDC_RFM_counter;};
147 
148  void ResetCounters();
149 
150  //void SetReferenceSignals(Int_t chan_row, Double_t val);
151 
152  Double_t ReferenceSignalCorrection(Double_t raw_time, Double_t ref_time);
153 
154 
155  public:
156  Int_t fROC; // F1TDC physical roc number, not index
157  // 4 : ROC 4
158  // 9 : ROC 9
159  // 10 : ROC 10
160 
161  Int_t fSlot; // F1TDC slot number
162  // QwAnalysis' slot range 0-20. But, the physical VME
163  // slot range is 1-21. QwAlaysis's slot range is acceptable
164  // if we carefully match them with each other as follows:
165  // QwAnalysis slot 0, 1, 2, .... , 2
166  // VME slot 1, 2, 3, .... , 21
167  // Inside codes, we did the following way:
168  // QwAnalysis slot 0, 1, 2, .... , 20
169  // VME slot 1, 2, 3, .... , 21
170  // It is acceptable if we don't use the VME slot 21 as
171  // we do.
172  // Friday, July 30 11:26:36 EDT 2010, jhlee
173 
174 
175 
177  UInt_t *fBuffer;
178 
179 
181  UInt_t fF1TDC_hsdiv;
185 
188  // Double_t fF1TDC_bin_size_ns;
192 
193  Double_t fF1TDC_t_offset;
194 
197 
198 
199  Double_t fF1TDCFactor;
200 
201 
202  // We don't look at these errors upto "channels",
203  // and we care these numbers per each F1TDC.
204  // There is no reason to track them upto channel levels.
205  // Do we have?
206  // Monday, September 13 14:55:10 EDT 2010, jhlee
207 
208  UInt_t *fF1TDC_SEU_counter; // Single Event Upset counter
209  UInt_t *fF1TDC_EMM_counter; // Event number MisMatch counter
210  UInt_t *fF1TDC_SYN_counter; // SYNc issue counter
211  UInt_t *fF1TDC_TFO_counter; // Trigger Fifo Overflow counter
212 
213 
214  UInt_t *fF1TDC_RLF_counter; // Resolution Lock Fail couter
215  UInt_t *fF1TDC_HFO_counter; // Hit Fifo Overflow counter
216  UInt_t *fF1TDC_OFO_counter; // Output Fifo Overflow coutner;
217  UInt_t *fF1TDC_FDF_counter; // Fake Data Flag counter
218  UInt_t *fF1TDC_S30_counter; // Slot 30 counter
219 
220  Bool_t fReferenceSlotFlag; //!
221  TArrayD *fReferenceSignals; //!
222 
225 
226 
227  Int_t fF1TDCIndex; // keep the tdcindex info from GetTDCIndex() function
228  Int_t fF1BankIndex; // This is the Bank index, which
229  // is the redefined index to access "bank=0x0901"
230  // defined in map file (e.g. qweak_R2.map)
231 
232  private:
233 
234  //TString fF1ErrorSummaryString;
235 
236  TString fSystemName;
237  static const Int_t fWordsPerBuffer;
238  static const Int_t fMaxF1TDCChannelNumber;
239 
240  UInt_t fF1TDC_RFM_counter; // ReFerence signal Miss counter
241 
242  UInt_t GetTotal(UInt_t* error_counter);
243 
244  ClassDef(QwF1TDC,1);
245 
246 };
247 
248 /**
249  * \class QwF1TDContainer
250  * \ingroup QwAnalysis
251  *
252  * \brief F1TDCs configuration and reference siganls container
253  *
254  * This would be used to be a configuration and reference signal(s)
255  * container for F1TDCs which are used in one subsystem. The subsystem
256  * has one QwF1TDContaier that have DetectorType, Region, and QwF1TDC(s)
257  *
258  */
259 
260 // TODO
261 // * Reference signal(s) holder?
262 // * How to let a shift crew to recognize F1TDC problems
263 // * Is it valuable to save these errors into ROOT file?
264 //
265 
266 class QwF1TDContainer : public TObject
267 {
268 
269  public:
270  Int_t fNQwF1TDCs;
271  TObjArray *fQwF1TDCList;
272 
273  public:
274  QwF1TDContainer();
275  virtual ~QwF1TDContainer();
276 
277  // friend std::ostream& operator<<(std::ostream& os, const QwF1TDContainer &container);
278 
279  void SetSystemName(const TString name);// {fSystemName = name;};
280  const TString GetSystemName() const {return fSystemName;};
281 
282  void AddQwF1TDC(QwF1TDC *in);
283  void Print(const Option_t* options = 0) const;
284 
285  Int_t GetSize() const {return fNQwF1TDCs;};
286  Int_t Size() const {return fNQwF1TDCs;};
287  Int_t HowManyF1TDCs() const {return fNQwF1TDCs;};
289  EQwRegionID GetRegion() const {return fRegion;};
290 
291  QwF1TDC* GetF1TDC(Int_t roc, Int_t slot);
292  QwF1TDC* GetF1TDCwithIndex(Int_t tdc_index);
293  QwF1TDC* GetF1TDCwithBankIndexSLOT(Int_t bank_index, Int_t slot);
294 
295  Double_t GetF1TDCOneResolution() const {return fF1TDCOneResolutionNS;};
296  Double_t DoneF1TDCsConfiguration();
297 
298  Double_t ReturnTimeCalibration(Double_t time_arb_unit) {return fF1TDCOneResolutionNS*time_arb_unit;};
299 
300  //
301  // This function will be removed after several tests
302  // in order to reduce 'call' per event/hit
303  // Saturday, January 21 15:33:40 EST 2012, jhlee
304 
305  /// Double_t GetF1TDCResolution();
306 
307  Int_t GetF1TDCChannelNumber();
308  const TH2F* GetF1TDCErrorHist();
309 
310 
311  void AddSYN(Int_t roc, Int_t slot, Int_t channel);
312  void AddEMM(Int_t roc, Int_t slot, Int_t channel);
313  void AddSEU(Int_t roc, Int_t slot, Int_t channel);
314  void AddTFO(Int_t roc, Int_t slot, Int_t channel);
315 
316  void AddRLF(Int_t roc, Int_t slot, Int_t channel);
317  void AddHFO(Int_t roc, Int_t slot, Int_t channel);
318  void AddOFO(Int_t roc, Int_t slot, Int_t channel);
319 
320  void AddFDF(Int_t roc, Int_t slot, Int_t channel);
321  void AddS30(Int_t roc, Int_t slot, Int_t channel);
322 
323 
324  Bool_t CheckDataIntegrity(const UInt_t roc_id, UInt_t *buffer, UInt_t num_words);
325 
326  const MQwF1TDC GetF1TDCDecoder() const {return fF1TDCDecoder;};
327 
328  Double_t ReferenceSignalCorrection(Double_t raw_time, Double_t ref_time, Int_t bank_index, Int_t slot);
329 
330  void PrintErrorSummary();
331  void WriteErrorSummary(Bool_t hist_flag=true);
332  // void WriteErrorSummaryToDedicatedRootFile(QwRootFile* rootfile, Bool_t hist_flag=true);
333  // a stupid boost prevents this function, use a generic way to access root files internally.
334  // Tuesday, December 13 12:27:39 EST 2011, jhlee
335 
336  public:
337 
340  TString fSystemName;
341 
343 
344 private:
345 
346 
348 
351 
352  Bool_t fLocalDebug;
354 
356  Double_t GetF1TDCsResolution();
357 
358 
359  TList* GetErrorSummary();
360 
361  TString PrintNoF1TDC(Int_t roc, Int_t slot);
362  TString PrintNoF1TDC(Int_t tdc_index);
363  Bool_t CheckRegisteredF1(Int_t roc, Int_t slot);
364  Double_t GetF1TDCTriggerRollover();
365 
367 
368  void SetErrorHistOptions();
369 
370  // this is a temp solution to exclude
371  // 31 MHz clock input in QwDriftChamber
372  // in order to reduce unreasonable error number
373  //, but it doesn't work with other subsystem
374  // Wednesday, September 29 10:49:51 EDT 2010, jhlee
375 
376  Bool_t CheckSlot20Chan30(Int_t slot, Int_t chan);
377 
379 
380 };
381 
382 
383 
384 
385 
386 class F1TDCReferenceSignal : public TObject
387 {
388 
389  public:
391  F1TDCReferenceSignal(const Int_t bank_index, const Int_t slot, const Int_t channel);
392  F1TDCReferenceSignal(const Int_t bank_index, const Int_t slot, const Int_t channel, const TString name);
393  virtual ~F1TDCReferenceSignal() {};
394  friend std::ostream& operator<<(std::ostream& os, const F1TDCReferenceSignal &f1tdcref);
395 
396  Int_t GetSlotNumber() const {return fSlot;};
397  Int_t GetChannelNumber() const {return fChannelNumber;};
398  Int_t GetBankIndex() const {return fBankIndex;};
399  const TString GetRefSignalName() const {return fRefSignalName;};
400 
401  const Double_t GetRefTimeAU() const {return fRefTimeArbUnit;};
402 
403 
404 
405  const UInt_t GetNoRefTimeAU() const {return fNoRefTimeArbUnit;};
406 
407 
408  void SetSlotNumber (const Int_t slot) {fSlot = slot;};
409  void SetChanNumber (const Int_t chan) {fChannelNumber = chan;};
410  void SetBankIndex (const Int_t bank_index) {fBankIndex = bank_index;};
411  void SetRefSignalName (const TString name) {fRefSignalName = name;};
412 
413  Bool_t SetRefTimeAU (const Double_t ref_time);// { if fFirstHitFlag = false;fRefTimeArbUnit = ref_time;};
414 
415  Bool_t HasFirstHit() {return fFirstHitFlag; };
416  Bool_t HasRefTime();
417  const UInt_t GetCounter() const {return fCounter;};
418 
419 
420 
421  void PrintCounterSummary();
422 
423  void ClearEventData() { Clear(); };
424 
425  private:
426 
427  Int_t fSlot; // F1TDC slot number
428  // QwAnalysis' slot range 0-20. But, the physical VME
429  // slot range is 1-21. QwAlaysis's slot range is acceptable
430  // if we carefully match them with each other as follows:
431  // QwAnalysis slot 0, 1, 2, .... , 2
432  // VME slot 1, 2, 3, .... , 21
433  // Inside codes, we did the following way:
434  // QwAnalysis slot 0, 1, 2, .... , 20
435  // VME slot 1, 2, 3, .... , 21
436  // It is acceptable if we don't use the VME slot 21 as
437  // we do.
438  // Friday, July 30 11:26:36 EDT 2010, jhlee
439 
440 
442 
443  Int_t fBankIndex; // This is the Bank index, which
444  // is the redefined index to access "bank=0x0901"
445  // defined in map file (e.g. qweak_R2.map)
446 
447  TString fRefSignalName;
448 
449  Double_t fRefTimeArbUnit;
451  UInt_t fCounter;
452 
453  TString fSystemName;
454 
455  static const UInt_t fNoRefTimeArbUnit;
456  Bool_t fRefTimeFlag;
457 
458  void Clear() { fRefTimeArbUnit = (Double_t) fNoRefTimeArbUnit; fFirstHitFlag = false;};
459 
461 
462 };
463 
464 
465 
466 class F1TDCReferenceContainer : public TObject
467 {
468 
469  public:
472 
473  public:
475  virtual ~F1TDCReferenceContainer();
476 
477  // friend std::ostream& operator<<(std::ostream& os, const QwF1TDContainer &container);
478 
479  void SetSystemName(const TString name);//{fSystemName = name;};
480  const TString GetSystemName() const {return fSystemName;};
481 
483  /* void Print(const Option_t* options = 0) const; */
484 
485  Int_t GetSize() const {return fNF1TDCReferenceSignals;};
486  Int_t Size() const {return fNF1TDCReferenceSignals;};
487 
488  void PrintCounters();
489 
490  // F1TDCReferenceSignal* GetReferenceSignal(Int_t bank_index, Int_t slot, Int_t chan);
491  void SetReferenceSignal(Int_t bank_index, Int_t slot, Int_t chan, UInt_t data, Bool_t debug=false);
492 
493 
494  Double_t GetReferenceTimeAU (Int_t bank_index, TString name);
495  // Double_t GetNoReferneceTimeAU(Int_t bank_index, TString name);
496 
497  void ClearEventData();
498  // we need Double_t to return a negative refererence time so that
499  // we can distinguish them with "zero" reference time.
500 private:
501 
502  TString fSystemName;
503 
505 
506 };
507 
508 
509 #endif
Double_t fF1TDC_resolution_ns
UInt_t * fF1TDC_SYN_counter
Int_t HowManyF1TDCs() const
void SetSlotNumber(const Int_t slot)
Int_t GetROCNumber() const
Double_t fF1TDCTriggerRollover
ClassDef(QwF1TDContainer, 1)
void AddQwF1TDC(QwF1TDC *in)
Double_t fF1TDC_full_range_ns
Bool_t IsReferenceSlot() const
Double_t fF1TDC_t_offset
TArrayD * fReferenceSignals
void SetBankIndex(const Int_t bank_index)
UInt_t GetTotalFDF()
Int_t GetBankIndex() const
F1TDCs configuration and reference siganls container.
ClassDef(QwF1TDC, 1)
Bool_t fReferenceSlotFlag
void AddSYN(Int_t roc, Int_t slot, Int_t channel)
UInt_t fF1TDC_RFM_counter
Int_t GetSlotNumber() const
Int_t GetSize() const
void SetF1TDCBuffer(UInt_t *buffer, UInt_t num_words)
QwF1TDC * GetF1TDCwithBankIndexSLOT(Int_t bank_index, Int_t slot)
Double_t fF1TDC_trig_resolution_ns
UInt_t GetTotalRLF()
void AddRLF(Int_t roc, Int_t slot, Int_t channel)
static const double in
Definition: QwUnits.h:66
EQwRegionID fRegion
Int_t GetF1TDCIndex() const
static const Int_t fMaxF1TDCChannelNumber
Bool_t fLocalF1RawDecodeDebug
UInt_t GetF1TDC_hsdiv() const
Bool_t fLocalF1DecodeDebug
Double_t GetF1TDCTriggerRollover()
void SetSystemName(const TString name)
UInt_t GetFDF(Int_t channel) const
void AddEMM(Int_t channel)
void SetSystemName(const TString name)
TString GetErrorCounter()
const UInt_t GetNoRefTimeAU() const
TObjArray * fQwF1TDCList
UInt_t GetF1TDC_refclkdiv() const
UInt_t GetF1TDC_trigwin() const
void AddSEU(Int_t roc, Int_t slot, Int_t channel)
UInt_t GetS30(Int_t channel) const
TString GetChannelErrorCounter(Int_t channel)
Double_t GetF1TDC_t_offset() const
Double_t GetF1TDC_full_range() const
QwF1TDC * GetF1TDC(Int_t roc, Int_t slot)
virtual ~F1TDCReferenceSignal()
UInt_t fF1TDC_refcnt
TObjArray * fF1TDCReferenceSignalsList
Double_t GetF1TDC_tframe() const
Double_t GetF1TDC_trig_t_offset() const
void SetReferenceSlot(const Bool_t reflag)
one F1TDC configuration and reference signal(s) holder
Double_t GetReferenceTimeAU(Int_t bank_index, TString name)
Bool_t CheckDataIntegrity(const UInt_t roc_id, UInt_t *buffer, UInt_t num_words)
void AddSYN(Int_t channel)
void SetSlotNumber(const Int_t slot)
void PrintTotalErrorCounter()
void PrintContact()
UInt_t GetHFO(Int_t channel) const
UInt_t GetTotalEMM()
UInt_t GetF1TDC_refcnt() const
Double_t fF1TDC_latency_ns
Bool_t fF1TDCSyncFlag
const TString GetSystemName() const
void AddS30(Int_t channel)
const TString GetF1SystemName() const
virtual ~QwF1TDContainer()
void PrintChannelErrorCounter(Int_t channel)
Int_t GetF1BankIndex() const
Int_t GetChannelNumber() const
MQwF1TDC fF1TDCDecoder
UInt_t * fF1TDC_FDF_counter
UInt_t fF1TDC_trigwin
Bool_t CheckSlot20Chan30(Int_t slot, Int_t chan)
friend std::ostream & operator<<(std::ostream &os, const QwF1TDC &f1tdc)
void WriteErrorSummary(Bool_t hist_flag=true)
void AddRLF(Int_t channel)
UInt_t GetTotalHFO()
UInt_t * fF1TDC_SEU_counter
TString fSystemName
void AddFDF(Int_t channel)
Bool_t IsSyncMode() const
UInt_t * fF1TDC_TFO_counter
const Double_t GetRefTimeAU() const
UInt_t fF1TDC_refclkdiv
EQwDetectorType
Definition: QwTypes.h:94
Int_t GetChannelNumber() const
void SetRefSignalName(const TString name)
UInt_t fF1TDC_triglat
EQwRegionID
Definition: QwTypes.h:16
void AddSEU(Int_t channel)
UInt_t * fBuffer
void AddTFO(Int_t roc, Int_t slot, Int_t channel)
Double_t ReferenceSignalCorrection(Double_t raw_time, Double_t ref_time)
Bool_t IsNormResolution() const
UInt_t GetTFO(Int_t channel) const
void AddHFO(Int_t roc, Int_t slot, Int_t channel)
UInt_t GetTotalSEU()
UInt_t fF1TDC_hsdiv
Bool_t fF1TDCNormResFlag
Double_t ReferenceSignalCorrection(Double_t raw_time, Double_t ref_time, Int_t bank_index, Int_t slot)
void AddF1TDCReferenceSignal(F1TDCReferenceSignal *in)
TString GetTotalErrorCounter()
void SetReferenceSignal(Int_t bank_index, Int_t slot, Int_t chan, UInt_t data, Bool_t debug=false)
void AddOFO(Int_t channel)
Double_t DoneF1TDCsConfiguration()
Double_t GetF1TDCOneResolution() const
UInt_t * fF1TDC_OFO_counter
UInt_t GetF1TDC_triglat() const
void PrintErrorCounter()
Double_t GetF1TDC_trig_resolution() const
UInt_t GetSEU(Int_t channel) const
Int_t fChannelNumber
void PrintF1TDCConfigure()
void AddTFO(Int_t channel)
Int_t fF1BankIndex
const UInt_t GetCounter() const
const TH2F * GetF1TDCErrorHist()
UInt_t GetTotalOFO()
UInt_t * fF1TDC_HFO_counter
ClassDef(F1TDCReferenceSignal, 1)
UInt_t * fF1TDC_S30_counter
void AddS30(Int_t roc, Int_t slot, Int_t channel)
Double_t fF1TDC_trig_t_offset
EQwDetectorType fDetectorType
EQwRegionID GetRegion() const
void SetF1BankIndex(const Int_t bank_index)
QwF1TDC * GetF1TDCwithIndex(Int_t tdc_index)
const MQwF1TDC GetF1TDCDecoder() const
UInt_t GetRLF(Int_t channel) const
void SetF1SystemName(const TString name)
void AddFDF(Int_t roc, Int_t slot, Int_t channel)
void AddOFO(Int_t roc, Int_t slot, Int_t channel)
UInt_t GetTotalSYN()
UInt_t GetSYN(Int_t channel) const
Double_t GetF1TDC_latency() const
static const Int_t fWordsPerBuffer
void SetChanNumber(const Int_t chan)
void SetF1TDCIndex(const Int_t tdc_index)
void PrintF1TDCBuffer()
Double_t fF1TDCFactor
Bool_t CheckRegisteredF1(Int_t roc, Int_t slot)
UInt_t GetEMM(Int_t channel) const
void AddHFO(Int_t channel)
const TString GetRefSignalName() const
TString PrintNoF1TDC(Int_t roc, Int_t slot)
UInt_t GetOFO(Int_t channel) const
UInt_t GetTotalS30()
Double_t GetF1TDCsResolution()
Double_t fF1TDC_tframe_ns
UInt_t GetTotalTFO()
Double_t GetF1TDC_window() const
Int_t GetSlotNumber() const
const UInt_t * GetF1TDCBuffer() const
Double_t ReturnTimeCalibration(Double_t time_arb_unit)
Int_t GetF1TDCChannelNumber()
Double_t GetF1TDCResolution();.
void Print(const Option_t *options=0) const
TList * GetErrorSummary()
Double_t GetF1TDC_bin_size() const
virtual ~QwF1TDC()
Int_t fF1TDCIndex
Double_t fF1TDCOneResolutionNS
Double_t fF1TDC_window_ns
Bool_t SetRefTimeAU(const Double_t ref_time)
const TString GetSystemName() const
UInt_t GetTotal(UInt_t *error_counter)
static const UInt_t fNoRefTimeArbUnit
UInt_t * fF1TDC_RLF_counter
UInt_t * fF1TDC_EMM_counter
Double_t GetF1TDC_resolution() const
void SetROCNumber(const Int_t roc)
EQwDetectorType GetDetectorType() const
Int_t Size() const
void AddEMM(Int_t roc, Int_t slot, Int_t channel)
ClassDef(F1TDCReferenceContainer, 1)
void ResetCounters()
UInt_t GetTotalRFM()
friend std::ostream & operator<<(std::ostream &os, const F1TDCReferenceSignal &f1tdcref)