]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - SHUTTLE/AliShuttle.cxx
Updating DP list for simulation.
[u/mrichter/AliRoot.git] / SHUTTLE / AliShuttle.cxx
index 17f234ce7ed5f3241107d2cf4845e0612d967775..1da5fb43038a30de70d1b364dc3431585995d29f 100644 (file)
@@ -870,7 +870,7 @@ const char* AliShuttle::GetRefFilePrefix(const char* base, const char* detector)
        //
 
        TString offDetStr(GetOfflineDetName(detector));
-       TString dir;
+       static TString dir;
        if (offDetStr == "ITS" || offDetStr == "MUON" || offDetStr == "PHOS")
        {
                dir.Form("%s/%s/%s", base, offDetStr.Data(), detector);
@@ -879,8 +879,6 @@ const char* AliShuttle::GetRefFilePrefix(const char* base, const char* detector)
        }
        
        return dir.Data();
-       
-
 }
 
 //______________________________________________________________________________________________
@@ -1939,7 +1937,7 @@ Bool_t AliShuttle::QueryShuttleLogbook(const char* whereClause,
        }
 
        // TODO Check field count!
-       const UInt_t nCols = 25;
+       const UInt_t nCols = 26;
        if (aResult->GetFieldCount() != (Int_t) nCols) {
                Log("SHUTTLE", "Invalid SQL result field number!");
                delete aResult;
@@ -3318,6 +3316,7 @@ Bool_t AliShuttle::SendMail(EMailTarget target, Int_t system)
                body = Form("Dear  %s FXS experts, \n\n",sys.Data());
                body += Form("SHUTTLE couldn\'t retrieve data from the FXS for detector %s "
                             "in run %d!!\n\n", fCurrentDetector.Data(), GetCurrentRun());
+               body += Form("The contacted server was:\nDB: %s\nFXS:%s\n\n", fConfig->GetFXSdbHost(system), fConfig->GetFXSHost(system));
        }
        else {
                subject = Form("%s %s Shuttle preprocessor FAILED in run %d (run type = %s)!",
@@ -3477,6 +3476,100 @@ const char* AliShuttle::GetTriggerConfiguration()
        return triggerConfig;
 }
 
+//______________________________________________________________________________________________
+const char* AliShuttle::GetCTPTimeParams()
+{
+       // Receives the CTP time parameters from the DAQ logbook for the current run
+       
+       // check connection, if needed reconnect
+       if (!Connect(3)) 
+               return 0;
+
+       TString sqlQuery;
+       sqlQuery.Form("SELECT alignmentFile FROM logbook_trigger_config WHERE run = %d", GetCurrentRun());
+       TSQLResult* result = fServer[3]->Query(sqlQuery);
+       if (!result)
+       {
+               Log("SHUTTLE", Form("ERROR: Can't execute query <%s>!", sqlQuery.Data()));
+               return 0;
+       }
+       
+       if (result->GetRowCount() == 0)
+       {
+               Log("SHUTTLE", "ERROR: CTP time params not found in logbook_trigger_config");
+               delete result;
+               return 0;
+       }
+       
+       TSQLRow* row = result->Next();
+       if (!row)
+       {
+               Log("SHUTTLE", "ERROR: Could not receive logbook_trigger_config data");
+               delete result;
+               return 0;
+       }
+
+       // static, so that pointer remains valid when it is returned to the calling class       
+       static TString triggerTimeParams(row->GetField(0));
+       
+       delete row;
+       row = 0;
+       
+       delete result;
+       result = 0;
+       
+       Log("SHUTTLE", Form("Found trigger time parameters: %s", triggerTimeParams.Data()));
+       
+       return triggerTimeParams;
+}
+
+//______________________________________________________________________________________________
+const char* AliShuttle::GetTriggerDetectorMask()
+{
+       // Receives the trigger detector mask from DAQ logbook
+       
+       // check connection, if needed reconnect
+       if (!Connect(3)) 
+               return 0;
+
+       TString sqlQuery;
+       sqlQuery.Form("SELECT BIN(BIT_OR(inputDetectorMask)) from logbook_trigger_clusters WHERE run = %d;", GetCurrentRun());
+       TSQLResult* result = fServer[3]->Query(sqlQuery);
+       if (!result)
+       {
+               Log("SHUTTLE", Form("ERROR: Can't execute query <%s>!", sqlQuery.Data()));
+               return 0;
+       }
+       
+       if (result->GetRowCount() == 0)
+       {
+               Log("SHUTTLE", "ERROR: Trigger Detector Mask not found in logbook_trigger_clusters");
+               delete result;
+               return 0;
+       }
+       
+       TSQLRow* row = result->Next();
+       if (!row)
+       {
+               Log("SHUTTLE", "ERROR: Could not receive logbook_trigger_clusters data");
+               delete result;
+               return 0;
+       }
+
+       // static, so that pointer remains valid when it is returned to the calling class       
+       static TString triggerDetectorMask(row->GetField(0));
+       
+       delete row;
+       row = 0;
+       
+       delete result;
+       result = 0;
+       
+       Log("SHUTTLE", Form("Found Trigger Detector Mask: %s", triggerDetectorMask.Data()));
+       
+       return triggerDetectorMask;
+}
+
 //______________________________________________________________________________________________
 void AliShuttle::SetShuttleTempDir(const char* tmpDir)
 {