Hall A ROOT/C++ Analyzer (podd)
Loading...
Searching...
No Matches
THaOutput.h
Go to the documentation of this file.
1#ifndef Podd_THaOutput_h_
2#define Podd_THaOutput_h_
3
5//
6// THaOutput
7//
9
10#include "TObject.h"
11#include <vector>
12#include <map>
13#include <string>
14#include <cstring>
15
16class THaVar;
17class TH1F;
18class TH2F;
19class THaVform;
20class THaVhist;
21class THaEvData;
22class TTree;
24
25class THaOdata {
26// Utility class used by THaOutput to store arrays
27// up to size 'nsize' for tree output.
28public:
29 explicit THaOdata(int n=1) :
30 tree{nullptr}, ndata{0}, nsize{n}, data{new Double_t[n]} {}
31 THaOdata(const THaOdata& other);
32 THaOdata& operator=(const THaOdata& rhs);
33 virtual ~THaOdata() { delete [] data; };
34 void AddBranches(TTree* T, std::string name);
35 void Clear( Option_t* ="" ) { ndata = 0; }
38 if( i<0 || (i>=nsize && Resize(i)) ) return 0;
39 if( i>=ndata ) ndata = i+1;
40 data[i] = dat;
41 return 1;
42 }
43 Int_t Fill(Int_t n, const Double_t* array) {
44 if( n<=0 || (n>nsize && Resize(n-1)) ) return 0;
45 memcpy( data, array, n*sizeof(Double_t));
46 ndata = n;
47 return 1;
48 }
49 Int_t Fill(Double_t dat) { return Fill(0, dat); };
50 Double_t Get(Int_t index=0) const {
51 if( index<0 || index>=ndata ) return 0;
52 return data[index];
53 }
54
55 TTree* tree; // Tree that we belong to
56 std::string name; // Name of the tree branch for the data
57 Int_t ndata; // Number of array elements
58 Int_t nsize; // Maximum number of elements
59 Double_t* data; // [ndata] Array data
60
61private:
62
63 // ClassDef(THaOdata,3) // Variable sized array
64};
65
66
67class THaEpicsKey;
69
70class THaOutput {
71
72public:
73
74 THaOutput();
75 virtual ~THaOutput();
76
77 virtual Int_t Init( const char* filename="output.def" );
78 virtual Int_t Process();
80 virtual Int_t End();
81 virtual Bool_t TreeDefined() const { return fTree != nullptr; };
82 virtual TTree* GetTree() const { return fTree; };
83
84 static void SetVerbosity( Int_t level );
85
86protected:
87
88 virtual Int_t LoadFile( const char* filename );
89 virtual Int_t Attach();
90 virtual Int_t FindKey(const std::string& key) const;
91 virtual void ErrFile(Int_t iden, const std::string& sline) const;
92 virtual Int_t ChkHistTitle(Int_t key, const std::string& sline);
93 virtual Int_t BuildBlock(const std::string& blockn);
94 virtual std::string StripBracket(const std::string& var) const;
95 std::string svPrefix(std::string& histype);
96 static std::vector<std::string> reQuote(const std::vector<std::string>& input);
97 static std::string CleanEpicsName(const std::string& var);
98 void BuildList(const std::vector<std::string>& vdata);
99 void Print() const;
100 // Variables, Formulas, Cuts, Histograms
103 std::vector<std::string> fVarnames,
107 std::vector<THaVar* > fVariables, fArrays;
108 std::vector<THaVform* > fFormulas, fCuts;
109 std::vector<THaVhist* > fHistos;
110 std::vector<THaOdata* > fOdata;
111 std::vector<THaEpicsKey*> fEpicsKey;
113 bool fInit;
114
117 static const Int_t kNbout = 4000;
118 static const Int_t fgNocut = -1;
119
120 static Int_t fgVerbose; // FIXME: -> member variable
121 TObject* fExtra; // Additional member data (for binary compat.)
122
123 // Data put into fExtra
124 class OutputExtras : public TObject {
125 public:
127 virtual ~OutputExtras() = default;
128 time_t fEpicsTimestamp; // Timestamp of entry in EPICS tree
129 Long64_t fEpicsEvtNum; // Most recent physics event before entry in EPICS tree
130 };
131
132private:
133
136
137 std::string stitle, sfvarx, sfvary, scut;
138
140
144
146};
147
148#endif
int Int_t
unsigned int UInt_t
bool Bool_t
float Float_t
double Double_t
const char Option_t
#define ClassDef(name, id)
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 filename
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
void Clear(Option_t *="")
Definition THaOutput.h:35
TTree * tree
Definition THaOutput.h:55
Int_t Fill(Int_t n, const Double_t *array)
Definition THaOutput.h:43
Double_t * data
Definition THaOutput.h:59
Bool_t Resize(Int_t i)
Double_t Get(Int_t index=0) const
Definition THaOutput.h:50
Int_t Fill(Double_t dat)
Definition THaOutput.h:49
THaOdata(int n=1)
Definition THaOutput.h:29
THaOdata & operator=(const THaOdata &rhs)
virtual ~THaOdata()
Definition THaOutput.h:33
void AddBranches(TTree *T, std::string name)
Int_t ndata
Definition THaOutput.h:57
Int_t nsize
Definition THaOutput.h:58
std::string name
Definition THaOutput.h:56
Int_t Fill(Int_t i, Double_t dat)
Definition THaOutput.h:37
virtual ~OutputExtras()=default
Bool_t fOpenEpics
Definition THaOutput.h:143
std::vector< std::string > fCutnames
Definition THaOutput.h:105
THaOutput & operator=(const THaOutput &)
THaEvtTypeHandler * fEpicsHandler
Definition THaOutput.h:139
Float_t xhi
Definition THaOutput.h:142
std::vector< THaVar * > fVariables
Definition THaOutput.h:107
virtual std::string StripBracket(const std::string &var) const
TTree * fEpicsTree
Definition THaOutput.h:112
std::vector< std::string > fCutdef
Definition THaOutput.h:105
virtual Int_t FindKey(const std::string &key) const
std::string sfvary
Definition THaOutput.h:137
void Print() const
bool fInit
Definition THaOutput.h:113
virtual Int_t Attach()
std::vector< THaVform * > fCuts
Definition THaOutput.h:108
virtual Int_t Process()
static const Int_t kNbout
Definition THaOutput.h:117
std::vector< std::string > fVNames
Definition THaOutput.h:106
std::vector< THaOdata * > fOdata
Definition THaOutput.h:110
std::vector< THaVar * > fArrays
Definition THaOutput.h:107
std::vector< std::string > fFormnames
Definition THaOutput.h:104
virtual Int_t BuildBlock(const std::string &blockn)
Double_t * fVar
Definition THaOutput.h:102
static const Int_t fgNocut
Definition THaOutput.h:118
virtual Int_t LoadFile(const char *filename)
UInt_t fNvar
Definition THaOutput.h:101
std::vector< std::string > fVarnames
Definition THaOutput.h:103
Float_t yhi
Definition THaOutput.h:142
TObject * fExtra
Definition THaOutput.h:121
std::vector< std::string > fArrayNames
Definition THaOutput.h:106
TTree * fTree
Definition THaOutput.h:112
virtual Bool_t TreeDefined() const
Definition THaOutput.h:81
virtual Int_t Init(const char *filename="output.def")
virtual Int_t ProcEpics(THaEvData *ev, THaEpicsEvtHandler *han)
THaOutput(const THaOutput &)
std::string stitle
Definition THaOutput.h:137
Bool_t fIsScalar
Definition THaOutput.h:143
std::vector< THaVhist * > fHistos
Definition THaOutput.h:109
Int_t ny
Definition THaOutput.h:141
static std::string CleanEpicsName(const std::string &var)
std::string sfvarx
Definition THaOutput.h:137
static Int_t fgVerbose
Definition THaOutput.h:120
Int_t iscut
Definition THaOutput.h:141
static std::vector< std::string > reQuote(const std::vector< std::string > &input)
Double_t * fEpicsVar
Definition THaOutput.h:102
static void SetVerbosity(Int_t level)
std::vector< THaVform * > fFormulas
Definition THaOutput.h:108
Int_t nx
Definition THaOutput.h:141
void BuildList(const std::vector< std::string > &vdata)
std::string svPrefix(std::string &histype)
std::vector< std::string > fFormdef
Definition THaOutput.h:104
Bool_t fFirstEpics
Definition THaOutput.h:143
virtual void ErrFile(Int_t iden, const std::string &sline) const
virtual ~THaOutput()
std::vector< THaEpicsKey * > fEpicsKey
Definition THaOutput.h:111
virtual Int_t ChkHistTitle(Int_t key, const std::string &sline)
virtual TTree * GetTree() const
Definition THaOutput.h:82
std::string scut
Definition THaOutput.h:137
Float_t ylo
Definition THaOutput.h:142
virtual Int_t End()
Float_t xlo
Definition THaOutput.h:142
long long Long64_t
const Int_t n