ROOT logo
// $Id$

//**************************************************************************
//* This file is property of and copyright by the                          * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//*                                                                        *
//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
//*                  for The ALICE HLT Project.                            *
//*                                                                        *
//* Permission to use, copy, modify and distribute this software and its   *
//* documentation strictly for non-commercial purposes is hereby granted   *
//* without fee, provided that the above copyright notice appears in all   *
//* copies and that both the copyright notice and this permission notice   *
//* appear in the supporting documentation. The authors make no claims     *
//* about the suitability of this software for any purpose. It is          *
//* provided "as is" without express or implied warranty.                  *
//**************************************************************************

/// @file   AliHLTMisc.h
/// @author Matthias Richter
/// @date   2009-07-07
/// @brief  Definition of various glue functions implemented in dynamically
///         loaded libraries

#include "AliHLTMisc.h"

/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTMisc);

AliHLTMisc::AliHLTMisc()
{
  // Abstract interface of various glue functions implemented in dynamically
  // loaded libraries.
  //
  // The HLT base library is independent from AliRoot and binds AliRoot
  // functionality via dynamic libraries. The provided methods can be used
  // from any module library without introducing additional dependencies.
}

AliHLTMisc::~AliHLTMisc()
{
  // destructor
}

AliHLTMisc* AliHLTMisc::fgInstance=NULL;

AliHLTMisc& AliHLTMisc::Instance()
{
  // get global instance of the interface implementation
  if (!fgInstance) {
    fgInstance=LoadInstance((AliHLTMisc*)NULL, "AliHLTMiscImplementation", ALIHLTMISC_LIBRARY);
  }
  if (!fgInstance) {
    AliHLTLogging log;
    fgInstance=new AliHLTMisc;
    log.Logging(kHLTLogError, "AliHLTMisc::Instance", "HLT Analysis", "falling back to default AliHLTMisc instance");
  }
  return *fgInstance;
}

int AliHLTMisc::InitCDB(const char* /*cdbpath*/)
{
  // default method, functionality is implemented in the child class
  return -EFAULT;
}

int AliHLTMisc::SetCDBRunNo(int /*runNo*/)
{
  // default method, functionality is implemented in the child class
  return -EFAULT;
}

int AliHLTMisc::GetCDBRunNo() const
{
  // default method, functionality is implemented in the child class
  return -1;
}

AliCDBEntry* AliHLTMisc::LoadOCDBEntry(const char* /*path*/, int /*runNo*/) const
{
  // default method, functionality is implemented in the child class
  return NULL;
}

TObject* AliHLTMisc::ExtractObject(AliCDBEntry* /*entry*/) const
{
  // default method, functionality is implemented in the child class
  return NULL;
}

int AliHLTMisc::CheckOCDBEntries(const TMap* const /*pMap*/) const
{
  // default method, functionality is implemented in the child class
  return -ENOENT;
}

int AliHLTMisc::InitMagneticField() const
{
  // default method, functionality is implemented in the child class
  return -EFAULT;
}

AliHLTTriggerMask_t AliHLTMisc::GetTriggerMask(AliRawReader* /*rawReader*/) const
{
  // default method, functionality is implemented in the child class
  return AliHLTTriggerMask_t(0);
}

AliHLTUInt32_t AliHLTMisc::GetTimeStamp(AliRawReader* /*rawReader*/) const
{
  // default method, functionality is implemented in the child class
  return kMaxUInt;
}

AliHLTUInt32_t AliHLTMisc::GetEventType(AliRawReader* /*rawReader*/) const
{
  // default method, functionality is implemented in the child class
  return 0;
}

Double_t AliHLTMisc::GetBz()
{
  // default method, functionality is implemented in the child class
  return 0.0;
}

Double_t AliHLTMisc::GetBz(const Double_t */*r*/)
{
  // default method, functionality is implemented in the child class
  return 0.0;
}

void AliHLTMisc::GetBxByBz(const Double_t r[3], Double_t b[3])
{
  // default method, functionality is implemented in the child class
  if (!r || !b) return;
  return;
}

const TClass* AliHLTMisc::IsAliESDHLTDecision() const
{
  // default method, functionality is implemented in the child class
  return NULL;
}

int AliHLTMisc::Copy(const AliHLTGlobalTriggerDecision* /*pDecision*/, TObject* /*pESDHLTDecision*/) const
{
  // default method, functionality is implemented in the child class
  return -EFAULT;
}

int AliHLTMisc::InitStreamerInfos(const char* /*ocdbEntry*/) const
{
  // default method, functionality is implemented in the child class
  return -EFAULT;
}

int AliHLTMisc::InitStreamerInfos(TObjArray* /*pSchemas*/) const
{
  // default method, functionality is implemented in the child class
  return -EFAULT;
}

int AliHLTMisc::MergeStreamerInfo(TObjArray* /*tgt*/, const TObjArray* /*src*/, int /*iVerbosity*/) const
{
  // default method, functionality is implemented in the child class
  return 0;
}

void AliHLTMisc::SetAliESDtrackOnlineModeFlag(bool /*mode*/) const
{
  // default method, functionality is implemented in the child class
}

bool AliHLTMisc::GetAliESDtrackOnlineModeFlag() const
{
  // default method, functionality is implemented in the child class
  return false;
}

AliHLTMisc::AliOnlineGuard::AliOnlineGuard(bool mode)
  : fMode(false)
{
  // store the current value and set the flag
  fMode=AliHLTMisc::Instance().GetAliESDtrackOnlineModeFlag();
  AliHLTMisc::Instance().SetAliESDtrackOnlineModeFlag(mode);
}

AliHLTMisc::AliOnlineGuard::~AliOnlineGuard()
{
  // restore old value of the flag
  AliHLTMisc::Instance().SetAliESDtrackOnlineModeFlag(fMode);
}

ostream  &operator<<(ostream &out, const AliHLTComponentDataType &dt)
{
  // printout of AliHLTComponentDataType struct
  char id[kAliHLTComponentDataTypefIDsize+1];
  strncpy(id, dt.fID, kAliHLTComponentDataTypefIDsize);
  id[kAliHLTComponentDataTypefIDsize]=0;
  char origin[kAliHLTComponentDataTypefOriginSize+1];
  strncpy(origin, dt.fOrigin, kAliHLTComponentDataTypefOriginSize);
  origin[kAliHLTComponentDataTypefOriginSize]=0;
  out << "{" << id << ":" << origin << "}";
  return out;
}
 AliHLTMisc.cxx:1
 AliHLTMisc.cxx:2
 AliHLTMisc.cxx:3
 AliHLTMisc.cxx:4
 AliHLTMisc.cxx:5
 AliHLTMisc.cxx:6
 AliHLTMisc.cxx:7
 AliHLTMisc.cxx:8
 AliHLTMisc.cxx:9
 AliHLTMisc.cxx:10
 AliHLTMisc.cxx:11
 AliHLTMisc.cxx:12
 AliHLTMisc.cxx:13
 AliHLTMisc.cxx:14
 AliHLTMisc.cxx:15
 AliHLTMisc.cxx:16
 AliHLTMisc.cxx:17
 AliHLTMisc.cxx:18
 AliHLTMisc.cxx:19
 AliHLTMisc.cxx:20
 AliHLTMisc.cxx:21
 AliHLTMisc.cxx:22
 AliHLTMisc.cxx:23
 AliHLTMisc.cxx:24
 AliHLTMisc.cxx:25
 AliHLTMisc.cxx:26
 AliHLTMisc.cxx:27
 AliHLTMisc.cxx:28
 AliHLTMisc.cxx:29
 AliHLTMisc.cxx:30
 AliHLTMisc.cxx:31
 AliHLTMisc.cxx:32
 AliHLTMisc.cxx:33
 AliHLTMisc.cxx:34
 AliHLTMisc.cxx:35
 AliHLTMisc.cxx:36
 AliHLTMisc.cxx:37
 AliHLTMisc.cxx:38
 AliHLTMisc.cxx:39
 AliHLTMisc.cxx:40
 AliHLTMisc.cxx:41
 AliHLTMisc.cxx:42
 AliHLTMisc.cxx:43
 AliHLTMisc.cxx:44
 AliHLTMisc.cxx:45
 AliHLTMisc.cxx:46
 AliHLTMisc.cxx:47
 AliHLTMisc.cxx:48
 AliHLTMisc.cxx:49
 AliHLTMisc.cxx:50
 AliHLTMisc.cxx:51
 AliHLTMisc.cxx:52
 AliHLTMisc.cxx:53
 AliHLTMisc.cxx:54
 AliHLTMisc.cxx:55
 AliHLTMisc.cxx:56
 AliHLTMisc.cxx:57
 AliHLTMisc.cxx:58
 AliHLTMisc.cxx:59
 AliHLTMisc.cxx:60
 AliHLTMisc.cxx:61
 AliHLTMisc.cxx:62
 AliHLTMisc.cxx:63
 AliHLTMisc.cxx:64
 AliHLTMisc.cxx:65
 AliHLTMisc.cxx:66
 AliHLTMisc.cxx:67
 AliHLTMisc.cxx:68
 AliHLTMisc.cxx:69
 AliHLTMisc.cxx:70
 AliHLTMisc.cxx:71
 AliHLTMisc.cxx:72
 AliHLTMisc.cxx:73
 AliHLTMisc.cxx:74
 AliHLTMisc.cxx:75
 AliHLTMisc.cxx:76
 AliHLTMisc.cxx:77
 AliHLTMisc.cxx:78
 AliHLTMisc.cxx:79
 AliHLTMisc.cxx:80
 AliHLTMisc.cxx:81
 AliHLTMisc.cxx:82
 AliHLTMisc.cxx:83
 AliHLTMisc.cxx:84
 AliHLTMisc.cxx:85
 AliHLTMisc.cxx:86
 AliHLTMisc.cxx:87
 AliHLTMisc.cxx:88
 AliHLTMisc.cxx:89
 AliHLTMisc.cxx:90
 AliHLTMisc.cxx:91
 AliHLTMisc.cxx:92
 AliHLTMisc.cxx:93
 AliHLTMisc.cxx:94
 AliHLTMisc.cxx:95
 AliHLTMisc.cxx:96
 AliHLTMisc.cxx:97
 AliHLTMisc.cxx:98
 AliHLTMisc.cxx:99
 AliHLTMisc.cxx:100
 AliHLTMisc.cxx:101
 AliHLTMisc.cxx:102
 AliHLTMisc.cxx:103
 AliHLTMisc.cxx:104
 AliHLTMisc.cxx:105
 AliHLTMisc.cxx:106
 AliHLTMisc.cxx:107
 AliHLTMisc.cxx:108
 AliHLTMisc.cxx:109
 AliHLTMisc.cxx:110
 AliHLTMisc.cxx:111
 AliHLTMisc.cxx:112
 AliHLTMisc.cxx:113
 AliHLTMisc.cxx:114
 AliHLTMisc.cxx:115
 AliHLTMisc.cxx:116
 AliHLTMisc.cxx:117
 AliHLTMisc.cxx:118
 AliHLTMisc.cxx:119
 AliHLTMisc.cxx:120
 AliHLTMisc.cxx:121
 AliHLTMisc.cxx:122
 AliHLTMisc.cxx:123
 AliHLTMisc.cxx:124
 AliHLTMisc.cxx:125
 AliHLTMisc.cxx:126
 AliHLTMisc.cxx:127
 AliHLTMisc.cxx:128
 AliHLTMisc.cxx:129
 AliHLTMisc.cxx:130
 AliHLTMisc.cxx:131
 AliHLTMisc.cxx:132
 AliHLTMisc.cxx:133
 AliHLTMisc.cxx:134
 AliHLTMisc.cxx:135
 AliHLTMisc.cxx:136
 AliHLTMisc.cxx:137
 AliHLTMisc.cxx:138
 AliHLTMisc.cxx:139
 AliHLTMisc.cxx:140
 AliHLTMisc.cxx:141
 AliHLTMisc.cxx:142
 AliHLTMisc.cxx:143
 AliHLTMisc.cxx:144
 AliHLTMisc.cxx:145
 AliHLTMisc.cxx:146
 AliHLTMisc.cxx:147
 AliHLTMisc.cxx:148
 AliHLTMisc.cxx:149
 AliHLTMisc.cxx:150
 AliHLTMisc.cxx:151
 AliHLTMisc.cxx:152
 AliHLTMisc.cxx:153
 AliHLTMisc.cxx:154
 AliHLTMisc.cxx:155
 AliHLTMisc.cxx:156
 AliHLTMisc.cxx:157
 AliHLTMisc.cxx:158
 AliHLTMisc.cxx:159
 AliHLTMisc.cxx:160
 AliHLTMisc.cxx:161
 AliHLTMisc.cxx:162
 AliHLTMisc.cxx:163
 AliHLTMisc.cxx:164
 AliHLTMisc.cxx:165
 AliHLTMisc.cxx:166
 AliHLTMisc.cxx:167
 AliHLTMisc.cxx:168
 AliHLTMisc.cxx:169
 AliHLTMisc.cxx:170
 AliHLTMisc.cxx:171
 AliHLTMisc.cxx:172
 AliHLTMisc.cxx:173
 AliHLTMisc.cxx:174
 AliHLTMisc.cxx:175
 AliHLTMisc.cxx:176
 AliHLTMisc.cxx:177
 AliHLTMisc.cxx:178
 AliHLTMisc.cxx:179
 AliHLTMisc.cxx:180
 AliHLTMisc.cxx:181
 AliHLTMisc.cxx:182
 AliHLTMisc.cxx:183
 AliHLTMisc.cxx:184
 AliHLTMisc.cxx:185
 AliHLTMisc.cxx:186
 AliHLTMisc.cxx:187
 AliHLTMisc.cxx:188
 AliHLTMisc.cxx:189
 AliHLTMisc.cxx:190
 AliHLTMisc.cxx:191
 AliHLTMisc.cxx:192
 AliHLTMisc.cxx:193
 AliHLTMisc.cxx:194
 AliHLTMisc.cxx:195
 AliHLTMisc.cxx:196
 AliHLTMisc.cxx:197
 AliHLTMisc.cxx:198
 AliHLTMisc.cxx:199
 AliHLTMisc.cxx:200
 AliHLTMisc.cxx:201
 AliHLTMisc.cxx:202
 AliHLTMisc.cxx:203
 AliHLTMisc.cxx:204
 AliHLTMisc.cxx:205
 AliHLTMisc.cxx:206