Corrected Doxygen warnings:
[u/mrichter/AliRoot.git] / MUON / AliMUONGMSSubprocessor.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 // $Id$
17 //
18 // Class AliMUONGMSSubprocessor
19 // -----------------------------
20 // The shuttle subprocessor for GMS data
21 // Author: Ivana Hrivnacova, IPN Orsay
22 // 16/09/2006
23
24 #include "AliMUONGMSSubprocessor.h"
25 #include "AliMUONPreprocessor.h"
26
27 #include "AliCDBMetaData.h"
28
29 #include <TTimeStamp.h>
30 #include <TFile.h>
31 #include <TClonesArray.h>
32 #include <TObjString.h>
33 #include <Riostream.h>
34
35 /// \cond CLASSIMP
36 ClassImp(AliMUONGMSSubprocessor)
37 /// \endcond
38
39 const Int_t    AliMUONGMSSubprocessor::fgkSystem = AliPreprocessor::kDAQ;
40 const TString  AliMUONGMSSubprocessor::fgkDataId = "GMS";
41 const TString  AliMUONGMSSubprocessor::fgkMatrixArrayName = "GMSarray";
42
43 //______________________________________________________________________________
44 AliMUONGMSSubprocessor::AliMUONGMSSubprocessor(AliMUONPreprocessor* master) 
45   : AliMUONVSubprocessor(master, "GMS", "Upload GMS matrices to OCDB"),
46     fTransformer(true)
47 {
48 /// Constructor
49   fTransformer.ReadGeometryData("volpath.dat", "transform.dat");
50 }
51
52 //______________________________________________________________________________
53 AliMUONGMSSubprocessor::~AliMUONGMSSubprocessor()
54 {
55 /// Destructor
56 }
57
58
59 //
60 // private methods
61 //
62
63
64 //______________________________________________________________________________
65 UInt_t AliMUONGMSSubprocessor::ProcessFile(const TString& fileName)
66 {
67 /// Convert TGeoHMatrix to AliAlignObjMatrix and fill them into AliTestDataDCS object
68
69   Master()->Log(Form("Processing GMS file %s", fileName.Data()));
70
71   // Open root file
72   TFile f(fileName.Data());
73   if ( ! f.IsOpen() ) {
74     Master()->Log(Form("Cannot open file %s",fileName.Data()));
75     return 1;
76   }  
77   
78   // Get array with matrices
79   TClonesArray* array = (TClonesArray*)f.Get(fgkMatrixArrayName);
80   if ( ! array ) {
81     Master()->Log(Form("TClonesArray not found in file %s",fileName.Data()));
82     return 1;
83   }  
84   
85   // Convert matrices into Alice alignment objects
86   for (Int_t i=0; i<array->GetEntriesFast(); i++ ) {
87     TGeoHMatrix* matrix = (TGeoHMatrix*)array->At(i);
88     fTransformer.AddMisAlignModule(matrix->GetUniqueID(), *matrix);
89   }  
90   TObject* data = const_cast< TClonesArray*>(fTransformer.GetMisAlignmentData());
91   
92   //Now we have to store the final CDB file
93   Master()->Log("Storing GMS");
94   AliCDBMetaData metaData;
95   metaData.SetBeamPeriod(0);
96   metaData.SetResponsible("");
97   metaData.SetComment("This preprocessor fills GMS alignment objects.");
98
99   UInt_t result = Master()->Store("SHUTTLE", "GMS", data, &metaData, 0, 0);
100
101   // Clear MisAlignArray in transformer
102   fTransformer.ClearMisAlignmentData();
103
104   return result;
105 }  
106
107 //
108 // public methods
109 //
110
111
112 //______________________________________________________________________________
113 UInt_t AliMUONGMSSubprocessor::Process(TMap* /*dcsAliasMap*/)
114 {
115 /// Process GMS alignment files
116
117   UInt_t result = 0;
118   TList* sources = Master()->GetFileSources(fgkSystem, fgkDataId);
119   TIter next(sources);
120   TObjString* o(0x0);
121   while ( ( o = static_cast<TObjString*>(next()) ) ) {
122     TString fileName(Master()->GetFile(fgkSystem, fgkDataId, o->GetName()));
123     result += ProcessFile(fileName);
124   }
125   delete sources;
126
127   return result;
128 }
129