/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTTPCDefinitions)
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkDDLPackedRawDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'D','D','L','_','R','W','P','K'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkDDLEncodedEntropyRawDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'D','D','L','E','N','C','E','N'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkDDLEncodedEntropyRawDataType = AliHLTComponentDataTypeInitializer("DDLENCEN", kAliHLTDataOriginTPC);
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkPackedRawDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'R','A','W','P','A','K','E','D'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkUnpackedRawDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'R','A','W','U','N','P','A','K'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkClustersDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'C','L','U','S','T','E','R','S'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkVertexDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'V','E','R','T','E','X',' ',' '}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkTrackSegmentsDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'T','R','A','K','S','E','G','S'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkTracksDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'T','R','A','C','K','S',' ',' '}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkClusterTracksModelDataType =
- (AliHLTComponentDataType){ sizeof(AliHLTComponentDataType), {'C','L','S','T','R','K','M','D'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkRemainingClustersModelDataType =
- (AliHLTComponentDataType) { sizeof(AliHLTComponentDataType), {'R','E','M','C','L','S','M','D'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkClusterTracksCompressedDataType =
- (AliHLTComponentDataType) { sizeof(AliHLTComponentDataType), {'C','L','S','T','R','K','C','M'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkRemainingClustersCompressedDataType =
- (AliHLTComponentDataType) { sizeof(AliHLTComponentDataType), {'R','E','M','C','L','S','C','M'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkPackedRawDataType = AliHLTComponentDataTypeInitializer("RAWPAKED", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkUnpackedRawDataType = AliHLTComponentDataTypeInitializer("RAWUNPAK", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkClustersDataType = AliHLTComponentDataTypeInitializer("CLUSTERS", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkRawClustersDataType = AliHLTComponentDataTypeInitializer("CLUSTRAW", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkHWClustersDataType = AliHLTComponentDataTypeInitializer("HWCLUST1", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkAlterClustersDataType = AliHLTComponentDataTypeInitializer("HWCL_ALT", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkVertexDataType = AliHLTComponentDataTypeInitializer("VERTEX ", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkTrackSegmentsDataType = AliHLTComponentDataTypeInitializer("TRAKSEGS", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkTracksDataType = AliHLTComponentDataTypeInitializer("TRACKS ", kAliHLTDataOriginTPC);
+
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkClusterTracksModelDataType = AliHLTComponentDataTypeInitializer("CLSTRKMD", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkRemainingClustersModelDataType = AliHLTComponentDataTypeInitializer("REMCLSMD", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkClusterTracksCompressedDataType = AliHLTComponentDataTypeInitializer("CLSTRKCM", kAliHLTDataOriginTPC);
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkRemainingClustersCompressedDataType = AliHLTComponentDataTypeInitializer("REMCLSCM", kAliHLTDataOriginTPC);
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkCalibPedestalDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'C','A','L','_','P','E','D',' '}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkCalibPulserDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'C','A','L','_','P','U','L','S'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkCalibCEDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'C','A','L','_','C','E',' ',' '}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkActivePadsDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'A','C','T','I','V','P','A','D'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
-const AliHLTComponentDataType AliHLTTPCDefinitions::fgkNoiseHistoDataType =
- (AliHLTComponentDataType){sizeof(AliHLTComponentDataType), {'N','O','I','S','E','M','A','P'}, kAliHLTDataOriginAny} | kAliHLTDataOriginTPC;
+const AliHLTComponentDataType& AliHLTTPCDefinitions::DDLEncodedEntropyRawDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("DDLENCEN", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::PackedRawDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("RAWPAKED", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::UnpackedRawDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("RAWUNPAK", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::ClustersDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CLUSTERS", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::RawClustersDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CLUSTRAW", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::HWClustersDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("HWCLUST1", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::AlterClustersDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("HWCL_ALT", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::VertexDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("VERTEX ", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::TrackSegmentsDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("TRAKSEGS", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::TracksDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("TRACKS ", kAliHLTDataOriginTPC);
+ return dt;
+}
+
+const AliHLTComponentDataType& AliHLTTPCDefinitions::ClusterTracksModelDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CLSTRKMD", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::RemainingClustersModelDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("REMCLSMD", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::ClusterTracksCompressedDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CLSTRKCM", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::ClusterIdTracksDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CLIDSTRK", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::RemainingClustersCompressedDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("REMCLSCM", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::RemainingClusterIdsDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("REMCLIDS", kAliHLTDataOriginTPC);
+ return dt;
+}
+
+const AliHLTComponentDataType& AliHLTTPCDefinitions::CalibPedestalDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CAL_PED ", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::CalibPulserDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CAL_PULS", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::CalibCEDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CAL_CE ", kAliHLTDataOriginTPC);
+ return dt;
+}
+
+const AliHLTComponentDataType& AliHLTTPCDefinitions::OfflineCalibAlignDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CALALIGN", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType& AliHLTTPCDefinitions::OfflineCalibTracksDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CALTRACK", kAliHLTDataOriginTPC);
+ return dt;
+}
+
+const AliHLTComponentDataType& AliHLTTPCDefinitions::OfflineCalibTracksGainDataType() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CALGAIN ", kAliHLTDataOriginTPC);
+ return dt;
+}
+
+const AliHLTComponentDataType& AliHLTTPCDefinitions::AliHLTDataTypeClusterMCInfo() {
+ static AliHLTComponentDataType dt = AliHLTComponentDataTypeInitializer("CLMCINFO", kAliHLTDataOriginTPC);
+ return dt;
+}
+const AliHLTComponentDataType AliHLTTPCDefinitions::fgkAliHLTDataTypeClusterMCInfo = AliHLTComponentDataTypeInitializer("CLMCINFO", kAliHLTDataOriginTPC);
+
+
+const AliHLTTPCDefinitions::AliClusterParameter AliHLTTPCDefinitions::fgkClusterParameterDefinitions[]= {
+ {AliHLTTPCDefinitions::kPadRow, "padrow", 6, 1, 1}, // difference of rows, mostly 0 or 1
+ {AliHLTTPCDefinitions::kPad, "pad", 14, 12, 60}, // <100um for 6mm pads
+ {AliHLTTPCDefinitions::kTime, "time", 15, 13, 25}, // <100um for 2.5 mm timebin pitch
+ {AliHLTTPCDefinitions::kSigmaY2, "sigmaY2", 8, 5, 25},
+ {AliHLTTPCDefinitions::kSigmaZ2, "sigmaZ2", 8, 5, 10},
+ {AliHLTTPCDefinitions::kCharge, "charge", 16, 9, 1},
+ {AliHLTTPCDefinitions::kQMax, "qmax", 10, 6, 1},
+ {AliHLTTPCDefinitions::kResidualPad, "respad", 9, 4, 60}, // <100um for 6mm pads, sign stored in separate bit
+ {AliHLTTPCDefinitions::kResidualTime,"restime", 8, 4, 25}, // <100um for 2.5 mm timebin pitch, separate bit for sign
+ {AliHLTTPCDefinitions::kClusterCount,"clustercount", 6, 3, 1} // number of clusters on that row
+};
+
+unsigned AliHLTTPCDefinitions::GetNumberOfClusterParameterDefinitions()
+{
+ return sizeof(fgkClusterParameterDefinitions)/sizeof(AliClusterParameter);
+}
+
+// NOTE! those values are related to the number of bits in
+// fgkClusterParameterDefinitions
+const unsigned AliHLTTPCDefinitions::fgkMaxClusterDeltaPad=8;
+const unsigned AliHLTTPCDefinitions::fgkMaxClusterDeltaTime=10;
AliHLTTPCDefinitions::AliHLTTPCDefinitions()
{
// see header file for class documentation
}
+bool AliHLTTPCDefinitions::DDLIdToSlicePatch(AliHLTInt32_t ddlid, AliHLTUInt8_t& slice, AliHLTUInt8_t& patch)
+{
+ // Convert DDL ID to patch and slice numbers.
+
+ if ((AliHLTUInt32_t(ddlid) >> 8) != 0x3) return false; // Check that detector is TPC.
+ AliHLTUInt32_t ddl = (AliHLTUInt32_t(ddlid) & 0xFF);
+ if (ddl > 215) return false;
+ if (ddl < 72)
+ {
+ slice = ddl / 2;
+ patch = ddl % 2;
+ }
+ else
+ {
+ ddl -= 72;
+ slice = ddl / 4;
+ patch = ddl % 4 + 2;
+ }
+ return true;
+}