Adding check for correct initialization:
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Oct 2007 17:02:46 +0000 (17:02 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Oct 2007 17:02:46 +0000 (17:02 +0000)
do not process subprocessors if initialization failed.
(Laurent)

MUON/AliMUONPreprocessor.cxx
MUON/AliMUONPreprocessor.h

index 5c91fd0..cb3a854 100644 (file)
@@ -48,7 +48,8 @@ ClassImp(AliMUONPreprocessor)
 AliMUONPreprocessor::AliMUONPreprocessor(const char* detName, AliShuttleInterface* shuttle)
 : AliPreprocessor(detName, shuttle),
   fSubprocessors(new TObjArray()),
-  fProcessDCS(kFALSE)
+  fProcessDCS(kFALSE),
+  fIsValid(kFALSE)
 {
   /// ctor
 }
@@ -67,6 +68,7 @@ AliMUONPreprocessor::ClearSubprocessors()
   /// Empty our subprocessor list
   fSubprocessors->Clear();
   fProcessDCS = kFALSE;
+  fIsValid = kFALSE;
 }
 
 //_____________________________________________________________________________
@@ -82,20 +84,37 @@ AliMUONPreprocessor::Add(AliMUONVSubprocessor* sub, Bool_t processDCS)
 void
 AliMUONPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
 {
-/// Load mapping and initialize subtasks  
+  /// Load mapping and initialize subtasks  
 
   // Delete previous mapping
   delete AliMpSegmentation::Instance(false);
   delete AliMpDDLStore::Instance(false);
   
   // Load mapping from CDB for this run
-  GetFromOCDB("Calib", "Mapping");
-  GetFromOCDB("Calib", "DDLStore");
+  
+  fIsValid = kTRUE;
+  
+  AliCDBEntry* e = GetFromOCDB("Calib", "Mapping");
+  if (!e)
+  {
+    Log("Could not get Mapping from OCDB !");
+    fIsValid = kFALSE;
+  }
+  
+  e = GetFromOCDB("Calib", "DDLStore");
+  if (!e)
+  {
+    Log("Could not get DDLStore from OCDB");
+    fIsValid = kFALSE;
+  }
 
-  // loop over subtasks and initialize them
-  for ( Int_t i = 0; i <= fSubprocessors->GetLast(); ++i )
+  if (IsValid())
   {
-    Subprocessor(i)->Initialize(run,startTime,endTime);
+    // loop over subtasks and initialize them
+    for ( Int_t i = 0; i <= fSubprocessors->GetLast(); ++i )
+    {
+      Subprocessor(i)->Initialize(run,startTime,endTime);
+    }
   }
 }
 
@@ -104,12 +123,20 @@ UInt_t
 AliMUONPreprocessor::Process(TMap* dcsAliasMap)
 {
   /// loop over subtasks to make them work
+  
+  if (!IsValid())
+  {
+    Log("Will not run as not properly initialized");
+    return 99;
+  }
+  
   UInt_t rv(0);
   
   for ( Int_t i = 0; i <= fSubprocessors->GetLast(); ++i )
   {
     rv += Subprocessor(i)->Process(dcsAliasMap);
   }
+  
   return rv;
 }
 
index b884e82..6ec375f 100644 (file)
@@ -51,6 +51,9 @@ public:
     return AliPreprocessor::GetFile(system,id,source);
   }  
   
+  /// Whether we can be used (e.g. whether we were properly initialized)
+  Bool_t IsValid() const { return fIsValid; }
+  
 protected:
   AliMUONPreprocessor(const char* detName, AliShuttleInterface* shuttle);
   virtual ~AliMUONPreprocessor();
@@ -70,8 +73,9 @@ private:
 
   TObjArray* fSubprocessors; //!< sub processors to execute
   Bool_t fProcessDCS; //!< whether the current subprocessor(s) needs DCS or not
+  Bool_t fIsValid; //!< whether we were correctly initialized
   
-  ClassDef(AliMUONPreprocessor,2) // MUON Shuttle preprocessor
+  ClassDef(AliMUONPreprocessor,3) // MUON Shuttle preprocessor
 };
 
 #endif