X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGMSSubprocessor.cxx;h=c2d79b100af61153739a8cec334f23cbd7bf2dd0;hb=b85c748e5e7943e1378824cebb3bf59dd106f691;hp=3409188d8066d6a6f47305e33aca0e0551fd87a7;hpb=04aa997f6f4369d8372c2c8f93a73adff59b7eb6;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGMSSubprocessor.cxx b/MUON/AliMUONGMSSubprocessor.cxx index 3409188d806..c2d79b100af 100644 --- a/MUON/AliMUONGMSSubprocessor.cxx +++ b/MUON/AliMUONGMSSubprocessor.cxx @@ -14,85 +14,131 @@ **************************************************************************/ // $Id$ -// + +//----------------------------------------------------------------------------- // Class AliMUONGMSSubprocessor // ----------------------------- // The shuttle subprocessor for GMS data // Author: Ivana Hrivnacova, IPN Orsay // 16/09/2006 +//----------------------------------------------------------------------------- #include "AliMUONGMSSubprocessor.h" #include "AliMUONPreprocessor.h" #include "AliCDBMetaData.h" -#include "AliLog.h" #include #include #include +#include #include +/// \cond CLASSIMP ClassImp(AliMUONGMSSubprocessor) +/// \endcond -const Int_t AliMUONGMSSubprocessor::fgkSystem = AliPreprocessor::kDAQ; +const Int_t AliMUONGMSSubprocessor::fgkSystem = AliPreprocessor::kDCS; 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(0) { /// Constructor - fTransformer.ReadGeometryData("volpath.dat", "transform.dat"); } -//______________________________________________________________________________________________ +//______________________________________________________________________________ AliMUONGMSSubprocessor::~AliMUONGMSSubprocessor() { /// Destructor + + delete fTransformer; } -//______________________________________________________________________________________________ -UInt_t AliMUONGMSSubprocessor::Process(TMap* /*dcsAliasMap*/) + +// +// private methods +// + + +//______________________________________________________________________________ +void AliMUONGMSSubprocessor::Initialize(Int_t /*run*/, + UInt_t /*startTime*/, UInt_t /*endTime*/) { -/// Convert TGeoHMatrix to AliAlignObjMatrix and fill them into AliTestDataDCS object +/// Instantiate geometry transformer - const char* fileName - = Master()->GetFile(fgkSystem, fgkDataId, fgkDataId); - if ( ! fileName) { - AliErrorStream() << "File not found" << endl; - return 1; + if ( ! fTransformer ) { + fTransformer = new AliMUONGeometryTransformer(); + fTransformer->CreateModules(); } +} + +//______________________________________________________________________________ +UInt_t AliMUONGMSSubprocessor::ProcessFile(const TString& fileName) +{ +/// Convert TGeoHMatrix to AliAlignObjMatrix and fill them into AliTestDataDCS object + + 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 for (Int_t i=0; iGetEntriesFast(); i++ ) { TGeoHMatrix* matrix = (TGeoHMatrix*)array->At(i); - fTransformer.AddMisAlignModule(matrix->GetUniqueID(), *matrix); + fTransformer->AddMisAlignModule(matrix->GetUniqueID(), *matrix); } - TObject* data = const_cast< TClonesArray*>(fTransformer.GetMisAlignmentData()); + 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(); + 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(next()) ) ) { + TString fileName(Master()->GetFile(fgkSystem, fgkDataId, o->GetName())); + result *= ProcessFile(fileName); + } + delete sources; return result; }