/[PAMELA software]/YodaProfiler/src/GLTables.cpp
ViewVC logotype

Contents of /YodaProfiler/src/GLTables.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (show annotations) (download)
Tue Oct 17 15:20:04 2006 UTC (18 years, 1 month ago) by mocchiut
Branch: MAIN
Changes since 1.11: +91 -1 lines
Added TLE filling, minor bugs fixed

1 /**
2 * \file GLTables.cpp
3 * \author Elena Vannuccini
4 *
5 * The file contains implementation of the methods to query the DB.
6 */
7 //
8 #include <sstream>
9 #include <iostream>
10 //
11 #include <TFile.h>
12 #include <TTree.h>
13 #include <EventHeader.h>
14 #include <PscuHeader.h>
15 //
16 #include <GLTables.h>
17 #include <cTle.h>
18 //
19 ClassImp(GL_TRK_CALIB);
20 ClassImp(GL_RUN);
21 ClassImp(GL_ROOT);
22 ClassImp(GL_PARAM);
23 ClassImp(GL_S4_CALIB);
24 ClassImp(GL_CALO_CALIB);
25 ClassImp(GL_TIMESYNC);
26 ClassImp(GL_TLE);
27 //
28 using namespace std;
29
30 GL_RUN::GL_RUN() {
31 ID = 0;
32 ID_RUN_FRAG = 0;
33 ID_ROOT_L0 = 0;
34 ID_ROOT_L2 = 0;
35 RUNHEADER_TIME = 0;
36 RUNTRAILER_TIME = 0;
37 EV_FROM = 0;
38 EV_TO = 0;
39 TRK_CALIB_USED = 0;
40 EFF_WRK_SCHEDULE = 0;
41 PRH_VAR_TRG_MODE_A = 0;
42 PRH_VAR_TRG_MODE_B = 0;
43 ACQ_BUILD_INFO = 0;
44 ACQ_VAR_INFO = 0;
45 RUNHEADER_OBT = 0;
46 RUNTRAILER_OBT = 0;
47 RUNHEADER_PKT = 0;
48 RUNTRAILER_PKT = 0;
49 NEVENTS = 0;
50 LAST_TIMESYNC = 0;
51 OBT_TIMESYNC = 0;
52 COMPILATIONTIMESTAMP = 0;
53 FAV_WRK_SCHEDULE = 0;
54 RM_ACQ_AFTER_CALIB = 0;
55 RM_ACQ_SETTING_MODE = 0;
56 PKT_COUNTER = 0;
57 PKT_READY_COUNTER = 0;
58 TRK_CALIB_USED = 0;
59 CAL_DSP_MASK = 0;
60 BOOT_NUMBER = 0;
61 VALIDATION = 0;
62 }
63
64
65 void GL_RUN::Clear() {
66 ID = 0;
67 ID_RUN_FRAG = 0;
68 ID_ROOT_L0 = 0;
69 ID_ROOT_L2 = 0;
70 RUNHEADER_TIME = 0;
71 RUNTRAILER_TIME = 0;
72 EV_FROM = 0;
73 EV_TO = 0;
74 TRK_CALIB_USED = 0;
75 EFF_WRK_SCHEDULE = 0;
76 PRH_VAR_TRG_MODE_A = 0;
77 PRH_VAR_TRG_MODE_B = 0;
78 ACQ_BUILD_INFO = 0;
79 ACQ_VAR_INFO = 0;
80 RUNHEADER_OBT = 0;
81 RUNTRAILER_OBT = 0;
82 RUNHEADER_PKT = 0;
83 RUNTRAILER_PKT = 0;
84 NEVENTS = 0;
85 LAST_TIMESYNC = 0;
86 OBT_TIMESYNC = 0;
87 COMPILATIONTIMESTAMP = 0;
88 FAV_WRK_SCHEDULE = 0;
89 RM_ACQ_AFTER_CALIB = 0;
90 RM_ACQ_SETTING_MODE = 0;
91 PKT_COUNTER = 0;
92 PKT_READY_COUNTER = 0;
93 TRK_CALIB_USED = 0;
94 CAL_DSP_MASK = 0;
95 BOOT_NUMBER = 0;
96 VALIDATION = 0;
97 }
98
99 GL_ROOT::GL_ROOT(){
100 ID = 0;
101 ID_RAW = 0;
102 ID_TIMESYNC = 0;
103 PATH = "";
104 NAME = "";
105 }
106
107 GL_PARAM::GL_PARAM(){
108 ID = 0;
109 PATH = "";
110 NAME = "";
111 DESCR = "";
112 FROM_TIME = 0;
113 TO_TIME = 0;
114 TYPE = 0;
115 }
116
117
118 GL_TRK_CALIB::GL_TRK_CALIB(){
119 ID = 0;
120 ID_ROOT_L0 = 0;
121 EV_ROOT_CALIBTRK1 = 0;
122 EV_ROOT_CALIBTRK2 = 0;
123 FROM_TIME = 0;
124 TO_TIME = 0;
125 OBT1 = 0;
126 OBT2 = 0;
127 PKT1 = 0;
128 PKT2 = 0;
129 BOOT_NUMBER = 0;
130 VALIDATION = 0;
131 }
132
133 GL_CALO_CALIB::GL_CALO_CALIB(){
134 ID = 0;
135 ID_ROOT_L0 = 0;
136 EV_ROOT = 0;
137 FROM_TIME = 0;
138 TO_TIME = 0;
139 SECTION = 0;
140 }
141
142 GL_S4_CALIB::GL_S4_CALIB(){
143 ID = 0;
144 ID_ROOT_L0 = 0;
145 EV_ROOT = 0;
146 FROM_TIME = 0;
147 TO_TIME = 0;
148 PARAM_FIT0 = 0.;
149 PARAM_FIT1 = 0.;
150 }
151
152 GL_TIMESYNC::GL_TIMESYNC(){
153 obtfirst = 0;
154 pktfirst = 0;
155 toffset = 0;
156 ID = 0;
157 ID_RAW = 0;
158 OBT0 = 0;
159 TIMESYNC = 0;
160 TYPE = 0;
161 }
162
163 GL_TLE::GL_TLE(){
164 }
165
166 // ****************************************************
167
168 void GL_RUN::SetEV_FROM(UInt_t evfrom){
169 EV_FROM = evfrom;
170 };
171
172 void GL_RUN::SetEV_TO(UInt_t evto){
173 EV_TO = evto;
174 };
175
176 void GL_RUN::SetNEVENTS(UInt_t nev){
177 NEVENTS = nev;
178 };
179
180 void GL_RUN::SetBOOTNUMBER(UInt_t boot){
181 BOOT_NUMBER = boot;
182 };
183
184 void GL_RUN::SetRUNHEADER_TIME(UInt_t absth){
185 RUNHEADER_TIME = absth;
186 };
187
188 void GL_RUN::SetRUNTRAILER_TIME(UInt_t abstt){
189 RUNTRAILER_TIME = abstt;
190 };
191
192 void GL_RUN::SetRUNHEADER_PKT(UInt_t absth){
193 RUNHEADER_PKT = absth;
194 };
195
196 void GL_RUN::SetRUNTRAILER_PKT(UInt_t abstt){
197 RUNTRAILER_PKT = abstt;
198 };
199
200 void GL_RUN::SetRUNHEADER_OBT(UInt_t absth){
201 RUNHEADER_OBT = absth;
202 };
203
204 void GL_RUN::SetRUNTRAILER_OBT(UInt_t abstt){
205 RUNTRAILER_OBT = abstt;
206 };
207
208 void GL_RUN::SetID_ROOT_L2(UInt_t idl2){
209 ID_ROOT_L2 = idl2;
210 };
211
212 void GL_RUN::SetID_ROOT_L0(UInt_t idroot){
213 ID_ROOT_L0 = idroot;
214 };
215
216 void GL_RUN::SetID_RUN_FRAG(UInt_t idfrag){
217 ID_RUN_FRAG = idfrag;
218 };
219
220 void GL_RUN::SetVALIDATION(UInt_t valid){
221 VALIDATION = valid;
222 };
223
224 void GL_RUN::SetLAST_TIMESYNC(UInt_t ts){
225 LAST_TIMESYNC = ts;
226 };
227
228 void GL_RUN::SetOBT_TIMESYNC(UInt_t ts){
229 OBT_TIMESYNC = ts;
230 };
231
232 void GL_RUN:: SetPKT_COUNTER(UInt_t value){
233 PKT_COUNTER = value;
234 };
235
236 void GL_RUN:: SetPKT_READY_COUNTER(UInt_t value){
237 PKT_READY_COUNTER = value;
238 };
239
240 void GL_RUN:: SetCOMPILATIONTIMESTAMP(UInt_t value){
241 COMPILATIONTIMESTAMP = value;
242 };
243
244 void GL_RUN:: SetFAV_WRK_SCHEDULE(UInt_t value){
245 FAV_WRK_SCHEDULE = value;
246 };
247
248 void GL_RUN:: SetEFF_WRK_SCHEDULE(UInt_t value){
249 EFF_WRK_SCHEDULE = value;
250 };
251
252 void GL_RUN:: SetPRH_VAR_TRG_MODE_A(UInt_t value){
253 PRH_VAR_TRG_MODE_A = value;
254 };
255
256 void GL_RUN:: SetPRH_VAR_TRG_MODE_B(UInt_t value){
257 PRH_VAR_TRG_MODE_B = value;
258 };
259
260 void GL_RUN:: SetACQ_BUILD_INFO(UInt_t value){
261 ACQ_BUILD_INFO = value;
262 };
263
264 void GL_RUN:: SetACQ_VAR_INFO(UInt_t value){
265 ACQ_VAR_INFO = value;
266 };
267
268 void GL_RUN:: SetRM_ACQ_AFTER_CALIB(UInt_t value){
269 RM_ACQ_AFTER_CALIB = value;
270 };
271
272 void GL_RUN:: SetRM_ACQ_SETTING_MODE(UInt_t value){
273 RM_ACQ_SETTING_MODE = value;
274 };
275
276 void GL_RUN:: SetTRK_CALIB_USED(UInt_t value){
277 TRK_CALIB_USED = value;
278 };
279
280 void GL_RUN:: SetCAL_DSP_MASK(UInt_t value){
281 CAL_DSP_MASK = value;
282 };
283
284 void GL_RUN:: SetID(UInt_t value){
285 ID = value;
286 };
287
288 void GL_RUN::Set_GL_RUNT(RunTrailerEvent *runt, PscuHeader *pht){
289 PKT_COUNTER = runt->PKT_COUNTER;
290 PKT_READY_COUNTER = runt->PKT_ReadyCounter;
291 RUNTRAILER_OBT = pht->GetOrbitalTime();
292 RUNTRAILER_PKT = pht->GetCounter();
293 };
294
295 void GL_RUN::Set_GL_RUNH(RunHeaderEvent *runh, PscuHeader *phh){
296 TRK_CALIB_USED = runh->TRK_CALIB_USED;
297 PRH_VAR_TRG_MODE_A = runh->PRH_VAR_TRIGGER_MODE_A;
298 PRH_VAR_TRG_MODE_B = runh->PRH_VAR_TRIGGER_MODE_B;
299 ACQ_BUILD_INFO = runh->ACQ_BUILD_INFO;
300 ACQ_VAR_INFO = runh->ACQ_VAR_INFO;
301 RUNHEADER_OBT = phh->GetOrbitalTime();
302 RUNHEADER_PKT = phh->GetCounter();
303 LAST_TIMESYNC = runh->LAST_TIME_SYNC_INFO;
304 OBT_TIMESYNC = runh->OBT_TIME_SYNC;
305 COMPILATIONTIMESTAMP = runh->COMPILATIONTIMESTAMP;
306 FAV_WRK_SCHEDULE = runh->FAVOURITE_WORKING_SCHEDULE;
307 EFF_WRK_SCHEDULE = runh->EFFECTIVE_WORKING_SCHEDULE;
308 RM_ACQ_AFTER_CALIB = runh->RM_ACQ_AFTER_CALIB;
309 RM_ACQ_SETTING_MODE = runh->RM_ACQ_SETTING_MODE;
310 TRK_CALIB_USED = runh->TRK_CALIB_USED;
311 CAL_DSP_MASK = runh->CAL_DSP_MASK;
312 };
313
314 void GL_RUN::Set_GL_RUNT0(){
315 PKT_COUNTER = 0;
316 PKT_READY_COUNTER = 0;
317 RUNTRAILER_OBT = 0;
318 RUNTRAILER_PKT = 0;
319 };
320
321 void GL_RUN::Set_GL_RUNH0(){
322 TRK_CALIB_USED = 0;
323 PRH_VAR_TRG_MODE_A = 0;
324 PRH_VAR_TRG_MODE_B = 0;
325 ACQ_BUILD_INFO = 0;
326 ACQ_VAR_INFO = 0;
327 RUNHEADER_OBT = 0;
328 RUNHEADER_PKT = 0;
329 LAST_TIMESYNC = 0;
330 OBT_TIMESYNC = 0;
331 COMPILATIONTIMESTAMP = 0;
332 FAV_WRK_SCHEDULE = 0;
333 EFF_WRK_SCHEDULE = 0;
334 RM_ACQ_AFTER_CALIB = 0;
335 RM_ACQ_SETTING_MODE = 0;
336 TRK_CALIB_USED = 0;
337 CAL_DSP_MASK = 0;
338 };
339
340 void GL_RUN::Set_GL_RUN(TSQLRow *Row){
341 for( Int_t t = 0; t < 30; t++){
342 if (t== 0) ID = (UInt_t)atoll(Row->GetField(t));
343 if (t== 1) ID_RUN_FRAG = (UInt_t)atoll(Row->GetField(t));
344 if (t== 2) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
345 if (t== 3) ID_ROOT_L2 = (UInt_t)atoll(Row->GetField(t));
346 if (t== 4) RUNHEADER_TIME = (UInt_t)atoll(Row->GetField(t));
347 if (t== 5) RUNTRAILER_TIME = (UInt_t)atoll(Row->GetField(t));
348 if (t== 6) RUNHEADER_OBT = (UInt_t)atoll(Row->GetField(t));
349 if (t== 7) RUNTRAILER_OBT = (UInt_t)atoll(Row->GetField(t));
350 if (t== 8) RUNHEADER_PKT = (UInt_t)atoll(Row->GetField(t));
351 if (t== 9) RUNTRAILER_PKT = (UInt_t)atoll(Row->GetField(t));
352 if (t==10) BOOT_NUMBER = (UInt_t)atoll(Row->GetField(t));
353 if (t==11) EV_FROM = (UInt_t)atoll(Row->GetField(t));
354 if (t==12) EV_TO = (UInt_t)atoll(Row->GetField(t));
355 if (t==13) NEVENTS = (UInt_t)atoll(Row->GetField(t));
356 if (t==14) PKT_COUNTER = (UInt_t)atoll(Row->GetField(t));
357 if (t==15) PKT_READY_COUNTER = (UInt_t)atoll(Row->GetField(t));
358 if (t==16) COMPILATIONTIMESTAMP = (UInt_t)atoll(Row->GetField(t));
359 if (t==17) FAV_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
360 if (t==18) EFF_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
361 if (t==19) PRH_VAR_TRG_MODE_A= (UInt_t)atoll(Row->GetField(t));
362 if (t==20) PRH_VAR_TRG_MODE_B= (UInt_t)atoll(Row->GetField(t));
363 if (t==21) ACQ_BUILD_INFO = (UInt_t)atoll(Row->GetField(t));
364 if (t==22) ACQ_VAR_INFO = (UInt_t)atoll(Row->GetField(t));
365 if (t==23) RM_ACQ_AFTER_CALIB= (UInt_t)atoll(Row->GetField(t));
366 if (t==24) RM_ACQ_SETTING_MODE = (UInt_t)atoll(Row->GetField(t));
367 if (t==25) TRK_CALIB_USED = (UInt_t)atoll(Row->GetField(t));
368 if (t==26) CAL_DSP_MASK = (UInt_t)atoll(Row->GetField(t));
369 if (t==27) LAST_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
370 if (t==28) OBT_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
371 if (t==29) VALIDATION = (UInt_t)atoll(Row->GetField(t));
372 };
373
374 }
375
376
377 /**
378 * Function to fill the GL_RUN table of the DB.
379 *
380 * \param
381 *
382 */
383 Int_t GL_RUN::Fill_GL_RUN(TSQLServer *dbc){
384 // MySQL variables
385 stringstream myquery;
386 // ----------------
387 myquery.str("");
388 myquery << " INSERT INTO GL_RUN (";
389 myquery << "ID";
390 myquery << ",ID_RUN_FRAG";
391 myquery << ",ID_ROOT_L0";
392 myquery << ",ID_ROOT_L2";
393 myquery << ",RUNHEADER_TIME";
394 myquery << ",RUNTRAILER_TIME";
395 myquery << ",RUNHEADER_OBT";
396 myquery << ",RUNTRAILER_OBT";
397 myquery << ",RUNHEADER_PKT";
398 myquery << ",RUNTRAILER_PKT";
399 myquery << ",EV_FROM";
400 myquery << ",EV_TO";
401 myquery << ",NEVENTS";
402 myquery << ",LAST_TIMESYNC";
403 myquery << ",OBT_TIMESYNC";
404 myquery << ",COMPILATIONTIMESTAMP";
405 myquery << ",FAV_WRK_SCHEDULE";
406 myquery << ",EFF_WRK_SCHEDULE";
407 myquery << ",PRH_VAR_TRG_MODE_A";
408 myquery << ",PRH_VAR_TRG_MODE_B";
409 myquery << ",ACQ_BUILD_INFO";
410 myquery << ",ACQ_VAR_INFO";
411 myquery << ",RM_ACQ_AFTER_CALIB";
412 myquery << ",RM_ACQ_SETTING_MODE";
413 myquery << ",PKT_COUNTER";
414 myquery << ",PKT_READY_COUNTER";
415 myquery << ",TRK_CALIB_USED";
416 myquery << ",CAL_DSP_MASK";
417 myquery << ",BOOT_NUMBER";
418 myquery << ",VALIDATION";
419 myquery << ") VALUES ('";
420
421 myquery << (UInt_t)ID << "','";
422 myquery << (UInt_t)ID_RUN_FRAG << "','";
423 myquery << (UInt_t)ID_ROOT_L0 << "','";
424 myquery << (UInt_t)ID_ROOT_L2 << "','";
425 myquery << (UInt_t)RUNHEADER_TIME << "','";
426 myquery << (UInt_t)RUNTRAILER_TIME << "','";
427 myquery << (UInt_t)RUNHEADER_OBT << "','";
428 myquery << (UInt_t)RUNTRAILER_OBT << "','";
429 myquery << (UInt_t)RUNHEADER_PKT << "','";
430 myquery << (UInt_t)RUNTRAILER_PKT << "','";
431 myquery << (UInt_t)EV_FROM << "','";
432 myquery << (UInt_t)EV_TO << "','";
433 myquery << (UInt_t)NEVENTS << "','";
434 myquery << (UInt_t)LAST_TIMESYNC << "','";
435 myquery << (UInt_t)OBT_TIMESYNC << "','";
436 myquery << (UInt_t)COMPILATIONTIMESTAMP << "','";
437 myquery << (UInt_t)FAV_WRK_SCHEDULE << "','";
438 myquery << (UInt_t)EFF_WRK_SCHEDULE << "','";
439 myquery << (UInt_t)PRH_VAR_TRG_MODE_A << "','";
440 myquery << (UInt_t)PRH_VAR_TRG_MODE_B << "','";
441 myquery << (UInt_t)ACQ_BUILD_INFO << "','";
442 myquery << (UInt_t)ACQ_VAR_INFO << "','";
443 myquery << (UInt_t)RM_ACQ_AFTER_CALIB << "','";
444 myquery << (UInt_t)RM_ACQ_SETTING_MODE << "','";
445 myquery << (UInt_t)PKT_COUNTER << "','";
446 myquery << (UInt_t)PKT_READY_COUNTER << "','";
447 myquery << (UInt_t)TRK_CALIB_USED << "','";
448 myquery << (UInt_t)CAL_DSP_MASK << "','";
449 myquery << (UInt_t)BOOT_NUMBER << "','";
450 myquery << (UInt_t)VALIDATION << "');";
451 //
452 // printf("myquery is %s \n",myquery.str().c_str());
453 //
454 dbc->Query(myquery.str().c_str());
455 //
456 return 0;
457
458 };// ****************************************************
459
460 /**
461 * Function to fill the GL_RUN table of the DB.
462 *
463 * \param
464 *
465 */
466 Int_t GL_RUN::Fill_GL_RUN_FRAGMENTS(TSQLServer *dbc){
467 // MySQL variables
468 stringstream myquery;
469 // ----------------
470 myquery.str("");
471 myquery << " INSERT INTO GL_RUN_FRAGMENTS (";
472 myquery << "ID";
473 myquery << ",ID_ROOT_L0";
474 myquery << ",RUNHEADER_TIME";
475 myquery << ",RUNTRAILER_TIME";
476 myquery << ",RUNHEADER_OBT";
477 myquery << ",RUNTRAILER_OBT";
478 myquery << ",RUNHEADER_PKT";
479 myquery << ",RUNTRAILER_PKT";
480 myquery << ",EV_FROM";
481 myquery << ",EV_TO";
482 myquery << ",NEVENTS";
483 myquery << ",LAST_TIMESYNC";
484 myquery << ",OBT_TIMESYNC";
485 myquery << ",COMPILATIONTIMESTAMP";
486 myquery << ",FAV_WRK_SCHEDULE";
487 myquery << ",EFF_WRK_SCHEDULE";
488 myquery << ",PRH_VAR_TRG_MODE_A";
489 myquery << ",PRH_VAR_TRG_MODE_B";
490 myquery << ",ACQ_BUILD_INFO";
491 myquery << ",ACQ_VAR_INFO";
492 myquery << ",RM_ACQ_AFTER_CALIB";
493 myquery << ",RM_ACQ_SETTING_MODE";
494 myquery << ",PKT_COUNTER";
495 myquery << ",PKT_READY_COUNTER";
496 myquery << ",TRK_CALIB_USED";
497 myquery << ",CAL_DSP_MASK";
498 myquery << ",BOOT_NUMBER";
499 myquery << ") VALUES ('";
500 myquery << (UInt_t)ID << "','";
501 myquery << (UInt_t)ID_ROOT_L0 << "','";
502 myquery << (UInt_t)RUNHEADER_TIME << "','";
503 myquery << (UInt_t)RUNTRAILER_TIME << "','";
504 myquery << (UInt_t)RUNHEADER_OBT << "','";
505 myquery << (UInt_t)RUNTRAILER_OBT << "','";
506 myquery << (UInt_t)RUNHEADER_PKT << "','";
507 myquery << (UInt_t)RUNTRAILER_PKT << "','";
508 myquery << (UInt_t)EV_FROM << "','";
509 myquery << (UInt_t)EV_TO << "','";
510 myquery << (UInt_t)NEVENTS << "','";
511 myquery << (UInt_t)LAST_TIMESYNC << "','";
512 myquery << (UInt_t)OBT_TIMESYNC << "','";
513 myquery << (UInt_t)COMPILATIONTIMESTAMP << "','";
514 myquery << (UInt_t)FAV_WRK_SCHEDULE << "','";
515 myquery << (UInt_t)EFF_WRK_SCHEDULE << "','";
516 myquery << (UInt_t)PRH_VAR_TRG_MODE_A << "','";
517 myquery << (UInt_t)PRH_VAR_TRG_MODE_B << "','";
518 myquery << (UInt_t)ACQ_BUILD_INFO << "','";
519 myquery << (UInt_t)ACQ_VAR_INFO << "','";
520 myquery << (UInt_t)RM_ACQ_AFTER_CALIB << "','";
521 myquery << (UInt_t)RM_ACQ_SETTING_MODE << "','";
522 myquery << (UInt_t)PKT_COUNTER << "','";
523 myquery << (UInt_t)PKT_READY_COUNTER << "','";
524 myquery << (UInt_t)TRK_CALIB_USED << "','";
525 myquery << (UInt_t)CAL_DSP_MASK << "','";
526 myquery << (UInt_t)BOOT_NUMBER << "');";
527 //
528 // printf("myquery is %s \n",myquery.str().c_str());
529 //
530 dbc->Query(myquery.str().c_str());
531 //
532 return 0;
533
534 };// ****************************************************
535
536
537 /**
538 * Function to query the GL_RUN table of the DB.
539 *
540 * \param RUN id
541 * \return struct of type GL_RUN _data, which stores the query result
542 *
543 */
544 Int_t GL_RUN::Query_GL_RUN(UInt_t run, TSQLServer *dbc){
545 // MySQL variables
546 TSQLResult *pResult;
547 TSQLRow *Row;
548 int t;
549 int r;
550 stringstream myquery;
551 // ----------------
552 myquery.str("");
553 myquery << " select ";
554 myquery << "ID";
555 myquery << ",ID_RUN_FRAG";
556 myquery << ",ID_ROOT_L0";
557 myquery << ",ID_ROOT_L2";
558 myquery << ",RUNHEADER_TIME";
559 myquery << ",RUNTRAILER_TIME";
560 myquery << ",RUNHEADER_OBT";
561 myquery << ",RUNTRAILER_OBT";
562 myquery << ",RUNHEADER_PKT";
563 myquery << ",RUNTRAILER_PKT";
564 myquery << ",EV_FROM";
565 myquery << ",EV_TO";
566 myquery << ",NEVENTS";
567 myquery << ",LAST_TIMESYNC";
568 myquery << ",OBT_TIMESYNC";
569 myquery << ",COMPILATIONTIMESTAMP";
570 myquery << ",FAV_WRK_SCHEDULE";
571 myquery << ",EFF_WRK_SCHEDULE";
572 myquery << ",PRH_VAR_TRG_MODE_A";
573 myquery << ",PRH_VAR_TRG_MODE_B";
574 myquery << ",ACQ_BUILD_INFO";
575 myquery << ",ACQ_VAR_INFO";
576 myquery << ",RM_ACQ_AFTER_CALIB";
577 myquery << ",RM_ACQ_SETTING_MODE";
578 myquery << ",PKT_COUNTER";
579 myquery << ",PKT_READY_COUNTER";
580 myquery << ",TRK_CALIB_USED";
581 myquery << ",CAL_DSP_MASK";
582 myquery << ",BOOT_NUMBER";
583 myquery << ",VALIDATION";
584 myquery << " from GL_RUN where ID=" << run << ";";
585 //
586 // printf(" myquery is %s \n",myquery.str().c_str());
587 pResult = dbc->Query(myquery.str().c_str());
588 //
589 // printf(" getrowcount %i \n",pResult->GetRowCount());
590 //
591 if( !pResult->GetRowCount() ) return(-50);
592 //
593 for( r=0; r < 1000; r++){
594 Row = pResult->Next();
595 if( Row == NULL ) break;
596 // Set_GL_RUN(Row);
597 for( t = 0; t < pResult->GetFieldCount(); t++){
598 if (t== 0) ID = (UInt_t)atoll(Row->GetField(t));
599 if (t== 1) ID_RUN_FRAG = (UInt_t)atoll(Row->GetField(t));
600 if (t== 2) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
601 if (t== 3) ID_ROOT_L2 = (UInt_t)atoll(Row->GetField(t));
602 if (t== 4) RUNHEADER_TIME = (UInt_t)atoll(Row->GetField(t));
603 if (t== 5) RUNTRAILER_TIME = (UInt_t)atoll(Row->GetField(t));
604 if (t== 6) RUNHEADER_OBT = (UInt_t)atoll(Row->GetField(t));
605 if (t== 7) RUNTRAILER_OBT = (UInt_t)atoll(Row->GetField(t));
606 if (t== 8) RUNHEADER_PKT = (UInt_t)atoll(Row->GetField(t));
607 if (t== 9) RUNTRAILER_PKT = (UInt_t)atoll(Row->GetField(t));
608 if (t==10) EV_FROM = (UInt_t)atoll(Row->GetField(t));
609 if (t==11) EV_TO = (UInt_t)atoll(Row->GetField(t));
610 if (t==12) NEVENTS = (UInt_t)atoll(Row->GetField(t));
611 if (t==13) LAST_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
612 if (t==14) OBT_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
613 if (t==15) COMPILATIONTIMESTAMP = (UInt_t)atoll(Row->GetField(t));
614 if (t==16) FAV_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
615 if (t==17) EFF_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
616 if (t==18) PRH_VAR_TRG_MODE_A= (UInt_t)atoll(Row->GetField(t));
617 if (t==19) PRH_VAR_TRG_MODE_B= (UInt_t)atoll(Row->GetField(t));
618 if (t==20) ACQ_BUILD_INFO = (UInt_t)atoll(Row->GetField(t));
619 if (t==21) ACQ_VAR_INFO = (UInt_t)atoll(Row->GetField(t));
620 if (t==22) RM_ACQ_AFTER_CALIB= (UInt_t)atoll(Row->GetField(t));
621 if (t==23) RM_ACQ_SETTING_MODE = (UInt_t)atoll(Row->GetField(t));
622 if (t==24) PKT_COUNTER = (UInt_t)atoll(Row->GetField(t));
623 if (t==25) PKT_READY_COUNTER = (UInt_t)atoll(Row->GetField(t));
624 if (t==26) TRK_CALIB_USED = (UInt_t)atoll(Row->GetField(t));
625 if (t==27) CAL_DSP_MASK = (UInt_t)atoll(Row->GetField(t));
626 if (t==28) BOOT_NUMBER = (UInt_t)atoll(Row->GetField(t));
627 if (t==29) VALIDATION = (UInt_t)atoll(Row->GetField(t));
628 };
629 };
630 // delete pResult;
631 return(0);
632 };
633
634 /**
635 * Function to query the GL_RUN table of the DB.
636 *
637 * \param where = condition string
638 * \return struct of type GL_RUN _data, which stores the query result
639 *
640 */
641 Int_t GL_RUN::Query_GL_RUN_FRAGMENTS(TString where, TSQLServer *dbc){
642 // MySQL variables
643 TSQLResult *pResult;
644 TSQLRow *Row;
645 int t;
646 int r;
647 stringstream myquery;
648 // ----------------
649 myquery.str("");
650 myquery << " select ";
651 myquery << "ID";
652 myquery << ",ID_RUN_FRAG";
653 myquery << ",ID_ROOT_L0";
654 myquery << ",ID_ROOT_L2";
655 myquery << ",RUNHEADER_TIME";
656 myquery << ",RUNTRAILER_TIME";
657 myquery << ",RUNHEADER_OBT";
658 myquery << ",RUNTRAILER_OBT";
659 myquery << ",RUNHEADER_PKT";
660 myquery << ",RUNTRAILER_PKT";
661 myquery << ",EV_FROM";
662 myquery << ",EV_TO";
663 myquery << ",NEVENTS";
664 myquery << ",LAST_TIMESYNC";
665 myquery << ",OBT_TIMESYNC";
666 myquery << ",COMPILATIONTIMESTAMP";
667 myquery << ",FAV_WRK_SCHEDULE";
668 myquery << ",EFF_WRK_SCHEDULE";
669 myquery << ",PRH_VAR_TRG_MODE_A";
670 myquery << ",PRH_VAR_TRG_MODE_B";
671 myquery << ",ACQ_BUILD_INFO";
672 myquery << ",ACQ_VAR_INFO";
673 myquery << ",RM_ACQ_AFTER_CALIB";
674 myquery << ",RM_ACQ_SETTING_MODE";
675 myquery << ",PKT_COUNTER";
676 myquery << ",PKT_READY_COUNTER";
677 myquery << ",TRK_CALIB_USED";
678 myquery << ",CAL_DSP_MASK";
679 myquery << ",BOOT_NUMBER";
680 myquery << ",VALIDATION";
681 myquery << " from GL_RUN_FRAGMENTS where " << where.Data() << ";";
682 //
683 // printf(" query is %s \n",myquery.str().c_str());
684 //
685 pResult = dbc->Query(myquery.str().c_str());
686 if(!pResult->GetRowCount())return(-50);
687 for( r=0; r < 1000; r++){
688 Row = pResult->Next();
689 if( Row == NULL ) break;
690 for( t = 0; t < pResult->GetFieldCount(); t++){
691 if (t== 0) ID = (UInt_t)atoll(Row->GetField(t));
692 if (t== 1) ID_RUN_FRAG = (UInt_t)atoll(Row->GetField(t));
693 if (t== 2) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
694 if (t== 3) ID_ROOT_L2 = (UInt_t)atoll(Row->GetField(t));
695 if (t== 4) RUNHEADER_TIME = (UInt_t)atoll(Row->GetField(t));
696 if (t== 5) RUNTRAILER_TIME = (UInt_t)atoll(Row->GetField(t));
697 if (t== 6) RUNHEADER_OBT = (UInt_t)atoll(Row->GetField(t));
698 if (t== 7) RUNTRAILER_OBT = (UInt_t)atoll(Row->GetField(t));
699 if (t== 8) RUNHEADER_PKT = (UInt_t)atoll(Row->GetField(t));
700 if (t== 9) RUNTRAILER_PKT = (UInt_t)atoll(Row->GetField(t));
701 if (t==10) EV_FROM = (UInt_t)atoll(Row->GetField(t));
702 if (t==11) EV_TO = (UInt_t)atoll(Row->GetField(t));
703 if (t==12) NEVENTS = (UInt_t)atoll(Row->GetField(t));
704 if (t==13) LAST_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
705 if (t==14) OBT_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
706 if (t==15) COMPILATIONTIMESTAMP = (UInt_t)atoll(Row->GetField(t));
707 if (t==16) FAV_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
708 if (t==17) EFF_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
709 if (t==18) PRH_VAR_TRG_MODE_A= (UInt_t)atoll(Row->GetField(t));
710 if (t==19) PRH_VAR_TRG_MODE_B= (UInt_t)atoll(Row->GetField(t));
711 if (t==20) ACQ_BUILD_INFO = (UInt_t)atoll(Row->GetField(t));
712 if (t==21) ACQ_VAR_INFO = (UInt_t)atoll(Row->GetField(t));
713 if (t==22) RM_ACQ_AFTER_CALIB= (UInt_t)atoll(Row->GetField(t));
714 if (t==23) RM_ACQ_SETTING_MODE = (UInt_t)atoll(Row->GetField(t));
715 if (t==24) PKT_COUNTER = (UInt_t)atoll(Row->GetField(t));
716 if (t==25) PKT_READY_COUNTER = (UInt_t)atoll(Row->GetField(t));
717 if (t==26) TRK_CALIB_USED = (UInt_t)atoll(Row->GetField(t));
718 if (t==27) CAL_DSP_MASK = (UInt_t)atoll(Row->GetField(t));
719 if (t==28) BOOT_NUMBER = (UInt_t)atoll(Row->GetField(t));
720 if (t==29) VALIDATION = (UInt_t)atoll(Row->GetField(t));
721 };
722 };
723 // delete pResult;
724 return(0);
725 };// ****************************************************
726
727 /**
728 * Function to query the GL_ROOT table of the DB.
729 *
730 * \param entry ID
731 * \return struct of type GL_ROOT_data, which stores the query result
732 */
733 Int_t GL_ROOT::Query_GL_ROOT(UInt_t id, TSQLServer *dbc){
734 // MySQL variables
735 TSQLResult *pResult;
736 TSQLRow *Row;
737 int t;
738 int r;
739 stringstream myquery;
740 // ----------------
741 myquery.str("");
742 myquery << "select ";
743 myquery << " ID";
744 myquery << ",ID_RAW";
745 myquery << ",ID_TIMESYNC";
746 myquery << ",PATH";
747 myquery << ",NAME";
748 myquery << " from GL_ROOT where ID=" << id << ";";
749 //
750 pResult = dbc->Query(myquery.str().c_str());
751 if(!pResult->GetRowCount())return (-51);
752 for( r=0; r < 1000; r++){
753 Row = pResult->Next();
754 if( Row == NULL ) break;
755 for( t = 0; t < pResult->GetFieldCount(); t++){
756 if(t==0) ID = (UInt_t)atoll(Row->GetField(t));
757 if(t==1) ID_RAW = (UInt_t)atoll(Row->GetField(t));
758 if(t==2) ID_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
759 if(t==3) PATH = Row->GetField(t);
760 if(t==4) NAME = Row->GetField(t);
761 };
762 };
763 delete pResult;
764 return 0;
765 };
766 // ****************************************************
767 /**
768 * Function to query the GL_TRK_CALIB table of the DB.
769 *
770 * \param run starting time
771 * \param dbc DB server
772 * \return struct of type GL_TRK_CALIB_data, which stores the query result
773 */
774 Int_t GL_TRK_CALIB::Query_GL_TRK_CALIB(UInt_t time, TSQLServer *dbc){
775 // MySQL variables
776 TSQLResult *pResult;
777 TSQLRow *Row;
778 int t;
779 int r;
780 stringstream myquery;
781 // ----------------
782 myquery.str("");
783 myquery << "select ID,ID_ROOT_L0,EV_ROOT_CALIBTRK1,EV_ROOT_CALIBTRK2,FROM_TIME,TO_TIME,OBT1,OBT2,PKT1,PKT2,BOOT_NUMBER,VALIDATION from GL_TRK_CALIB where FROM_TIME <= "<< time;
784 myquery << " AND VALIDATION=1 ORDER BY FROM_TIME DESC LIMIT 1;";
785 // myquery << " ORDER BY FROM_TIME DESC LIMIT 1;";
786 pResult = dbc->Query(myquery.str().c_str());
787 if(!pResult->GetRowCount())return (-53);
788 for( r=0; r < 1000; r++){
789 Row = pResult->Next();
790 if( Row == NULL ) break;
791 for( t = 0; t < pResult->GetFieldCount(); t++){
792 stringstream row;
793 row.str("");
794 row << "0" << Row->GetField(t); // add leading 0 since we have two fields that could be "null" and we want to avoid crashes due to atoll
795 if (t==0) ID = (UInt_t)atoll(Row->GetField(t));
796 if (t==1) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
797 if (t==2) EV_ROOT_CALIBTRK1 = (UInt_t)atoll(row.str().c_str());
798 if (t==3) EV_ROOT_CALIBTRK2 = (UInt_t)atoll(row.str().c_str());
799 if (t==4) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
800 if (t==5) TO_TIME = (UInt_t)atoll(Row->GetField(t));
801 //
802 if (t==6) OBT1 = (UInt_t)atoll(Row->GetField(t));
803 if (t==7) OBT2 = (UInt_t)atoll(Row->GetField(t));
804 if (t==8) PKT1 = (UInt_t)atoll(Row->GetField(t));
805 if (t==9) PKT2 = (UInt_t)atoll(Row->GetField(t));
806 if (t==10) BOOT_NUMBER = (UInt_t)atoll(Row->GetField(t));
807 if (t==11) VALIDATION = (UInt_t)atoll(Row->GetField(t));
808 };
809 };
810 delete pResult;
811 //
812 // if ( TO_TIME < time ) return(51);
813 //
814 if ( (!OBT1 && !PKT1 ) || (!OBT2 && !PKT2) ) return(52); // ONE CALIBRATION PACKET IS MISSING!
815 //
816 return 0;
817 };
818
819 // ****************************************************
820 /**
821 * Function to query the GL_CALO_CALIB table of the DB.
822 *
823 * \param run starting time
824 * \return struct of type GL_CALO_CALIB_data, which stores the query result
825 */
826 Int_t GL_CALO_CALIB::Query_GL_CALO_CALIB(UInt_t time, UInt_t &uptime, UInt_t section, TSQLServer *dbc){
827 // MySQL variables
828 TSQLResult *pResult;
829 TSQLRow *Row;
830 int t;
831 stringstream myquery;
832 uptime = 0;
833 //
834 // select the correct calibration
835 //
836 myquery.str("");
837 myquery << "select ID_ROOT_L0, FROM_TIME, TO_TIME, EV_ROOT,VALIDATION from GL_CALO_CALIB where SECTION=" << section;
838 myquery << " and FROM_TIME <= " << time;
839 myquery << " and TO_TIME > " << time;
840 myquery << " ;";
841 //myquery << " and VALIDATION=1;";
842 //
843 pResult = dbc->Query(myquery.str().c_str());
844 // printf(" mysquery is %s\n",myquery.str().c_str());
845 //
846 if( !pResult->GetRowCount() ) return(-54);
847 Row = pResult->Next();
848 if( Row == NULL ) return (-54);
849 //
850 uptime = (UInt_t)atoll(Row->GetField(2));
851 //
852 // if it is corrupted validation is 0 and we have no results from the query...
853 //
854 if( atoi(Row->GetField(4)) == 0 ){ // if validation = 0
855 //
856 // in this case take relax the conditions and take the valid calibration that preceed the correct one
857 //
858 myquery.str("");
859 myquery << "select ID_ROOT_L0, FROM_TIME, TO_TIME, EV_ROOT,VALIDATION from GL_CALO_CALIB where SECTION=" << section;
860 myquery << " and FROM_TIME <= " << time;
861 myquery << " and VALIDATION=1 ORDER BY FROM_TIME DESC LIMIT 1;";
862 pResult = dbc->Query(myquery.str().c_str());
863 // printf(" mysquery is %s\n",myquery.str().c_str());
864 //
865 // if no results yet quit with error
866 //
867 if( !pResult->GetRowCount() ) return (-54);
868 //
869 Row = pResult->Next();
870 //
871 };
872 //
873 // store infos and exit
874 //
875 if( Row == NULL ) return (-54);
876 for( t = 0; t < pResult->GetFieldCount(); t++){
877 if (t==0) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
878 if (t==1) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
879 if (t==2) TO_TIME = (UInt_t)atoll(Row->GetField(t));
880 if (t==3) EV_ROOT = (UInt_t)atoll(Row->GetField(t));
881 };
882 pResult->Delete();
883 return 0;
884 };
885 // ****************************************************
886 /**
887 * Function to query the GL_S4_CALIB table of the DB.
888 *
889 * \param run starting time
890 * \return struct of type GL_S4_CALIB_data, which stores the query result
891 */
892 Int_t GL_S4_CALIB::Query_GL_S4_CALIB(UInt_t time, TSQLServer *dbc){
893 // MySQL variables
894 TSQLResult *pResult;
895 TSQLRow *Row;
896 int t;
897 int r;
898 stringstream myquery;
899 // ----------------
900 myquery.str("");
901 myquery << "select * from GL_S4_CALIB where FROM_TIME <= "<< time;
902 myquery << " ORDER BY FROM_TIME DESC LIMIT 1;";
903 // myquery << " ORDER BY FROM_TIME DESC LIMIT 1;";
904 pResult = dbc->Query(myquery.str().c_str());
905 if(!pResult->GetRowCount())return (-55);//throw -55;
906 for( r=0; r < 1000; r++){
907 Row = pResult->Next();
908 if( Row == NULL ) break;
909 for( t = 0; t < pResult->GetFieldCount(); t++){
910 if (t==0) ID = (UInt_t)atoll(Row->GetField(t));
911 if (t==1) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
912 if (t==2) EV_ROOT = (UInt_t)atoll(Row->GetField(t));
913 if (t==3) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
914 if (t==4) TO_TIME = (UInt_t)atoll(Row->GetField(t));
915 if (t==5) PARAM_FIT0 = atof(Row->GetField(t));
916 if (t==6) PARAM_FIT1 = atof(Row->GetField(t));
917 };
918 };
919 delete pResult;
920 //
921 if(TO_TIME < time)return(51);
922 //
923 return 0;
924 };
925 // ****************************************************
926 /**
927 * Function to query the GL_PARAM table of the DB.
928 *
929 * \param run starting time
930 * \param parameter description (DESCR)
931 * \return struct of type GL_ROOT_data, which stores the query result
932 */
933 Int_t GL_PARAM::Query_GL_PARAM(UInt_t time, UInt_t type, TSQLServer *dbc){
934 // Bool_t debug = 1;
935 // MySQL variables
936 TSQLResult *pResult;
937 TSQLRow *Row;
938 int t;
939 int r;
940 stringstream myquery;
941 // ----------------
942 myquery.str("");
943 myquery << " select ";
944 myquery << " ID, PATH, NAME, DESCR, TYPE, FROM_TIME,TO_TIME ";
945 myquery << " from GL_PARAM ";
946 myquery << " where TYPE = '"<<type<<"' ";
947 myquery << " and FROM_TIME <= " << time;
948 myquery << " ORDER BY TO_TIME DESC LIMIT 1;";
949 //
950 pResult = dbc->Query(myquery.str().c_str());
951 if(!pResult->GetRowCount())return (-52);
952 for( r=0; r < 1000; r++){
953 Row = pResult->Next();
954 if( Row == NULL ) break;
955 for( t = 0; t < pResult->GetFieldCount(); t++){
956 if (t==0) ID = (UInt_t)atoll(Row->GetField(t));
957 if (t==1) PATH = Row->GetField(t);// put in fpath the path to that file
958 if (t==2) NAME = Row->GetField(t);
959 if (t==3) DESCR = Row->GetField(t);
960 if (t==4) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
961 if (t==5) TO_TIME = (UInt_t)atoll(Row->GetField(t));
962 if (t==6) TYPE = (UInt_t)atoll(Row->GetField(t));
963 };
964 };
965 delete pResult;
966 //
967 if(TO_TIME==0) TO_TIME = numeric_limits<UInt_t>::max();
968 //
969 if(TO_TIME < time) return(51);
970 //
971 return 0;
972 };
973
974
975 /**
976 * Fills a struct cGLRun with values from a GLRun object (to put data into a F77 common).
977 */
978
979 void GL_RUN::GetLevel2Struct(cGLRun *l2) const{
980 l2->id = ID;
981 l2->id_reg_run = ID_ROOT_L0;
982 l2->id_reg_run_l2 = ID_ROOT_L2;
983 l2->runheader_time = RUNHEADER_TIME;
984 l2->runtrailer_time = RUNTRAILER_TIME;
985 l2->ev_from = EV_FROM;
986 l2->trk_calib_used = TRK_CALIB_USED;
987 l2->eff_wrk_schedule = EFF_WRK_SCHEDULE;
988 l2->prh_var_trg_mode_a = PRH_VAR_TRG_MODE_A;
989 l2->prh_var_trg_mode_b = PRH_VAR_TRG_MODE_B;
990 l2->acq_build_info = ACQ_BUILD_INFO;
991 l2->acq_var_info = ACQ_VAR_INFO;
992 };
993
994 GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TString type, TSQLServer *dbc){
995 // MySQL variables
996 TFile *file = 0;
997 UInt_t idraw = 0;
998 //
999 TSQLResult *pResult;
1000 TSQLRow *Row;
1001 stringstream myquery;
1002 // ----------------
1003 myquery.str("");
1004 myquery << "select ";
1005 myquery << "PATH";
1006 myquery << ",NAME,ID_RAW";
1007 myquery << " from GL_ROOT where ";
1008 myquery << type.Data();
1009 myquery << "=" << id << ";";
1010 //
1011 pResult = dbc->Query(myquery.str().c_str());
1012 if( pResult->GetRowCount() ){
1013 Row = pResult->Next();
1014 if( Row ){
1015 stringstream fname;
1016 fname.str("");
1017 fname << Row->GetField(0) << "/" << Row->GetField(1);
1018 file = new TFile(fname.str().c_str(),"READ");
1019 idraw = (UInt_t)atoll(Row->GetField(2));
1020 };
1021 };
1022 //
1023 if ( file && file->IsOpen() ){
1024 TTree *T=(TTree*)file->Get("Physics");
1025 pamela::EventHeader *eh = 0;
1026 pamela::PscuHeader *ph = 0;
1027 T->SetBranchAddress("Header", &eh);
1028 //
1029 T->GetEntry(0);
1030 ph = eh->GetPscuHeader();
1031 pktfirst = ph->GetCounter();
1032 obtfirst = ph->GetOrbitalTime();
1033 };
1034 //
1035 // look for Resurs offset
1036 //
1037 UInt_t t0 = 0;
1038 //
1039 myquery.str("");
1040 myquery << "SELECT OFFSET_DATE FROM GL_RESURS_OFFSET WHERE FROM_ID_RAW<= "
1041 << idraw << " AND TO_ID_RAW >= "
1042 << idraw << ";";
1043 pResult = dbc->Query(myquery.str().c_str());
1044 if ( pResult ){
1045 Row = pResult->Next();
1046 if ( Row ){
1047 //
1048 t0 = (UInt_t)TDatime(Row->GetField(0)).Convert();
1049 //
1050 };
1051 };
1052 //
1053 //
1054 // look for the correct timesync entry
1055 //
1056 myquery.str("");
1057 myquery << " SELECT OBT0,TIMESYNC FROM GL_TIMESYNC "
1058 << " WHERE ID_RAW = " << idraw
1059 << ";";
1060 pResult = dbc->Query(myquery.str().c_str());
1061 if ( pResult ){
1062 Row = pResult->Next();
1063 if ( (Row != NULL) && ((UInt_t)atoll(Row->GetField(0)) > 0 ) ){
1064 toffset = (UInt_t)atoll(Row->GetField(1)) - (UInt_t)(this->DBobt((UInt_t)atoll(Row->GetField(0)))/1000) + t0;
1065 };
1066 };
1067 //
1068 file->Close();
1069 delete pResult;
1070 };
1071
1072 /**
1073 *
1074 * Returns the DB absolute time needed to associate calibrations to data
1075 *
1076 */
1077 UInt_t GL_TIMESYNC::DBabsTime(UInt_t OBT){
1078 //
1079 return(((UInt_t)(this->DBobt(OBT)/1000)+toffset));
1080 //
1081 };
1082
1083
1084 ULong64_t GL_TIMESYNC::DBobt(UInt_t obt){
1085 //
1086 if ( obt < (obtfirst/2) && obtfirst > (numeric_limits<UInt_t>::max()/2) ) return((ULong64_t)(obt+numeric_limits<UInt_t>::max()));
1087 //
1088 if ( obt > (obtfirst*2) && obt > (numeric_limits<UInt_t>::max()/2) ){
1089 if ( (obt-numeric_limits<UInt_t>::max()) < 0 ){
1090 return((ULong64_t)(numeric_limits<UInt_t>::max()-obt));
1091 } else {
1092 return((ULong64_t)(obt-numeric_limits<UInt_t>::max()));
1093 };
1094 };
1095 //
1096 return((ULong64_t)obt);
1097 //
1098 };
1099
1100 UInt_t GL_TIMESYNC::DBpkt(UInt_t pkt_num){
1101 //
1102 if ( pkt_num < (pktfirst/2) && pktfirst > (16777214/2) ) return((pkt_num+16777215));
1103 //
1104 if ( pkt_num > pktfirst*2 && pkt_num > (16777214/2) ){
1105 if ( (pkt_num-16777215) < 0 ){
1106 return((16777215-pkt_num));
1107 } else {
1108 return((pkt_num-16777215));
1109 };
1110 };
1111 //
1112 return(pkt_num);
1113 //
1114 };
1115
1116 /*
1117 *
1118 * Convert the time in the DB from UInt_t to a string
1119 *
1120 * @param dbt time in the DB
1121 * @param tzone Time Zone, can be UTC,GMT,CET,CEST,MSD default is MSK
1122 *
1123 */
1124 TString GL_TIMESYNC::ConvertTime(TString &tzone, UInt_t dbt){
1125 //
1126 TDatime *time = new TDatime();
1127 TString rtime;
1128 Bool_t found = false;
1129 //
1130 time->Set(dbt,false); // UTC (Coordinated Universal Time)
1131 //
1132 if ( !strcmp(tzone.Data(),"MSK") || !strcmp(tzone.Data(),"MWT") ){
1133 //
1134 UInt_t timeMSK = time->Convert() + 60*60*3; // UTC (Coordinated Universal Time) + 3hs = Moscow Winter Time
1135 time->Set(timeMSK,false);
1136 found = true;
1137 //
1138 };
1139 //
1140 if ( !strcmp(tzone.Data(),"CET") ){
1141 //
1142 UInt_t timeCET = time->Convert() + 60*60*1; // CET (Central European Time) = UTC + 1 hs
1143 time->Set(timeCET,false);
1144 found = true;
1145 //
1146 };
1147 //
1148 if ( !strcmp(tzone.Data(),"CEST") ){
1149 //
1150 UInt_t timeCEST = time->Convert() + 60*60*2; // CEST (Central European Summer Time) = UTC + 2 h
1151 time->Set(timeCEST,false);
1152 found = true;
1153 //
1154 };
1155 //
1156 if ( !strcmp(tzone.Data(),"MSD") || !strcmp(tzone.Data(),"MST")){
1157 //
1158 UInt_t timeMSD = time->Convert() + 60*60*4; // MSD (Moscow Summer Time) = UTC + 4 h
1159 time->Set(timeMSD,false);
1160 found = true;
1161 //
1162 };
1163 //
1164 if ( !found && strcmp(tzone.Data(),"UTC") && strcmp(tzone.Data(),"GMT") && strcmp(tzone.Data(),"") ){
1165 printf("\n Unknown time zone %s using UTC \n",tzone.Data());
1166 tzone = "UTC";
1167 };
1168 //
1169 rtime = time->AsSQLString();
1170 //
1171 return(rtime);
1172 }
1173
1174 /*
1175 *
1176 * Convert the time in the DB from UInt_t to a string
1177 *
1178 * @param dbt time in the DB
1179 * @param tzone Time Zone, can be UTC,GMT,CET,CEST,MSD default is MSK
1180 *
1181 */
1182 TString GL_TIMESYNC::UnConvertTime(TString &tzone, UInt_t dbt){
1183 //
1184 TDatime *time = new TDatime();
1185 TString rtime;
1186 //
1187 Bool_t found = false;
1188 //
1189 time->Set(dbt,false); // tzone
1190 //
1191 if ( !strcmp(tzone.Data(),"MSK") || !strcmp(tzone.Data(),"MWT") ){
1192 //
1193 UInt_t timeUTC = time->Convert() - 60*60*3; // UTC (Coordinated Universal Time) = Moscow Winter Time - 3hs
1194 time->Set(timeUTC,false);
1195 found = true;
1196 //
1197 };
1198 //
1199 if ( !strcmp(tzone.Data(),"CET") ){
1200 //
1201 UInt_t timeCET = time->Convert() - 60*60*1; // CET (Central European Time) - 1 hs = UTC
1202 time->Set(timeCET,false);
1203 found = true;
1204 //
1205 };
1206 //
1207 if ( !strcmp(tzone.Data(),"CEST") ){
1208 //
1209 UInt_t timeCEST = time->Convert() - 60*60*2; // CEST (Central European Summer Time) - 2 h = UTC
1210 time->Set(timeCEST,false);
1211 found = true;
1212 //
1213 };
1214 //
1215 if ( !strcmp(tzone.Data(),"MSD") || !strcmp(tzone.Data(),"MST") ){
1216 //
1217 UInt_t timeMSD = time->Convert() - 60*60*4; // MSD (Moscow Summer Time) - 4 h = UTC
1218 time->Set(timeMSD,false);
1219 found = true;
1220 //
1221 };
1222 //
1223 if ( !found && strcmp(tzone.Data(),"UTC") && strcmp(tzone.Data(),"GMT") && strcmp(tzone.Data(),"") ){
1224 //
1225 printf("\n Unknown time zone %s using UTC \n",tzone.Data());
1226 tzone = "UTC";
1227 };
1228 //
1229 rtime = time->AsSQLString();
1230 //
1231 return(rtime);
1232 }
1233
1234
1235 // ****************************************************
1236 /**
1237 * Function to query the GL_TLE table of the DB.
1238 *
1239 * time is the unix time for which a good tle is requested.
1240 *
1241 * Return the pointer to a cTle object that has the closest and
1242 * previous date compared with time.
1243 *
1244 * If errors occurs it returns NULL.
1245 */
1246 cTle* GL_TLE::Query_GL_TLE(UInt_t time, TSQLServer *dbc){
1247 stringstream myquery;
1248 myquery.str("");
1249
1250 myquery << "SELECT TLE1, TLE2, TLE3 FROM GL_TLE "
1251 << "WHERE FROM_TIME < FROM_UNIXTIME(" << time << ") ORDER BY FROM_TIME DESC LIMIT 1;";
1252
1253
1254 return Query_GL_TLE_go(myquery.str(), dbc);
1255 }
1256
1257
1258 // ****************************************************
1259 /**
1260 * Function to query the GL_TLE table of the DB.
1261 *
1262 * date is a datetime format YYYY-MM-DD hh:mm:ss for which a good tle
1263 * is requested.
1264 *
1265 * Return the pointer to a cTle object that has the closest and
1266 * previous date compared with time.
1267 *
1268 * If errors occurs it returns NULL.
1269 */
1270 cTle* GL_TLE::Query_GL_TLE(TString date, TSQLServer *dbc){
1271 stringstream myquery;
1272 myquery.str("");
1273
1274 myquery << "SELECT TLE1, TLE2, TLE3 FROM GL_TLE "
1275 << "WHERE FROM_TIME < '" << date.Data() << "' ORDER BY FROM_TIME DESC LIMIT 1;";
1276
1277
1278 return Query_GL_TLE_go(myquery.str(), dbc);
1279 }
1280
1281
1282 // ****************************************************
1283 /**
1284 * Private function used by Query_GL_TLE methods.
1285 *
1286 * myquery is the query string.
1287 *
1288 * Return the pointer to a cTle object that has the closest and
1289 * previous date compared with time.
1290 *
1291 * If errors occurs it returns NULL.
1292 */
1293 cTle* GL_TLE::Query_GL_TLE_go(TString myquery, TSQLServer *dbc){
1294 cTle *tle;
1295 string tle1, tle2, tle3;
1296
1297 // MySQL variables
1298 TSQLResult *result;
1299 TSQLRow *row;
1300
1301 result = dbc->Query(myquery.Data());
1302 if(! result->GetRowCount() ) return NULL;
1303
1304 row = result->Next();
1305 tle1 = row->GetField(0);
1306 tle2 = row->GetField(1);
1307 tle3 = row->GetField(2);
1308
1309 tle = new cTle(tle1, tle2, tle3);
1310
1311 delete result;
1312 delete row;
1313
1314 return tle;
1315 }

  ViewVC Help
Powered by ViewVC 1.1.23