/*
$Log$
+Revision 1.17 2007/08/28 16:03:30 acolla
+Restored to v1.14:
+
+
+Function Bool_t GetHLTStatus() added to preprocessor interface. It will return
+the status of HLT read from the run logbook.
+
+Revision 1.16 2007/08/22 09:20:50 hristov
+Updated QA classes (Yves)
+
+Revision 1.14 2007/05/30 06:35:21 jgrosseo
+Adding functionality to the Shuttle/TestShuttle:
+o) Function to retrieve list of sources from a given system (GetFileSources with id=0)
+o) Function to retrieve list of IDs for a given source (GetFileIDs)
+These functions are needed for dealing with the tag files that are saved for the GRP preprocessor
+Example code has been added to the TestProcessor in TestShuttle
+
+Revision 1.13 2007/04/12 08:26:33 jgrosseo
+updated commment
+
+Revision 1.12 2007/04/05 08:05:55 acolla
+Conversion from online to offline detector name in StoreReferenceFile
+
Revision 1.11 2007/04/04 10:29:18 jgrosseo
1) Storing of files to the Grid is now done _after_ your preprocessors succeeded. This is transparent, which means that you can still use the same functions (Store, StoreReferenceData) to store files to the Grid. However, the Shuttle first stores them locally and transfers them after the preprocessor finished. The return code of these two functions has changed from UInt_t to Bool_t which gives you the success of the storing.
In case of an error with the Grid, the Shuttle will retry the storing later, the preprocessor does not need to be run again.
#include "AliPreprocessor.h"
#include <TString.h>
-#include <TList.h>
#include <TMap.h>
+#include <TObjString.h>
#include "AliLog.h"
#include "AliCDBMetaData.h"
fRun(-1),
fStartTime(0),
fEndTime(0),
- fShuttle(shuttle)
+ fShuttle(shuttle),
+ fRunTypes()
{
SetTitle(Form("AliPreprocessor for %s subdetector.", detector));
}
fShuttle->RegisterPreprocessor(this);
+
+ fRunTypes.SetOwner(kTRUE);
}
//______________________________________________________________________________________________
//
// Stores a file directly (without opening it) in the reference storage in the Grid
//
+ // The file is stored under the following location:
+ // <base folder of reference storage>/<DET>/<RUN#>_<gridFileName>
+ // where <gridFileName> is the second parameter given to the function
+ //
// The call is delegated to AliShuttleInterface
const char* offlineDetName = AliShuttleInterface::GetOfflineDetName(GetName());
if(!offlineDetName) return 0;
return fShuttle->StoreReferenceFile(GetName(), localFile, gridFileName);
}
+
+//______________________________________________________________________________________________
+Bool_t AliPreprocessor::StoreRunMetadataFile(const char* localFile, const char* gridFileName)
+{
+ //
+ // Stores Run metadata file to the Grid, in the run folder
+ //
+ // Only GRP can call this function.
+
+ TString detName(GetName());
+ if (detName != "GRP")
+ {
+ Log("StoreRunMetadataFile - Only GRP can call this function.");
+ return kFALSE;
+ }
+ return fShuttle->StoreRunMetadataFile(localFile, gridFileName);
+}
//______________________________________________________________________________________________
const char* AliPreprocessor::GetFile(Int_t system, const char* id, const char* source)
TList* AliPreprocessor::GetFileSources(Int_t system, const char* id)
{
// Returns a list of sources in a given system that saved a file with the given id
+ // if id is not given all sources are returned
//
// The call is delegated to AliShuttleInterface
return fShuttle->GetFileSources(system, GetName(), id);
}
+//______________________________________________________________________________________________
+TList* AliPreprocessor::GetFileIDs(Int_t system, const char* source)
+{
+ // Returns a list of ids in a given system that saved a file with the given source
+ //
+ // The call is delegated to AliShuttleInterface
+
+ return fShuttle->GetFileIDs(system, GetName(), source);
+}
+
//______________________________________________________________________________________________
void AliPreprocessor::Log(const char* message)
{
return fShuttle->GetRunType();
}
+
+//______________________________________________________________________________________________
+Bool_t AliPreprocessor::GetHLTStatus()
+{
+ // Return HLT status (ON or OFF)
+ // Converts the HLT status from the status string read in the run logbook (not just a bool)
+ // The call is delegated to AliShuttleInterface
+
+ return fShuttle->GetHLTStatus();
+
+}
+
+//______________________________________________________________________________________________
+const char* AliPreprocessor::GetTriggerConfiguration()
+{
+ // Returns the trigger configuration which is read from a table in the DAQ logbook
+ // The call is delegated to AliShuttleInterface
+ // Only GRP can call this function.
+
+ TString detName(GetName());
+ if (detName != "GRP")
+ {
+ Log("GetTriggerConfiguration - Only GRP can call this function.");
+ return 0;
+ }
+
+ return fShuttle->GetTriggerConfiguration();
+}
+
+//______________________________________________________________________________________________
+void AliPreprocessor::AddRunType(const char* runType)
+{
+ // adds the given run type to the list of run types that are processed
+ // this function should be called in the constructor of the derived preprocessor
+
+ if (!runType)
+ return;
+
+ fRunTypes.Add(new TObjString(runType));
+}
+
+//______________________________________________________________________________________________
+Bool_t AliPreprocessor::AliPreprocessor::ProcessRunType()
+{
+ // searches for the current run type in the list of run types that are processed by this
+ // preprocessor. The list is populated by AddRunType
+
+ const char* runType = GetRunType();
+
+ Log(Form("Checking if run type %s is in the list of run types to be processed by this preprocessor...", runType));
+
+ if (fRunTypes.GetEntries() == 0)
+ Log("WARNING! There are no run types defined. This preprocessor will never run.");
+
+ if (fRunTypes.FindObject(runType))
+ {
+ Log("Run type found. Processing this run.");
+ return kTRUE;
+ }
+
+ Log("Run type not found. Skipping this run.");
+ return kFALSE;
+}