3 //**************************************************************************
4 //* This file is property of and copyright by the ALICE HLT Project *
5 //* ALICE Experiment at CERN, All rights reserved. *
7 //* Primary Authors: Sebastian Bablok <Sebastian.Bablok@ift.uib.no> *
8 //* for The ALICE HLT Project. *
10 //* Permission to use, copy, modify and distribute this software and its *
11 //* documentation strictly for non-commercial purposes is hereby granted *
12 //* without fee, provided that the above copyright notice appears in all *
13 //* copies and that both the copyright notice and this permission notice *
14 //* appear in the supporting documentation. The authors make no claims *
15 //* about the suitability of this software for any purpose. It is *
16 //* provided "as is" without express or implied warranty. *
17 //**************************************************************************
19 // @file AliHLTPendolino.cxx
20 // @author Sebastian Bablok
23 // @note maintained by Matthias.Richter@ift.uib.no
25 #include "AliHLTPendolino.h"
27 #include "AliHLTPredictionProcessorInterface.h"
28 #include "AliHLTPendolinoLogger.h"
29 #include "AliHLTPendolinoLoggerOStream.h"
30 #include "AliHLTLogging.h"
32 #include <AliCDBPath.h>
33 #include <AliCDBEntry.h>
34 #include <AliCDBManager.h>
35 #include <AliCDBStorage.h>
36 #include <AliPreprocessor.h>
39 #include <TObjString.h>
40 #include <TTimeStamp.h>
49 ClassImp(AliHLTPendolino)
52 /** Static string to define a local storage for the OCDB contact. */
53 const TString AliHLTPendolino::fgkLocalStorageDefine = "local://";
55 const char* AliHLTPendolino::fgkHLTInterfaceModule = "Pendolino-Core";
57 const TString AliHLTPendolino::fgkTaxiListBaseFolder = getenv("ALIHLT_T_HCDBDIR");
58 //"/opt/T-HCDB/lists/lists-taxi/";
60 const TString AliHLTPendolino::fgkTaxiListFolderName = "lists/lists-taxi/";
62 const TString AliHLTPendolino::fgkTaxiListPendolino = "Pendolino.list";
64 const Int_t AliHLTPendolino::fgkMaxLineLength = 256;
66 const Int_t AliHLTPendolino::fgkHLTPendolinoException = -10;
68 const Int_t AliHLTPendolino::fgkHLTPendolinoBadCast = -9;
70 const Int_t AliHLTPendolino::fgkHLTPendolinoNotPredictProc = -8;
72 const Int_t AliHLTPendolino::fgkHLTPendolinoModuleNotExisting = -7;
74 const Int_t AliHLTPendolino::fgkHLTPendolinoNoDCS = -6;
76 //const Int_t AliHLTPendolino::
80 AliHLTPendolino::AliHLTPendolino(Int_t run, TString HCDBbase, TString runType,
81 AliHLTPendolinoLogger* logger, UInt_t startTime, UInt_t endTime) :
82 fRunType(runType), fRunNumber(run),
83 fHCDBPath(""), fPredictionProcessorMap(),
84 fpLogger(0), fOwnLogger(kFALSE),
85 fStartTime(startTime), fEndTime(endTime)
87 // see header file for class documentation
89 // refer to README to build package
91 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
93 // C-tor of AliHLTPendolino
94 fHCDBPath = fgkLocalStorageDefine + HCDBbase;
96 fpLogger = new AliHLTPendolinoLoggerOStream();
105 AliHLTPendolino::~AliHLTPendolino() {
106 // D-tor of AliHLTPendolino
107 // clean up registered PredicitonProcs
108 TMapIter iter(&fPredictionProcessorMap, kIterForward);
109 AliHLTPredictionProcessorInterface* aPredict;
112 // get each key inside the map
113 while ((key = iter.Next())) {
114 TString detector = key->GetName();
117 // get value for the key
118 aPredict = dynamic_cast<AliHLTPredictionProcessorInterface*>
119 (fPredictionProcessorMap.GetValue(key));
122 Log(fgkHLTInterfaceModule,
123 " *** ERROR, cannot delete registered processor '"
124 + detector + "'; does not seem to be a PredictionProcessor.");
127 Log(fgkHLTInterfaceModule, " ### [DEBUG] deleting PredictProc '" +
130 } catch (std::bad_cast) {
131 // failed -> is not a AliHLTPredictionProcessorInterface implementation
132 // -> discarding call
133 Log(fgkHLTInterfaceModule, " *** ERROR, cannot delete registered processor '"
134 + detector + "'; does not seem to be a PredictionProcessor..");
137 } catch (std::exception& e) {
138 Log(fgkHLTInterfaceModule,
139 " *** Exception in call for deleting PrecitionProcessor '"
144 Log(fgkHLTInterfaceModule, " ### [DEBUG] Deleting of PredictionProcessors finished.");
147 if ((fOwnLogger) && (fpLogger != 0)) {
154 // inherited virtual functions, maybe use them from base class
155 Bool_t AliHLTPendolino::Store(const AliCDBPath& path, TObject* object,
156 AliCDBMetaData* metaData, Int_t validityStart,
157 Bool_t validityInfinite) {
158 // stores a entry in HCDB
159 Bool_t retVal = kFALSE;
160 Int_t startNumber = 0;
162 AliCDBManager* man = 0;
163 AliCDBStorage* localHCDB = 0;
165 startNumber = ((fRunNumber - validityStart) <= 0) ? 0 : (fRunNumber - validityStart);
166 endNumber = (validityInfinite) ? AliCDBRunRange::Infinity() : fRunNumber;
168 man = AliCDBManager::Instance();
170 Log(fgkHLTInterfaceModule, " *** ERROR cannot obtain a CDB Manager reference.");
174 // contact local storage (HCDB)
175 localHCDB = man->GetStorage(fHCDBPath.Data());
176 if (localHCDB == 0) {
177 TString msg(" *** ERROR in initiating HCDB: ");
179 Log(fgkHLTInterfaceModule, msg.Data());
180 man->DestroyActiveStorages();
184 // taken from AliShuttle
185 if (! dynamic_cast<TObjString*> (metaData->GetProperty("RunUsed(TObjString)"))) {
186 TObjString runUsed = Form("%d", fRunNumber);
187 metaData->SetProperty("RunUsed(TObjString)", runUsed.Clone());
191 // Version is set to current run, it will be used later to transfer data to Grid
192 // Why using current run number as version number ???
193 AliCDBId entryID(path, startNumber, endNumber, fRunNumber, -1);
195 if (localHCDB->Put(object, entryID, metaData)) {
198 TString msg(" *** Unable to store DCS data to HCDB: ");
199 msg += entryID.ToString();
200 Log(fgkHLTInterfaceModule, msg.Data());
203 man->DestroyActiveStorages();
209 Bool_t AliHLTPendolino::StoreReferenceData(const AliCDBPath& path,
210 TObject* /*object*/, AliCDBMetaData* /*metaData*/) {
211 // Disabled Function inherited from interface
212 TString msg(" ~~~ PredictProc tries to store reference data to '"
213 + path.GetPath() + "'. Discarding call in Pendolino.");
214 Log(fgkHLTInterfaceModule, msg.Data());
220 Bool_t AliHLTPendolino::StoreReferenceFile(const char* detector,
221 const char* localFile, const char* gridFileName) {
222 // Disabled Function inherited from interface
224 TString det(detector);
225 TString filename(localFile);
226 TString gridname(gridFileName);
227 msg = " ~~~ PredictProc (" + det + ") tries to store reference file (" +
228 filename + ") to '" + gridname +
229 "'. Discarding call in Pendolino.";
230 Log(fgkHLTInterfaceModule, msg.Data());
236 Bool_t AliHLTPendolino::StoreRunMetadataFile(const char* localFile,
237 const char* gridFileName) {
238 // Disabled Function inherited from interface
241 TString filename(localFile);
242 TString gridname(gridFileName);
243 msg = " ~~~ PredictProc tries to store 'run meta data' file (" +
244 filename + ") to '" + gridname + "'. Discarding call in Pendolino.";
245 Log(fgkHLTInterfaceModule, msg.Data());
251 const char* AliHLTPendolino::GetFile(Int_t system, const char* detector,
252 const char* id, const char* source) {
253 // Disabled Function inherited from interface
255 TString det(detector);
256 TString filename(id);
258 TString from(GetSystemName(system));
259 msg = " ~~~ PredictProc (" + det + ") requests file (" + filename + ") from '"
260 + src + "' at " + from + ". Discarding call in Pendolino.";
261 Log(fgkHLTInterfaceModule, msg.Data());
266 const char* AliHLTPendolino::GetTriggerConfiguration() {
267 // Disabled Function inherited from interface
269 msg = " ~~~ PredictProc tries to request Trigger configuration, this is disabled. Discarding call in Pendolino.";
270 Log(fgkHLTInterfaceModule, msg.Data());
275 const char* AliHLTPendolino::GetTriggerDetectorMask() {
276 // Disabled Function inherited from interface
278 msg = " ~~~ PredictProc tries to request Trigger configuration, this is disabled. Discarding call in Pendolino.";
279 Log(fgkHLTInterfaceModule, msg.Data());
285 TList* AliHLTPendolino::GetFileSources(Int_t system, const char* detector,
287 // Disabled Function inherited from interface
289 TString det(detector);
290 TString filename(id);
291 TString from(GetSystemName(system));
292 msg = " ~~~ PredictProc (" + det + ") requests file sources for (" + filename
293 + ") from '" + from + ". Discarding call in Pendolino.";
294 Log(fgkHLTInterfaceModule, msg.Data());
300 TList* AliHLTPendolino::GetFileIDs(Int_t system, const char* detector,
301 const char* source) {
302 // Disabled Function inherited from interface
304 TString det(detector);
305 TString filename(source);
306 TString from(GetSystemName(system));
307 msg = " ~~~ PredictProc (" + det + ") requests file IDs for (" + filename
308 + ") from '" + from + ". Discarding call in Pendolino.";
309 Log(fgkHLTInterfaceModule, msg.Data());
315 const char* AliHLTPendolino::GetRunParameter(const char* /*lbEntry*/) {
316 // getter for run parameter
319 // maybe using a parameter file, where these settings are stored at start up by
320 // the starting script and a dedicated class read and stores its content.
322 Log(fgkHLTInterfaceModule,
323 " ### GetRunParameter are not defined, yet. Feature will be available soon.");
328 Bool_t AliHLTPendolino::GetHLTStatus() {
329 // getter for HLT status
330 // since this is the Pendolino -> always true
335 AliCDBEntry* AliHLTPendolino::GetFromOCDB(const char* detector,
336 const AliCDBPath& path) {
337 // fetches entry from HCDB
338 AliCDBManager *man = AliCDBManager::Instance();
341 TString msg(" *** ERROR, cannot obtain a CDB Manager reference for: ");
343 Log(fgkHLTInterfaceModule, msg.Data());
347 AliCDBStorage *hcdb = man->GetStorage(fHCDBPath.Data());
349 TString msg(" *** ERROR, cannot acquire HCDB storage (");
350 msg += fHCDBPath + ") for fetching data for Pendolino.";
351 Log(fgkHLTInterfaceModule, msg.Data());
355 AliCDBEntry* entry=NULL;
357 // exceptions for the loading of OCDB objects have been introduced in r61012 on
358 // Feb 20 2013. This allows to reduce this function to try and catch of AliCDBManager::Get
359 entry=hcdb->Get(path, fRunNumber);
362 // for now we just ignore the exception and return NULL
367 AliCDBEntry* entry = 0;
369 entry = dynamic_cast<AliCDBEntry*> (hcdb->Get(path, fRunNumber));
370 } catch (std::bad_cast) {
371 TString msg(" *** ERROR, bad cast of HCDB entry (");
372 msg += path.GetPath() + ") after fetching from HCDB.";
373 Log(fgkHLTInterfaceModule, msg.Data());
382 Bool_t AliHLTPendolino::IncludeAliCDBEntryInList(const TString& entryPath) {
383 // includes entry in Taxi list (objects to be fetched from OCDB)
384 Bool_t bRet = kFALSE;
390 filename = fgkTaxiListBaseFolder + "/" + fgkTaxiListFolderName +
391 fgkTaxiListPendolino;
392 Log(fgkHLTInterfaceModule, filename + " [DEBUG] filename");
394 infile.open(filename, ios_base::in);
395 if (infile.is_open()) {
396 char line[fgkMaxLineLength];
398 while (!infile.eof()) {
399 infile.getline(line, fgkMaxLineLength);
400 if (strncmp(line, entryPath.Data(), entryPath.Length()) == 0) {
401 // entry already exists, leave function after proper clean up
402 TString msg(" --- Entry '");
403 msg += entryPath + "' is already included in Taxi list file.";
404 Log(fgkHLTInterfaceModule, msg.Data());
411 // include entry to list
412 outfile.open(filename, ios_base::out | ios_base::app);
413 if (!outfile.is_open()) {
414 TString msg(" *** Unable to create Pendolino list file '");
415 msg += filename + "' for Taxi. Continueing without list update...";
416 Log(fgkHLTInterfaceModule, msg.Data());
419 // outfile.seekp(-1, ios::end);
421 outfile << "#HLT (Pendolino) - Run: " << fRunNumber << ", Time: " <<
422 ts.AsString() << endl;
423 outfile << entryPath.Data() << endl;
426 TString msg(" +++ Included missing entry '");
427 msg += entryPath + "' in Taxi list file.";
428 Log(fgkHLTInterfaceModule, msg.Data());
432 TString msg(" ~~~ Unable to open Pendolino list file '");
433 msg += filename + "' for Taxi. Creating new one.";
434 Log(fgkHLTInterfaceModule, msg.Data());
435 outfile.open(filename, ios_base::out);
437 if (outfile.is_open()) {
438 outfile << "# Automatic generated Taxi list." << endl;
439 outfile << "# It contains the OCDB entries required by the Pendolino."
440 << endl << "#" << endl;
441 outfile << "# !!! DON'T EDIT THIS FILE (if you don't know what you are doing) !!!"
443 outfile << "#HLT (Pendolino) - Run: " << fRunNumber << ", Time: " <<
444 ts.AsString() << endl;
445 outfile << entryPath.Data() << endl;
450 msg=" *** Unable to create Pendolino list file '";
451 msg += filename + "' for Taxi. Continueing without list update...";
452 Log(fgkHLTInterfaceModule, msg.Data());
460 void AliHLTPendolino::Log(const char* detector, const char* message) {
462 if (fpLogger) fpLogger->log(detector, message);
463 // refer data to a Pendolino Logger, which can take care of it
467 void AliHLTPendolino::RegisterPreprocessor(AliPreprocessor* preprocessor) {
468 // registers a PredictionProcessor
469 if (preprocessor == 0) {
470 Log(fgkHLTInterfaceModule,
471 " *** ERROR: Cannot register NULL pointer as PredictionProcessor.");
475 TString detector(preprocessor->GetName());
477 if (fPredictionProcessorMap.GetValue(detector.Data())) {
478 Log(fgkHLTInterfaceModule, " ~~~ Already registered PredictionProcessor '" +
479 detector + "'. Ignoring call.");
482 // store as AliPreprocessor* and make cast to AliHLTPredictionProcessorInterface*
483 // later, when accesing them.
484 fPredictionProcessorMap.Add(new TObjString(detector), preprocessor);
487 TString detector(preprocessor->GetName());
488 AliHLTPredictionProcessorInterface* predictProc = 0;
489 // UInt_t retVal = 0;
491 // TODO move this in seperated call outside RegisterPreprocessor(..)
492 // safety reason, since preprocessor is not completely generated yet
493 if (!preprocessor->ProcessDCS()) {
494 Log(fgkHLTInterfaceModule, " *** PredictionProcessor '" + detector +
495 "' not registered, because it will not process DCS values.");
498 Log(fgkHLTInterfaceModule, "Module Processes DCS values, Registering PredictionProc "
501 // don't use this check, if there are several PreProcs from one detector
502 // they will have all have different names
503 //if (GetDetPos(detector.Data()) < 0) {
504 // Log(fgkHLTInterfaceModule, " *** Invalid detector name: " + detector);
507 // Check if preprocessor is actually PredictionProcessor
510 predictProc = reinterpret_cast<AliHLTPredictionProcessorInterface*>
512 // Don't use dynamic_cast or C-style cast, they only rename the pointer/object,
513 // but don't import the extended members -> use reinterpret_cast. Maybe perform
514 // dynamic_cast check in other function, which is not called inside a C-tor
515 // of AliHLTPredictionProcessorInterface.
517 // ATTENTION: Don't call any functions of AliHLTPredictionProcessorInterface here
518 // the object has not been completely generated yet, only AliPreprocessor part
519 // is available. Call of these function should be performed in seperate call outside
520 // RegisterPreprocessor(..).)
522 } catch (std::bad_cast) {
523 // failed -> is not a AliHLTPredictionProcessorInterface implementation
524 // -> discarding call
525 Log(fgkHLTInterfaceModule, " *** Cannot register PredictionProcessor '" + detector +
526 "'. Does not implement the AliHLTPredictionProcessorInterface.");
528 } catch (std::exception& e) {
529 Log(fgkHLTInterfaceModule, " *** Exception in the registering of the PredictProc.");
532 if (fPredictionProcessorMap.GetValue(detector.Data())) {
533 Log(fgkHLTInterfaceModule, " ~~~ Already registered PredictionProcessor '" +
534 detector + "'. Ignoring call.");
538 fPredictionProcessorMap.Add(new TObjString(detector), predictProc);
543 UInt_t AliHLTPendolino::SetToPredictMaking() {
544 // switches prdiction making on in all registered PredictioProcessors
547 // get an iterator for the map
548 TMapIter iter(&fPredictionProcessorMap, kIterForward);
549 AliHLTPredictionProcessorInterface* aPredict;
552 // get each key inside the map
553 while ((key = iter.Next())) {
554 TString detector = key->GetName();
557 // get value for the key
558 aPredict = dynamic_cast<AliHLTPredictionProcessorInterface*>
559 (fPredictionProcessorMap.GetValue(key));
562 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
564 "'. Does not implement the AliHLTPredictionProcessorInterface.");
567 // detector = aPredict->GetName();
569 if ((aPredict->ProcessDCS()) && (aPredict->makePrediction() == 0)) {
572 Log(fgkHLTInterfaceModule, " *** PredictionProcessor '" + detector
573 + "' does not allow DCS processing or failed to init prediction making.");
575 } catch (std::bad_cast) {
576 // failed -> is not a AliHLTPredictionProcessorInterface implementation
577 // -> discarding call
578 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
580 "'. Does not implement the AliHLTPredictionProcessorInterface.");
583 } catch (std::exception& e) {
584 Log(fgkHLTInterfaceModule, " *** Exception in call for makePrediction of "
593 Int_t AliHLTPendolino::setToPredictMaking(TString detector) {
594 // switches prediction making on in chosen PreditionProcessor
596 AliHLTPredictionProcessorInterface* aPredict = 0;
599 // get the value for the key
600 TObject* object = fPredictionProcessorMap.GetValue(detector.Data());
603 Log(fgkHLTInterfaceModule, " *** No PredictionProcessor for '" +
604 detector + "' registered.");
605 return fgkHLTPendolinoModuleNotExisting;
608 aPredict = dynamic_cast<AliHLTPredictionProcessorInterface*> (object);
611 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
613 "'. Does not implement the AliHLTPredictionProcessorInterface.");
614 return fgkHLTPendolinoNotPredictProc;
616 // detector = aPredict->GetName();
618 if (!((aPredict->ProcessDCS()) && (aPredict->makePrediction() == 0))) {
619 Log(fgkHLTInterfaceModule, " *** PredictionProcessor '" + detector +
620 "' does not allow DCS processing or failed to init prediction making.");
621 retVal = fgkHLTPendolinoNoDCS;
624 } catch (std::bad_cast) {
625 // failed -> is not a AliHLTPredictionProcessorInterface implementation
626 // -> discarding call
627 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
629 "'. Does not implement the AliHLTPredictionProcessorInterface.");
630 retVal = fgkHLTPendolinoBadCast;
632 } catch (std::exception& e) {
633 Log(fgkHLTInterfaceModule, " *** Exception in call for makePrediction of "
635 retVal = fgkHLTPendolinoException;
642 Int_t AliHLTPendolino::PrepareDCSValues(TString detector, TMap* DCSValues) {
643 // function to prepare retrieved DCS values
645 AliHLTPredictionProcessorInterface* aPredict = 0;
648 // get the value for the key
649 TObject* object = fPredictionProcessorMap.GetValue(detector.Data());
652 Log(fgkHLTInterfaceModule, " *** No PredictionProcessor for '" +
653 detector + "' registered.");
654 return fgkHLTPendolinoModuleNotExisting;
657 aPredict = dynamic_cast<AliHLTPredictionProcessorInterface*> (object);
660 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
662 "'. Does not implement the AliHLTPredictionProcessorInterface.");
663 return fgkHLTPendolinoNotPredictProc;
666 retVal = aPredict->Process(DCSValues);
669 } catch (std::bad_cast) {
670 // failed -> is not a AliHLTPredictionProcessorInterface implementation
671 // -> discarding call
672 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
674 "'. Does not implement the AliHLTPredictionProcessorInterface.");
675 retVal = fgkHLTPendolinoBadCast;
677 } catch (std::exception& e) {
678 Log(fgkHLTInterfaceModule, " *** Exception in call prepareDCSValues of "
680 retVal = fgkHLTPendolinoException;
686 TMap* AliHLTPendolino::EmulateDCSMap(TString detector, TString aliasName) {
687 // function to generate test data of given PredictionProcessor
689 AliHLTPredictionProcessorInterface* aPredict = 0;
692 // get the value for the key
693 TObject* object = fPredictionProcessorMap.GetValue(detector.Data());
696 Log(fgkHLTInterfaceModule, " *** No PredictionProcessor for '" +
697 detector + "' registered.");
701 aPredict = dynamic_cast<AliHLTPredictionProcessorInterface*> (object);
704 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
706 "'. Does not implement the AliHLTPredictionProcessorInterface.");
710 result = aPredict->produceTestData(aliasName);
713 } catch (std::bad_cast) {
714 // failed -> is not a AliHLTPredictionProcessorInterface implementation
715 // -> discarding call
716 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
718 "'. Does not implement the AliHLTPredictionProcessorInterface.");
720 } catch (std::exception& e) {
721 Log(fgkHLTInterfaceModule, " *** Exception in call emulateDCSMap of "
728 Int_t AliHLTPendolino::initPredictProc(TString detector, Int_t run,
729 UInt_t startTime, UInt_t endTime) {
730 // initializes given PredictionProcessor (defined by detector name)
732 AliHLTPredictionProcessorInterface* aPredict = 0;
735 // get the value for the key
736 TObject* object = fPredictionProcessorMap.GetValue(detector.Data());
739 Log(fgkHLTInterfaceModule, " *** No PredictionProcessor for '" +
740 detector + "' registered.");
741 return fgkHLTPendolinoModuleNotExisting;
744 aPredict = dynamic_cast<AliHLTPredictionProcessorInterface*> (object);
747 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
749 "'. Does not implement the AliHLTPredictionProcessorInterface.");
750 return fgkHLTPendolinoNotPredictProc;
753 // Initialize Prediction Processor
754 aPredict->Initialize(run, startTime, endTime);
756 } catch (std::bad_cast) {
757 // failed -> is not a AliHLTPredictionProcessorInterface implementation
758 // -> discarding call
759 Log(fgkHLTInterfaceModule, " *** Cannot use PredictionProcessor '"
761 "'. Does not implement the AliHLTPredictionProcessorInterface.");
762 retVal = fgkHLTPendolinoBadCast;
764 } catch (std::exception& e) {
765 Log(fgkHLTInterfaceModule, " *** Exception in call prepareDCSValues of "
767 retVal = fgkHLTPendolinoException;
774 UInt_t AliHLTPendolino::GetStartTimeDCSQuery()
779 UInt_t AliHLTPendolino::GetEndTimeDCSQuery()
784 void AliHLTPendolino::Log(const char* name , const char* message, UInt_t level)
786 // overloaded function of the shuttle interface
787 // translate into HLT log message
789 AliHLTComponentLogSeverity severity=kHLTLogInfo;
791 case 1: severity=kHLTLogBenchmark; break;
792 case 2: severity=kHLTLogDebug; break;
793 case 3: severity=kHLTLogInfo; break;
794 case 4: severity=kHLTLogWarning; break;
795 default: severity=kHLTLogError;
797 log.LoggingVarargs(severity, "AliHLTPendolino", name , __FILE__ , __LINE__ , message);
800 // this global object is not for use, it just makes sure that
801 // AliHLTPendolino can be instantiated. In case of missing virtual
802 // functions a compilation error will indicate potential problems in
803 // the pendolino macros
804 AliHLTPendolino gAliHLTPendolino(0,"");