Hall A ROOT/C++ Analyzer (podd)
Loading...
Searching...
No Matches
THaRunBase.h
Go to the documentation of this file.
1#ifndef Podd_THaRunBase_h_
2#define Podd_THaRunBase_h_
3
5//
6// THaRunBase
7//
9
10#include "TNamed.h"
11#include "TDatime.h"
12#include <cstdio> // for EOF
13#include <memory>
14#include <string>
15
17class THaEvData;
18
19class THaRunBase : public TNamed {
20
21public:
22 explicit THaRunBase( const char* description="" );
23 THaRunBase( const THaRunBase& run );
24 virtual THaRunBase& operator=( const THaRunBase& rhs ); //TODO make non-virtual?
25 virtual ~THaRunBase();
26 //TODO Implement Clone() and use in THaAnalyzer
27
28 virtual bool operator==( const THaRunBase& ) const;
29 virtual bool operator!=( const THaRunBase& ) const;
30 virtual bool operator< ( const THaRunBase& ) const;
31 virtual bool operator> ( const THaRunBase& ) const;
32 virtual bool operator<=( const THaRunBase& ) const;
33 virtual bool operator>=( const THaRunBase& ) const;
34
35 // Return codes for Init/Open/ReadEvent/Close
36 enum { READ_OK = 0, READ_EOF = EOF, READ_ERROR = -32, READ_FATAL = -64 };
37
38 // Main functions
39 virtual const UInt_t* GetEvBuffer() const = 0;
40 virtual Int_t Init();
41 virtual Int_t Open() = 0;
42 virtual Int_t ReadEvent() = 0;
43 virtual Int_t Close() = 0;
44
45 // Auxiliary functions
46 virtual void Clear( Option_t* opt="" );
47 virtual void ClearDate();
48 void ClearEventRange();
49 virtual Int_t Compare( const TObject* obj ) const;
50 Bool_t DBRead() const { return fDBRead; }
51 void IncrNumAnalyzed( Int_t n=1 ) { fNumAnalyzed += n; }
52 const TDatime& GetDate() const { return fDate; }
54 // GetDataVersion is intentionally not const; derived classes modify members
55 virtual Int_t GetDataVersion() { return fDataVersion; }
57 UInt_t GetNumber() const { return fNumber; }
58 UInt_t GetType() const { return fType; }
59 UInt_t GetFirstEvent() const { return fEvtRange[0]; }
60 UInt_t GetLastEvent() const { return fEvtRange[1]; }
61 THaRunParameters* GetParameters() const { return fParam.get(); }
62 virtual Bool_t HasInfo( UInt_t bits ) const;
63 virtual Bool_t HasInfoRead( UInt_t bits ) const;
64 Bool_t IsInit() const { return fIsInit; }
65 virtual Bool_t IsOpen() const;
66 virtual void Print( Option_t* opt="" ) const;
67 virtual void SetDate( const TDatime& date );
68 void SetDate( UInt_t tloc ); //FIXME take 64-bit time
69 void SetDataRequired( UInt_t mask ); // mask is OR of EInfoType
70 virtual Int_t SetDataVersion( Int_t version );
71 void SetFirstEvent( UInt_t n );
72 void SetLastEvent( UInt_t n );
73 void SetEventRange( UInt_t first, UInt_t last );
74 virtual void SetNumber( UInt_t number );
75 void SetRunParamClass( const char* classname );
76 virtual void SetType( UInt_t type );
77 virtual Int_t Update( const THaEvData* evdata );
78
84
85 // DAQ configuration strings (usually database file dumps) from user event
86 size_t GetNConfig() const;
87 const std::string& GetDAQConfig( size_t i ) const;
88 const std::string& GetDAQInfo( const std::string& key ) const;
89
90protected:
91 UInt_t fNumber; // Run number
92 UInt_t fType; // Run type/mode/etc.
93 TDatime fDate; // Run date and time
94 //FIXME event counts may overflow, make ULong64_t
95 UInt_t fEvtRange[2]; // Event range to analyze
96 UInt_t fNumAnalyzed; // Number of physics events actually analyzed
97 Bool_t fDBRead; // True if database successfully read.
98 Bool_t fIsInit; // True if run successfully initialized
99 Bool_t fOpened; // True if opened successfully
100 Bool_t fAssumeDate; // True if run date explicitly set
101 UInt_t fDataSet; // Flags for info that is valid (see EInfoType)
102 UInt_t fDataRead; // Flags for info found in data (see EInfoType)
103 UInt_t fDataRequired; // Info required for Init() to succeed
104 std::unique_ptr<THaRunParameters> fParam; // Run parameters
105 TString fRunParamClass; // Class of object in fParam
106 Int_t fDataVersion; // Data format version (implementation-dependent)
107 TObject* fExtra; // Additional member data (for binary compat.)
108
109 virtual Int_t ReadDatabase();
110 virtual Int_t ReadInitInfo( Int_t level = 0 );
111
112 ClassDef(THaRunBase,6) // Base class for run objects
113};
114
115
116#endif
int Int_t
unsigned int UInt_t
bool Bool_t
const char Option_t
#define ClassDef(name, id)
#define BIT(n)
virtual Int_t Update(const THaEvData *evdata)
UInt_t GetFirstEvent() const
Definition THaRunBase.h:59
virtual Int_t ReadInitInfo(Int_t level=0)
virtual Int_t ReadDatabase()
UInt_t fEvtRange[2]
Definition THaRunBase.h:95
const std::string & GetDAQConfig(size_t i) const
virtual Int_t ReadEvent()=0
void SetDataRequired(UInt_t mask)
TDatime fDate
Definition THaRunBase.h:93
virtual Bool_t HasInfoRead(UInt_t bits) const
Bool_t fIsInit
Definition THaRunBase.h:98
UInt_t fDataRequired
Definition THaRunBase.h:103
UInt_t fDataRead
Definition THaRunBase.h:102
virtual bool operator>(const THaRunBase &) const
virtual void ClearDate()
virtual void SetType(UInt_t type)
virtual Int_t Init()
UInt_t GetNumAnalyzed() const
Definition THaRunBase.h:56
UInt_t fNumber
Definition THaRunBase.h:91
size_t GetNConfig() const
Bool_t DBRead() const
Definition THaRunBase.h:50
const TDatime & GetDate() const
Definition THaRunBase.h:52
TString fRunParamClass
Definition THaRunBase.h:105
virtual void Print(Option_t *opt="") const
virtual bool operator!=(const THaRunBase &) const
Bool_t fOpened
Definition THaRunBase.h:99
UInt_t fType
Definition THaRunBase.h:92
virtual bool operator==(const THaRunBase &) const
UInt_t GetLastEvent() const
Definition THaRunBase.h:60
virtual void SetNumber(UInt_t number)
std::unique_ptr< THaRunParameters > fParam
Definition THaRunBase.h:104
virtual Int_t GetDataVersion()
Definition THaRunBase.h:55
void SetLastEvent(UInt_t n)
UInt_t fDataSet
Definition THaRunBase.h:101
void SetRunParamClass(const char *classname)
virtual bool operator<(const THaRunBase &) const
Bool_t IsInit() const
Definition THaRunBase.h:64
Bool_t fAssumeDate
Definition THaRunBase.h:100
virtual Bool_t IsOpen() const
void SetFirstEvent(UInt_t n)
UInt_t GetDataRequired() const
Definition THaRunBase.h:53
Bool_t fDBRead
Definition THaRunBase.h:97
const std::string & GetDAQInfo(const std::string &key) const
virtual THaRunBase & operator=(const THaRunBase &rhs)
UInt_t GetType() const
Definition THaRunBase.h:58
virtual const UInt_t * GetEvBuffer() const =0
virtual Int_t SetDataVersion(Int_t version)
void SetEventRange(UInt_t first, UInt_t last)
virtual void Clear(Option_t *opt="")
UInt_t fNumAnalyzed
Definition THaRunBase.h:96
virtual Int_t Close()=0
UInt_t GetNumber() const
Definition THaRunBase.h:57
virtual Int_t Compare(const TObject *obj) const
THaRunParameters * GetParameters() const
Definition THaRunBase.h:61
void IncrNumAnalyzed(Int_t n=1)
Definition THaRunBase.h:51
virtual bool operator<=(const THaRunBase &) const
virtual bool operator>=(const THaRunBase &) const
virtual Int_t Open()=0
virtual void SetDate(const TDatime &date)
TObject * fExtra
Definition THaRunBase.h:107
virtual Bool_t HasInfo(UInt_t bits) const
void ClearEventRange()
Int_t fDataVersion
Definition THaRunBase.h:106
virtual ~THaRunBase()
const Int_t n