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

Annotation of /YodaProfiler/src/GLTables.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (hide annotations) (download)
Tue Oct 31 15:36:04 2006 UTC (18 years, 1 month ago) by mocchiut
Branch: MAIN
CVS Tags: v2r01, v2r00
Changes since 1.14: +138 -13 lines
Force mode introduced together with other features, R2-D2 moved here, manual added

1 mocchiut 1.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 mocchiut 1.12 #include <iostream>
10 mocchiut 1.1 //
11     #include <TFile.h>
12     #include <TTree.h>
13     #include <EventHeader.h>
14     #include <PscuHeader.h>
15     //
16     #include <GLTables.h>
17 mocchiut 1.13 #include <sgp4.h>
18 mocchiut 1.1 //
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 mocchiut 1.12 ClassImp(GL_TLE);
27 mocchiut 1.1 //
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 pam-fi 1.9
65 mocchiut 1.1 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 pam-fi 1.9 BOOT_NUMBER = 0;
130     VALIDATION = 0;
131 mocchiut 1.1 }
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 mocchiut 1.12 }
162    
163     GL_TLE::GL_TLE(){
164     }
165 mocchiut 1.1
166 mocchiut 1.12 // ****************************************************
167 mocchiut 1.1
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 pam-fi 1.9 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 mocchiut 1.14 /**
377 mocchiut 1.15 * This method delete the run from the "FromTable" table and store it in the GL_RUN_TRASH table
378     * If IDRUN is 0 "this->ID" run is used.
379 mocchiut 1.14 *
380     **/
381     Int_t GL_RUN::DeleteRun(TSQLServer *dbc,UInt_t IDRUN,TString FromTable){
382     // MySQL variables
383     TSQLResult *pResult;
384     TSQLRow *Row;
385     stringstream myquery;
386     //
387     if ( !IDRUN ) IDRUN = ID;
388     if ( !IDRUN ) return 1;
389     // ----------------
390     myquery.str("");
391     myquery << " INSERT INTO GL_RUN_TRASH (";
392     myquery << "ID";
393     myquery << ",ID_RUN_FRAG";
394     myquery << ",ID_ROOT_L0";
395     myquery << ",ID_ROOT_L2";
396     myquery << ",RUNHEADER_TIME";
397     myquery << ",RUNTRAILER_TIME";
398     myquery << ",RUNHEADER_OBT";
399     myquery << ",RUNTRAILER_OBT";
400     myquery << ",RUNHEADER_PKT";
401     myquery << ",RUNTRAILER_PKT";
402     myquery << ",BOOT_NUMBER";
403     myquery << ",EV_FROM";
404     myquery << ",EV_TO";
405     myquery << ",NEVENTS";
406     myquery << ",PKT_COUNTER";
407     myquery << ",PKT_READY_COUNTER";
408     myquery << ",COMPILATIONTIMESTAMP";
409     myquery << ",FAV_WRK_SCHEDULE";
410     myquery << ",EFF_WRK_SCHEDULE";
411     myquery << ",PRH_VAR_TRG_MODE_A";
412     myquery << ",PRH_VAR_TRG_MODE_B";
413     myquery << ",ACQ_BUILD_INFO";
414     myquery << ",ACQ_VAR_INFO";
415     myquery << ",RM_ACQ_AFTER_CALIB";
416     myquery << ",RM_ACQ_SETTING_MODE";
417     myquery << ",TRK_CALIB_USED";
418     myquery << ",CAL_DSP_MASK";
419     myquery << ",LAST_TIMESYNC";
420     myquery << ",OBT_TIMESYNC";
421     myquery << ",VALIDATION";
422     myquery << ",INSERT_TIME";
423     myquery << ") SELECT * FROM ";
424     myquery << FromTable.Data();
425     myquery << " WHERE ID=";
426     myquery << (UInt_t)IDRUN << ";";
427     //
428     // printf("1myquery is %s \n",myquery.str().c_str());
429     //
430     dbc->Query(myquery.str().c_str());
431     //
432 mocchiut 1.15 // retrieve this ID_TRASH
433     //
434     myquery.str("");
435     myquery << " SELECT ID_TRASH,ID_ROOT_L0,ID_ROOT_L2 FROM GL_RUN_TRASH ORDER BY ID_TRASH DESC LIMIT 1";
436     pResult = dbc->Query(myquery.str().c_str());
437     //
438     UInt_t idtrash = 0;
439     UInt_t idl0 = 0;
440     UInt_t idl2 = 0;
441     //
442     Row = pResult->Next();
443     if( Row != NULL ){
444     idtrash = (UInt_t)atoll(Row->GetField(0));
445     idl0 = (UInt_t)atoll(Row->GetField(1));
446     idl2 = (UInt_t)atoll(Row->GetField(2));
447     };
448     //
449 mocchiut 1.14 TString fileL0 = "";
450     TString fileL2 = "";
451     myquery.str("");
452     myquery << " SELECT NAME FROM GL_ROOT WHERE ID=";
453 mocchiut 1.15 myquery << idl0 << ";";
454 mocchiut 1.14 //
455     // printf("2myquery is %s \n",myquery.str().c_str());
456     //
457     pResult = dbc->Query(myquery.str().c_str());
458     //
459     Row = pResult->Next();
460     if( Row != NULL ){
461     fileL0 = (TString)Row->GetField(0);
462     };
463     //
464     //
465     //
466     myquery.str("");
467     myquery << " SELECT NAME FROM GL_ROOT WHERE ID=";
468 mocchiut 1.15 myquery << idl2 << ";";
469 mocchiut 1.14 //
470     // printf("3myquery is %s \n",myquery.str().c_str());
471     //
472     pResult = dbc->Query(myquery.str().c_str());
473     //
474     Row = pResult->Next();
475     if( Row != NULL ){
476     fileL2 = (TString)Row->GetField(0);
477     };
478     //
479     //
480     //
481     myquery.str("");
482     myquery << " UPDATE GL_RUN_TRASH SET FILENAMEL0='";
483 mocchiut 1.15 myquery << fileL0.Data() << "' where ID_TRASH=";
484     myquery << idtrash << ";";
485 mocchiut 1.14 //
486     // printf("4myquery is %s \n",myquery.str().c_str());
487     //
488     dbc->Query(myquery.str().c_str());
489     //
490     myquery.str("");
491     myquery << " UPDATE GL_RUN_TRASH SET FILENAMEL2='";
492 mocchiut 1.15 myquery << fileL2.Data() << "' where ID_TRASH=";
493     myquery << idtrash << ";";
494 mocchiut 1.14 //
495     // printf("4myquery is %s \n",myquery.str().c_str());
496     //
497     dbc->Query(myquery.str().c_str());
498     //
499     myquery.str("");
500     myquery << " UPDATE GL_RUN_TRASH SET BELONGED_TO='";
501 mocchiut 1.15 myquery << FromTable.Data() << "' where ID_TRASH=";
502     myquery << idtrash << ";";
503 mocchiut 1.14 //
504     // printf("4myquery is %s \n",myquery.str().c_str());
505     //
506     //
507     dbc->Query(myquery.str().c_str());
508     //
509     myquery.str("");
510     myquery << " DELETE FROM ";
511     myquery << FromTable.Data() << " where ID=";
512     myquery << IDRUN << ";";
513     //
514     // printf("5myquery is %s \n",myquery.str().c_str());
515     //
516     //
517     dbc->Query(myquery.str().c_str());
518     //
519     return 0;
520     };
521    
522    
523    
524     /**
525 mocchiut 1.15 * This method restore a run from the GL_RUN_TRASH table.
526     * If ID is 0 "this->ID" is used; if "ToTable" is empty BELONG_TO field of GL_RUN_TRASH is used.
527 mocchiut 1.14 *
528     **/
529 mocchiut 1.15 Int_t GL_RUN::RestoreRun(TSQLServer *dbc,UInt_t IDRUN,TString ToTable){
530 mocchiut 1.14 // insert into GL_RUN_FRAGMENTS select * FROM GL_RUN where ID=11;
531     //insert into GL_RUN_TRASH VALUES (ID , ID_RUN_FRAG , ID_ROOT_L0 , ID_ROOT_L2 , RUNHEADER_TIME , RUNTRAILER_TIME , RUNHEADER_OBT , RUNTRAILER_OBT , RUNHEADER_PKT , RUNTRAILER_PKT , BOOT_NUMBER , EV_FROM , EV_TO , NEVENTS , PKT_COUNTER , PKT_READY_COUNTER , COMPILATIONTIMESTAMP , FAV_WRK_SCHEDULE , EFF_WRK_SCHEDULE , PRH_VAR_TRG_MODE_A , PRH_VAR_TRG_MODE_B , ACQ_BUILD_INFO , ACQ_VAR_INFO , RM_ACQ_AFTER_CALIB , RM_ACQ_SETTING_MODE, TRK_CALIB_USED,CAL_DSP_MASK, LAST_TIMESYNC, OBT_TIMESYNC, VALIDATION, INSERT_TIME) select * FROM GL_RUN where ID=11;
532 mocchiut 1.15 // MySQL variables
533     TSQLResult *pResult;
534     TSQLRow *Row;
535     stringstream myquery;
536     //
537     if ( !IDRUN ) IDRUN = ID;
538     if ( !IDRUN ) return 1;
539     //
540     if ( !strcmp(ToTable.Data(),"") ){
541     //
542     myquery.str("");
543     myquery << " SELECT BELONGED_TO FROM GL_RUN_TRASH WHERE ID=";
544     myquery << (UInt_t)IDRUN << ";";
545     //
546     printf(" qui? myquery is %s \n",myquery.str().c_str());
547     //
548     pResult = dbc->Query(myquery.str().c_str());
549     //
550     Row = pResult->Next();
551     if( Row != NULL ){
552     ToTable = (TString)Row->GetField(0);
553     } else {
554     return 1;
555     };
556     };
557     // ----------------
558     myquery.str("");
559     myquery << " INSERT INTO ";
560     myquery << ToTable.Data();
561     myquery << " (";
562     myquery << "ID";
563     myquery << ",ID_RUN_FRAG";
564     myquery << ",ID_ROOT_L0";
565     myquery << ",ID_ROOT_L2";
566     myquery << ",RUNHEADER_TIME";
567     myquery << ",RUNTRAILER_TIME";
568     myquery << ",RUNHEADER_OBT";
569     myquery << ",RUNTRAILER_OBT";
570     myquery << ",RUNHEADER_PKT";
571     myquery << ",RUNTRAILER_PKT";
572     myquery << ",BOOT_NUMBER";
573     myquery << ",EV_FROM";
574     myquery << ",EV_TO";
575     myquery << ",NEVENTS";
576     myquery << ",PKT_COUNTER";
577     myquery << ",PKT_READY_COUNTER";
578     myquery << ",COMPILATIONTIMESTAMP";
579     myquery << ",FAV_WRK_SCHEDULE";
580     myquery << ",EFF_WRK_SCHEDULE";
581     myquery << ",PRH_VAR_TRG_MODE_A";
582     myquery << ",PRH_VAR_TRG_MODE_B";
583     myquery << ",ACQ_BUILD_INFO";
584     myquery << ",ACQ_VAR_INFO";
585     myquery << ",RM_ACQ_AFTER_CALIB";
586     myquery << ",RM_ACQ_SETTING_MODE";
587     myquery << ",TRK_CALIB_USED";
588     myquery << ",CAL_DSP_MASK";
589     myquery << ",LAST_TIMESYNC";
590     myquery << ",OBT_TIMESYNC";
591     myquery << ",VALIDATION";
592     myquery << ",INSERT_TIME";
593     myquery << ") SELECT ";
594     myquery << "ID";
595     myquery << ",ID_RUN_FRAG";
596     myquery << ",ID_ROOT_L0";
597     myquery << ",ID_ROOT_L2";
598     myquery << ",RUNHEADER_TIME";
599     myquery << ",RUNTRAILER_TIME";
600     myquery << ",RUNHEADER_OBT";
601     myquery << ",RUNTRAILER_OBT";
602     myquery << ",RUNHEADER_PKT";
603     myquery << ",RUNTRAILER_PKT";
604     myquery << ",BOOT_NUMBER";
605     myquery << ",EV_FROM";
606     myquery << ",EV_TO";
607     myquery << ",NEVENTS";
608     myquery << ",PKT_COUNTER";
609     myquery << ",PKT_READY_COUNTER";
610     myquery << ",COMPILATIONTIMESTAMP";
611     myquery << ",FAV_WRK_SCHEDULE";
612     myquery << ",EFF_WRK_SCHEDULE";
613     myquery << ",PRH_VAR_TRG_MODE_A";
614     myquery << ",PRH_VAR_TRG_MODE_B";
615     myquery << ",ACQ_BUILD_INFO";
616     myquery << ",ACQ_VAR_INFO";
617     myquery << ",RM_ACQ_AFTER_CALIB";
618     myquery << ",RM_ACQ_SETTING_MODE";
619     myquery << ",TRK_CALIB_USED";
620     myquery << ",CAL_DSP_MASK";
621     myquery << ",LAST_TIMESYNC";
622     myquery << ",OBT_TIMESYNC";
623     myquery << ",VALIDATION";
624     myquery << ",INSERT_TIME";
625     myquery << " FROM GL_RUN_TRASH ";
626     myquery << " WHERE BELONGED_TO='GL_RUN_FRAGMENTS' AND ID=";
627     myquery << (UInt_t)IDRUN << ";";
628     //
629     // printf("5myquery is %s \n",myquery.str().c_str());
630     //
631     dbc->Query(myquery.str().c_str());
632     //
633     //
634     myquery.str("");
635     myquery << " DELETE FROM GL_RUN_TRASH where BELONGED_TO='GL_RUN_FRAGMENTS' AND ID=";
636     myquery << IDRUN << ";";
637     //
638     dbc->Query(myquery.str().c_str());
639     //
640 mocchiut 1.14 return 0;
641     };
642 mocchiut 1.1
643     /**
644     * Function to fill the GL_RUN table of the DB.
645     *
646     * \param
647     *
648     */
649     Int_t GL_RUN::Fill_GL_RUN(TSQLServer *dbc){
650     // MySQL variables
651     stringstream myquery;
652     // ----------------
653     myquery.str("");
654     myquery << " INSERT INTO GL_RUN (";
655     myquery << "ID";
656     myquery << ",ID_RUN_FRAG";
657     myquery << ",ID_ROOT_L0";
658     myquery << ",ID_ROOT_L2";
659     myquery << ",RUNHEADER_TIME";
660     myquery << ",RUNTRAILER_TIME";
661     myquery << ",RUNHEADER_OBT";
662     myquery << ",RUNTRAILER_OBT";
663     myquery << ",RUNHEADER_PKT";
664     myquery << ",RUNTRAILER_PKT";
665     myquery << ",EV_FROM";
666     myquery << ",EV_TO";
667     myquery << ",NEVENTS";
668     myquery << ",LAST_TIMESYNC";
669     myquery << ",OBT_TIMESYNC";
670     myquery << ",COMPILATIONTIMESTAMP";
671     myquery << ",FAV_WRK_SCHEDULE";
672     myquery << ",EFF_WRK_SCHEDULE";
673     myquery << ",PRH_VAR_TRG_MODE_A";
674     myquery << ",PRH_VAR_TRG_MODE_B";
675     myquery << ",ACQ_BUILD_INFO";
676     myquery << ",ACQ_VAR_INFO";
677     myquery << ",RM_ACQ_AFTER_CALIB";
678     myquery << ",RM_ACQ_SETTING_MODE";
679     myquery << ",PKT_COUNTER";
680     myquery << ",PKT_READY_COUNTER";
681     myquery << ",TRK_CALIB_USED";
682     myquery << ",CAL_DSP_MASK";
683     myquery << ",BOOT_NUMBER";
684     myquery << ",VALIDATION";
685     myquery << ") VALUES ('";
686    
687     myquery << (UInt_t)ID << "','";
688     myquery << (UInt_t)ID_RUN_FRAG << "','";
689     myquery << (UInt_t)ID_ROOT_L0 << "','";
690     myquery << (UInt_t)ID_ROOT_L2 << "','";
691     myquery << (UInt_t)RUNHEADER_TIME << "','";
692     myquery << (UInt_t)RUNTRAILER_TIME << "','";
693     myquery << (UInt_t)RUNHEADER_OBT << "','";
694     myquery << (UInt_t)RUNTRAILER_OBT << "','";
695     myquery << (UInt_t)RUNHEADER_PKT << "','";
696     myquery << (UInt_t)RUNTRAILER_PKT << "','";
697     myquery << (UInt_t)EV_FROM << "','";
698     myquery << (UInt_t)EV_TO << "','";
699     myquery << (UInt_t)NEVENTS << "','";
700     myquery << (UInt_t)LAST_TIMESYNC << "','";
701     myquery << (UInt_t)OBT_TIMESYNC << "','";
702     myquery << (UInt_t)COMPILATIONTIMESTAMP << "','";
703     myquery << (UInt_t)FAV_WRK_SCHEDULE << "','";
704     myquery << (UInt_t)EFF_WRK_SCHEDULE << "','";
705     myquery << (UInt_t)PRH_VAR_TRG_MODE_A << "','";
706     myquery << (UInt_t)PRH_VAR_TRG_MODE_B << "','";
707     myquery << (UInt_t)ACQ_BUILD_INFO << "','";
708     myquery << (UInt_t)ACQ_VAR_INFO << "','";
709     myquery << (UInt_t)RM_ACQ_AFTER_CALIB << "','";
710     myquery << (UInt_t)RM_ACQ_SETTING_MODE << "','";
711     myquery << (UInt_t)PKT_COUNTER << "','";
712     myquery << (UInt_t)PKT_READY_COUNTER << "','";
713     myquery << (UInt_t)TRK_CALIB_USED << "','";
714     myquery << (UInt_t)CAL_DSP_MASK << "','";
715     myquery << (UInt_t)BOOT_NUMBER << "','";
716     myquery << (UInt_t)VALIDATION << "');";
717     //
718 mocchiut 1.2 // printf("myquery is %s \n",myquery.str().c_str());
719 mocchiut 1.1 //
720     dbc->Query(myquery.str().c_str());
721     //
722     return 0;
723    
724     };// ****************************************************
725    
726     /**
727     * Function to fill the GL_RUN table of the DB.
728     *
729     * \param
730     *
731     */
732     Int_t GL_RUN::Fill_GL_RUN_FRAGMENTS(TSQLServer *dbc){
733     // MySQL variables
734     stringstream myquery;
735     // ----------------
736     myquery.str("");
737     myquery << " INSERT INTO GL_RUN_FRAGMENTS (";
738     myquery << "ID";
739     myquery << ",ID_ROOT_L0";
740     myquery << ",RUNHEADER_TIME";
741     myquery << ",RUNTRAILER_TIME";
742     myquery << ",RUNHEADER_OBT";
743     myquery << ",RUNTRAILER_OBT";
744     myquery << ",RUNHEADER_PKT";
745     myquery << ",RUNTRAILER_PKT";
746     myquery << ",EV_FROM";
747     myquery << ",EV_TO";
748     myquery << ",NEVENTS";
749     myquery << ",LAST_TIMESYNC";
750     myquery << ",OBT_TIMESYNC";
751     myquery << ",COMPILATIONTIMESTAMP";
752     myquery << ",FAV_WRK_SCHEDULE";
753     myquery << ",EFF_WRK_SCHEDULE";
754     myquery << ",PRH_VAR_TRG_MODE_A";
755     myquery << ",PRH_VAR_TRG_MODE_B";
756     myquery << ",ACQ_BUILD_INFO";
757     myquery << ",ACQ_VAR_INFO";
758     myquery << ",RM_ACQ_AFTER_CALIB";
759     myquery << ",RM_ACQ_SETTING_MODE";
760     myquery << ",PKT_COUNTER";
761     myquery << ",PKT_READY_COUNTER";
762     myquery << ",TRK_CALIB_USED";
763     myquery << ",CAL_DSP_MASK";
764     myquery << ",BOOT_NUMBER";
765     myquery << ") VALUES ('";
766     myquery << (UInt_t)ID << "','";
767     myquery << (UInt_t)ID_ROOT_L0 << "','";
768     myquery << (UInt_t)RUNHEADER_TIME << "','";
769     myquery << (UInt_t)RUNTRAILER_TIME << "','";
770     myquery << (UInt_t)RUNHEADER_OBT << "','";
771     myquery << (UInt_t)RUNTRAILER_OBT << "','";
772     myquery << (UInt_t)RUNHEADER_PKT << "','";
773     myquery << (UInt_t)RUNTRAILER_PKT << "','";
774     myquery << (UInt_t)EV_FROM << "','";
775     myquery << (UInt_t)EV_TO << "','";
776     myquery << (UInt_t)NEVENTS << "','";
777     myquery << (UInt_t)LAST_TIMESYNC << "','";
778     myquery << (UInt_t)OBT_TIMESYNC << "','";
779     myquery << (UInt_t)COMPILATIONTIMESTAMP << "','";
780     myquery << (UInt_t)FAV_WRK_SCHEDULE << "','";
781     myquery << (UInt_t)EFF_WRK_SCHEDULE << "','";
782     myquery << (UInt_t)PRH_VAR_TRG_MODE_A << "','";
783     myquery << (UInt_t)PRH_VAR_TRG_MODE_B << "','";
784     myquery << (UInt_t)ACQ_BUILD_INFO << "','";
785     myquery << (UInt_t)ACQ_VAR_INFO << "','";
786     myquery << (UInt_t)RM_ACQ_AFTER_CALIB << "','";
787     myquery << (UInt_t)RM_ACQ_SETTING_MODE << "','";
788     myquery << (UInt_t)PKT_COUNTER << "','";
789     myquery << (UInt_t)PKT_READY_COUNTER << "','";
790     myquery << (UInt_t)TRK_CALIB_USED << "','";
791     myquery << (UInt_t)CAL_DSP_MASK << "','";
792     myquery << (UInt_t)BOOT_NUMBER << "');";
793     //
794     // printf("myquery is %s \n",myquery.str().c_str());
795     //
796     dbc->Query(myquery.str().c_str());
797     //
798     return 0;
799    
800     };// ****************************************************
801    
802    
803     /**
804     * Function to query the GL_RUN table of the DB.
805     *
806     * \param RUN id
807     * \return struct of type GL_RUN _data, which stores the query result
808     *
809     */
810     Int_t GL_RUN::Query_GL_RUN(UInt_t run, TSQLServer *dbc){
811     // MySQL variables
812     TSQLResult *pResult;
813     TSQLRow *Row;
814     int t;
815     int r;
816     stringstream myquery;
817     // ----------------
818     myquery.str("");
819     myquery << " select ";
820     myquery << "ID";
821     myquery << ",ID_RUN_FRAG";
822     myquery << ",ID_ROOT_L0";
823     myquery << ",ID_ROOT_L2";
824     myquery << ",RUNHEADER_TIME";
825     myquery << ",RUNTRAILER_TIME";
826     myquery << ",RUNHEADER_OBT";
827     myquery << ",RUNTRAILER_OBT";
828     myquery << ",RUNHEADER_PKT";
829     myquery << ",RUNTRAILER_PKT";
830     myquery << ",EV_FROM";
831     myquery << ",EV_TO";
832     myquery << ",NEVENTS";
833     myquery << ",LAST_TIMESYNC";
834     myquery << ",OBT_TIMESYNC";
835     myquery << ",COMPILATIONTIMESTAMP";
836     myquery << ",FAV_WRK_SCHEDULE";
837     myquery << ",EFF_WRK_SCHEDULE";
838     myquery << ",PRH_VAR_TRG_MODE_A";
839     myquery << ",PRH_VAR_TRG_MODE_B";
840     myquery << ",ACQ_BUILD_INFO";
841     myquery << ",ACQ_VAR_INFO";
842     myquery << ",RM_ACQ_AFTER_CALIB";
843     myquery << ",RM_ACQ_SETTING_MODE";
844     myquery << ",PKT_COUNTER";
845     myquery << ",PKT_READY_COUNTER";
846     myquery << ",TRK_CALIB_USED";
847     myquery << ",CAL_DSP_MASK";
848     myquery << ",BOOT_NUMBER";
849     myquery << ",VALIDATION";
850     myquery << " from GL_RUN where ID=" << run << ";";
851     //
852 mocchiut 1.4 // printf(" myquery is %s \n",myquery.str().c_str());
853 mocchiut 1.1 pResult = dbc->Query(myquery.str().c_str());
854 mocchiut 1.4 //
855     // printf(" getrowcount %i \n",pResult->GetRowCount());
856     //
857     if( !pResult->GetRowCount() ) return(-50);
858     //
859 mocchiut 1.1 for( r=0; r < 1000; r++){
860     Row = pResult->Next();
861     if( Row == NULL ) break;
862 pam-fi 1.9 // Set_GL_RUN(Row);
863 mocchiut 1.1 for( t = 0; t < pResult->GetFieldCount(); t++){
864 pam-fi 1.9 if (t== 0) ID = (UInt_t)atoll(Row->GetField(t));
865     if (t== 1) ID_RUN_FRAG = (UInt_t)atoll(Row->GetField(t));
866     if (t== 2) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
867     if (t== 3) ID_ROOT_L2 = (UInt_t)atoll(Row->GetField(t));
868     if (t== 4) RUNHEADER_TIME = (UInt_t)atoll(Row->GetField(t));
869     if (t== 5) RUNTRAILER_TIME = (UInt_t)atoll(Row->GetField(t));
870     if (t== 6) RUNHEADER_OBT = (UInt_t)atoll(Row->GetField(t));
871     if (t== 7) RUNTRAILER_OBT = (UInt_t)atoll(Row->GetField(t));
872     if (t== 8) RUNHEADER_PKT = (UInt_t)atoll(Row->GetField(t));
873     if (t== 9) RUNTRAILER_PKT = (UInt_t)atoll(Row->GetField(t));
874     if (t==10) EV_FROM = (UInt_t)atoll(Row->GetField(t));
875     if (t==11) EV_TO = (UInt_t)atoll(Row->GetField(t));
876     if (t==12) NEVENTS = (UInt_t)atoll(Row->GetField(t));
877     if (t==13) LAST_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
878     if (t==14) OBT_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
879     if (t==15) COMPILATIONTIMESTAMP = (UInt_t)atoll(Row->GetField(t));
880     if (t==16) FAV_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
881     if (t==17) EFF_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
882     if (t==18) PRH_VAR_TRG_MODE_A= (UInt_t)atoll(Row->GetField(t));
883     if (t==19) PRH_VAR_TRG_MODE_B= (UInt_t)atoll(Row->GetField(t));
884     if (t==20) ACQ_BUILD_INFO = (UInt_t)atoll(Row->GetField(t));
885     if (t==21) ACQ_VAR_INFO = (UInt_t)atoll(Row->GetField(t));
886     if (t==22) RM_ACQ_AFTER_CALIB= (UInt_t)atoll(Row->GetField(t));
887     if (t==23) RM_ACQ_SETTING_MODE = (UInt_t)atoll(Row->GetField(t));
888     if (t==24) PKT_COUNTER = (UInt_t)atoll(Row->GetField(t));
889     if (t==25) PKT_READY_COUNTER = (UInt_t)atoll(Row->GetField(t));
890     if (t==26) TRK_CALIB_USED = (UInt_t)atoll(Row->GetField(t));
891     if (t==27) CAL_DSP_MASK = (UInt_t)atoll(Row->GetField(t));
892     if (t==28) BOOT_NUMBER = (UInt_t)atoll(Row->GetField(t));
893     if (t==29) VALIDATION = (UInt_t)atoll(Row->GetField(t));
894 mocchiut 1.1 };
895     };
896 mocchiut 1.4 // delete pResult;
897     return(0);
898 mocchiut 1.1 };
899    
900     /**
901     * Function to query the GL_RUN table of the DB.
902     *
903     * \param where = condition string
904     * \return struct of type GL_RUN _data, which stores the query result
905     *
906     */
907     Int_t GL_RUN::Query_GL_RUN_FRAGMENTS(TString where, TSQLServer *dbc){
908     // MySQL variables
909     TSQLResult *pResult;
910     TSQLRow *Row;
911     int t;
912     int r;
913     stringstream myquery;
914     // ----------------
915     myquery.str("");
916     myquery << " select ";
917     myquery << "ID";
918 mocchiut 1.2 myquery << ",ID_RUN_FRAG";
919 mocchiut 1.1 myquery << ",ID_ROOT_L0";
920 mocchiut 1.2 myquery << ",ID_ROOT_L2";
921 mocchiut 1.1 myquery << ",RUNHEADER_TIME";
922     myquery << ",RUNTRAILER_TIME";
923     myquery << ",RUNHEADER_OBT";
924     myquery << ",RUNTRAILER_OBT";
925     myquery << ",RUNHEADER_PKT";
926     myquery << ",RUNTRAILER_PKT";
927     myquery << ",EV_FROM";
928     myquery << ",EV_TO";
929     myquery << ",NEVENTS";
930     myquery << ",LAST_TIMESYNC";
931     myquery << ",OBT_TIMESYNC";
932     myquery << ",COMPILATIONTIMESTAMP";
933     myquery << ",FAV_WRK_SCHEDULE";
934     myquery << ",EFF_WRK_SCHEDULE";
935     myquery << ",PRH_VAR_TRG_MODE_A";
936     myquery << ",PRH_VAR_TRG_MODE_B";
937     myquery << ",ACQ_BUILD_INFO";
938     myquery << ",ACQ_VAR_INFO";
939     myquery << ",RM_ACQ_AFTER_CALIB";
940     myquery << ",RM_ACQ_SETTING_MODE";
941     myquery << ",PKT_COUNTER";
942     myquery << ",PKT_READY_COUNTER";
943     myquery << ",TRK_CALIB_USED";
944     myquery << ",CAL_DSP_MASK";
945     myquery << ",BOOT_NUMBER";
946 mocchiut 1.2 myquery << ",VALIDATION";
947 mocchiut 1.1 myquery << " from GL_RUN_FRAGMENTS where " << where.Data() << ";";
948     //
949 mocchiut 1.2 // printf(" query is %s \n",myquery.str().c_str());
950     //
951 mocchiut 1.1 pResult = dbc->Query(myquery.str().c_str());
952     if(!pResult->GetRowCount())return(-50);
953     for( r=0; r < 1000; r++){
954 mocchiut 1.2 Row = pResult->Next();
955     if( Row == NULL ) break;
956     for( t = 0; t < pResult->GetFieldCount(); t++){
957     if (t== 0) ID = (UInt_t)atoll(Row->GetField(t));
958     if (t== 1) ID_RUN_FRAG = (UInt_t)atoll(Row->GetField(t));
959     if (t== 2) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
960     if (t== 3) ID_ROOT_L2 = (UInt_t)atoll(Row->GetField(t));
961     if (t== 4) RUNHEADER_TIME = (UInt_t)atoll(Row->GetField(t));
962     if (t== 5) RUNTRAILER_TIME = (UInt_t)atoll(Row->GetField(t));
963     if (t== 6) RUNHEADER_OBT = (UInt_t)atoll(Row->GetField(t));
964     if (t== 7) RUNTRAILER_OBT = (UInt_t)atoll(Row->GetField(t));
965     if (t== 8) RUNHEADER_PKT = (UInt_t)atoll(Row->GetField(t));
966     if (t== 9) RUNTRAILER_PKT = (UInt_t)atoll(Row->GetField(t));
967     if (t==10) EV_FROM = (UInt_t)atoll(Row->GetField(t));
968     if (t==11) EV_TO = (UInt_t)atoll(Row->GetField(t));
969     if (t==12) NEVENTS = (UInt_t)atoll(Row->GetField(t));
970     if (t==13) LAST_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
971     if (t==14) OBT_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
972     if (t==15) COMPILATIONTIMESTAMP = (UInt_t)atoll(Row->GetField(t));
973     if (t==16) FAV_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
974     if (t==17) EFF_WRK_SCHEDULE = (UInt_t)atoll(Row->GetField(t));
975     if (t==18) PRH_VAR_TRG_MODE_A= (UInt_t)atoll(Row->GetField(t));
976     if (t==19) PRH_VAR_TRG_MODE_B= (UInt_t)atoll(Row->GetField(t));
977     if (t==20) ACQ_BUILD_INFO = (UInt_t)atoll(Row->GetField(t));
978     if (t==21) ACQ_VAR_INFO = (UInt_t)atoll(Row->GetField(t));
979     if (t==22) RM_ACQ_AFTER_CALIB= (UInt_t)atoll(Row->GetField(t));
980     if (t==23) RM_ACQ_SETTING_MODE = (UInt_t)atoll(Row->GetField(t));
981     if (t==24) PKT_COUNTER = (UInt_t)atoll(Row->GetField(t));
982     if (t==25) PKT_READY_COUNTER = (UInt_t)atoll(Row->GetField(t));
983     if (t==26) TRK_CALIB_USED = (UInt_t)atoll(Row->GetField(t));
984     if (t==27) CAL_DSP_MASK = (UInt_t)atoll(Row->GetField(t));
985     if (t==28) BOOT_NUMBER = (UInt_t)atoll(Row->GetField(t));
986     if (t==29) VALIDATION = (UInt_t)atoll(Row->GetField(t));
987     };
988 mocchiut 1.1 };
989 mocchiut 1.2 // delete pResult;
990     return(0);
991     };// ****************************************************
992 mocchiut 1.1
993     /**
994     * Function to query the GL_ROOT table of the DB.
995     *
996     * \param entry ID
997     * \return struct of type GL_ROOT_data, which stores the query result
998     */
999     Int_t GL_ROOT::Query_GL_ROOT(UInt_t id, TSQLServer *dbc){
1000     // MySQL variables
1001     TSQLResult *pResult;
1002     TSQLRow *Row;
1003     int t;
1004     int r;
1005     stringstream myquery;
1006     // ----------------
1007     myquery.str("");
1008     myquery << "select ";
1009     myquery << " ID";
1010     myquery << ",ID_RAW";
1011     myquery << ",ID_TIMESYNC";
1012     myquery << ",PATH";
1013     myquery << ",NAME";
1014     myquery << " from GL_ROOT where ID=" << id << ";";
1015     //
1016     pResult = dbc->Query(myquery.str().c_str());
1017     if(!pResult->GetRowCount())return (-51);
1018     for( r=0; r < 1000; r++){
1019     Row = pResult->Next();
1020     if( Row == NULL ) break;
1021     for( t = 0; t < pResult->GetFieldCount(); t++){
1022     if(t==0) ID = (UInt_t)atoll(Row->GetField(t));
1023     if(t==1) ID_RAW = (UInt_t)atoll(Row->GetField(t));
1024     if(t==2) ID_TIMESYNC = (UInt_t)atoll(Row->GetField(t));
1025     if(t==3) PATH = Row->GetField(t);
1026     if(t==4) NAME = Row->GetField(t);
1027     };
1028     };
1029     delete pResult;
1030     return 0;
1031     };
1032     // ****************************************************
1033     /**
1034     * Function to query the GL_TRK_CALIB table of the DB.
1035     *
1036     * \param run starting time
1037 pam-fi 1.9 * \param dbc DB server
1038 mocchiut 1.1 * \return struct of type GL_TRK_CALIB_data, which stores the query result
1039     */
1040     Int_t GL_TRK_CALIB::Query_GL_TRK_CALIB(UInt_t time, TSQLServer *dbc){
1041     // MySQL variables
1042     TSQLResult *pResult;
1043     TSQLRow *Row;
1044     int t;
1045     int r;
1046     stringstream myquery;
1047     // ----------------
1048     myquery.str("");
1049 pam-fi 1.9 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;
1050 mocchiut 1.1 myquery << " AND VALIDATION=1 ORDER BY FROM_TIME DESC LIMIT 1;";
1051     // myquery << " ORDER BY FROM_TIME DESC LIMIT 1;";
1052     pResult = dbc->Query(myquery.str().c_str());
1053     if(!pResult->GetRowCount())return (-53);
1054     for( r=0; r < 1000; r++){
1055     Row = pResult->Next();
1056     if( Row == NULL ) break;
1057     for( t = 0; t < pResult->GetFieldCount(); t++){
1058 mocchiut 1.2 stringstream row;
1059     row.str("");
1060     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
1061 pam-fi 1.9 if (t==0) ID = (UInt_t)atoll(Row->GetField(t));
1062     if (t==1) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
1063 mocchiut 1.2 if (t==2) EV_ROOT_CALIBTRK1 = (UInt_t)atoll(row.str().c_str());
1064     if (t==3) EV_ROOT_CALIBTRK2 = (UInt_t)atoll(row.str().c_str());
1065 pam-fi 1.9 if (t==4) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
1066     if (t==5) TO_TIME = (UInt_t)atoll(Row->GetField(t));
1067 mocchiut 1.1 //
1068 pam-fi 1.9 if (t==6) OBT1 = (UInt_t)atoll(Row->GetField(t));
1069     if (t==7) OBT2 = (UInt_t)atoll(Row->GetField(t));
1070     if (t==8) PKT1 = (UInt_t)atoll(Row->GetField(t));
1071     if (t==9) PKT2 = (UInt_t)atoll(Row->GetField(t));
1072     if (t==10) BOOT_NUMBER = (UInt_t)atoll(Row->GetField(t));
1073     if (t==11) VALIDATION = (UInt_t)atoll(Row->GetField(t));
1074     };
1075 mocchiut 1.1 };
1076 pam-fi 1.9 delete pResult;
1077 mocchiut 1.1 //
1078 pam-fi 1.9 // if ( TO_TIME < time ) return(51);
1079 mocchiut 1.8 //
1080 mocchiut 1.1 if ( (!OBT1 && !PKT1 ) || (!OBT2 && !PKT2) ) return(52); // ONE CALIBRATION PACKET IS MISSING!
1081     //
1082     return 0;
1083     };
1084    
1085     // ****************************************************
1086     /**
1087     * Function to query the GL_CALO_CALIB table of the DB.
1088     *
1089     * \param run starting time
1090     * \return struct of type GL_CALO_CALIB_data, which stores the query result
1091     */
1092 mocchiut 1.7 Int_t GL_CALO_CALIB::Query_GL_CALO_CALIB(UInt_t time, UInt_t &uptime, UInt_t section, TSQLServer *dbc){
1093 mocchiut 1.1 // MySQL variables
1094     TSQLResult *pResult;
1095     TSQLRow *Row;
1096     int t;
1097     stringstream myquery;
1098 mocchiut 1.7 uptime = 0;
1099 mocchiut 1.1 //
1100     // select the correct calibration
1101     //
1102     myquery.str("");
1103     myquery << "select ID_ROOT_L0, FROM_TIME, TO_TIME, EV_ROOT,VALIDATION from GL_CALO_CALIB where SECTION=" << section;
1104     myquery << " and FROM_TIME <= " << time;
1105     myquery << " and TO_TIME > " << time;
1106 mocchiut 1.7 myquery << " ;";
1107     //myquery << " and VALIDATION=1;";
1108 mocchiut 1.1 //
1109     pResult = dbc->Query(myquery.str().c_str());
1110 mocchiut 1.7 // printf(" mysquery is %s\n",myquery.str().c_str());
1111     //
1112     if( !pResult->GetRowCount() ) return(-54);
1113     Row = pResult->Next();
1114     if( Row == NULL ) return (-54);
1115     //
1116     uptime = (UInt_t)atoll(Row->GetField(2));
1117 mocchiut 1.1 //
1118     // if it is corrupted validation is 0 and we have no results from the query...
1119     //
1120 mocchiut 1.7 if( atoi(Row->GetField(4)) == 0 ){ // if validation = 0
1121 mocchiut 1.1 //
1122     // in this case take relax the conditions and take the valid calibration that preceed the correct one
1123     //
1124     myquery.str("");
1125     myquery << "select ID_ROOT_L0, FROM_TIME, TO_TIME, EV_ROOT,VALIDATION from GL_CALO_CALIB where SECTION=" << section;
1126     myquery << " and FROM_TIME <= " << time;
1127     myquery << " and VALIDATION=1 ORDER BY FROM_TIME DESC LIMIT 1;";
1128     pResult = dbc->Query(myquery.str().c_str());
1129 mocchiut 1.7 // printf(" mysquery is %s\n",myquery.str().c_str());
1130 mocchiut 1.1 //
1131     // if no results yet quit with error
1132     //
1133     if( !pResult->GetRowCount() ) return (-54);
1134 mocchiut 1.7 //
1135     Row = pResult->Next();
1136     //
1137 mocchiut 1.1 };
1138     //
1139     // store infos and exit
1140     //
1141     if( Row == NULL ) return (-54);
1142     for( t = 0; t < pResult->GetFieldCount(); t++){
1143     if (t==0) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
1144     if (t==1) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
1145     if (t==2) TO_TIME = (UInt_t)atoll(Row->GetField(t));
1146     if (t==3) EV_ROOT = (UInt_t)atoll(Row->GetField(t));
1147     };
1148     pResult->Delete();
1149     return 0;
1150     };
1151     // ****************************************************
1152     /**
1153     * Function to query the GL_S4_CALIB table of the DB.
1154     *
1155     * \param run starting time
1156     * \return struct of type GL_S4_CALIB_data, which stores the query result
1157     */
1158     Int_t GL_S4_CALIB::Query_GL_S4_CALIB(UInt_t time, TSQLServer *dbc){
1159     // MySQL variables
1160     TSQLResult *pResult;
1161     TSQLRow *Row;
1162     int t;
1163     int r;
1164     stringstream myquery;
1165     // ----------------
1166     myquery.str("");
1167     myquery << "select * from GL_S4_CALIB where FROM_TIME <= "<< time;
1168 mocchiut 1.5 myquery << " ORDER BY FROM_TIME DESC LIMIT 1;";
1169 mocchiut 1.1 // myquery << " ORDER BY FROM_TIME DESC LIMIT 1;";
1170     pResult = dbc->Query(myquery.str().c_str());
1171     if(!pResult->GetRowCount())return (-55);//throw -55;
1172     for( r=0; r < 1000; r++){
1173     Row = pResult->Next();
1174     if( Row == NULL ) break;
1175     for( t = 0; t < pResult->GetFieldCount(); t++){
1176     if (t==0) ID = (UInt_t)atoll(Row->GetField(t));
1177     if (t==1) ID_ROOT_L0 = (UInt_t)atoll(Row->GetField(t));
1178     if (t==2) EV_ROOT = (UInt_t)atoll(Row->GetField(t));
1179     if (t==3) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
1180     if (t==4) TO_TIME = (UInt_t)atoll(Row->GetField(t));
1181     if (t==5) PARAM_FIT0 = atof(Row->GetField(t));
1182     if (t==6) PARAM_FIT1 = atof(Row->GetField(t));
1183     };
1184     };
1185     delete pResult;
1186     //
1187     if(TO_TIME < time)return(51);
1188     //
1189     return 0;
1190     };
1191     // ****************************************************
1192     /**
1193     * Function to query the GL_PARAM table of the DB.
1194     *
1195     * \param run starting time
1196     * \param parameter description (DESCR)
1197     * \return struct of type GL_ROOT_data, which stores the query result
1198     */
1199     Int_t GL_PARAM::Query_GL_PARAM(UInt_t time, UInt_t type, TSQLServer *dbc){
1200     // Bool_t debug = 1;
1201     // MySQL variables
1202     TSQLResult *pResult;
1203     TSQLRow *Row;
1204     int t;
1205     int r;
1206     stringstream myquery;
1207     // ----------------
1208     myquery.str("");
1209     myquery << " select ";
1210     myquery << " ID, PATH, NAME, DESCR, TYPE, FROM_TIME,TO_TIME ";
1211     myquery << " from GL_PARAM ";
1212     myquery << " where TYPE = '"<<type<<"' ";
1213     myquery << " and FROM_TIME <= " << time;
1214     myquery << " ORDER BY TO_TIME DESC LIMIT 1;";
1215     //
1216     pResult = dbc->Query(myquery.str().c_str());
1217     if(!pResult->GetRowCount())return (-52);
1218     for( r=0; r < 1000; r++){
1219     Row = pResult->Next();
1220     if( Row == NULL ) break;
1221     for( t = 0; t < pResult->GetFieldCount(); t++){
1222     if (t==0) ID = (UInt_t)atoll(Row->GetField(t));
1223     if (t==1) PATH = Row->GetField(t);// put in fpath the path to that file
1224     if (t==2) NAME = Row->GetField(t);
1225     if (t==3) DESCR = Row->GetField(t);
1226     if (t==4) FROM_TIME = (UInt_t)atoll(Row->GetField(t));
1227     if (t==5) TO_TIME = (UInt_t)atoll(Row->GetField(t));
1228     if (t==6) TYPE = (UInt_t)atoll(Row->GetField(t));
1229     };
1230     };
1231     delete pResult;
1232     //
1233     if(TO_TIME==0) TO_TIME = numeric_limits<UInt_t>::max();
1234     //
1235     if(TO_TIME < time) return(51);
1236     //
1237     return 0;
1238     };
1239    
1240    
1241     /**
1242     * Fills a struct cGLRun with values from a GLRun object (to put data into a F77 common).
1243     */
1244    
1245     void GL_RUN::GetLevel2Struct(cGLRun *l2) const{
1246     l2->id = ID;
1247     l2->id_reg_run = ID_ROOT_L0;
1248     l2->id_reg_run_l2 = ID_ROOT_L2;
1249     l2->runheader_time = RUNHEADER_TIME;
1250     l2->runtrailer_time = RUNTRAILER_TIME;
1251     l2->ev_from = EV_FROM;
1252     l2->trk_calib_used = TRK_CALIB_USED;
1253     l2->eff_wrk_schedule = EFF_WRK_SCHEDULE;
1254     l2->prh_var_trg_mode_a = PRH_VAR_TRG_MODE_A;
1255     l2->prh_var_trg_mode_b = PRH_VAR_TRG_MODE_B;
1256     l2->acq_build_info = ACQ_BUILD_INFO;
1257     l2->acq_var_info = ACQ_VAR_INFO;
1258     };
1259    
1260     GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TString type, TSQLServer *dbc){
1261     // MySQL variables
1262     TFile *file = 0;
1263     UInt_t idraw = 0;
1264     //
1265     TSQLResult *pResult;
1266     TSQLRow *Row;
1267     stringstream myquery;
1268 mocchiut 1.14 stringstream rname;
1269     rname.str("");
1270 mocchiut 1.1 // ----------------
1271     myquery.str("");
1272     myquery << "select ";
1273     myquery << "PATH";
1274     myquery << ",NAME,ID_RAW";
1275     myquery << " from GL_ROOT where ";
1276     myquery << type.Data();
1277     myquery << "=" << id << ";";
1278     //
1279     pResult = dbc->Query(myquery.str().c_str());
1280     if( pResult->GetRowCount() ){
1281     Row = pResult->Next();
1282     if( Row ){
1283     stringstream fname;
1284     fname.str("");
1285     fname << Row->GetField(0) << "/" << Row->GetField(1);
1286 mocchiut 1.14 rname << Row->GetField(1);
1287 mocchiut 1.1 file = new TFile(fname.str().c_str(),"READ");
1288     idraw = (UInt_t)atoll(Row->GetField(2));
1289     };
1290     };
1291     //
1292     if ( file && file->IsOpen() ){
1293     TTree *T=(TTree*)file->Get("Physics");
1294     pamela::EventHeader *eh = 0;
1295     pamela::PscuHeader *ph = 0;
1296     T->SetBranchAddress("Header", &eh);
1297     //
1298     T->GetEntry(0);
1299     ph = eh->GetPscuHeader();
1300     pktfirst = ph->GetCounter();
1301     obtfirst = ph->GetOrbitalTime();
1302     };
1303     //
1304     // look for Resurs offset
1305     //
1306     UInt_t t0 = 0;
1307     //
1308 mocchiut 1.14 //
1309     stringstream oss;
1310     oss.str("");
1311     oss << "SELECT OFFSET_DATE FROM GL_RESURS_OFFSET WHERE SPECIAL_FILE='"
1312     << rname.str().c_str() << "';";
1313     // if ( IsDebug() ) printf(" %s \n",oss.str().c_str());
1314     pResult = dbc->Query(oss.str().c_str());
1315     Row = pResult->Next();
1316     //
1317     TString name=rname.str().c_str();
1318     UInt_t dworbit = 0;
1319     Int_t nlength = name.Length();
1320     if ( nlength < 5 ) return;
1321     TString dwo = 0;
1322     for (Int_t i = 0; i<5; i++){
1323     dwo.Append(name[i],1);
1324     };
1325     if ( dwo.IsDigit() ){
1326     dworbit = (UInt_t)dwo.Atoi();
1327     } else {
1328     dwo="";
1329     for (Int_t i = 8; i<13; i++){
1330     dwo.Append(name[i],1);
1331     };
1332     if ( dwo.IsDigit() ) dworbit = (UInt_t)dwo.Atoi();
1333     };
1334     // if ( IsDebug() ) printf(" Downlink orbit is %i (dwo = %s) \n",dworbit,dwo.Data());
1335     //
1336     if ( !Row ){
1337     oss.str("");
1338     oss << "SELECT OFFSET_DATE FROM GL_RESURS_OFFSET WHERE FROM_ORBIT< "
1339     << dworbit << " order by FROM_ORBIT desc limit 1;";
1340     // if ( IsDebug() ) printf(" %s \n",oss.str().c_str());
1341     pResult = dbc->Query(oss.str().c_str());
1342 mocchiut 1.1 Row = pResult->Next();
1343 mocchiut 1.14 if ( !Row ){
1344     printf(" ERROR FROM GLTables! cannot determine Resurs offset \n");
1345     return;
1346 mocchiut 1.1 };
1347     };
1348     //
1349 mocchiut 1.14 t0 = (UInt_t)TDatime(Row->GetField(0)).Convert();
1350     //
1351     // myquery.str("");
1352     // myquery << "SELECT OFFSET_DATE FROM GL_RESURS_OFFSET WHERE FROM_ID_RAW<= "
1353     // << idraw << " AND TO_ID_RAW >= "
1354     // << idraw << ";";
1355     // pResult = dbc->Query(myquery.str().c_str());
1356     // if ( pResult ){
1357     // Row = pResult->Next();
1358     // if ( Row ){
1359     // //
1360     // t0 = (UInt_t)TDatime(Row->GetField(0)).Convert();
1361     // //
1362     // };
1363     // };
1364     //
1365 mocchiut 1.1 //
1366     // look for the correct timesync entry
1367     //
1368     myquery.str("");
1369     myquery << " SELECT OBT0,TIMESYNC FROM GL_TIMESYNC "
1370     << " WHERE ID_RAW = " << idraw
1371     << ";";
1372     pResult = dbc->Query(myquery.str().c_str());
1373     if ( pResult ){
1374     Row = pResult->Next();
1375     if ( (Row != NULL) && ((UInt_t)atoll(Row->GetField(0)) > 0 ) ){
1376     toffset = (UInt_t)atoll(Row->GetField(1)) - (UInt_t)(this->DBobt((UInt_t)atoll(Row->GetField(0)))/1000) + t0;
1377     };
1378     };
1379 mocchiut 1.3 //
1380     file->Close();
1381 mocchiut 1.1 delete pResult;
1382     };
1383    
1384     /**
1385     *
1386     * Returns the DB absolute time needed to associate calibrations to data
1387     *
1388     */
1389     UInt_t GL_TIMESYNC::DBabsTime(UInt_t OBT){
1390     //
1391     return(((UInt_t)(this->DBobt(OBT)/1000)+toffset));
1392     //
1393     };
1394    
1395    
1396     ULong64_t GL_TIMESYNC::DBobt(UInt_t obt){
1397     //
1398     if ( obt < (obtfirst/2) && obtfirst > (numeric_limits<UInt_t>::max()/2) ) return((ULong64_t)(obt+numeric_limits<UInt_t>::max()));
1399     //
1400     if ( obt > (obtfirst*2) && obt > (numeric_limits<UInt_t>::max()/2) ){
1401     if ( (obt-numeric_limits<UInt_t>::max()) < 0 ){
1402     return((ULong64_t)(numeric_limits<UInt_t>::max()-obt));
1403     } else {
1404     return((ULong64_t)(obt-numeric_limits<UInt_t>::max()));
1405     };
1406     };
1407     //
1408     return((ULong64_t)obt);
1409     //
1410     };
1411    
1412     UInt_t GL_TIMESYNC::DBpkt(UInt_t pkt_num){
1413     //
1414     if ( pkt_num < (pktfirst/2) && pktfirst > (16777214/2) ) return((pkt_num+16777215));
1415     //
1416     if ( pkt_num > pktfirst*2 && pkt_num > (16777214/2) ){
1417     if ( (pkt_num-16777215) < 0 ){
1418     return((16777215-pkt_num));
1419     } else {
1420     return((pkt_num-16777215));
1421     };
1422     };
1423     //
1424     return(pkt_num);
1425     //
1426     };
1427 mocchiut 1.5
1428     /*
1429     *
1430     * Convert the time in the DB from UInt_t to a string
1431     *
1432     * @param dbt time in the DB
1433     * @param tzone Time Zone, can be UTC,GMT,CET,CEST,MSD default is MSK
1434     *
1435     */
1436 mocchiut 1.10 TString GL_TIMESYNC::ConvertTime(TString &tzone, UInt_t dbt){
1437 mocchiut 1.5 //
1438     TDatime *time = new TDatime();
1439     TString rtime;
1440 mocchiut 1.10 Bool_t found = false;
1441 mocchiut 1.5 //
1442 mocchiut 1.11 time->Set(dbt,false); // UTC (Coordinated Universal Time)
1443 mocchiut 1.5 //
1444 mocchiut 1.11 if ( !strcmp(tzone.Data(),"MSK") || !strcmp(tzone.Data(),"MWT") ){
1445 mocchiut 1.5 //
1446 mocchiut 1.11 UInt_t timeMSK = time->Convert() + 60*60*3; // UTC (Coordinated Universal Time) + 3hs = Moscow Winter Time
1447     time->Set(timeMSK,false);
1448 mocchiut 1.10 found = true;
1449 mocchiut 1.5 //
1450     };
1451     //
1452     if ( !strcmp(tzone.Data(),"CET") ){
1453     //
1454 mocchiut 1.11 UInt_t timeCET = time->Convert() + 60*60*1; // CET (Central European Time) = UTC + 1 hs
1455 mocchiut 1.5 time->Set(timeCET,false);
1456 mocchiut 1.10 found = true;
1457 mocchiut 1.5 //
1458     };
1459     //
1460     if ( !strcmp(tzone.Data(),"CEST") ){
1461     //
1462 mocchiut 1.11 UInt_t timeCEST = time->Convert() + 60*60*2; // CEST (Central European Summer Time) = UTC + 2 h
1463 mocchiut 1.5 time->Set(timeCEST,false);
1464 mocchiut 1.10 found = true;
1465 mocchiut 1.5 //
1466     };
1467     //
1468 mocchiut 1.11 if ( !strcmp(tzone.Data(),"MSD") || !strcmp(tzone.Data(),"MST")){
1469 mocchiut 1.5 //
1470 mocchiut 1.11 UInt_t timeMSD = time->Convert() + 60*60*4; // MSD (Moscow Summer Time) = UTC + 4 h
1471 mocchiut 1.5 time->Set(timeMSD,false);
1472 mocchiut 1.10 found = true;
1473 mocchiut 1.5 //
1474     };
1475     //
1476 mocchiut 1.11 if ( !found && strcmp(tzone.Data(),"UTC") && strcmp(tzone.Data(),"GMT") && strcmp(tzone.Data(),"") ){
1477     printf("\n Unknown time zone %s using UTC \n",tzone.Data());
1478     tzone = "UTC";
1479 mocchiut 1.10 };
1480     //
1481 mocchiut 1.5 rtime = time->AsSQLString();
1482     //
1483     return(rtime);
1484     }
1485 mocchiut 1.6
1486     /*
1487     *
1488     * Convert the time in the DB from UInt_t to a string
1489     *
1490     * @param dbt time in the DB
1491     * @param tzone Time Zone, can be UTC,GMT,CET,CEST,MSD default is MSK
1492     *
1493     */
1494 mocchiut 1.10 TString GL_TIMESYNC::UnConvertTime(TString &tzone, UInt_t dbt){
1495 mocchiut 1.6 //
1496     TDatime *time = new TDatime();
1497     TString rtime;
1498     //
1499 mocchiut 1.10 Bool_t found = false;
1500     //
1501 mocchiut 1.11 time->Set(dbt,false); // tzone
1502 mocchiut 1.6 //
1503 mocchiut 1.11 if ( !strcmp(tzone.Data(),"MSK") || !strcmp(tzone.Data(),"MWT") ){
1504 mocchiut 1.6 //
1505 mocchiut 1.11 UInt_t timeUTC = time->Convert() - 60*60*3; // UTC (Coordinated Universal Time) = Moscow Winter Time - 3hs
1506 mocchiut 1.6 time->Set(timeUTC,false);
1507 mocchiut 1.10 found = true;
1508 mocchiut 1.6 //
1509     };
1510     //
1511     if ( !strcmp(tzone.Data(),"CET") ){
1512     //
1513 mocchiut 1.11 UInt_t timeCET = time->Convert() - 60*60*1; // CET (Central European Time) - 1 hs = UTC
1514 mocchiut 1.6 time->Set(timeCET,false);
1515 mocchiut 1.10 found = true;
1516 mocchiut 1.6 //
1517     };
1518     //
1519     if ( !strcmp(tzone.Data(),"CEST") ){
1520     //
1521 mocchiut 1.11 UInt_t timeCEST = time->Convert() - 60*60*2; // CEST (Central European Summer Time) - 2 h = UTC
1522 mocchiut 1.6 time->Set(timeCEST,false);
1523 mocchiut 1.10 found = true;
1524 mocchiut 1.6 //
1525     };
1526     //
1527 mocchiut 1.10 if ( !strcmp(tzone.Data(),"MSD") || !strcmp(tzone.Data(),"MST") ){
1528 mocchiut 1.6 //
1529 mocchiut 1.11 UInt_t timeMSD = time->Convert() - 60*60*4; // MSD (Moscow Summer Time) - 4 h = UTC
1530 mocchiut 1.6 time->Set(timeMSD,false);
1531 mocchiut 1.10 found = true;
1532     //
1533     };
1534     //
1535 mocchiut 1.11 if ( !found && strcmp(tzone.Data(),"UTC") && strcmp(tzone.Data(),"GMT") && strcmp(tzone.Data(),"") ){
1536 mocchiut 1.6 //
1537 mocchiut 1.11 printf("\n Unknown time zone %s using UTC \n",tzone.Data());
1538     tzone = "UTC";
1539 mocchiut 1.6 };
1540     //
1541     rtime = time->AsSQLString();
1542     //
1543     return(rtime);
1544     }
1545 mocchiut 1.12
1546    
1547     // ****************************************************
1548     /**
1549     * Function to query the GL_TLE table of the DB.
1550     *
1551     * time is the unix time for which a good tle is requested.
1552     *
1553     * Return the pointer to a cTle object that has the closest and
1554     * previous date compared with time.
1555     *
1556     * If errors occurs it returns NULL.
1557     */
1558     cTle* GL_TLE::Query_GL_TLE(UInt_t time, TSQLServer *dbc){
1559     stringstream myquery;
1560     myquery.str("");
1561    
1562     myquery << "SELECT TLE1, TLE2, TLE3 FROM GL_TLE "
1563     << "WHERE FROM_TIME < FROM_UNIXTIME(" << time << ") ORDER BY FROM_TIME DESC LIMIT 1;";
1564    
1565    
1566     return Query_GL_TLE_go(myquery.str(), dbc);
1567     }
1568    
1569    
1570     // ****************************************************
1571     /**
1572     * Function to query the GL_TLE table of the DB.
1573     *
1574     * date is a datetime format YYYY-MM-DD hh:mm:ss for which a good tle
1575     * is requested.
1576     *
1577     * Return the pointer to a cTle object that has the closest and
1578     * previous date compared with time.
1579     *
1580     * If errors occurs it returns NULL.
1581     */
1582     cTle* GL_TLE::Query_GL_TLE(TString date, TSQLServer *dbc){
1583     stringstream myquery;
1584     myquery.str("");
1585    
1586     myquery << "SELECT TLE1, TLE2, TLE3 FROM GL_TLE "
1587     << "WHERE FROM_TIME < '" << date.Data() << "' ORDER BY FROM_TIME DESC LIMIT 1;";
1588    
1589    
1590     return Query_GL_TLE_go(myquery.str(), dbc);
1591     }
1592    
1593    
1594     // ****************************************************
1595     /**
1596     * Private function used by Query_GL_TLE methods.
1597     *
1598     * myquery is the query string.
1599     *
1600     * Return the pointer to a cTle object that has the closest and
1601     * previous date compared with time.
1602     *
1603     * If errors occurs it returns NULL.
1604     */
1605     cTle* GL_TLE::Query_GL_TLE_go(TString myquery, TSQLServer *dbc){
1606     cTle *tle;
1607     string tle1, tle2, tle3;
1608    
1609     // MySQL variables
1610     TSQLResult *result;
1611     TSQLRow *row;
1612    
1613     result = dbc->Query(myquery.Data());
1614     if(! result->GetRowCount() ) return NULL;
1615    
1616     row = result->Next();
1617     tle1 = row->GetField(0);
1618     tle2 = row->GetField(1);
1619     tle3 = row->GetField(2);
1620    
1621     tle = new cTle(tle1, tle2, tle3);
1622    
1623     delete result;
1624     delete row;
1625    
1626     return tle;
1627     }

  ViewVC Help
Powered by ViewVC 1.1.23