#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)
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
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;
}