Adding output data type of rootifier component to the constants class.
[u/mrichter/AliRoot.git] / HLT / MUON / AliHLTMUONConstants.h
CommitLineData
26a4668d 1#ifndef ALIHLTMUONCONSTANTS_H
2#define ALIHLTMUONCONSTANTS_H
e6357f88 3/**************************************************************************
4 * This file is property of and copyright by the ALICE HLT Project *
5 * All rights reserved. *
6 * *
7 * Primary Authors: *
8 * Indranil Das <indra.das@saha.ac.in> *
9 * Artur Szostak <artursz@iafrica.com> *
10 * *
11 * Permission to use, copy, modify and distribute this software and its *
12 * documentation strictly for non-commercial purposes is hereby granted *
13 * without fee, provided that the above copyright notice appears in all *
14 * copies and that both the copyright notice and this permission notice *
15 * appear in the supporting documentation. The authors make no claims *
16 * about the suitability of this software for any purpose. It is *
17 * provided "as is" without express or implied warranty. *
18 **************************************************************************/
26a4668d 19
20/* $Id$ */
21
22/**
23 * @file AliHLTMUONConstants.h
24 * @author Indranil Das <indra.das@saha.ac.in>,
25 * Artur Szostak <artursz@iafrica.com>
26 * @date
27 * @brief Class containing various dimuon HLT constants used in the system.
28 */
29
33b1e2f2 30#include "TObject.h"
31
b12fe461 32// Forward declare structures.
33extern "C" {
34struct AliHLTComponentDataType;
35struct AliHLTMUONTriggerRecordStruct;
36struct AliHLTMUONTrigRecInfoStruct;
b12fe461 37struct AliHLTMUONRecHitStruct;
38struct AliHLTMUONChannelStruct;
39struct AliHLTMUONClusterStruct;
40struct AliHLTMUONMansoTrackStruct;
41struct AliHLTMUONMansoRoIStruct;
42struct AliHLTMUONMansoCandidateStruct;
43struct AliHLTMUONTrackDecisionStruct;
44struct AliHLTMUONPairDecisionStruct;
45} // extern "C"
26a4668d 46
47/**
48 * AliHLTMUONConstants contains a list of global dimuon HLT specific constants
49 * and constant structures used in the system.
50 * Static methods are provided to access these values.
51 */
52class AliHLTMUONConstants
53{
54public:
55
c8ec7c7e 56 static const AliHLTMUONTriggerRecordStruct& NilTriggerRecordStruct()
57 {
58 return fgkNilTriggerRecordStruct;
59 }
60
61 static const AliHLTMUONTrigRecInfoStruct& NilTrigRecInfoStruct()
62 {
63 return fgkNilTrigRecInfoStruct;
64 }
65
26a4668d 66 static const AliHLTMUONRecHitStruct& NilRecHitStruct()
67 {
68 return fgkNilRecHitStruct;
69 }
70
910807dd 71 static const AliHLTMUONChannelStruct& NilChannelStruct()
26a4668d 72 {
910807dd 73 return fgkNilChannelStruct;
26a4668d 74 }
75
910807dd 76 static const AliHLTMUONClusterStruct& NilClusterStruct()
26a4668d 77 {
910807dd 78 return fgkNilClusterStruct;
26a4668d 79 }
80
90a74d7a 81 static const AliHLTMUONMansoTrackStruct& NilMansoTrackStruct()
82 {
83 return fgkNilMansoTrackStruct;
84 }
85
86 static const AliHLTMUONMansoRoIStruct& NilMansoRoIStruct()
87 {
88 return fgkNilMansoRoIStruct;
89 }
90
91 static const AliHLTMUONMansoCandidateStruct& NilMansoCandidateStruct()
92 {
93 return fgkNilMansoCandidateStruct;
94 }
95
96 static const AliHLTMUONTrackDecisionStruct& NilTrackDecisionStruct()
97 {
98 return fgkNilTrackDecisionStruct;
99 }
100
101 static const AliHLTMUONPairDecisionStruct& NilPairDecisionStruct()
102 {
103 return fgkNilPairDecisionStruct;
104 }
105
668eee9f 106 // Returns the raw data type for MUON DDLs. To figure out if the DDL format
107 // will be for a tracking DDL or trigger DDL one needs to also check the
108 // sepcification word of the input data block. If one of the first 20 least
109 // significant bits are set then it is a tracker DDL otherwise if it is
110 // the 21st or 22nd bit then it is from the muon trigger.
111 static const AliHLTComponentDataType& DDLRawDataType()
26a4668d 112 {
668eee9f 113 return fgkDDLRawDataType;
26a4668d 114 }
115
910807dd 116 static const AliHLTComponentDataType& TriggerRecordsBlockDataType()
26a4668d 117 {
910807dd 118 return fgkTriggerRecordsBlockDataType;
26a4668d 119 }
120
910807dd 121 static const AliHLTComponentDataType& TrigRecsDebugBlockDataType()
26a4668d 122 {
910807dd 123 return fgkTrigRecsDebugBlockDataType;
26a4668d 124 }
125
910807dd 126 static const AliHLTComponentDataType& RecHitsBlockDataType()
127 {
128 return fgkRecHitsBlockDataType;
129 }
130
131 static const AliHLTComponentDataType& ClusterBlockDataType()
132 {
133 return fgkClusterBlockDataType;
26a4668d 134 }
135
910807dd 136 static const AliHLTComponentDataType& ChannelBlockDataType()
26a4668d 137 {
910807dd 138 return fgkChannelBlockDataType;
26a4668d 139 }
140
141 static const AliHLTComponentDataType& MansoTracksBlockDataType()
142 {
143 return fgkMansoTracksBlockDataType;
144 }
145
90a74d7a 146 static const AliHLTComponentDataType& MansoCandidatesBlockDataType()
26a4668d 147 {
90a74d7a 148 return fgkMansoCandidatesBlockDataType;
910807dd 149 }
150
90a74d7a 151 static const AliHLTComponentDataType& SinglesDecisionBlockDataType()
910807dd 152 {
90a74d7a 153 return fgkSinglesDecisionBlockDataType;
26a4668d 154 }
155
90a74d7a 156 static const AliHLTComponentDataType& PairsDecisionBlockDataType()
26a4668d 157 {
90a74d7a 158 return fgkPairsDecisionBlockDataType;
26a4668d 159 }
649ab027 160
73ed798e 161 static const AliHLTComponentDataType& RootifiedEventDataType()
162 {
163 return fgkRootifiedEventDataType;
164 }
165
649ab027 166 static const AliHLTComponentDataType& ESDDataType()
167 {
168 return fgkESDDataType;
169 }
17d68f2a 170
171 static const AliHLTComponentDataType& ClusterStoreDataType()
172 {
173 return fgkClusterStoreDataType;
174 }
a63da6d6 175
176 static const AliHLTComponentDataType& HistogramDataType()
177 {
178 return fgkHistogramDataType;
179 }
b12fe461 180
181 static const char* RecHitsSourceId()
182 {
183 return fgkRecHitsSourceId;
184 }
6cde4e61 185
e6357f88 186 static const char* TriggerRecordsSourceId()
187 {
188 return fgkTriggerRecordsSourceId;
189 }
190
887a669c 191 static const char* TracksSourceId()
e6357f88 192 {
887a669c 193 return fgkTracksSourceId;
194 }
195
196 static const char* DigitPublisherId()
197 {
198 return fgkDigitPublisherId;
e6357f88 199 }
200
201 static const char* TriggerReconstructorId()
202 {
203 return fgkTriggerReconstructorId;
204 }
205
206 static const char* HitReconstructorId()
207 {
208 return fgkHitReconstructorId;
209 }
210
6cde4e61 211 static const char* MansoTrackerFSMId()
212 {
213 return fgkMansoTrackerFSMId;
214 }
e6357f88 215
216 static const char* DecisionComponentId()
217 {
218 return fgkDecisionComponentId;
219 }
8134dd2e 220
649ab027 221 static const char* ESDMakerId()
222 {
223 return fgkESDMakerId;
224 }
225
450e0b36 226 static const char* RootifierComponentId()
8134dd2e 227 {
450e0b36 228 return fgkRootifierComponentId;
8134dd2e 229 }
0528e93a 230
231 static const char* EmptyEventFilterComponentId()
232 {
233 return fgkEmptyEventFilterComponentId;
234 }
c9537879 235
dba14d7d 236 static const char* DataCheckerComponentId()
237 {
238 return fgkDataCheckerComponentId;
239 }
240
17d68f2a 241 static const char* ClusterFinderId()
242 {
243 return fgkClusterFinderId;
244 }
245
a63da6d6 246 static const char* RawDataHistogrammerId()
247 {
248 return fgkRawDataHistogrammerId;
249 }
250
2b7af22a 251 static const char* TriggerReconstructorCDBPath()
252 {
253 return fgkTriggerReconstructorCDBPath;
254 }
255
887a669c 256 static const char* HitReconstructorCDBPath()
257 {
258 return fgkHitReconstructorCDBPath;
259 }
260
261 static const char* MansoTrackerFSMCDBPath()
262 {
263 return fgkMansoTrackerFSMCDBPath;
264 }
265
c9537879 266 static const char* DecisionComponentCDBPath()
267 {
268 return fgkDecisionComponentCDBPath;
269 }
0999b15c 270
271 static double DefaultNonBendingReso() { return 0.01; }
272
273 static double DefaultBendingReso() { return 0.144; }
26a4668d 274
275private:
90a74d7a 276
b12fe461 277 // Should never have to create, destroy or copy this object.
213499f0 278 AliHLTMUONConstants() {}
b12fe461 279 AliHLTMUONConstants(const AliHLTMUONConstants& obj);
213499f0 280 virtual ~AliHLTMUONConstants() {}
b12fe461 281 AliHLTMUONConstants& operator = (const AliHLTMUONConstants& obj);
c8ec7c7e 282
213499f0 283
b12fe461 284 // The following are null/nil structures that can also be used as sentinels:
285 static const AliHLTMUONTriggerRecordStruct fgkNilTriggerRecordStruct; // Nil trigger record.
286 static const AliHLTMUONTrigRecInfoStruct fgkNilTrigRecInfoStruct; // Nil trigger record debug information.
b12fe461 287 static const AliHLTMUONRecHitStruct fgkNilRecHitStruct; // Nil reconstructed hit.
288 static const AliHLTMUONChannelStruct fgkNilChannelStruct; // Nil tracking chamber channel.
289 static const AliHLTMUONClusterStruct fgkNilClusterStruct; // Nil tracking chamber cluster.
290 static const AliHLTMUONMansoTrackStruct fgkNilMansoTrackStruct; // Nil manso track.
291 static const AliHLTMUONMansoRoIStruct fgkNilMansoRoIStruct; // Nil manso region of interest.
292 static const AliHLTMUONMansoCandidateStruct fgkNilMansoCandidateStruct; // Nil manso candidate track.
293 static const AliHLTMUONTrackDecisionStruct fgkNilTrackDecisionStruct; // Nil decision for single track.
294 static const AliHLTMUONPairDecisionStruct fgkNilPairDecisionStruct; // Nil decision for track pair.
295
296 // HLT component input and output data block types:
668eee9f 297 static const AliHLTComponentDataType fgkDDLRawDataType; // DDL packed data block type from dimuon spectrometer.
b12fe461 298 static const AliHLTComponentDataType fgkTriggerRecordsBlockDataType; // Trigger records block type generated by trigger DDL translation components.
299 static const AliHLTComponentDataType fgkTrigRecsDebugBlockDataType; // Debugging information block type generated by trigger DDL translation components.
b12fe461 300 static const AliHLTComponentDataType fgkRecHitsBlockDataType; // Reconstructed hits block type generated by hit reconstruction components.
301 static const AliHLTComponentDataType fgkClusterBlockDataType; // Debugging information block type for reconstructed hit clusters.
302 static const AliHLTComponentDataType fgkChannelBlockDataType; // Debugging information block type for channels corresponding to clusters.
303 static const AliHLTComponentDataType fgkMansoTracksBlockDataType; // Manso tracks block type generated by Manso tracker components.
304 static const AliHLTComponentDataType fgkMansoCandidatesBlockDataType; // Debugging information about a track candidate generated by the Manso algorithm.
305 static const AliHLTComponentDataType fgkSinglesDecisionBlockDataType; // Trigger decision block type for single track decisions.
306 static const AliHLTComponentDataType fgkPairsDecisionBlockDataType; // Trigger decision block type for pairs of particles.
73ed798e 307 static const AliHLTComponentDataType fgkRootifiedEventDataType; // An AliHLTMUONEvent ROOT object.
649ab027 308 static const AliHLTComponentDataType fgkESDDataType; // The ESD data type with origin equal to MUON.
17d68f2a 309 static const AliHLTComponentDataType fgkClusterStoreDataType; // Offline algorithm cluster store object.
a63da6d6 310 static const AliHLTComponentDataType fgkHistogramDataType; // TH1/2/3 histogram type.
b12fe461 311
312 // Component ID names:
e6357f88 313 static const char* fgkRecHitsSourceId; // Name of source component for reconstructed hits for debugging.
314 static const char* fgkTriggerRecordsSourceId; // Name of source component for trigger records for debugging.
887a669c 315 static const char* fgkTracksSourceId; // Name of source component for tracks for debugging.
316 static const char* fgkDigitPublisherId; // Component name for publishing DDL streams from digits.
e6357f88 317 static const char* fgkTriggerReconstructorId; // Trigger record reconstructor component name.
318 static const char* fgkHitReconstructorId; // Centre of gravity cluster finder component name.
6cde4e61 319 static const char* fgkMansoTrackerFSMId; // Manso tracker FSM implementation component name.
e6357f88 320 static const char* fgkDecisionComponentId; // dHLT decision component name.
649ab027 321 static const char* fgkESDMakerId; // Name of ESD maker component which converts dHLT data to AliESDEvent classes.
450e0b36 322 static const char* fgkRootifierComponentId; // The name of the event filter debugging component.
0528e93a 323 static const char* fgkEmptyEventFilterComponentId; // The name of the event filter debugging component.
dba14d7d 324 static const char* fgkDataCheckerComponentId; // Name of data checking component for debugging.
17d68f2a 325 static const char* fgkClusterFinderId; // Name of cluster finder implementing offline algorithms.
a63da6d6 326 static const char* fgkRawDataHistogrammerId; // Raw data histogrammer component name.
c9537879 327
328 // CDB path entries to configuration information.
2b7af22a 329 static const char* fgkTriggerReconstructorCDBPath; // Path to CDB entry for the trigger reconstruction component.
887a669c 330 static const char* fgkHitReconstructorCDBPath; // Path to CDB entry for the hit reconstruction component.
331 static const char* fgkMansoTrackerFSMCDBPath; // Path to CDB entry for the Manso FSM tracker component.
c9537879 332 static const char* fgkDecisionComponentCDBPath; // Path to CDB entry for trigger decision component.
33b1e2f2 333
334 ClassDef(AliHLTMUONConstants, 0); // Interface class to dHLT constants.
26a4668d 335};
336
337#endif // ALIHLTMUONCONSTANTS_H