update of TRD HLT (Konstantin)
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDAgent.cxx
1 //**************************************************************************
2 //* This file is property of and copyright by the ALICE HLT Project        * 
3 //* ALICE Experiment at CERN, All rights reserved.                         *
4 //*                                                                        *
5 //* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
6 //*                  for The ALICE HLT Project.                            *
7 //*                                                                        *
8 //* Permission to use, copy, modify and distribute this software and its   *
9 //* documentation strictly for non-commercial purposes is hereby granted   *
10 //* without fee, provided that the above copyright notice appears in all   *
11 //* copies and that both the copyright notice and this permission notice   *
12 //* appear in the supporting documentation. The authors make no claims     *
13 //* about the suitability of this software for any purpose. It is          *
14 //* provided "as is" without express or implied warranty.                  *
15 //**************************************************************************
16
17 /** @file   AliHLTTRDAgent.cxx
18     @author Matthias Richter
19     @date   
20     @brief  Agent of the libAliHLTTRD library
21 */
22
23 #include "AliHLTTRDAgent.h"
24 #include "AliHLTConfiguration.h"
25 #include "AliHLTTRDDefinitions.h"
26
27 // #include "AliHLTOUT.h"
28 // #include "AliHLTOUTHandlerChain.h"
29 // #include "AliRunLoader.h"
30
31 /** global instance for agent registration */
32 AliHLTTRDAgent gAliHLTTRDAgent;
33
34 // component headers
35 #include "AliHLTTRDClusterizerComponent.h"
36 #include "AliHLTTRDTrackerComponent.h"
37 #include "AliHLTTRDTrackerV1Component.h"
38 #include "AliHLTTRDCalibrationComponent.h"
39 #include "AliHLTTRDEsdWriterComponent.h"
40
41
42 /** ROOT macro for the implementation of ROOT specific class methods */
43 ClassImp(AliHLTTRDAgent)
44
45   AliHLTTRDAgent::AliHLTTRDAgent()
46     :
47     AliHLTModuleAgent("TRD"),
48     fRawDataHandler(NULL)
49 {
50   // see header file for class documentation
51   // or
52   // refer to README to build package
53   // or
54   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
55 }
56
57 AliHLTTRDAgent::~AliHLTTRDAgent()
58 {
59   // see header file for class documentation
60 }
61
62 int AliHLTTRDAgent::CreateConfigurations(AliHLTConfigurationHandler* /*handler*/,
63                                          AliRawReader* /*rawReader*/,
64                                          AliRunLoader* /*runloader*/) const
65 {
66   // see header file for class documentation
67
68   return 0;
69 }
70
71 const char* AliHLTTRDAgent::GetReconstructionChains(AliRawReader* /*rawReader*/,
72                                                     AliRunLoader* /*runloader*/) const
73 {
74   // see header file for class documentation
75
76   return "";
77 }
78
79 const char* AliHLTTRDAgent::GetRequiredComponentLibraries() const
80 {
81   return "";
82 }
83
84 int AliHLTTRDAgent::RegisterComponents(AliHLTComponentHandler* pHandler) const
85 {
86   // see header file for class documentation
87   if (!pHandler) return -EINVAL;
88   pHandler->AddComponent(new AliHLTTRDClusterizerComponent);
89   pHandler->AddComponent(new AliHLTTRDTrackerComponent);
90   pHandler->AddComponent(new AliHLTTRDTrackerV1Component);
91   pHandler->AddComponent(new AliHLTTRDCalibrationComponent);
92   pHandler->AddComponent(new AliHLTTRDEsdWriterComponent);
93   
94   return 0;
95 }
96
97 int AliHLTTRDAgent::GetHandlerDescription(AliHLTComponentDataType dt,
98                                           AliHLTUInt32_t spec,
99                                           AliHLTOUTHandlerDesc& desc) const
100 {
101   // see header file for class documentation
102
103   // raw data blocks to be fed into offline reconstruction
104   if (dt==(kAliHLTDataTypeDDLRaw|kAliHLTDataOriginTRD)) {
105     desc=AliHLTOUTHandlerDesc(kRawReader, dt, GetModuleId());
106     HLTInfo("module %s handles data block type %s specification %d (0x%x)", 
107             GetModuleId(), AliHLTComponent::DataType2Text(dt).c_str(), spec, spec);
108     return 1;
109   }
110   return 0;
111 }
112
113 AliHLTOUTHandler* AliHLTTRDAgent::GetOutputHandler(AliHLTComponentDataType dt,
114                                                    AliHLTUInt32_t /*spec*/)
115 {
116   // see header file for class documentation
117
118   // raw data blocks to be fed into offline reconstruction
119   if (dt==(kAliHLTDataTypeDDLRaw|kAliHLTDataOriginTRD)) {
120     // use the default handler
121     if (!fRawDataHandler) {
122       fRawDataHandler=new AliHLTOUTHandlerEquId;
123     }
124     return fRawDataHandler;
125   }
126   return NULL;
127 }
128
129 int AliHLTTRDAgent::DeleteOutputHandler(AliHLTOUTHandler* pInstance)
130 {
131   // see header file for class documentation
132   if (pInstance==NULL) return -EINVAL;
133
134   if (pInstance==fRawDataHandler) {
135     delete fRawDataHandler;
136     fRawDataHandler=NULL;
137     return 0;
138   }
139
140   delete pInstance;
141   return 0;
142 }
143