1 #ifndef ALIHLTMUONCONSTANTS_H
2 #define ALIHLTMUONCONSTANTS_H
3 /**************************************************************************
4 * This file is property of and copyright by the ALICE HLT Project *
5 * All rights reserved. *
8 * Indranil Das <indra.das@saha.ac.in> *
9 * Artur Szostak <artursz@iafrica.com> *
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 **************************************************************************/
23 * @file AliHLTMUONConstants.h
24 * @author Indranil Das <indra.das@saha.ac.in>,
25 * Artur Szostak <artursz@iafrica.com>
27 * @brief Class containing various dimuon HLT constants used in the system.
32 // Forward declare structures.
34 struct AliHLTComponentDataType;
35 struct AliHLTMUONTriggerRecordStruct;
36 struct AliHLTMUONTrigRecInfoStruct;
37 struct AliHLTMUONRecHitStruct;
38 struct AliHLTMUONChannelStruct;
39 struct AliHLTMUONClusterStruct;
40 struct AliHLTMUONMansoTrackStruct;
41 struct AliHLTMUONMansoRoIStruct;
42 struct AliHLTMUONMansoCandidateStruct;
43 struct AliHLTMUONTrackDecisionStruct;
44 struct AliHLTMUONPairDecisionStruct;
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.
52 class AliHLTMUONConstants
56 static const AliHLTMUONTriggerRecordStruct& NilTriggerRecordStruct()
58 return fgkNilTriggerRecordStruct;
61 static const AliHLTMUONTrigRecInfoStruct& NilTrigRecInfoStruct()
63 return fgkNilTrigRecInfoStruct;
66 static const AliHLTMUONRecHitStruct& NilRecHitStruct()
68 return fgkNilRecHitStruct;
71 static const AliHLTMUONChannelStruct& NilChannelStruct()
73 return fgkNilChannelStruct;
76 static const AliHLTMUONClusterStruct& NilClusterStruct()
78 return fgkNilClusterStruct;
81 static const AliHLTMUONMansoTrackStruct& NilMansoTrackStruct()
83 return fgkNilMansoTrackStruct;
86 static const AliHLTMUONMansoRoIStruct& NilMansoRoIStruct()
88 return fgkNilMansoRoIStruct;
91 static const AliHLTMUONMansoCandidateStruct& NilMansoCandidateStruct()
93 return fgkNilMansoCandidateStruct;
96 static const AliHLTMUONTrackDecisionStruct& NilTrackDecisionStruct()
98 return fgkNilTrackDecisionStruct;
101 static const AliHLTMUONPairDecisionStruct& NilPairDecisionStruct()
103 return fgkNilPairDecisionStruct;
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()
113 return fgkDDLRawDataType;
116 static const AliHLTComponentDataType& TriggerRecordsBlockDataType()
118 return fgkTriggerRecordsBlockDataType;
121 static const AliHLTComponentDataType& TrigRecsDebugBlockDataType()
123 return fgkTrigRecsDebugBlockDataType;
126 static const AliHLTComponentDataType& RecHitsBlockDataType()
128 return fgkRecHitsBlockDataType;
131 static const AliHLTComponentDataType& ClusterBlockDataType()
133 return fgkClusterBlockDataType;
136 static const AliHLTComponentDataType& ChannelBlockDataType()
138 return fgkChannelBlockDataType;
141 static const AliHLTComponentDataType& MansoTracksBlockDataType()
143 return fgkMansoTracksBlockDataType;
146 static const AliHLTComponentDataType& MansoCandidatesBlockDataType()
148 return fgkMansoCandidatesBlockDataType;
151 static const AliHLTComponentDataType& SinglesDecisionBlockDataType()
153 return fgkSinglesDecisionBlockDataType;
156 static const AliHLTComponentDataType& PairsDecisionBlockDataType()
158 return fgkPairsDecisionBlockDataType;
161 static const AliHLTComponentDataType& ESDDataType()
163 return fgkESDDataType;
166 static const AliHLTComponentDataType& ClusterStoreDataType()
168 return fgkClusterStoreDataType;
171 static const AliHLTComponentDataType& HistogramDataType()
173 return fgkHistogramDataType;
176 static const char* RecHitsSourceId()
178 return fgkRecHitsSourceId;
181 static const char* TriggerRecordsSourceId()
183 return fgkTriggerRecordsSourceId;
186 static const char* TracksSourceId()
188 return fgkTracksSourceId;
191 static const char* DigitPublisherId()
193 return fgkDigitPublisherId;
196 static const char* TriggerReconstructorId()
198 return fgkTriggerReconstructorId;
201 static const char* HitReconstructorId()
203 return fgkHitReconstructorId;
206 static const char* MansoTrackerFSMId()
208 return fgkMansoTrackerFSMId;
211 static const char* DecisionComponentId()
213 return fgkDecisionComponentId;
216 static const char* ESDMakerId()
218 return fgkESDMakerId;
221 static const char* RootifierComponentId()
223 return fgkRootifierComponentId;
226 static const char* EmptyEventFilterComponentId()
228 return fgkEmptyEventFilterComponentId;
231 static const char* DataCheckerComponentId()
233 return fgkDataCheckerComponentId;
236 static const char* ClusterFinderId()
238 return fgkClusterFinderId;
241 static const char* RawDataHistogrammerId()
243 return fgkRawDataHistogrammerId;
246 static const char* TriggerReconstructorCDBPath()
248 return fgkTriggerReconstructorCDBPath;
251 static const char* HitReconstructorCDBPath()
253 return fgkHitReconstructorCDBPath;
256 static const char* MansoTrackerFSMCDBPath()
258 return fgkMansoTrackerFSMCDBPath;
261 static const char* DecisionComponentCDBPath()
263 return fgkDecisionComponentCDBPath;
266 static double DefaultNonBendingReso() { return 0.01; }
268 static double DefaultBendingReso() { return 0.144; }
272 // Should never have to create, destroy or copy this object.
273 AliHLTMUONConstants() {}
274 AliHLTMUONConstants(const AliHLTMUONConstants& obj);
275 virtual ~AliHLTMUONConstants() {}
276 AliHLTMUONConstants& operator = (const AliHLTMUONConstants& obj);
279 // The following are null/nil structures that can also be used as sentinels:
280 static const AliHLTMUONTriggerRecordStruct fgkNilTriggerRecordStruct; // Nil trigger record.
281 static const AliHLTMUONTrigRecInfoStruct fgkNilTrigRecInfoStruct; // Nil trigger record debug information.
282 static const AliHLTMUONRecHitStruct fgkNilRecHitStruct; // Nil reconstructed hit.
283 static const AliHLTMUONChannelStruct fgkNilChannelStruct; // Nil tracking chamber channel.
284 static const AliHLTMUONClusterStruct fgkNilClusterStruct; // Nil tracking chamber cluster.
285 static const AliHLTMUONMansoTrackStruct fgkNilMansoTrackStruct; // Nil manso track.
286 static const AliHLTMUONMansoRoIStruct fgkNilMansoRoIStruct; // Nil manso region of interest.
287 static const AliHLTMUONMansoCandidateStruct fgkNilMansoCandidateStruct; // Nil manso candidate track.
288 static const AliHLTMUONTrackDecisionStruct fgkNilTrackDecisionStruct; // Nil decision for single track.
289 static const AliHLTMUONPairDecisionStruct fgkNilPairDecisionStruct; // Nil decision for track pair.
291 // HLT component input and output data block types:
292 static const AliHLTComponentDataType fgkDDLRawDataType; // DDL packed data block type from dimuon spectrometer.
293 static const AliHLTComponentDataType fgkTriggerRecordsBlockDataType; // Trigger records block type generated by trigger DDL translation components.
294 static const AliHLTComponentDataType fgkTrigRecsDebugBlockDataType; // Debugging information block type generated by trigger DDL translation components.
295 static const AliHLTComponentDataType fgkRecHitsBlockDataType; // Reconstructed hits block type generated by hit reconstruction components.
296 static const AliHLTComponentDataType fgkClusterBlockDataType; // Debugging information block type for reconstructed hit clusters.
297 static const AliHLTComponentDataType fgkChannelBlockDataType; // Debugging information block type for channels corresponding to clusters.
298 static const AliHLTComponentDataType fgkMansoTracksBlockDataType; // Manso tracks block type generated by Manso tracker components.
299 static const AliHLTComponentDataType fgkMansoCandidatesBlockDataType; // Debugging information about a track candidate generated by the Manso algorithm.
300 static const AliHLTComponentDataType fgkSinglesDecisionBlockDataType; // Trigger decision block type for single track decisions.
301 static const AliHLTComponentDataType fgkPairsDecisionBlockDataType; // Trigger decision block type for pairs of particles.
302 static const AliHLTComponentDataType fgkESDDataType; // The ESD data type with origin equal to MUON.
303 static const AliHLTComponentDataType fgkClusterStoreDataType; // Offline algorithm cluster store object.
304 static const AliHLTComponentDataType fgkHistogramDataType; // TH1/2/3 histogram type.
306 // Component ID names:
307 static const char* fgkRecHitsSourceId; // Name of source component for reconstructed hits for debugging.
308 static const char* fgkTriggerRecordsSourceId; // Name of source component for trigger records for debugging.
309 static const char* fgkTracksSourceId; // Name of source component for tracks for debugging.
310 static const char* fgkDigitPublisherId; // Component name for publishing DDL streams from digits.
311 static const char* fgkTriggerReconstructorId; // Trigger record reconstructor component name.
312 static const char* fgkHitReconstructorId; // Centre of gravity cluster finder component name.
313 static const char* fgkMansoTrackerFSMId; // Manso tracker FSM implementation component name.
314 static const char* fgkDecisionComponentId; // dHLT decision component name.
315 static const char* fgkESDMakerId; // Name of ESD maker component which converts dHLT data to AliESDEvent classes.
316 static const char* fgkRootifierComponentId; // The name of the event filter debugging component.
317 static const char* fgkEmptyEventFilterComponentId; // The name of the event filter debugging component.
318 static const char* fgkDataCheckerComponentId; // Name of data checking component for debugging.
319 static const char* fgkClusterFinderId; // Name of cluster finder implementing offline algorithms.
320 static const char* fgkRawDataHistogrammerId; // Raw data histogrammer component name.
322 // CDB path entries to configuration information.
323 static const char* fgkTriggerReconstructorCDBPath; // Path to CDB entry for the trigger reconstruction component.
324 static const char* fgkHitReconstructorCDBPath; // Path to CDB entry for the hit reconstruction component.
325 static const char* fgkMansoTrackerFSMCDBPath; // Path to CDB entry for the Manso FSM tracker component.
326 static const char* fgkDecisionComponentCDBPath; // Path to CDB entry for trigger decision component.
328 ClassDef(AliHLTMUONConstants, 0); // Interface class to dHLT constants.
331 #endif // ALIHLTMUONCONSTANTS_H