Adding list of run types that are processed by this preprocessor
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 20 Mar 2008 16:12:46 +0000 (16:12 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 20 Mar 2008 16:12:46 +0000 (16:12 +0000)
STEER/AliPreprocessor.cxx
STEER/AliPreprocessor.h

index 1aebad7..7b36361 100644 (file)
@@ -130,8 +130,8 @@ some docs added
 #include "AliPreprocessor.h"
 
 #include <TString.h>
-#include <TList.h>
 #include <TMap.h>
+#include <TObjString.h>
 
 #include "AliLog.h"
 #include "AliCDBMetaData.h"
@@ -149,7 +149,8 @@ AliPreprocessor::AliPreprocessor(const char* detector, AliShuttleInterface* shut
   fRun(-1),
   fStartTime(0),
   fEndTime(0),
-  fShuttle(shuttle)
+  fShuttle(shuttle),
+  fRunTypes()
 {
        SetTitle(Form("AliPreprocessor for %s subdetector.", detector));
 
@@ -160,6 +161,8 @@ AliPreprocessor::AliPreprocessor(const char* detector, AliShuttleInterface* shut
   }
 
   fShuttle->RegisterPreprocessor(this);
+  
+  fRunTypes.SetOwner(kTRUE);
 }
 
 //______________________________________________________________________________________________
@@ -353,3 +356,38 @@ Bool_t AliPreprocessor::GetHLTStatus()
   return fShuttle->GetHLTStatus();
 
 }
+    
+//______________________________________________________________________________________________
+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;
+}
index fb08a0f..2b15131 100644 (file)
@@ -14,8 +14,8 @@
 //
 
 #include <TNamed.h>
+#include <TList.h>
 
-class TList;
 class TMap;
 
 class AliCDBMetaData;
@@ -26,7 +26,7 @@ class AliPreprocessor : public TNamed
 {
   public:
 
-    enum { kDAQ, kDCS, kHLT };
+    enum { kDAQ = 0, kDCS, kHLT };
 
     AliPreprocessor(const char* detector, AliShuttleInterface* shuttle);
     virtual ~AliPreprocessor();
@@ -35,7 +35,8 @@ class AliPreprocessor : public TNamed
     virtual UInt_t Process(TMap* dcsAliasMap) = 0;
    
     virtual Bool_t ProcessDCS() { return kTRUE; }
+    Bool_t ProcessRunType();
+  
   protected:
     Bool_t Store(const char* pathLevel2, const char* pathLevel3, TObject* object,
                AliCDBMetaData* metaData, Int_t validityStart = 0, Bool_t validityInfinite = kFALSE);
@@ -52,6 +53,8 @@ class AliPreprocessor : public TNamed
     const char* GetRunType();
     Bool_t GetHLTStatus();
     void Log(const char* message);
+    
+    void AddRunType(const char* runType);
 
     Int_t fRun;         // current run
     UInt_t fStartTime;  // starttime of current run
@@ -61,6 +64,8 @@ class AliPreprocessor : public TNamed
     AliPreprocessor(const AliPreprocessor & source);
     AliPreprocessor & operator=(const AliPreprocessor & source);
     AliShuttleInterface* fShuttle;   // link to Shuttle
+    
+    TList fRunTypes;    // list of run types that are processed by this preprocessor
 
     ClassDef(AliPreprocessor, 0);
 };