]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONGMSSubprocessor.cxx
Updated list of MUON libraries
[u/mrichter/AliRoot.git] / MUON / AliMUONGMSSubprocessor.cxx
index 3409188d8066d6a6f47305e33aca0e0551fd87a7..027d1275bd7194de572ba392c03c9011764a3655 100644 (file)
 #include "AliMUONPreprocessor.h"
 
 #include "AliCDBMetaData.h"
-#include "AliLog.h"
 
 #include <TTimeStamp.h>
 #include <TFile.h>
 #include <TClonesArray.h>
+#include <TObjString.h>
 #include <Riostream.h>
 
+/// \cond CLASSIMP
 ClassImp(AliMUONGMSSubprocessor)
+/// \endcond
 
 const Int_t    AliMUONGMSSubprocessor::fgkSystem = AliPreprocessor::kDAQ;
 const TString  AliMUONGMSSubprocessor::fgkDataId = "GMS";
 const TString  AliMUONGMSSubprocessor::fgkMatrixArrayName = "GMSarray";
 
-//______________________________________________________________________________________________
+//______________________________________________________________________________
 AliMUONGMSSubprocessor::AliMUONGMSSubprocessor(AliMUONPreprocessor* master) 
   : AliMUONVSubprocessor(master, "GMS", "Upload GMS matrices to OCDB"),
     fTransformer(true)
@@ -47,33 +49,37 @@ AliMUONGMSSubprocessor::AliMUONGMSSubprocessor(AliMUONPreprocessor* master)
   fTransformer.ReadGeometryData("volpath.dat", "transform.dat");
 }
 
-//______________________________________________________________________________________________
+//______________________________________________________________________________
 AliMUONGMSSubprocessor::~AliMUONGMSSubprocessor()
 {
 /// Destructor
 }
 
-//______________________________________________________________________________________________
-UInt_t AliMUONGMSSubprocessor::Process(TMap* /*dcsAliasMap*/)
+
+//
+// private methods
+//
+
+
+//______________________________________________________________________________
+UInt_t AliMUONGMSSubprocessor::ProcessFile(const TString& fileName)
 {
 /// Convert TGeoHMatrix to AliAlignObjMatrix and fill them into AliTestDataDCS object
 
-  const char* fileName 
-    = Master()->GetFile(fgkSystem, fgkDataId, fgkDataId);
-  if ( ! fileName) {
-    AliErrorStream() << "File not found" << endl;
-    return 1;
-  }  
+  Master()->Log(Form("Processing GMS file %s", fileName.Data()));
 
   // Open root file
-  TFile f(fileName);
+  TFile f(fileName.Data());
+  if ( ! f.IsOpen() ) {
+    Master()->Log(Form("Cannot open file %s",fileName.Data()));
+    return 1;
+  }  
   
   // Get array with matrices
   TClonesArray* array = (TClonesArray*)f.Get(fgkMatrixArrayName);
   if ( ! array ) {
-    AliErrorStream() << "TClonesArray with not found in file " 
-       << fileName << endl;
-    return 1;
+    Master()->Log(Form("TClonesArray not found in file %s",fileName.Data()));
+    return 2;
   }  
   
   // Convert matrices into Alice alignment objects
@@ -84,16 +90,41 @@ UInt_t AliMUONGMSSubprocessor::Process(TMap* /*dcsAliasMap*/)
   TObject* data = const_cast< TClonesArray*>(fTransformer.GetMisAlignmentData());
   
   //Now we have to store the final CDB file
+  Master()->Log("Storing GMS");
   AliCDBMetaData metaData;
   metaData.SetBeamPeriod(0);
   metaData.SetResponsible("");
   metaData.SetComment("This preprocessor fills GMS alignment objects.");
 
-  UInt_t result = Master()->Store("SHUTTLE", "GMS", data, &metaData, 0, 0);
+  Bool_t result = Master()->Store("SHUTTLE", "GMS", data, &metaData, 0, 0);
 
   // Clear MisAlignArray in transformer
   fTransformer.ClearMisAlignmentData();
 
+  return (result!=kTRUE);
+}  
+
+//
+// public methods
+//
+
+
+//______________________________________________________________________________
+UInt_t AliMUONGMSSubprocessor::Process(TMap* /*dcsAliasMap*/)
+{
+/// Process GMS alignment files.
+/// Return failure (0) in case procession of some file has failed
+
+  UInt_t result = 1;
+  TList* sources = Master()->GetFileSources(fgkSystem, fgkDataId);
+  TIter next(sources);
+  TObjString* o(0x0);
+  while ( ( o = static_cast<TObjString*>(next()) ) ) {
+    TString fileName(Master()->GetFile(fgkSystem, fgkDataId, o->GetName()));
+    result *= ProcessFile(fileName);
+  }
+  delete sources;
+
   return result;
 }