]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - SHUTTLE/AliShuttle.cxx
possibility to exclude events with SDD clusters plus a fix on the histogram filling...
[u/mrichter/AliRoot.git] / SHUTTLE / AliShuttle.cxx
index a804d77acaec0abd32bdc330a75730790ed72698..98272697fef5d7f97a876048553b39109296a814 100644 (file)
@@ -1106,7 +1106,7 @@ Bool_t AliShuttle::ContinueProcessing()
                if (fTestMode == kNone)
                {
                        Log("SHUTTLE", Form("ContinueProcessing - %s requires strict run ordering"
-                                       " but this is not the first unprocessed run!"));
+                                           " but this is not the first unprocessed run!",fCurrentDetector.Data()));
                        return kFALSE;
                }
                else
@@ -1114,7 +1114,7 @@ Bool_t AliShuttle::ContinueProcessing()
                        Log("SHUTTLE", Form("ContinueProcessing - In TESTMODE - "
                                        "Although %s requires strict run ordering "
                                        "and this is not the first unprocessed run, "
-                                       "the SHUTTLE continues"));
+                                           "the SHUTTLE continues",fCurrentDetector.Data()));
                }
        }
 
@@ -1443,7 +1443,7 @@ Bool_t AliShuttle::Process(AliShuttleLogbookEntry* entry)
                                                // in case the pp goes in TimeOut while retrieving the DCS DPs
                                                // set status to kDCSError
                                                
-                                               logMsg.Form("Process - Process of %s timed out while retrieving the DCS DataPoints. Run time: %d seconds. Killing... and setting status to DCSError.",
+                                               logMsg.Form("Process - Process of %s timed out while retrieving the DCS DataPoints. Run time: %ld seconds. Killing... and setting status to DCSError.",
                                                                fCurrentDetector.Data(), expiredTime);
                                                newStatus = AliShuttleStatus::kDCSError;
                                        }
@@ -1451,7 +1451,7 @@ Bool_t AliShuttle::Process(AliShuttleLogbookEntry* entry)
                                        {
                                                // in case pp not yet done set status to kPPTimeOut
                                        
-                                               logMsg.Form("Process - Process of %s timed out. Run time: %d seconds. Killing...",
+                                               logMsg.Form("Process - Process of %s timed out. Run time: %ld seconds. Killing...",
                                                                fCurrentDetector.Data(), expiredTime);
                                                newStatus = AliShuttleStatus::kPPTimeOut;
                                        }
@@ -1460,7 +1460,7 @@ Bool_t AliShuttle::Process(AliShuttleLogbookEntry* entry)
                                                // in case the pp goes in TimeOut while storing the objects in the OCDB
                                                // set status to kStoreError
                                                
-                                               logMsg.Form("Process - Process of %s timed out while storing the OCDB object. Run time: %d seconds. Killing... and setting status to StoreError.",
+                                               logMsg.Form("Process - Process of %s timed out while storing the OCDB object. Run time: %ld seconds. Killing... and setting status to StoreError.",
                                                                fCurrentDetector.Data(), expiredTime);
                                                newStatus = AliShuttleStatus::kStoreError;
                                        }
@@ -1468,7 +1468,7 @@ Bool_t AliShuttle::Process(AliShuttleLogbookEntry* entry)
                                        {
                                                // in other cases don't change the status
                                                
-                                               logMsg.Form("Process - Process of %s timed out in status = %s. Run time: %d seconds. Killing... without changing the status",
+                                               logMsg.Form("Process - Process of %s timed out in status = %s. Run time: %ld seconds. Killing... without changing the status",
                                                                fCurrentDetector.Data(), currentStatus->GetStatusName(), expiredTime);
                                        }
                                
@@ -1499,7 +1499,7 @@ Bool_t AliShuttle::Process(AliShuttleLogbookEntry* entry)
                                        if (expiredTime % 60 == 0)
                                        {
                                                Log("SHUTTLE", Form("Process - %s: Checking process. "
-                                                       "Run time: %d seconds - Memory consumption: %d KB",
+                                                       "Run time: %ld seconds - Memory consumption: %d KB",
                                                        fCurrentDetector.Data(), expiredTime, mem));
                                                SendAlive();
                                        }
@@ -1555,6 +1555,9 @@ Bool_t AliShuttle::Process(AliShuttleLogbookEntry* entry)
                                        Log("SHUTTLE", "Process - Could not redirect stderr");
                                
                        }
+
+                       Log("SHUTTLE", "Executing TGrid::Connect");
+                       TGrid::Connect("alien://");
                        
                        TString wd = gSystem->WorkingDirectory();
                        Int_t dir_lev1 = GetCurrentRun()/10000;
@@ -2043,6 +2046,8 @@ AliShuttleLogbookEntry* AliShuttle::QueryRunParameters(Int_t run)
        Bool_t ecsSuccess = entry->GetECSSuccess();
        TString runType = entry->GetRunType();
        TString tmpdaqstartTime = entry->GetRunParameter("DAQ_time_start");
+       TString recordingFlagString = entry->GetRunParameter("GDCmStreamRecording");
+       UInt_t recordingFlag = recordingFlagString.Atoi();
        UInt_t daqstartTime = tmpdaqstartTime.Atoi();
        
        UInt_t now = time(0);
@@ -2059,21 +2064,27 @@ AliShuttleLogbookEntry* AliShuttle::QueryRunParameters(Int_t run)
                        if (endTime >= now - dcsDelay) {
                                Log("SHUTTLE", Form("Skipping run %d for now, because DCS buffer time is not yet expired", run));
                        } else {
-                               if (runType == "PHYSICS") {
-                                       if (ecsSuccess) {
-                                               return entry;
-                                       } else {
-                                               Log("SHUTTLE", Form("QueryRunParameters - Run type for run %d is PHYSICS but ECS success flag not set (Reason = %s) - Skipping!", run, entry->GetRunParameter("eor_reason")));
-                                               skip = kTRUE;
-                                       } 
-                               } else {
-                                       if (ecsSuccess || daqstartTime > 0) {
-                                               if (ecsSuccess == kFALSE)
-                                                       Log("SHUTTLE", Form("Processing run %d although in status ECS failure (Reason: %s), since run type != PHYSICS and DAQ_time_start != 0", run, entry->GetRunParameter("eor_reason")));
-                                               return entry;
+                               if ((runType == "PHYSICS" || runType == "STANDALONE") && recordingFlag == 0){
+                                       Log("SHUTTLE", Form("QueryRunParameters - Run type for run %d is %s but the recording is OFF - Skipping!", run, runType.Data()));
+                                       skip = kTRUE;
+                               } 
+                               else {
+                                       if (runType == "PHYSICS") {
+                                               if (ecsSuccess) {
+                                                       return entry;
+                                               } else {
+                                                       Log("SHUTTLE", Form("QueryRunParameters - Run type for run %d is PHYSICS but ECS success flag not set (Reason = %s) - Skipping!", run, entry->GetRunParameter("eor_reason")));
+                                                       skip = kTRUE;
+                                               } 
                                        } else {
-                                               Log("SHUTTLE", Form("QueryRunParameters - Run type for run %d is %s, ECS success flag was not set (Reason = %s) and DAQ_time_start was NULL - Skipping!", run, runType.Data(), entry->GetRunParameter("eor_reason")));
-                                               skip = kTRUE;
+                                               if (ecsSuccess || daqstartTime > 0) {
+                                                       if (ecsSuccess == kFALSE)
+                                                               Log("SHUTTLE", Form("Processing run %d although in status ECS failure (Reason: %s), since run type != PHYSICS and DAQ_time_start != 0", run, entry->GetRunParameter("eor_reason")));
+                                                       return entry;
+                                               } else {
+                                                       Log("SHUTTLE", Form("QueryRunParameters - Run type for run %d is %s, ECS success flag was not set (Reason = %s) and DAQ_time_start was NULL - Skipping!", run, runType.Data(), entry->GetRunParameter("eor_reason")));
+                                                       skip = kTRUE;
+                                               }
                                        }
                                }
                        }
@@ -2689,8 +2700,8 @@ Bool_t AliShuttle::UpdateTable()
 
                        delete aFXSarray;
 
-                       TString sqlQuery = Form("update %s set time_processed=%d %s", fConfig->GetFXSdbTable(system),
-                                                               now.GetSec(), whereClause.Data());
+                       TString sqlQuery = Form("update %s set time_processed=%ld %s", fConfig->GetFXSdbTable(system),
+                                               (ULong_t)now.GetSec(), whereClause.Data());
 
                        AliDebug(2, Form("SQL query: \n%s",sqlQuery.Data()));
 
@@ -2745,8 +2756,8 @@ Bool_t AliShuttle::UpdateTableSkippedCase(const char* detector)
 
                //Log("SHUTTLE",Form(" whereClause = %s ",whereClause.Data()));
 
-               TString sqlQuery = Form("update %s set time_processed=%d %s", fConfig->GetFXSdbTable(system),
-                                       now.GetSec(), whereClause.Data());
+               TString sqlQuery = Form("update %s set time_processed=%ld %s", fConfig->GetFXSdbTable(system),
+                                       (ULong_t)now.GetSec(), whereClause.Data());
 
                AliDebug(2, Form("SQL query: \n%s",sqlQuery.Data()));
 
@@ -2794,8 +2805,8 @@ Bool_t AliShuttle::UpdateTableFailCase()
                                                GetCurrentRun(), fCurrentDetector.Data());
 
 
-               TString sqlQuery = Form("update %s set time_processed=%d %s", fConfig->GetFXSdbTable(system),
-                                                       now.GetSec(), whereClause.Data());
+               TString sqlQuery = Form("update %s set time_processed=%ld %s", fConfig->GetFXSdbTable(system),
+                                       (ULong_t)now.GetSec(), whereClause.Data());
 
                AliDebug(2, Form("SQL query: \n%s",sqlQuery.Data()));
 
@@ -2938,7 +2949,7 @@ const char* AliShuttle::GetLHCPeriod() const
 }
 
 //______________________________________________________________________________________________
-void AliShuttle::Log(const char* detector, const char* message)
+void AliShuttle::Log(const char* detector, const char* message, UInt_t level)
 {
        //
        // Fill log string with a message
@@ -2965,7 +2976,7 @@ void AliShuttle::Log(const char* detector, const char* message)
                toLog += Form("run %d - ", GetCurrentRun());
        toLog += Form("%s", message);
 
-       AliInfo(toLog.Data());
+       AliLog::Message(level, toLog, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__);
        
        // if we redirect the log output already to the file, leave here
        if (fOutputRedirected && strcmp(detector, "SHUTTLE") != 0)
@@ -3724,4 +3735,64 @@ UInt_t AliShuttle::GetEndTimeDCSQuery()
 
        return GetCurrentEndTime()+fConfig->GetDCSQueryOffset();
 }
+//______________________________________________________________________________________________
+void AliShuttle::SendMLFromDet(const char* value)
+{
+       // 
+       // Sending an information coming from the current detector to ML
+       //
+       
+       TMonaLisaText  mlText(Form("%s_RunCondition", fCurrentDetector.Data()), value);
+
+       TList mlList;
+       mlList.Add(&mlText);
+
+       TString mlID;
+       mlID.Form("%d", GetCurrentRun());
+       fMonaLisa->SendParameters(&mlList, mlID);
+
+       return;
+}
+//______________________________________________________________________________________________
+TString* AliShuttle::GetLTUConfig(const char* det)
+{
+       // 
+       // Getting ltuFineDelay1, ltuFineDelay2, ltuBCDelay for detector det from logbook_detectors table in logbook
+       //
+       
+       if (!Connect(3)) 
+               return 0;
+
+       TString sqlQuery;
+       sqlQuery.Form("select LTUFineDelay1, LTUFineDelay2, LTUBCDelayAdd from logbook_detectors WHERE run_number = %d and detector = \"%s\";", GetCurrentRun(),det);
 
+       TSQLResult* result = fServer[3]->Query(sqlQuery);
+       if (!result){
+               Log("SHUTTLE","ERROR: No result found for the LTU configuration query");
+               return 0x0;
+       }
+       if (result->GetRowCount() == 0){
+               Log("SHUTTLE",Form("ERROR: LTU configuration not found in logbook_detectors for detector %s, returning null pointer",det));
+               delete result;
+               return 0x0;
+       }
+       if (result->GetFieldCount() != 3){
+               Log("SHUTTLE",Form("ERROR: not all the required fields are there for the LTU configuration for detector %s (only %d found), returning a null pointer",det, result->GetFieldCount()));
+               delete result;
+               return 0x0;
+       }
+       TSQLRow* row = result->Next();
+       if (!row){
+               Printf("ERROR: Could not receive logbook_detectors data, returning null pointer");
+               delete result;
+               return 0x0;
+       }
+       TString* ltuConfigString = new TString[3];
+
+       ltuConfigString[0] = row->GetField(0);
+       ltuConfigString[1] = row->GetField(1);
+       ltuConfigString[2] = row->GetField(2);
+
+       return ltuConfigString;
+
+}