added AliHLTPreprocessor
[u/mrichter/AliRoot.git] / HLT / rec / AliHLTPreprocessor.cxx
1 // $Id$
2
3 /**************************************************************************
4  * This file is property of and copyright by the ALICE HLT Project        * 
5  * ALICE Experiment at CERN, All rights reserved.                         *
6  *                                                                        *
7  * Primary Authors: Sebastian Bablok <Sebastian.Bablok@ift.uib.no>        *
8  *                  Kenneth Aamodt                                        *
9  *                  for The ALICE HLT Project.                            *
10  *                                                                        *
11  * Permission to use, copy, modify and distribute this software and its   *
12  * documentation strictly for non-commercial purposes is hereby granted   *
13  * without fee, provided that the above copyright notice appears in all   *
14  * copies and that both the copyright notice and this permission notice   *
15  * appear in the supporting documentation. The authors make no claims     *
16  * about the suitability of this software for any purpose. It is          *
17  * provided "as is" without express or implied warranty.                  *
18  **************************************************************************/
19
20 /**
21  * @file   AliHLTPreprocessor.cxx
22  * @author Kenneth Aamodt, Sebastian Bablok
23  * @date   2007-12-06
24  * @brief  Implementation of the HLT preprocessor (used by the Offline Shuttle) 
25  */
26
27 // see header file for class documentation
28 // or
29 // refer to README to build package
30 // or
31 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
32
33 #include "AliHLTPreprocessor.h"
34
35 //#include <AliCDBMetaData.h>
36 //#include <AliCDBEntry.h>
37
38 #include <AliCDBMetaData.h>
39
40
41 #include <TObjString.h>
42 #include <TString.h>
43 #include <TList.h>
44 #include <TFile.h>
45
46
47 ClassImp(AliHLTPreprocessor)
48
49 const Int_t AliHLTPreprocessor::fgkHuffmanTablesNum = 6;
50
51 const char* AliHLTPreprocessor::fgkHLTPreproc = "HLT";
52
53 const char* AliHLTPreprocessor::fgkHuffmanFileBase = "huffmanData_";
54
55 const char* AliHLTPreprocessor::fgkHuffmanFileDetector = "TPC_";        // at the moment only one
56
57 const char* AliHLTPreprocessor::fgkTempHistoFileName = "HLTTemperatureHistograms.root";
58
59 AliHLTPreprocessor::AliHLTPreprocessor(AliShuttleInterface* shuttle) 
60   :
61   AliPreprocessor(fgkHLTPreproc, shuttle),
62   fRun(0),
63   fStartTime(0),
64   fEndTime(0)
65 {
66 // see header file for class documentation
67 // or
68 // refer to README to build package
69 // or
70 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
71 }
72
73
74 AliHLTPreprocessor::~AliHLTPreprocessor() {
75 // see header file for function documentation
76 }
77
78 void AliHLTPreprocessor::Initialize(Int_t run, UInt_t startTime, 
79                         UInt_t endTime) {
80 // see header file for function documentation
81         fRun = run;
82         fStartTime = startTime;
83         fEndTime = endTime;
84
85         TString msg("Preprocessor for HLT initialized for run: ");
86         msg += run;
87 //      Log(msg.Data());
88 }
89
90
91 UInt_t AliHLTPreprocessor::Process(TMap* dcsAliasMap) {
92 // see header file for function documentation
93         UInt_t retVal = 0;
94 //      const char* localFileName = 0;
95
96         if (!GetHLTStatus()) {
97                 return 0;
98         }
99
100         // get Huffman tables
101         for (Int_t i = 0; i < fgkHuffmanTablesNum; i++) {
102                 TString runNumberString;
103                 runNumberString.Form("%08d", fRun);
104                 TString filename(fgkHuffmanFileBase);
105                 filename += fgkHuffmanFileDetector;
106                 filename += runNumberString;
107                 filename += "_0x23000";
108                 filename += i;
109                 filename += "0";
110                 filename += i;
111                 filename += ".root";
112
113                 //spec 0x23000Y0Y -> huffmanData_<detector>_<runnumber>_<specification>.root
114                 TList* HLTlist = GetFileSources(kHLT, filename.Data()); 
115                 if (!HLTlist) {
116                         Log("Missing list for the HLT");
117                     continue;
118                 }
119
120                 if (HLTlist->GetSize() != 1) {
121                         Log(Form("Problem on the size of the list: %d (HLT)", 
122                                                 HLTlist->GetSize()));
123                         continue;
124                 }
125
126                 TObjString* location = (TObjString*) HLTlist->At(0);
127                 if (location == 0) {
128                         Log("Error in location HLT list.");
129                         continue;
130                 }
131                 TString localFileName = GetFile(kHLT, filename.Data(), 
132                                         location->String().Data()); 
133                 
134 /*              
135                 TFile localFile(localFileName);
136                 
137                 AliCDBMetaData meta("Jennifer Wagner");
138                 TString name("huffmanData_");
139                 name += kDetector;
140                 name += "Patch_";
141                 name += i;
142
143                 if (!(Store("CalibTPC", name.Data(), (TObject*) &localFile, &meta, 0, kTRUE))) {
144 */
145                 if (!(StoreReferenceFile(localFileName.Data(), filename.Data()))) {
146                 TString msg("Storing of object '");
147                         msg += filename;
148                         msg += "' to Reference Storage failed!";
149                 Log(msg.Data());
150                         retVal = 1; 
151                         // I think this is then really an error and should return an error code
152                 }
153         }
154         
155         // get Temp Histogram map
156         TList* HLTlist = GetFileSources(kHLT, fgkTempHistoFileName);
157         if (!HLTlist) {
158         Log("Missing list for the HLT");
159                 return 0;
160         }
161
162         if (HLTlist->GetSize() != 1) {
163                 Log(Form("Problem on the size of the list: %d (HLT)", HLTlist->GetSize()));
164                 return 0;
165         }
166
167         TObjString* location = (TObjString*) HLTlist->At(0);
168         if (location == 0) {
169                 Log("Error in location HLT list.");
170                 return 0;
171         }
172         TString localFileName = GetFile(kHLT, fgkTempHistoFileName, 
173                                 location->String().Data());
174 /*
175         TFile localFile(localFileName);
176         AliCDBMetaData meta("Sebastian Bablok");
177
178         if (!(Store("Calib", kTempHistoFileName, (TObject*) &localFile, &meta, 0, kTRUE))) {
179 */
180         if (!(StoreReferenceFile(localFileName.Data(), fgkTempHistoFileName))) {
181                 TString msg("Storing of object '");
182                 msg += fgkTempHistoFileName;
183                 msg += "' to Reference Storage failed!";
184                 Log(msg.Data());
185                 retVal = 1;
186                 // I think this is then really an error and should return an error code
187         }
188
189         return retVal;
190 }
191
192
193 Bool_t AliHLTPreprocessor::ProcessDCS() {
194 // see header file for function documentation
195     return kFALSE;
196 }
197