-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTUCNTreeMaker.h
271 lines (218 loc) · 6.16 KB
/
TUCNTreeMaker.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
#ifndef TUCNTreeMaker_h
#define TUCNTreeMaker_h
// This file contains classes for making
#include <string>
#include "TTree.h"
#include "TUCNHit.hxx"
#include "TDataContainer.hxx"
// This class will make the tree of UCN hits and the separate tree of sequence transitions
class TUCNHitsTree {
public:
TUCNHitsTree(std::string name);
void FillHits(TUCNHitCollection& hits, int isUCN);
void FillTransition(double icycleStartTime, double icycleValveOpenTime, double icycleValveCloseTime,
double icycleDelayTime, double icycleOpenInterval);
private:
std::string detector_name;
TTree * tRunTran; // run transitions
int tRunNum;
int tTime;
double cycleStartTime; // time of start of new cycle.
double cycleValveOpenTime; // time that valve opened
double cycleValveCloseTime; // time that valve closed
double cycleDelayTime; // delay between end of irradiation and opening valve
double cycleOpenInterval; // length of time that valve is open
// output file
TTree * tUCN;
// branches
// tUCN
ULong_t tEntry;
ULong_t tEvent;
ULong64_t tTimeE;
ULong64_t tTimeStamp;
double tUnixTime;
double tUnixTimePrecise;
Short_t tChannel;
Short_t tLength;
// Short_t tPulse[1000];
Float_t tPSD;
Short_t tChargeL;
Short_t tChargeS;
Short_t tBaseline;
Short_t tIsUCN;
};
// This class will make the tree of LND thermal variables.
class TLNDDetectorTree {
public:
TLNDDetectorTree();
void FillTree(TDataContainer& dataContainer);
private:
TTree *tLND;
int timestamp;
double LND_Reading;
};
// This class will make the tree of source epics variables.
class TUCNSourceEpicsTree {
public:
TUCNSourceEpicsTree();
void FillTree(TDataContainer& dataContainer);
private:
TTree *tSource;
int timestamp;
// midas2root code fragments generated by epics2mdias/generate_epics_code_fragment.py
double UCN_VAC_IGP1_RDVAC;
double UCN_VAC_CG1A_RDVAC;
double UCN_VAC_PG1_RDPRESS;
double UCN_HE3_PG6L_RDPRESS;
double UCN_HE3_PG6H_RDPRESS;
double UCN_HE4_PG3L_RDPRESS;
double UCN_HE4_PG3H_RDPRESS;
double UCN_VAC_PV1_STATON;
double UCN_VAC_GV1_STATON;
double UCN_VAC_VV1_STATON;
double UCN_VAC_CG1B_RDVAC;
double UCN_ISO_CG2A_RDVAC;
double UCN_ISO_CG2B_RDVAC;
double UCN_UGD_IGP2_RDVAC;
double UCN_ISO_PG9H_RDPRESS;
double UCN_ISO_PG9L_RDPRESS;
double UCN_D20_PG12_RDPRESS;
double UCN_HE4_PG4_RDPRESS;
double UCN_HE4_PG5_RDPRESS;
double UCN_HE3_PG7_RDPRESS;
double UCN_HE3_PG8_RDPRESS;
double UCN_HE3_PG11_RDPRESS;
double UCN_ISO_SV3_STATON;
double UCN_ISO_SV4_STATON;
double UCN_ISO_PV2_STATON;
double UCN_ISO_SV5_STATON;
double UCN_HE4_GV2_STATON;
double UCN_HE3_GV3_STATON;
double UCN_HE4_PG2_RDPRESS;
double UCN_HE4_MP1_STATON;
double UCN_HE4_MP2_STATON;
double UCN_HE3_MP3_STATON;
double UCN_HE3_MP4_STATON;
double UCN_HE3_MP5_STATON;
double UCN_VAC_BP1_STATON;
double UCN_VAC_TP1_STATON;
double UCN_ISO_BP2_STATON;
double UCN_ISO_TP2_STATON;
double UCN_HE3_PSW1_K2ON;
double UCN_HE3_PSW2_K2ON;
double UCN_UGD_IV1_STATON;
double UCN_HE4_PG10_RDPRESS;
double UCN_HE3_FM1_RDFLOW;
double UCN_HE4_FM2_RDFLOW;
double UCN_ISO_FM3_RDFLOW;
double UCN_HE4_FM4_RDFLOW;
double UCN_HE4_FM5_RDFLOW;
double UCN_CRY_TS1_RDTEMP;
double UCN_D2O_TS2_RDTEMP;
double UCN_CRY_TS3_RDTEMP;
double UCN_HE4_TS4_RDTEMP;
double UCN_D2O_TS5_RDTEMP;
double UCN_D2O_TS6_RDTEMP;
double UCN_D2O_TS7_RDTEMP;
double UCN_D2O_TS8_RDTEMP;
double UCN_HE4_TS9_RDTEMP;
double UCN_HE3_TS10_RDTEMP;
double UCN_ISO_TS11_RDTEMP;
double UCN_ISO_TS12_RDTEMP;
double UCN_ISO_TS13_RDTEMP;
double UCN_ISO_TS14_RDTEMP;
double UCN_ISO_TS15_RDTEMP;
double UCN_ISO_TS16_RDTEMP;
double UCN_ISO_TS17_RDTEMP;
double UCN_ISO_TS18_RDTEMP;
double UCN_UGD_TS19_RDTEMP;
double UCN_UGD_TS20_RDTEMP;
double UCN_UGD_TS21_RDTEMP;
double UCN_UGD_TS22_RDTEMP;
double UCN_CRY_TS23_RDTEMP;
double UCN_CRY_TS24_RDTEMP;
double UCN_HE4_TS25_RDTEMP;
double UCN_HE4_TS26_RDTEMP;
double UCN_HE3_TS27_RDTEMP;
double UCN_HE3_TS28_RDTEMP;
double UCN_D2O_TS29_RDTEMP;
double UCN_D2O_TS30_RDTEMP;
double UCN_CRY_TS31_RDTEMP;
double UCN_CRY_TS32_RDTEMP;
double UCN_CRY_TS33_RDTEMP;
double UCN_CRY_TS34_RDTEMP;
double UCN_CRY_TS35_RDTEMP;
double UCN_UGD_TS36_RDTEMP;
double UCN_UGD_TS37_RDTEMP;
double UCN_UGD_TS38_RDTEMP;
double UCN_HE4_LVL1_RDLVL;
double UCN_HE4_LVL2_RDLVL;
double UCN_HE3_LVL3_RDLVL;
double UCN_HE4_LVL4_RDLVL;
double UCN_HE4_LVL5_RDLVL;
double UCN_ISO_PG13_RDPRESS;
double UCN_HE4_HTR8_SETTEMP;
double UCN_HE4_HTR9_SETTEMP;
double UCN_HE4_HTR10_SETTEMP;
double UCN_HE4_HTR11_SETTEMP;
double UCN_HE3_HTR12_SETTEMP;
double UCN_CRY_CP1A_STATON;
double UCN_CRY_CP1B_STATON;
double UCN_HE3_CP2_STATON;
double UCN_HE4_HTR8_STATON;
double UCN_HE4_HTR9_STATON;
double UCN_HE4_HTR10_STATON;
double UCN_HE4_HTR11_STATON;
double UCN_HE3_HTR12_STATON;
};
// This class will make the tree of beamline epics variables.
// Currently we only save a fraction of EPICS variables. Others should
// add more...
class TUCNBeamlineEpicsTree {
public:
TUCNBeamlineEpicsTree();
void FillTree(TDataContainer& dataContainer);
private:
TTree *tBeamline;
int timestamp;
// midas2root code fragments generated by epics2mdias/generate_epics_code_fragment.py
double B1U_TNIM2_RAW;
double B1U_SEPT_STATON;
double B1U_YCB0_STATON;
double B1U_B0_STATON;
double B1U_Q1_STATON;
double B1U_Q2_STATON;
double B1U_IV0_STATON;
double B1U_IV2_STATON;
double B1U_PNG0_RDVAC;
double B1U_PNG2_RDVAC;
double B1U_TGTTEMP1_RDTEMP;
double B1U_TGTTEMP2_RDTEMP;
double B1U_WTEMP1_RDTEMP;
double B1U_WTEMP2_RDTEMP;
double B1U_COL2RIGHT_RDTEMP;
double B1U_COL2DOWN_RDTEMP;
double B1U_COL2LEFT_RDTEMP;
double B1U_COL2UP_RDTEMP;
double B1U_TNIM2_1SECAVG;
double B1U_TNIM2_10SECAVG;
double B1U_TNIM2_5MINAVG;
double B1U_TNIM2_10MINAVG;
double B1U_TNIM2_1SECTRIP;
double B1U_TNIM2_10SECTRIP;
double B1U_TNIM2_10MINTRIP;
double B1V_KICK_RDHICUR;
double B1V_KSM_RDMODE_VAL1;
double B1V_KSM_RDFRCTN_VAL1;
double B1V_KSM_BONPRD;
double B1V_KSM_RDBEAMON_VAL1;
double B1V_KSM_RDBEAMOFF_VAL1;
double B1V_KSM_INSEQ;
double B1UT_PT01_RDPRESS;
double B1UT_PT02_RDPRESS;
double B1UT_PT50_RDPRESS;
double B1UT_LM50_RDLVL;
double B1V_KSM_PREDCUR;
double B1_FOIL_ADJCUR;
};
#endif