30b26c3e508c88da684aabef7bce81952d0b438a
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalAgent.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: Matthias Richter <Matthias.Richter@ift.uib.no>        *
8 //*                  for The ALICE HLT Project.                            *
9 //*                                                                        *
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 //**************************************************************************
18
19 /** @file   AliHLTGlobalAgent.cxx
20     @author Matthias Richter
21     @date   
22     @brief  Agent of the libAliHLTGlobal library
23 */
24
25 #include <cassert>
26 #include "AliHLTGlobalAgent.h"
27 #include "AliHLTConfigurationHandler.h"
28 #include "TObjString.h"
29 #include "TObjArray.h"
30
31 // header files of library components
32 #include "AliHLTGlobalTrackMergerComponent.h"
33 #include "AliHLTGlobalEsdConverterComponent.h"
34 #include "AliHLTV0HistoComponent.h"
35
36 /** global instance for agent registration */
37 AliHLTGlobalAgent gAliHLTGlobalAgent;
38
39 /** ROOT macro for the implementation of ROOT specific class methods */
40 ClassImp(AliHLTGlobalAgent)
41
42 AliHLTGlobalAgent::AliHLTGlobalAgent()
43   :
44   AliHLTModuleAgent("Global")
45 {
46   // see header file for class documentation
47   // or
48   // refer to README to build package
49   // or
50   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
51 }
52
53 AliHLTGlobalAgent::~AliHLTGlobalAgent()
54 {
55   // see header file for class documentation
56 }
57
58 int AliHLTGlobalAgent::RegisterComponents(AliHLTComponentHandler* pHandler) const
59 {
60   // see header file for class documentation
61   assert(pHandler);
62   if (!pHandler) return -EINVAL;
63   pHandler->AddComponent(new AliHLTGlobalTrackMergerComponent);
64   pHandler->AddComponent(new AliHLTGlobalEsdConverterComponent);
65   pHandler->AddComponent(new AliHLTV0HistoComponent );
66   return 0;
67 }
68
69 int AliHLTGlobalAgent::CreateConfigurations(AliHLTConfigurationHandler* pHandler,
70                                             AliRawReader* /*rawReader*/,
71                                             AliRunLoader* /*runloader*/) const
72 {
73   // see header file for class documentation
74   if (!pHandler) return -EINVAL;
75
76   /////////////////////////////////////////////////////////////////////////////////////
77   //
78   // assembly of the global ESD
79
80   // define the inputs to the global ESD
81   TString esdInputs="TPC-globalmerger TPC-mcTrackMarker";
82
83   // check for the availibility
84   TObjArray* pTokens=esdInputs.Tokenize(" ");
85   esdInputs="";
86   if (pTokens) {
87     for (int n=0; n<pTokens->GetEntriesFast(); n++) {
88       TString module=((TObjString*)pTokens->At(n))->GetString();
89       if (pHandler->FindConfiguration(module.Data())) {
90         esdInputs+=module;
91         esdInputs+=" ";
92       }
93     }
94     delete pTokens;
95   }
96
97   if (esdInputs.Length()>0) {
98     HLTInfo("Configuring inputs to global HLT ESD: %s", esdInputs.Data());
99   } else {
100     HLTWarning("No inputs to global HLT ESD found");
101   }
102
103   pHandler->CreateConfiguration("GLOBAL-esd-converter", "GlobalEsdConverter", esdInputs.Data(), "");
104   
105   return 0;
106 }
107
108 const char* AliHLTGlobalAgent::GetReconstructionChains(AliRawReader* /*rawReader*/,
109                                                     AliRunLoader* runloader) const
110 {
111   // see header file for class documentation
112   if (runloader) {
113     // reconstruction chains for AliRoot simulation
114     // Note: run loader is only available while running embedded into
115     // AliRoot simulation
116     return "GLOBAL-esd-converter";
117   }
118   return NULL;
119 }
120
121 const char* AliHLTGlobalAgent::GetRequiredComponentLibraries() const
122 {
123   // see header file for class documentation
124
125   return "libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so libAliHLTITS.so";
126 }
127
128 int AliHLTGlobalAgent::GetHandlerDescription(AliHLTComponentDataType /*dt*/,
129                                              AliHLTUInt32_t /*spec*/,
130                                              AliHLTOUTHandlerDesc& /*desc*/) const
131 {
132   // see header file for class documentation
133
134   return 0;
135 }
136
137 AliHLTOUTHandler* AliHLTGlobalAgent::GetOutputHandler(AliHLTComponentDataType /*dt*/,
138                                                       AliHLTUInt32_t /*spec*/)
139 {
140   // see header file for class documentation
141
142   return NULL;
143 }
144
145 int AliHLTGlobalAgent::DeleteOutputHandler(AliHLTOUTHandler* pInstance)
146 {
147   // see header file for class documentation
148   if (pInstance==NULL) return -EINVAL;
149
150   return 0;
151 }