1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 Revision 1.6 2006/10/02 12:57:48 jgrosseo
19 Small interface change of function StoreReferenceData in Shuttle
21 Revision 1.5 2006/09/04 17:42:34 hristov
22 Changes required by Effective C++
24 Revision 1.4 2006/08/08 14:20:49 jgrosseo
25 Update to shuttle classes (Alberto)
27 - Possibility to set the full object's path in the Preprocessor's and
28 Shuttle's Store functions
29 - Possibility to extend the object's run validity in the same classes
30 ("startValidity" and "validityInfinite" parameters)
31 - Implementation of the StoreReferenceData function to store reference
32 data in a dedicated CDB storage.
34 Revision 1.3 2006/07/11 12:42:43 jgrosseo
35 adding parameters for extended validity range of data produced by preprocessor
37 Revision 1.2 2006/06/06 16:36:49 jgrosseo
38 minor changes in AliShuttleInterface and AliPreprocessor
40 Revision 1.1 2006/06/02 14:14:36 hristov
41 Separate library for CDB (Jan)
43 Revision 1.2 2006/03/07 07:52:34 hristov
44 New version (B.Yordanov)
46 Revision 1.3 2005/11/17 17:47:34 byordano
47 TList changed to TObjArray
49 Revision 1.2 2005/11/17 14:43:22 byordano
52 Revision 1.1.1.1 2005/10/28 07:33:58 hristov
53 Initial import as subdirectory in AliRoot
55 Revision 1.1.1.1 2005/09/12 22:11:40 byordano
58 Revision 1.2 2005/08/29 21:15:47 byordano
64 // This class is the CDBPreProcessor interface,
65 // supposed to be implemented by any detector
66 // interested in immediate processing of data
67 // which is retrieved from DCS.
68 // For every particular run set of aliases and
69 // their corespoding value sets are returned.
71 // 1) virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
72 // This method is called at the begining of data retrieval.
74 // startTime: when the run started
75 // endTime: when the run finished
77 // 2) virtual void Process()
79 // This method is called and passed a list of retrieved values from DCS
84 #include "AliPreprocessor.h"
91 #include "AliCDBMetaData.h"
92 #include "AliCDBStorage.h"
94 #include "AliCDBPath.h"
95 #include "AliShuttleInterface.h"
97 ClassImp(AliPreprocessor)
99 //______________________________________________________________________________________________
100 AliPreprocessor::AliPreprocessor(const char* detector, AliShuttleInterface* shuttle) :
101 TNamed(detector, ""),
107 SetTitle(Form("AliPreprocessor for %s subdetector.", detector));
111 AliFatal("Initialized without Shuttle instance.");
115 fShuttle->RegisterPreprocessor(this);
118 //______________________________________________________________________________________________
119 AliPreprocessor::~AliPreprocessor()
123 //______________________________________________________________________________________________
124 void AliPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
126 // Sets the information of the run which is currently processed
127 // can be overriden for special behaviour, make sure that you call base class
131 fStartTime = startTime;
135 //______________________________________________________________________________________________
136 UInt_t AliPreprocessor::Store(const char* pathLevel2, const char* pathLevel3, TObject* object,
137 AliCDBMetaData* metaData, Int_t validityStart, Bool_t validityInfinite)
139 // Stores a CDB object in the storage for offline reconstruction. Objects that are not needed for
140 // offline reconstruction, but should be stored anyway (e.g. for debugging) should NOT be stored
141 // using this function. Use StoreReferenceData instead!
143 // This function should be called at the end of the preprocessor cycle
145 // The parameters are
146 // 1, 2) the 2nd and 3rd level of the object's path. The first level is the detector name which is provided
147 // by the Preprocessor and converted to the Offline name. Thus the object's path is "DET/level2/level3"
148 // 3) the object to be stored
149 // 4) the metaData to be associated with the object
150 // 5) the validity start run number w.r.t. the current run,
151 // if the data is valid only for this run leave the default 0
152 // 6) specifies if the calibration data is valid for infinity (this means until updated),
153 // typical for calibration runs, the default is kFALSE
155 // The call is delegated to AliShuttleInterface
157 const char* offlineDetName = AliShuttleInterface::GetOfflineDetName(GetName());
158 if(!offlineDetName) return 0;
160 return fShuttle->Store(AliCDBPath(offlineDetName, pathLevel2, pathLevel3), object,
161 metaData, validityStart, validityInfinite);
164 //______________________________________________________________________________________________
165 UInt_t AliPreprocessor::StoreReferenceData(const char* pathLevel2, const char* pathLevel3, TObject* object,
166 AliCDBMetaData* metaData)
168 // Stores a CDB object in the storage for reference data. This objects will not be available during
169 // offline reconstrunction. Use this function for reference data only!
171 // This function should be called at the end of the preprocessor cycle
173 // The parameters are
174 // 1, 2) the 2nd and 3rd level of the object's path. The first level is the detector name which is provided
175 // by the Preprocessor and converted to the Offline name. Thus the object's path is "DET/level2/level3"
176 // 3) the object to be stored
177 // 4) the metaData to be associated with the object
179 // The call is delegated to AliShuttleInterface
181 const char* offlineDetName = AliShuttleInterface::GetOfflineDetName(GetName());
182 if(!offlineDetName) return 0;
184 return fShuttle->StoreReferenceData(AliCDBPath(offlineDetName, pathLevel2, pathLevel3), object,
188 //______________________________________________________________________________________________
189 const char* AliPreprocessor::GetFile(Int_t system, const char* id, const char* source)
191 // This function retrieves a file from the given system (kDAQ, kDCS, kHLT) with the given file id
192 // and from the given source in the system.
193 // The function returnes the path to the local file.
195 // The call is delegated to AliShuttleInterface
197 return fShuttle->GetFile(system, GetName(), id, source);
200 //______________________________________________________________________________________________
201 TList* AliPreprocessor::GetFileSources(Int_t system, const char* id)
203 // Returns a list of sources in a given system that saved a file with the given id
205 // The call is delegated to AliShuttleInterface
207 return fShuttle->GetFileSources(system, GetName(), id);
210 //______________________________________________________________________________________________
211 void AliPreprocessor::Log(const char* message)
213 // Adds a log message to the Shuttle log of this preprocessor
215 // The call is delegated to AliShuttleInterface
217 fShuttle->Log(GetName(), message);
220 //______________________________________________________________________________________________
221 const char* AliPreprocessor::GetRunParameter(const char* param)
223 // Return run parameter read from run logbook
225 // The call is delegated to AliShuttleInterface
227 return fShuttle->GetRunParameter(param);