Hall C ROOT/C++ Analyzer (hcana)
THcTimeSyncEvtHandler.h
Go to the documentation of this file.
1 #ifndef THcTimeSyncEvtHandler_
2 #define THcTimeSyncEvtHandler_
3 
5 //
6 // THcTimeSyncEvtHandler
7 //
9 
10 #include "THaEvtTypeHandler.h"
11 #include "Decoder.h"
12 #include <string>
13 #include <vector>
14 #include <map>
15 
16 //class THaRunBase;
17 //class THaEvData;
18 
19 class THcTimeSyncEvtHandler : public THaEvtTypeHandler {
20 
21 public:
22 
23  THcTimeSyncEvtHandler(const char* name, const char* description);
24  virtual ~THcTimeSyncEvtHandler();
25 
26  virtual Int_t Analyze(THaEvData *evdata);
27  virtual EStatus Init( const TDatime& run_time);
28  virtual void PrintStats();
29  virtual void SetExpectedOffset(Int_t roc, Int_t offset);
30  virtual void AddExpectedOffset(Int_t roc, Int_t offset);
31  virtual Int_t End( THaRunBase* r=0 );
32  virtual Int_t SetRewriteFile(const char *filename);
33  virtual void SetBadROC(Int_t roc) {fBadROC = roc;}
34  virtual void SetResync(Bool_t b) {fResync = b;}
35  virtual void SetBadSyncSizeTrigger(Int_t sizetrigger) {fBadSyncSizeTrigger = sizetrigger;}
36  virtual Int_t AllTdcsPresent(UInt_t *bank);
37 private:
38 
39  virtual void InitStats();
40  virtual void AccumulateStats(Bool_t sync);
41 
43  Int_t fMasterRoc; // ROC with the TI master
44  Int_t fNEvents; // Number of events analyzed
50  Int_t fBadROC; // ROC to check and filter sync problems
51  Bool_t fResync; // If true, stop correcting events on sync
53  Bool_t fLastEventWasSync; // True when last event was sync event
55  UInt_t fTdcMask; // Bit Pattern of TDC in ROC being checked
56 
57  Decoder::THaCodaFile* fCodaOut; // The CODA output file
59 
60  typedef struct RocTimes {
64  std::map<Int_t, UInt_t> fadcTimesMap;
65  std::map<Int_t, UInt_t> ftdcEvCountMap;
66  RocTimes() : has_ti_ttime(kFALSE) {
67  fadcTimesMap.clear();
68  ftdcEvCountMap.clear();
69  }
70  } RocTimes_t;
71 
72  typedef struct RocStats {
77  std::map<Int_t, Int_t> fadcOffsetMap;
78  std::map<Int_t, Int_t> fadcEarlySlipCountMap;
79  std::map<Int_t, Int_t> fadcLateSlipCountMap;
80  std::map<Int_t, Int_t> ftdcEvCountWrongMap;
81  std::map<Int_t, Int_t> ftdcEvCountOffsetMap;
82  RocStats() : ti_ttime_offset(0), ti_earlyslipcount(0), ti_lateslipcount(0),
83  fadc_expected_offset(0)
84  {
85  fadcOffsetMap.clear();
86  fadcEarlySlipCountMap.clear();
87  fadcLateSlipCountMap.clear();
88  ftdcEvCountWrongMap.clear();
89  ftdcEvCountOffsetMap.clear();
90  }
91  } RocStats_t;
92 
93  std::map<Int_t, RocTimes_t *> CrateTimeMap;
94  std::map<Int_t, RocStats_t *> CrateStatsMap;
95  std::map<Int_t, Int_t> ExpectedOffsetMap;
96 
99 
100  ClassDef(THcTimeSyncEvtHandler,0) // Hall C event type 125
101 
102 };
103 
104 #endif
std::map< Int_t, RocStats_t * > CrateStatsMap
std::map< Int_t, Int_t > ftdcEvCountOffsetMap
virtual void SetExpectedOffset(Int_t roc, Int_t offset)
virtual void AddExpectedOffset(Int_t roc, Int_t offset)
virtual void SetBadROC(Int_t roc)
Event handler to check TI and FADC synchronization.
std::map< Int_t, Int_t > ExpectedOffsetMap
THcTimeSyncEvtHandler(const char *name, const char *description)
int Int_t
bool Bool_t
virtual Int_t End(THaRunBase *r=0)
Decoder::THaCodaFile * fCodaOut
virtual Int_t SetRewriteFile(const char *filename)
std::map< Int_t, UInt_t > ftdcEvCountMap
#define ClassDef(name, id)
std::map< Int_t, Int_t > fadcOffsetMap
virtual void AccumulateStats(Bool_t sync)
THcTimeSyncEvtHandler & operator=(const THcTimeSyncEvtHandler &fh)
std::map< Int_t, Int_t > fadcEarlySlipCountMap
ROOT::R::TRInterface & r
struct THcTimeSyncEvtHandler::RocStats RocStats_t
unsigned int UInt_t
const Bool_t kFALSE
virtual Int_t Analyze(THaEvData *evdata)
std::map< Int_t, UInt_t > fadcTimesMap
std::map< Int_t, Int_t > fadcLateSlipCountMap
std::map< Int_t, RocTimes_t * > CrateTimeMap
virtual Int_t AllTdcsPresent(UInt_t *bank)
struct THcTimeSyncEvtHandler::RocTimes RocTimes_t
std::map< Int_t, Int_t > ftdcEvCountWrongMap
char name[80]
virtual void SetResync(Bool_t b)
virtual EStatus Init(const TDatime &run_time)
virtual void SetBadSyncSizeTrigger(Int_t sizetrigger)