-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTigTree.h
156 lines (137 loc) · 4.32 KB
/
TigTree.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// part of TigSortGUI
// author: Ulrike Hager
#ifndef TIGTREE_H
#define TIGTREE_H
#include <vector>
#include <string>
#include <TTree.h>
#include <TChain.h>
#include "TigObject.h"
#include "TigDataObject.h"
#include "TigEvent.h"
#include "TigDetector.h"
#include "TigScaler.h"
#include "TigScalerHisto.h"
#include "TigFormula.h"
#include "TigHisto.h"
#include "TigWaveformHisto.h"
#include "TigCut.h"
#include "TigCalibration.h"
#include "TigSortObject.h"
#include "TigLookupTable.h"
#ifdef __MAKECINT__
#pragma link C++ class std::vector<std::vector<int> >+;
#endif
class TigManager;
class TigAssemble
{
public:
TigAssemble(void);
~TigAssemble(void);
void AddData(int pDetector, int pChannel, double pValue);
void AddDetector(int pSignal);
void AddWfData(int pDet, std::vector<short> wfData);
void AddWfDetector();
int AnaEventID(){return mAnaEventID;}
double* Data(int pDet);
int EventID(){return mEventID;}
int RunNumber(){return mRunNumber;}
void SetAnaEventID(int pEventID){mAnaEventID = pEventID;}
void SetDetectors(std::vector<double*> pDets){mEventData = pDets;}
void SetEventID(int pEventID){mEventID = pEventID;}
void SetRunNumber(int pNum){mRunNumber = pNum;}
void SetTimeStamp(int pNum){mTimeStamp = pNum;}
int Size(){return mEventData.size();}
int TimeStamp(){return mTimeStamp;}
std::vector<short> Waveform(int pDet){return mWaveforms.at(pDet);}
private:
int mAnaEventID;
std::vector<double*> mEventData;
int mEventID;
int mRunNumber;
int mTimeStamp;
std::vector<std::vector<short> > mWaveforms;
};
class TigTree : public TigObject
{
public: //----- public ---------------------
TigTree(void);
~TigTree(void);
void AddDetector(TigDetector* pToAdd);
void AddInputFile(TString pFile);
void AddScaler(TigScaler* pToAdd);
void Banks(std::vector<std::string> &pRequested);
int Buffer(){return mBuffer;}
bool ConfigFromRootTree(TTree *pTree);
void ConnectFormulas();
std::vector<TigDataObject*> DataObjects(){return mObjects;}
void DeleteFormulas();
void DeleteHistos();
void DeleteObject(std::string name);
void DeleteTTree(){mTree->Delete();}
std::vector<std::string> DetectorNames();
bool FillTree();
bool FillTree(TigAssemble* pAssembled);
bool FindScalerBank(std::string pBankName);
TigDataObject *FindDataObject(std::string name);
bool FindObject(std::string name);
int FlushBuffer(int pCutoff);
bool GenerateTree; // switch between filling tree and filling histograms
int GetAddress(std::string pDetName, int pChannel);
int GetDataSize(std::string dataObj);
int GetScalerIndex(std::string pName);
std::vector<std::string> HistoNames();
TH1 *Histogram(int histN);
void InitInputChainAddresses();
void Initialize(void);
void ParseCalibration(istream& pStream);
void ParseDetector(istream& pStream);
void ParseFormHist(istream& pStream);
void ParseScaler(istream& pStream);
bool ProcessSignal(TigEvent* pEvent);
bool ProcessScaler(std::string pBankName, std::vector<int> pValues);
void ResetTree();
void ResetHistos();
bool RunChain();
int ScEventID(){return mScEventID;}
void SetBuffer(int pBuffer){mBuffer=pBuffer;}
void SetDirectory(TDirectory *dir) {mTree->SetDirectory(dir);}
void SetParent(TigManager *parent){mParent = parent;}
void Step(bool step){mStepFile = step;}
bool ToggleWrite(int det);
void WriteHistos();
TTree *Tree(){return mTree;}
void Write();
protected: //----- protected ------------------
int AddEvent(int pEventID);
long BranchCount(void) const;
void ParseCut(istream& pStream);
void ParseFormula(istream& pStream);
void ParseHisto(istream& pStream);
void ParseScalerHisto(istream& pStream);
void ParseSorter(istream& pStream);
void ParseLookup(istream& pStream);
void ParseWaveform(istream& pStream);
void ProcessValues(void);
int mAnaEventID;
std::vector<TigAssemble*> mAssembled;
int mBuffer;
Int_t mCurrentEntry;
std::vector<TigDataObject*> mObjects;
bool mHasEventData;
std::vector<TigHistoObject*> mHistos;
TChain *mInputChain;
TigManager *mParent;
int mRunNumber;
int mScEventID;
bool mStepFile;
int mTimeStamp;
TTree* mTree;
int mTrigEventID;
std::vector<TigWaveformHisto*> mWfHistos;
private: //----- private --------------------
TigTree(const TigTree& );
TigTree& operator = (const TigTree& );
// ClassDef(TigTree,0);
};
#endif /* TIGTREE_H*/