Improved error handling
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 27 Oct 2007 08:14:41 +0000 (08:14 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 27 Oct 2007 08:14:41 +0000 (08:14 +0000)
(Laurent)

MUON/AliMUONPreprocessor.h
MUON/AliMUONTriggerIO.cxx
MUON/AliMUONTriggerSubprocessor.cxx

index f0bdfe0..dc51b1a 100644 (file)
@@ -54,6 +54,9 @@ public:
   /// Whether we can be used (e.g. whether we were properly initialized)
   Bool_t IsValid() const { return fIsValid; }
   
+  /// Mark as invalid
+  void Invalidate() { fIsValid = kFALSE; }
+  
 protected:
   AliMUONPreprocessor(const char* detName, AliShuttleInterface* shuttle);
   virtual ~AliMUONPreprocessor();
index 94f369d..faca3d3 100644 (file)
@@ -318,7 +318,7 @@ AliMUONTriggerIO::ReadLUT(const char* lutFileToRead, AliMUONTriggerLut& lut)
   FILE* flut = fopen(gSystem->ExpandPathName(lutFileToRead),"rb");
   if (!flut) 
   {
-    AliError(Form("Could not create output LUT file %s",lutFileToRead));
+    AliError(Form("Could not read LUT file %s",lutFileToRead));
     return kFALSE;
   }   
   
index 6bc32de..a0b74ae 100644 (file)
@@ -87,13 +87,42 @@ AliMUONTriggerSubprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTi
 {
   /// When starting a new run, reads in the trigger online files.
   
+  // First thing to do (after cleanup, that is), is to check whether the DA
+  // was alive or not. If it was, it should have put the "MtgCurrent.dat" file
+  // on the FXS. 
+  //
+  
+  Bool_t da(kTRUE);
+  
+  TString current(gSystem->ExpandPathName(GetFileName("CURRENT").Data()));
+  
+  if ( current == "" ) 
+  {
+    Master()->Log("CURRENT file not specified");
+    da = kFALSE;
+  }
+  
+  if ( gSystem->AccessPathName(current.Data(),kFileExists) ) // mind the strange return value convention of that method !
+  {
+    Master()->Log(Form("%s is not there !",current.Data()));
+    da = kFALSE;
+  }
+  
+  if (!da)
+  {
+    Master()->Log("FATAL ERROR : DA does not seem to have been run !!!");
+    Master()->Invalidate();
+    return;
+  }
+  
+  delete fRegionalMasks; fRegionalMasks = 0x0;
+  delete fLocalMasks; fLocalMasks = 0x0;
+  delete fGlobalMasks; fGlobalMasks = 0x0;
+  delete fLUT; fLUT = 0x0;
+  
   Master()->Log(Form("Reading trigger masks for Run %d startTime %ld endTime %ld",
                      run,startTime,endTime));
     
-  delete fRegionalMasks;
-  delete fLocalMasks;
-  delete fGlobalMasks;
-  
   fRegionalMasks = new AliMUON1DArray(16);
   fLocalMasks = new AliMUON1DArray(AliMpConstants::NofLocalBoards()+1);
   fGlobalMasks = 0x0; // new AliMUONCalibParamNI(1,16,1,0,0);
@@ -116,13 +145,12 @@ AliMUONTriggerSubprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTi
     fGlobalMasks = 0x0;
   }
 
-  delete fLUT;
   fLUT = new AliMUONTriggerLut;
     
   Master()->Log(Form("Reading trigger LUT for Run %d startTime %ld endTime %ld",
                      run,startTime,endTime));
   
-  tio.ReadLUT(GetFileName("LUT").Data(),*fLUT);
+  ok = tio.ReadLUT(GetFileName("LUT").Data(),*fLUT);
 
   if (!ok)
   {