#include "DatabaseHandles.h" #include "GATS_DB.h" #include "GATS_Utilities.hpp" #include "Level1Data.h" #include "frost_point.h" #include "insert_profile_db.h" #include "fortranfunctions.h" #include #include #include using namespace gatsDBpp; using namespace GATS_Utilities; extern "C" void insert_l2_summary( char* l1ver, char* l2ver, double* exolock, int* pmcflag, int* cycle, float* z_abelout) { static int c__1 = 1; float dummy; // int pmcflag=0; std::string tableName("L2_Summary"); DatabaseHandles* handles = GetDatabaseHandles(); GATS_DBptr dbConn = handles->Get("Level2"); assert(dbConn); int event = ::gLevel1Data.EventNo(); int iorbit = ::gLevel1Data.OrbitNo(); std::cout << "z_abelout" << *z_abelout << std::endl; /* Check if we have an entry for this event if so we delete it */ std::string sql = "delete from "+ tableName + " where Event ="+ConvertToString(event); dbConn->Query(sql.c_str() ); /* Calculate 83 km time */ std::vector times = ::gLevel1Data.GetTimes(); //std::cout << " inser sidze " << times.size() << std::endl; std::vector alts = ::gLevel1Data.GetImpactAlts(); //std::cout << "alts size " << alts.size() << std::endl; int num1 = (int)times.size(); int num2 = 1; double x = 83.0, y; ::linerd_( &alts[0], ×[0], &x, &y, &num1, &num2) ; std::string time83km = "StartTime + Interval " + ConvertToString( (int)y) + " second"; std::vector < std::pair< std::string, ColData> > dataRow; dataRow.push_back( std::pair("Event", ColData(event) ) ); dataRow.push_back( std::pair("Orbit", ColData( ::gLevel1Data.OrbitNo() ) ) ); dataRow.push_back( std::pair("Mode", ColData( ::gLevel1Data.Mode() ) ) ); dataRow.push_back( std::pair("StartTime", ColData( ::gLevel1Data.StartTime() ) ) ); dataRow.push_back( std::pair("StopTime", ColData( ::gLevel1Data.EndTime()) ) ); dataRow.push_back( std::pair("Time83km", ColData(time83km,false ) ) ); dataRow.push_back( std::pair("Lat83km", ColData( ::gLevel1Data.Lat83() ) ) ); dataRow.push_back( std::pair("Lon83km", ColData( ::gLevel1Data.Lon83() ) ) ); dataRow.push_back( std::pair("PMCFlag", ColData( *pmcflag) ) ); dataRow.push_back( std::pair("ProcessDate", ColData( std::string("now()"), false) ) ); dataRow.push_back( std::pair("L1_Version", ColData( std::string(l1ver)) ) ); dataRow.push_back( std::pair("L2_Version", ColData( std::string(l2ver)) ) ); double lock = *exolock * 10800. / M_PI ; dataRow.push_back( std::pair("rel_hold", ColData( ( lock <=14.5) ? std::string("h") : std::string("r") ) ) ); dataRow.push_back( std::pair("FOV_Lock", ColData( lock ) ) ); dataRow.push_back( std::pair("LOS_Bearing", ColData( ::gLevel1Data.LOS_Bearing() ) ) ); dataRow.push_back( std::pair("RefT_TopAlt", ColData( *z_abelout) ) ); /* Insert the data into the database */ dbConn->InsertIntoTable(tableName.c_str(), dataRow ); }