Hall A ROOT/C++ Analyzer (podd)
Loading...
Searching...
No Matches
THaEvData.h
Go to the documentation of this file.
1#ifndef Podd_THaEvData_h_
2#define Podd_THaEvData_h_
3
5//
6// THaEvData
7//
9
10
11#include "Decoder.h"
12#include "Module.h"
13#include "TObject.h"
14#include "TString.h"
15#include "THaSlotData.h"
16#include "TBits.h"
17#include <cassert>
18#include <iostream>
19#include <cstdio>
20#include <vector>
21#include <array>
22#include <memory>
23#include <string>
24
25class THaBenchmark;
26
27class THaEvData : public TObject {
28
29public:
30 THaEvData();
31 virtual ~THaEvData();
32
33 // Return codes for LoadEvent
34 enum { HED_OK = 0, HED_WARN = -63, HED_ERR = -127, HED_FATAL = -255 };
35
36 // Parse raw data in 'evbuffer'. Actual decoding/unpacking takes place here.
37 // Derived classes MUST implement this function.
38 virtual Int_t LoadEvent( const UInt_t* evbuffer ) = 0;
39
40 // return a pointer to a full event
41 const UInt_t* GetRawDataBuffer() const { return buffer;}
42
43 virtual Bool_t DataCached() { return false; }
44
45 virtual Int_t Init();
46
47 // Set the EPICS event type
48 void SetEpicsEvtType( UInt_t itype) { fEpicsEvtType = itype; };
49
50 void SetEvTime( ULong64_t evtime ) { evt_time = evtime; }
51
52 // Basic access to the decoded data
53 UInt_t GetEvType() const { return event_type; }
54 UInt_t GetEvLength() const { return event_length; }
55 UInt_t GetTrigBits() const { return trigger_bits; }
56 UInt_t GetEvNum() const { return event_num; }
57 UInt_t GetRunNum() const { return run_num; }
58 Int_t GetDataVersion() const { return fDataVersion; }
59 // Run time/date. Time of prestart event (UNIX time).
60 ULong64_t GetRunTime() const { return fRunTime; }
61 UInt_t GetRunType() const { return run_type; }
62 UInt_t GetRocLength( UInt_t crate ) const; // Get the ROC length
63
64 Bool_t IsPhysicsTrigger() const; // physics trigger (event types 1-14)
65 Bool_t IsScalerEvent() const; // scalers from data stream
66 Bool_t IsPrestartEvent() const; // prestart event
67 Bool_t IsEpicsEvent() const; // slow control data
68 Bool_t IsPrescaleEvent() const; // prescale factors
69 Bool_t IsSpecialEvent() const; // e.g. detmap or trigger file insertion
70 // number of raw words in crate, slot
71 UInt_t GetNumRaw( UInt_t crate, UInt_t slot ) const;
72 // raw words for hit 0,1,2.. on crate, slot
73 UInt_t GetRawData( UInt_t crate, UInt_t slot, UInt_t hit ) const;
74 // To retrieve data by crate, slot, channel, and hit# (hit=0,1,2,..)
75 UInt_t GetRawData( UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit ) const;
76 // To get element #i of the raw evbuffer
77 UInt_t GetRawData( UInt_t i ) const;
78 // Get raw element i within crate
79 UInt_t GetRawData( UInt_t crate, UInt_t i ) const;
80 // Get raw data buffer for crate
81 const UInt_t* GetRawDataBuffer( UInt_t crate ) const;
82 UInt_t GetNumHits( UInt_t crate, UInt_t slot, UInt_t chan ) const;
83 UInt_t GetData( UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit ) const;
84 Bool_t InCrate( UInt_t crate, UInt_t i ) const;
85 // Num unique channels hit
86 UInt_t GetNumChan( UInt_t crate, UInt_t slot ) const;
87 // List unique chan
88 UInt_t GetNextChan( UInt_t crate, UInt_t slot, UInt_t index ) const;
89 const char* DevType( UInt_t crate, UInt_t slot ) const;
90
91 Bool_t HasCapability( Decoder::EModuleType type, UInt_t crate, UInt_t slot ) const;
92 Bool_t IsMultifunction( UInt_t crate, UInt_t slot ) const;
94 UInt_t GetData( Decoder::EModuleType type, UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit ) const;
95 UInt_t GetLEbit( UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit ) const;
96 UInt_t GetOpt( UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit ) const;
97
98 // Optional functionality that may be implemented by derived classes
99 virtual ULong64_t GetEvTime() const { return evt_time; }
100 // Returns Beam Helicity (-1,0,+1) '0' is 'unknown'
101 virtual Int_t GetHelicity() const { return 0; }
102 // Beam Helicity for spec="left","right"
103 virtual Int_t GetHelicity(const TString& /*spec*/) const
104 { return GetHelicity(); }
105 virtual UInt_t GetPrescaleFactor( UInt_t /*trigger*/ ) const
106 { assert(fgAllowUnimpl); return kMaxUInt; }
107 // User can GetScaler, alternatively to GetSlotData for scalers
108 // spec = "left", "right", "rcs" for event type 140 scaler "events"
109 // spec = "evleft" or "evright" for L,R scalers injected into data stream.
110 virtual UInt_t GetScaler( UInt_t /*roc*/, UInt_t /*slot*/, UInt_t /*chan*/ ) const
111 { assert(ScalersEnabled() && fgAllowUnimpl); return kMaxUInt; };
112 virtual UInt_t GetScaler( const TString& /*spec*/,
113 UInt_t /*slot*/, UInt_t /*chan*/ ) const
114 { return GetScaler(0,0,0); }
115 virtual void SetDebugFile( std::ofstream *file ) { fDebugFile = file; };
116 virtual Decoder::Module* GetModule( UInt_t roc, UInt_t slot ) const;
117
118 // Access functions for EPICS (slow control) data
119 virtual double GetEpicsData( const char* tag, UInt_t event= 0 ) const;
120 virtual double GetEpicsTime( const char* tag, UInt_t event= 0 ) const;
121 virtual TString GetEpicsString( const char* tag, UInt_t event= 0 ) const;
122 virtual Bool_t IsLoadedEpics(const char* /*tag*/ ) const
123 { return false; }
124
125 UInt_t GetNslots() const { return fSlotUsed.size(); };
126 virtual void PrintSlotData( UInt_t crate, UInt_t slot ) const;
127 virtual void PrintOut() const;
128 virtual void SetRunTime( ULong64_t tloc );
129 virtual Int_t SetDataVersion( Int_t version );
130
131 // Status control
132 void EnableBenchmarks( Bool_t enable=true );
133 void EnableHelicity( Bool_t enable=true );
134 Bool_t HelicityEnabled() const;
135 void EnableScalers( Bool_t enable=true );
136 Bool_t ScalersEnabled() const;
137 void EnablePrescanMode( Bool_t enable=true );
139 void SetOrigPS( Int_t event_type );
140 TString GetOrigPS() const;
141
142 UInt_t GetInstance() const { return fInstance; }
144
145 Decoder::THaCrateMap* GetCrateMap() const { return fMap.get(); }
146
147 TObject* GetExtra() const { return fExtra; }
148
149 // Reporting level
150 void SetVerbose( Int_t level );
151 void SetDebug( Int_t level );
152
153 // Utility function for hexdumping any sort of data
154 static void hexdump(const char* cbuff, size_t len);
155
156 void SetCrateMapName( const char* name );
157 static void SetDefaultCrateMapName( const char* name );
158
159 // For THaRun to set info found during prescan FIXME BCI make virtual?
160 void SetRunInfo( UInt_t num, UInt_t type, ULong64_t tloc );
161
162protected:
163 // Control bits in TObject::fBits used by decoders
164 enum {
167 kPrescanMode = BIT(16)
168 };
169
170 // Initialization routines
171 virtual Int_t init_cmap();
172 virtual Int_t init_slotdata();
173 virtual void makeidx( UInt_t crate, UInt_t slot );
174 virtual void FindUsedSlots();
175
176 // Helper functions
177 UInt_t idx( UInt_t crate, UInt_t slot ) const;
178 UInt_t idx( UInt_t crate, UInt_t slot );
179 static Bool_t GoodCrateSlot( UInt_t crate, UInt_t slot );
180 Bool_t GoodIndex( UInt_t crate, UInt_t slot ) const;
181
182 // Data
183 std::unique_ptr<Decoder::THaCrateMap> fMap; // Pointer to active crate map
184
185 class RocDat_t { // Coordinates of ROC data in raw event
186 public:
187 RocDat_t() : pos(0), len(0) {}
188 void clear() { pos = len = 0; }
189 UInt_t pos; // position of ROC length word in evbuffer[], so pos+1 = first word of data
190 UInt_t len; // length of data after pos, so pos+len = last word of data
191 };
192 std::array<RocDat_t, Decoder::MAXROC> rocdat;
193
194 // Per-event, per-module hit data extracted from raw event
195 std::vector<std::unique_ptr<Decoder::THaSlotData>> crateslot;
196
199 Int_t fDataVersion; // Data format version (implementation-defined)
201
203
204 std::ofstream *fDebugFile; // debug output
205
209 ULong64_t fRunTime; // Run start time (Unix time)
210 ULong64_t evt_time; // Event time (for CODA 3.* this is a 250 Mhz clock)
211
212 std::vector<UShort_t> fSlotUsed; // Indices of crateslot[] used
213 std::vector<UShort_t> fSlotClear; // Indices of crateslot[] to clear
214
216 std::unique_ptr<THaBenchmark> fBench;
217
218 UInt_t fInstance; // My instance
219 static TBits fgInstances; // Number of instances of this object
220
221 static const Double_t kBig; // default value for invalid data
222 static Bool_t fgAllowUnimpl; // If true, allow unimplemented functions
223
224 static TString fgDefaultCrateMapName; // Default crate map name
225 TString fCrateMapName; // Crate map database file name to use
226 Bool_t fNeedInit; // Crate map needs to be (re-)initialized
227
228 Int_t fDebug; // Debug/verbosity level
229
230 TBits fMsgPrinted; // Flags indicating one-time warnings printed
231
232 TObject* fExtra; // additional member data, for binary compatibility
233
234 ClassDef(THaEvData,0) // Base class for raw data decoders
235
236};
237
238//=============== inline functions ================================
239
240//Utility function to index into the crateslot array
241inline UInt_t THaEvData::idx( UInt_t crate, UInt_t slot ) const { // NOLINT(readability-convert-member-functions-to-static)
242 return slot+Decoder::MAXSLOT*crate;
243}
244//Like idx() const, but initializes empty slots
245inline UInt_t THaEvData::idx( UInt_t crate, UInt_t slot ) {
246 UInt_t ix = slot+Decoder::MAXSLOT*crate;
247 if( !crateslot[ix] ) makeidx(crate,slot);
248 return ix;
249}
250
252 return (crate < Decoder::MAXROC && slot < Decoder::MAXSLOT);
253}
254
255inline Bool_t THaEvData::GoodIndex( UInt_t crate, UInt_t slot ) const {
256 return (GoodCrateSlot(crate,slot) && crateslot[idx(crate,slot)] );
257}
258
259inline UInt_t THaEvData::GetRocLength( UInt_t crate ) const {
260 assert( crate < rocdat.size() );
261 return rocdat[crate].len;
262}
263
265 UInt_t chan ) const {
266 // Number hits in crate, slot, channel
267 assert( GoodCrateSlot(crate,slot) );
268 if( crateslot[idx(crate,slot)] )
269 return crateslot[idx(crate,slot)]->getNumHits(chan);
270 return 0;
271}
272
274 UInt_t hit ) const {
275 // Return the data in crate, slot, channel #chan and hit# hit
276 assert( GoodIndex(crate,slot) );
277 return crateslot[idx(crate,slot)]->getData(chan,hit);
278}
279
280inline UInt_t THaEvData::GetNumRaw( UInt_t crate, UInt_t slot ) const {
281 // Number of raw words in crate, slot
282 assert( GoodCrateSlot(crate,slot) );
283 if( crateslot[idx(crate,slot)] )
284 return crateslot[idx(crate,slot)]->getNumRaw();
285 return 0;
286}
287
289 UInt_t hit ) const {
290 // Raw words in crate, slot
291 assert( GoodIndex(crate,slot) );
292 return crateslot[idx(crate,slot)]->getRawData(hit);
293}
294
296 UInt_t hit ) const {
297 // Return the Rawdata in crate, slot, channel #chan and hit# hit
298 assert( GoodIndex(crate,slot) );
299 return crateslot[idx(crate,slot)]->getRawData(chan,hit);
300}
301
303 // Raw words in evbuffer at location #i.
304 assert( buffer && i < GetEvLength() );
305 return buffer[i];
306}
307
308inline UInt_t THaEvData::GetRawData( UInt_t crate, UInt_t i ) const {
309 // Raw words in evbuffer within crate #crate.
310 assert( crate < rocdat.size() );
311 return GetRawData(rocdat[crate].pos + i);
312}
313
314inline const UInt_t* THaEvData::GetRawDataBuffer( UInt_t crate ) const {
315 // Direct access to the event buffer for the given crate,
316 // e.g. for fast header word searches
317 assert( crate < rocdat.size() );
318 return buffer+rocdat[crate].pos;
319}
320
321inline Bool_t THaEvData::InCrate( UInt_t crate, UInt_t i ) const {
322 // To tell if the index "i" poInt_ts to a word inside crate #crate.
323 assert( crate < rocdat.size() );
324 // Used for crawling through whole event
325 if (crate == 0) return (i < GetEvLength());
326 if (rocdat[crate].pos == 0 || rocdat[crate].len == 0) return false;
327 return (i >= rocdat[crate].pos &&
328 i <= rocdat[crate].pos+rocdat[crate].len);
329}
330
331inline UInt_t THaEvData::GetNumChan( UInt_t crate, UInt_t slot ) const {
332 // Get number of unique channels hit
333 assert( GoodCrateSlot(crate,slot) );
334 if( crateslot[idx(crate,slot)] )
335 return crateslot[idx(crate,slot)]->getNumChan();
336 return 0;
337}
338
340 UInt_t index ) const {
341 // Get list of unique channels hit (indexed by index=0,getNumChan()-1)
342 assert( GoodIndex(crate,slot) );
343 assert( index < GetNumChan(crate,slot) );
344 return crateslot[idx(crate,slot)]->getNextChan(index);
345}
346
347inline
351
352
353inline
355 // Either 'event type 140' or events with the synchronous readout
356 // of scalers (roc11, etc).
357 // Important: A scaler event can also be a physics event.
358 return (event_type == Decoder::SCALER_EVTYPE || evscaler == 1);
359}
360
361inline
365
366inline
370
371inline
376
377inline
382
383inline
385{
386 // Test if helicity decoding enabled
388}
389
390inline
392 // Test if scaler decoding enabled
393 return TestBit(kScalersEnabled);
394}
395
396inline
398 // Test if prescan mode enabled
399 return TestBit(kPrescanMode);
400}
401
402// Dummy versions of EPICS data access functions. These will always fail
403// in debug mode unless IsLoadedEpics is changed. This is by design -
404// clients should never try to retrieve data that are not loaded.
405inline
406Double_t THaEvData::GetEpicsData( const char* /*tag*/, UInt_t /*event*/ ) const
407{
408 assert(IsLoadedEpics("") && fgAllowUnimpl);
409 return kBig;
410}
411
412inline
413Double_t THaEvData::GetEpicsTime( const char* /*tag*/, UInt_t /*event*/ ) const
414{
415 assert(IsLoadedEpics("") && fgAllowUnimpl);
416 return kBig;
417}
418
419inline
420TString THaEvData::GetEpicsString( const char* /*tag*/, UInt_t /*event*/ ) const
421{
422 assert(IsLoadedEpics("") && fgAllowUnimpl);
423 return {""};
424}
425
426inline
428 UInt_t slot ) const {
429 Decoder::Module* module = GetModule(crate, slot);
430 if( !module ) {
431 std::cerr << "No module at crate " << crate << " slot " << slot << std::endl;
432 return false;
433 }
434 return module->HasCapability(type);
435}
436
437inline
439 Decoder::Module* module = GetModule(crate, slot);
440 if( !module ) {
441 std::cerr << "No module at crate " << crate << " slot " << slot << std::endl;
442 return false;
443 }
444 return module->IsMultiFunction();
445}
446
447inline
449 Decoder::Module* module = GetModule(crate, slot);
450 if( !module ) return 0;
451 if( module->HasCapability(type) ) {
452 return module->GetNumEvents(type, chan);
453 } else {
454 return GetNumHits(crate, slot, chan);
455 }
456}
457
458inline
460 Decoder::Module* module = GetModule(crate, slot);
461 if( !module ) return 0;
462 if( module->HasCapability(type) ) {
463 if( hit >= module->GetNumEvents(type, chan) ) return 0;
464 return module->GetData(type, chan, hit);
465 } else {
466 return GetData(crate, slot, chan, hit);
467 }
468}
469
470inline
472 // get the Leading Edge bit (works for fastbus)
473 return GetOpt(crate, slot, chan, hit );
474}
475
476inline
477UInt_t THaEvData::GetOpt( UInt_t crate, UInt_t slot, UInt_t /*chan*/, UInt_t hit ) const {
478 // get the "Opt" bit (works for fastbus, is otherwise zero)
479 Decoder::Module* module = GetModule(crate, slot);
480 if( !module ) {
481 std::cerr << "No module at crate " << crate << " slot " << slot << std::endl;
482 return 0;
483 }
484 return module->GetOpt(GetRawData(crate, slot, hit));
485}
486
487#endif
int Int_t
unsigned int UInt_t
uint32_t chan
bool Bool_t
const UInt_t kMaxUInt
double Double_t
#define ClassDef(name, id)
#define BIT(n)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
UInt_t CountBits(UInt_t startBit=0) const
Bool_t fDoBench
Definition THaEvData.h:215
UInt_t data_type
Definition THaEvData.h:207
TBits fMsgPrinted
Definition THaEvData.h:230
UInt_t run_num
Definition THaEvData.h:206
virtual Int_t Init()
std::ofstream * fDebugFile
Definition THaEvData.h:204
virtual Bool_t DataCached()
Definition THaEvData.h:43
virtual Int_t init_slotdata()
Bool_t fNeedInit
Definition THaEvData.h:226
UInt_t run_type
Definition THaEvData.h:207
Int_t evscaler
Definition THaEvData.h:208
void SetEvTime(ULong64_t evtime)
Definition THaEvData.h:50
void SetDebug(Int_t level)
std::vector< UShort_t > fSlotClear
Definition THaEvData.h:213
virtual ULong64_t GetEvTime() const
Definition THaEvData.h:99
UInt_t GetEvType() const
Definition THaEvData.h:53
void SetVerbose(Int_t level)
UInt_t idx(UInt_t crate, UInt_t slot) const
Definition THaEvData.h:241
void EnableScalers(Bool_t enable=true)
virtual Int_t GetHelicity(const TString &) const
Definition THaEvData.h:103
UInt_t GetRawData(UInt_t crate, UInt_t slot, UInt_t hit) const
Definition THaEvData.h:288
std::vector< std::unique_ptr< Decoder::THaSlotData > > crateslot
Definition THaEvData.h:195
Bool_t IsEpicsEvent() const
Definition THaEvData.h:367
virtual void PrintOut() const
std::unique_ptr< Decoder::THaCrateMap > fMap
Definition THaEvData.h:183
virtual void FindUsedSlots()
UInt_t GetOpt(UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit) const
Definition THaEvData.h:477
virtual Int_t LoadEvent(const UInt_t *evbuffer)=0
static Bool_t GoodCrateSlot(UInt_t crate, UInt_t slot)
Definition THaEvData.h:251
virtual Bool_t IsLoadedEpics(const char *) const
Definition THaEvData.h:122
std::unique_ptr< THaBenchmark > fBench
Definition THaEvData.h:216
static void hexdump(const char *cbuff, size_t len)
Bool_t IsPhysicsTrigger() const
Definition THaEvData.h:348
ULong64_t fRunTime
Definition THaEvData.h:209
Int_t fDataVersion
Definition THaEvData.h:199
Bool_t first_decode
Definition THaEvData.h:197
virtual UInt_t GetScaler(UInt_t, UInt_t, UInt_t) const
Definition THaEvData.h:110
virtual void SetRunTime(ULong64_t tloc)
Bool_t IsPrescaleEvent() const
Definition THaEvData.h:372
void EnablePrescanMode(Bool_t enable=true)
UInt_t event_type
Definition THaEvData.h:206
Bool_t PrescanModeEnabled() const
Definition THaEvData.h:397
@ kHelicityEnabled
Definition THaEvData.h:165
@ kScalersEnabled
Definition THaEvData.h:166
void SetRunInfo(UInt_t num, UInt_t type, ULong64_t tloc)
UInt_t GetNumHits(UInt_t crate, UInt_t slot, UInt_t chan) const
Definition THaEvData.h:264
Int_t fDebug
Definition THaEvData.h:228
virtual UInt_t GetPrescaleFactor(UInt_t) const
Definition THaEvData.h:105
std::vector< UShort_t > fSlotUsed
Definition THaEvData.h:212
TObject * fExtra
Definition THaEvData.h:232
static const Double_t kBig
Definition THaEvData.h:221
static void SetDefaultCrateMapName(const char *name)
ULong64_t evt_time
Definition THaEvData.h:210
Int_t GetDataVersion() const
Definition THaEvData.h:58
Bool_t IsPrestartEvent() const
Definition THaEvData.h:362
UInt_t GetNumRaw(UInt_t crate, UInt_t slot) const
Definition THaEvData.h:280
virtual Int_t SetDataVersion(Int_t version)
virtual TString GetEpicsString(const char *tag, UInt_t event=0) const
Definition THaEvData.h:420
virtual ~THaEvData()
Definition THaEvData.cxx:91
static UInt_t GetInstances()
Definition THaEvData.h:143
void SetCrateMapName(const char *name)
Bool_t HasCapability(Decoder::EModuleType type, UInt_t crate, UInt_t slot) const
Definition THaEvData.h:427
Bool_t HelicityEnabled() const
Definition THaEvData.h:384
Decoder::THaCrateMap * GetCrateMap() const
Definition THaEvData.h:145
UInt_t GetNslots() const
Definition THaEvData.h:125
TObject * GetExtra() const
Definition THaEvData.h:147
const UInt_t * GetRawDataBuffer() const
Definition THaEvData.h:41
virtual void PrintSlotData(UInt_t crate, UInt_t slot) const
static TBits fgInstances
Definition THaEvData.h:219
void EnableHelicity(Bool_t enable=true)
void SetOrigPS(Int_t event_type)
void EnableBenchmarks(Bool_t enable=true)
Bool_t IsSpecialEvent() const
Definition THaEvData.h:378
virtual void makeidx(UInt_t crate, UInt_t slot)
TString fCrateMapName
Definition THaEvData.h:225
virtual void SetDebugFile(std::ofstream *file)
Definition THaEvData.h:115
static Bool_t fgAllowUnimpl
Definition THaEvData.h:222
static TString fgDefaultCrateMapName
Definition THaEvData.h:224
void SetEpicsEvtType(UInt_t itype)
Definition THaEvData.h:48
TString GetOrigPS() const
UInt_t GetNextChan(UInt_t crate, UInt_t slot, UInt_t index) const
Definition THaEvData.h:339
UInt_t GetLEbit(UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit) const
Definition THaEvData.h:471
UInt_t GetNumEvents(Decoder::EModuleType type, UInt_t crate, UInt_t slot, UInt_t chan) const
Definition THaEvData.h:448
UInt_t GetEvNum() const
Definition THaEvData.h:56
UInt_t fEpicsEvtType
Definition THaEvData.h:200
Bool_t ScalersEnabled() const
Definition THaEvData.h:391
Bool_t fTrigSupPS
Definition THaEvData.h:198
UInt_t GetNumChan(UInt_t crate, UInt_t slot) const
Definition THaEvData.h:331
ULong64_t GetRunTime() const
Definition THaEvData.h:60
UInt_t GetRunNum() const
Definition THaEvData.h:57
virtual Decoder::Module * GetModule(UInt_t roc, UInt_t slot) const
UInt_t GetInstance() const
Definition THaEvData.h:142
virtual Int_t init_cmap()
UInt_t GetRocLength(UInt_t crate) const
Definition THaEvData.h:259
Bool_t IsMultifunction(UInt_t crate, UInt_t slot) const
Definition THaEvData.h:438
const UInt_t * buffer
Definition THaEvData.h:202
UInt_t GetRunType() const
Definition THaEvData.h:61
virtual Int_t GetHelicity() const
Definition THaEvData.h:101
UInt_t GetTrigBits() const
Definition THaEvData.h:55
Bool_t InCrate(UInt_t crate, UInt_t i) const
Definition THaEvData.h:321
virtual double GetEpicsTime(const char *tag, UInt_t event=0) const
Definition THaEvData.h:413
UInt_t fInstance
Definition THaEvData.h:218
Bool_t GoodIndex(UInt_t crate, UInt_t slot) const
Definition THaEvData.h:255
const char * DevType(UInt_t crate, UInt_t slot) const
virtual UInt_t GetScaler(const TString &, UInt_t, UInt_t) const
Definition THaEvData.h:112
UInt_t GetEvLength() const
Definition THaEvData.h:54
UInt_t trigger_bits
Definition THaEvData.h:207
Bool_t IsScalerEvent() const
Definition THaEvData.h:354
UInt_t event_length
Definition THaEvData.h:206
std::array< RocDat_t, Decoder::MAXROC > rocdat
Definition THaEvData.h:192
UInt_t GetData(UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit) const
Definition THaEvData.h:273
UInt_t event_num
Definition THaEvData.h:206
virtual double GetEpicsData(const char *tag, UInt_t event=0) const
Definition THaEvData.h:406
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
unsigned long long ULong64_t
EModuleType
Definition Decoder.h:57
static const UInt_t TRIGGER_FILE
Definition Decoder.h:51
static const UInt_t PRESTART_EVTYPE
Definition Decoder.h:40
static const UInt_t DETMAP_FILE
Definition Decoder.h:48
static const UInt_t PRESCALE_EVTYPE
Definition Decoder.h:47
static const UInt_t MAXSLOT
Definition Decoder.h:35
static const UInt_t SCALER_EVTYPE
Definition Decoder.h:52
static const UInt_t MAX_PHYS_EVTYPE
Definition Decoder.h:38
static const UInt_t TS_PRESCALE_EVTYPE
Definition Decoder.h:44
static const UInt_t MAXROC
Definition Decoder.h:33