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

Diff of /YodaProfiler/src/GLTables.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by pam-fi, Fri Sep 8 14:42:48 2006 UTC revision 1.12 by mocchiut, Tue Oct 17 15:20:04 2006 UTC
# Line 6  Line 6 
6   */   */
7  //  //
8  #include <sstream>  #include <sstream>
9    #include <iostream>
10  //  //
11  #include <TFile.h>  #include <TFile.h>
12  #include <TTree.h>  #include <TTree.h>
# Line 13  Line 14 
14  #include <PscuHeader.h>  #include <PscuHeader.h>
15  //  //
16  #include <GLTables.h>  #include <GLTables.h>
17    #include <cTle.h>
18  //  //
19  ClassImp(GL_TRK_CALIB);  ClassImp(GL_TRK_CALIB);
20  ClassImp(GL_RUN);  ClassImp(GL_RUN);
# Line 21  ClassImp(GL_PARAM); Line 23  ClassImp(GL_PARAM);
23  ClassImp(GL_S4_CALIB);  ClassImp(GL_S4_CALIB);
24  ClassImp(GL_CALO_CALIB);  ClassImp(GL_CALO_CALIB);
25  ClassImp(GL_TIMESYNC);  ClassImp(GL_TIMESYNC);
26    ClassImp(GL_TLE);
27  //  //
28  using namespace std;  using namespace std;
29    
# Line 155  GL_TIMESYNC::GL_TIMESYNC(){ Line 158  GL_TIMESYNC::GL_TIMESYNC(){
158    OBT0     = 0;    OBT0     = 0;
159    TIMESYNC = 0;    TIMESYNC = 0;
160    TYPE     = 0;    TYPE     = 0;
161  }// ****************************************************  }
162    
163    GL_TLE::GL_TLE(){
164    }
165    
166    // ****************************************************
167    
168  void GL_RUN::SetEV_FROM(UInt_t evfrom){  void GL_RUN::SetEV_FROM(UInt_t evfrom){
169    EV_FROM = evfrom;    EV_FROM = evfrom;
# Line 1114  UInt_t GL_TIMESYNC::DBpkt(UInt_t pkt_num Line 1121  UInt_t GL_TIMESYNC::DBpkt(UInt_t pkt_num
1121   * @param tzone Time Zone, can be UTC,GMT,CET,CEST,MSD default is MSK   * @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){  TString GL_TIMESYNC::ConvertTime(TString &tzone, UInt_t dbt){
1125    //    //
1126    TDatime *time = new TDatime();    TDatime *time = new TDatime();
1127    TString rtime;    TString rtime;
1128      Bool_t found = false;
1129    //    //
1130    time->Set(dbt,false); // MSK = Moscow Winter Time    time->Set(dbt,false); // UTC (Coordinated Universal Time)  
1131    //    //
1132    if ( !strcmp(tzone.Data(),"UTC") || !strcmp(tzone.Data(),"GMT") ){    if ( !strcmp(tzone.Data(),"MSK") || !strcmp(tzone.Data(),"MWT") ){
1133      //      //
1134      UInt_t timeUTC = time->Convert() - 60*60*3; // UTC (Coordinated Universal Time) = Moscow Winter Time - 3 hs      UInt_t timeMSK = time->Convert() + 60*60*3; // UTC (Coordinated Universal Time) + 3hs = Moscow Winter Time
1135      time->Set(timeUTC,false);      time->Set(timeMSK,false);
1136        found = true;
1137      //      //
1138    };    };
1139    //    //
1140    if ( !strcmp(tzone.Data(),"CET") ){    if ( !strcmp(tzone.Data(),"CET") ){
1141      //      //
1142      UInt_t timeCET = time->Convert() - 60*60*2; // CET (Central European Time) = Moscow Winter Time - 2 hs      UInt_t timeCET = time->Convert() + 60*60*1; // CET (Central European Time) = UTC + 1 hs
1143      time->Set(timeCET,false);      time->Set(timeCET,false);
1144        found = true;
1145      //      //
1146    };    };
1147    //    //
1148    if ( !strcmp(tzone.Data(),"CEST") ){    if ( !strcmp(tzone.Data(),"CEST") ){
1149      //      //
1150      UInt_t timeCEST = time->Convert() - 60*60*1; // CEST (Central European Summer Time) = Moscow Winter Time - 1 h      UInt_t timeCEST = time->Convert() + 60*60*2; // CEST (Central European Summer Time) = UTC + 2 h
1151      time->Set(timeCEST,false);      time->Set(timeCEST,false);
1152        found = true;
1153      //      //
1154    };    };
1155    //    //
1156    if ( !strcmp(tzone.Data(),"MSD") ){    if ( !strcmp(tzone.Data(),"MSD") || !strcmp(tzone.Data(),"MST")){
1157      //      //
1158      UInt_t timeMSD = time->Convert() + 60*60*1; // MSD (Moscow Summer Time) = Moscow Winter Time + 1 h      UInt_t timeMSD = time->Convert() + 60*60*4; // MSD (Moscow Summer Time) = UTC + 4 h
1159      time->Set(timeMSD,false);      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();    rtime = time->AsSQLString();
1170    //    //
1171    return(rtime);    return(rtime);
# Line 1162  TString GL_TIMESYNC::ConvertTime(TString Line 1179  TString GL_TIMESYNC::ConvertTime(TString
1179   * @param tzone Time Zone, can be UTC,GMT,CET,CEST,MSD default is MSK   * @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){  TString GL_TIMESYNC::UnConvertTime(TString &tzone, UInt_t dbt){
1183    //    //
1184    TDatime *time = new TDatime();    TDatime *time = new TDatime();
1185    TString rtime;    TString rtime;
1186    //    //
1187    time->Set(dbt,false); // MSK = Moscow Winter Time    Bool_t found = false;
1188    //    //
1189    if ( !strcmp(tzone.Data(),"UTC") || !strcmp(tzone.Data(),"GMT") ){    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) +3 hs = Moscow Winter Time      UInt_t timeUTC = time->Convert() - 60*60*3; // UTC (Coordinated Universal Time) = Moscow Winter Time - 3hs
1194      time->Set(timeUTC,false);      time->Set(timeUTC,false);
1195        found = true;
1196      //      //
1197    };    };
1198    //    //
1199    if ( !strcmp(tzone.Data(),"CET") ){    if ( !strcmp(tzone.Data(),"CET") ){
1200      //      //
1201      UInt_t timeCET = time->Convert() + 60*60*2; // CET (Central European Time) + 2 hs = Moscow Winter Time        UInt_t timeCET = time->Convert() - 60*60*1; // CET (Central European Time) - 1 hs = UTC  
1202      time->Set(timeCET,false);      time->Set(timeCET,false);
1203        found = true;
1204      //      //
1205    };    };
1206    //    //
1207    if ( !strcmp(tzone.Data(),"CEST") ){    if ( !strcmp(tzone.Data(),"CEST") ){
1208      //      //
1209      UInt_t timeCEST = time->Convert() + 60*60*1; // CEST (Central European Summer Time) + 1 h = Moscow Winter Time      UInt_t timeCEST = time->Convert() - 60*60*2; // CEST (Central European Summer Time) - 2 h = UTC
1210      time->Set(timeCEST,false);      time->Set(timeCEST,false);
1211        found = true;
1212      //      //
1213    };    };
1214    //    //
1215    if ( !strcmp(tzone.Data(),"MSD") ){    if ( !strcmp(tzone.Data(),"MSD") || !strcmp(tzone.Data(),"MST") ){
1216      //      //
1217      UInt_t timeMSD = time->Convert() - 60*60*1; // MSD (Moscow Summer Time) - 1 h = Moscow Winter Time      UInt_t timeMSD = time->Convert() - 60*60*4; // MSD (Moscow Summer Time) - 4 h = UTC
1218      time->Set(timeMSD,false);      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();    rtime = time->AsSQLString();
1230    //    //
1231    return(rtime);    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    }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.23