ALIROOT-5433 Transition to CDHv3 in HLT
[u/mrichter/AliRoot.git] / HLT / MUON / AliHLTMUONConstants.h
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.                                                   *
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  **************************************************************************/
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   17 May 2007
27  * @brief  Class containing various dimuon HLT constants used in the system.
28  */
29
30 #include "TObject.h"
31
32 // Forward declare structures.
33 extern "C" {
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 AliHLTMUONTrackStruct;
44 struct AliHLTMUONTrackDecisionStruct;
45 struct AliHLTMUONPairDecisionStruct;
46 } // extern "C"
47
48 /**
49  * AliHLTMUONConstants contains a list of global dimuon HLT specific constants
50  * and constant structures used in the system.
51  * Static methods are provided to access these values.
52  */
53 class AliHLTMUONConstants
54 {
55 public:
56
57         // The following methods return null/nil structures that can also be used as sentinels:
58         static const AliHLTMUONTriggerRecordStruct& NilTriggerRecordStruct();
59         static const AliHLTMUONTrigRecInfoStruct& NilTrigRecInfoStruct();
60         static const AliHLTMUONRecHitStruct& NilRecHitStruct();
61         static const AliHLTMUONChannelStruct& NilChannelStruct();
62         static const AliHLTMUONClusterStruct& NilClusterStruct();
63         static const AliHLTMUONMansoTrackStruct& NilMansoTrackStruct();
64         static const AliHLTMUONMansoRoIStruct& NilMansoRoIStruct();
65         static const AliHLTMUONMansoCandidateStruct& NilMansoCandidateStruct();
66         static const AliHLTMUONTrackStruct& NilTrackStruct();
67         static const AliHLTMUONTrackDecisionStruct& NilTrackDecisionStruct();
68         static const AliHLTMUONPairDecisionStruct& NilPairDecisionStruct();
69
70         // Methods returning HLT component input and output data block types:
71         
72         /**
73          * Returns the raw data type for MUON DDLs. To figure out if the DDL format
74          * will be for a tracking DDL or trigger DDL one needs to also check the
75          * sepcification word of the input data block. If one of the first 20 least
76          * significant bits are set then it is a tracker DDL otherwise if it is
77          * the 21st or 22nd bit then it is from the muon trigger.
78          */
79         static const AliHLTComponentDataType& DDLRawDataType();
80
81         static const AliHLTComponentDataType& TriggerRecordsBlockDataType();
82         static const AliHLTComponentDataType& TrigRecsDebugBlockDataType();
83         static const AliHLTComponentDataType& RecHitsBlockDataType();
84         static const AliHLTComponentDataType& ClusterBlockDataType();
85         static const AliHLTComponentDataType& ChannelBlockDataType();
86         static const AliHLTComponentDataType& MansoTracksBlockDataType();
87         static const AliHLTComponentDataType& MansoCandidatesBlockDataType();
88         static const AliHLTComponentDataType& TracksBlockDataType();
89         static const AliHLTComponentDataType& SinglesDecisionBlockDataType();
90         static const AliHLTComponentDataType& PairsDecisionBlockDataType();
91         static const AliHLTComponentDataType& RootifiedEventDataType();
92         static const AliHLTComponentDataType& ESDDataType();
93         static const AliHLTComponentDataType& ClusterStoreDataType();
94         static const AliHLTComponentDataType& HistogramDataType();
95         
96         
97         // Methods to return component ID names:
98         static const char* RecHitsSourceId();
99         static const char* TriggerRecordsSourceId();
100         static const char* TracksSourceId();
101         static const char* DigitPublisherId();
102         static const char* TriggerReconstructorId();
103         static const char* HitReconstructorId();
104         static const char* MansoTrackerFSMId();
105         static const char* FullTrackerId();
106         static const char* DecisionComponentId();
107         static const char* ESDMakerId();
108         static const char* RootifierComponentId();
109         static const char* EmptyEventFilterComponentId();
110         static const char* DataCheckerComponentId();
111         static const char* ClusterFinderId();
112         static const char* RawDataHistogrammerId();
113         static const char* ClusterHistogrammerId();
114         
115         // Methods for returning the CDB path entries to configuration information:
116         static const char* TriggerReconstructorCDBPath();
117         static const char* HitReconstructorCDBPath();
118         static const char* MansoTrackerFSMCDBPath();
119         static const char* DecisionComponentCDBPath();
120         static const char* FieldIntegralsCDBPath();
121         
122         /// Returns the typical X (non-bending plane) resolution of the hit reconstruction (units = cm).
123         static double DefaultNonBendingReso();
124         
125         /// Returns the typical Y (bending plane) resolution of the hit reconstruction (units = cm).
126         static double DefaultBendingReso();
127
128 private:
129
130         // Should never have to create, destroy or copy this object.
131         AliHLTMUONConstants() {}
132         AliHLTMUONConstants(const AliHLTMUONConstants& obj);
133         virtual ~AliHLTMUONConstants() {}
134         AliHLTMUONConstants& operator = (const AliHLTMUONConstants& obj);
135         
136         ClassDef(AliHLTMUONConstants, 0);  // Interface class to dHLT constants.
137 };
138
139 #endif // ALIHLTMUONCONSTANTS_H