]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/MUON/AliHLTMUONDataTypes.h
adding Copy and Clone methods inherited from TObject for abstract access and
[u/mrichter/AliRoot.git] / HLT / MUON / AliHLTMUONDataTypes.h
index ef6346f36e0c057bca510d7d2225823da49cd667..1e90e1e768e7ad6f84715a629552d57ba425a37e 100644 (file)
 extern "C"
 {
 
-typedef signed char AliHLTInt8_t;
-typedef signed int AliHLTInt32_t;
-typedef float AliHLTFloat32_t;
-typedef double AliHLTFloat64_t;
-
 /**
  * The common internal dimuon HLT data block header.
  * These headers help to identify the data block when it is written to disk and
@@ -51,11 +46,59 @@ struct AliHLTMUONDataBlockHeader
        AliHLTUInt32_t fNrecords; // Number of records in this data block.
 };
 
+/**
+ * The field structure of a single row of the AliHLTMUONHitReconstructor component's
+ * lookup table.
+ */
+struct AliHLTMUONHitRecoLutRow
+{
+       AliHLTInt32_t fDetElemId;  // The detector element ID of the pad.
+       AliHLTInt32_t fIX, fIY;    // The X,Y number of the pad.
+       AliHLTFloat32_t fRealX, fRealY, fRealZ;  // The real coordinate of the pad.
+       AliHLTFloat32_t fHalfPadSize; // half padsize in X for bending and Y for nonbending
+       AliHLTInt32_t fPlane;  // The plane and PCB zone ID numbers.
+       AliHLTFloat32_t fPed, fSigma, fA0, fA1; // Calibration values
+       AliHLTInt32_t fThres, fSat; //Calibration values
+};
+
+/**
+ * The field structure of a single row of the AliHLTMUONTriggerReconstructor component's
+ * lookup table.
+ */
+struct AliHLTMUONTriggerRecoLutRow
+{
+       AliHLTUInt32_t fIdFlags;  /// The chamber and detector element identifier packed in AliHLTMUONRecHitStruct::fFlags format.
+       AliHLTFloat32_t fX;  // Global X coordinate of channel.
+       AliHLTFloat32_t fY;  // Global Y coordinate of channel.
+       AliHLTFloat32_t fZ;  // Global Z coordinate of channel.
+};
+
+/**
+ * The lookup table structure for the AliHLTMUONTriggerReconstructor component.
+ * The LUT is used for translating from channel addresses to geometrical positions
+ * and other relevant information of the strips in the trigger chambers.
+ */
+struct AliHLTMUONTriggerRecoLookupTable
+{
+       // The dimentions of the LUT are as follows:
+       // [trigger crate ID][local board ID][chamber][cathode - X/Y][bit set in bit pattern]
+       // - The trigger crate ID comes form the regional headers in the DDL payload.
+       // - Local board ID numbers come from the local trigger structures in the
+       //   DDL payload.
+       // - The chamber is for chambers 11 to 14 coded as [0..3], 0 for chamber 11,
+       //   1 for chamber 12 etc.
+       // - The cathode 0 is for the X trigger strips (bending plane) and 1 is
+       //   for the Y strips (non-bending plane).
+       // - The "bit set in pattern" indicates the bit number that was set in
+       //   the strip patterns found in the local structures of the DDL payload.
+       AliHLTMUONTriggerRecoLutRow fRow[16][16][4][2][16];
+};
+
 } // extern "C"
 
 
 /**
- * The sign of a particle.
+ * The sign/charge of a particle.
  */
 enum AliHLTMUONParticleSign
 {
@@ -69,6 +112,7 @@ enum AliHLTMUONParticleSign
  */
 enum AliHLTMUONChamberName
 {
+       kUnknownChamber = -1,
        kChamber1 = 0,
        kChamber2 = 1,
        kChamber3 = 2,
@@ -93,15 +137,13 @@ enum AliHLTMUONDataBlockType
        kUnknownDataBlock = 0,
        kTriggerRecordsDataBlock = 1000,
        kTrigRecsDebugDataBlock = 1001,
-       kTriggerChannelDataBlock = 1002,
        kRecHitsDataBlock = 2000,
        kClustersDataBlock = 2001,
        kChannelsDataBlock = 2002,
        kMansoTracksDataBlock = 3000,
-       kMansoRoIDataBlock = 3001,
-       kMansoTrialsDataBlock = 3002,
-       kDecisionDataBlock = 4000,
-       kDecisionDebugDataBlock = 4001
+       kMansoCandidatesDataBlock = 3001,
+       kSinglesDecisionDataBlock = 4000,
+       kPairsDecisionDataBlock = 4001
 };
 
 
@@ -129,21 +171,22 @@ inline std::ostream& operator << (std::ostream& stream, AliHLTMUONChamberName ch
 {
        switch (chamber)
        {
-       case kChamber1:  stream << "kChamber1";  break;
-       case kChamber2:  stream << "kChamber2";  break;
-       case kChamber3:  stream << "kChamber3";  break;
-       case kChamber4:  stream << "kChamber4";  break;
-       case kChamber5:  stream << "kChamber5";  break;
-       case kChamber6:  stream << "kChamber6";  break;
-       case kChamber7:  stream << "kChamber7";  break;
-       case kChamber8:  stream << "kChamber8";  break;
-       case kChamber9:  stream << "kChamber9";  break;
-       case kChamber10: stream << "kChamber10"; break;
-       case kChamber11: stream << "kChamber11"; break;
-       case kChamber12: stream << "kChamber12"; break;
-       case kChamber13: stream << "kChamber13"; break;
-       case kChamber14: stream << "kChamber14"; break;
-       default:         stream << "INVALID";
+       case kUnknownChamber:  stream << "kUnknownChamber";  break;
+       case kChamber1:        stream << "kChamber1";        break;
+       case kChamber2:        stream << "kChamber2";        break;
+       case kChamber3:        stream << "kChamber3";        break;
+       case kChamber4:        stream << "kChamber4";        break;
+       case kChamber5:        stream << "kChamber5";        break;
+       case kChamber6:        stream << "kChamber6";        break;
+       case kChamber7:        stream << "kChamber7";        break;
+       case kChamber8:        stream << "kChamber8";        break;
+       case kChamber9:        stream << "kChamber9";        break;
+       case kChamber10:       stream << "kChamber10";       break;
+       case kChamber11:       stream << "kChamber11";       break;
+       case kChamber12:       stream << "kChamber12";       break;
+       case kChamber13:       stream << "kChamber13";       break;
+       case kChamber14:       stream << "kChamber14";       break;
+       default:               stream << "INVALID";
        }
        return stream;
 }
@@ -156,19 +199,17 @@ inline std::ostream& operator << (std::ostream& stream, AliHLTMUONDataBlockType
 {
        switch (type)
        {
-       case kUnknownDataBlock:        stream << "kUnknownDataBlock";        break;
-       case kTriggerRecordsDataBlock: stream << "kTriggerRecordsDataBlock"; break;
-       case kTrigRecsDebugDataBlock:  stream << "kTrigRecsDebugDataBlock";  break;
-       case kTriggerChannelDataBlock: stream << "kTriggerChannelDataBlock"; break;
-       case kRecHitsDataBlock:        stream << "kRecHitsDataBlock";        break;
-       case kClustersDataBlock:       stream << "kClustersDataBlock";       break;
-       case kChannelsDataBlock:       stream << "kChannelsDataBlock";       break;
-       case kMansoTracksDataBlock:    stream << "kMansoTracksDataBlock";    break;
-       case kMansoRoIDataBlock:       stream << "kMansoRoIDataBlock";       break;
-       case kMansoTrialsDataBlock:    stream << "kMansoTrialsDataBlock";    break;
-       case kDecisionDataBlock:       stream << "kDecisionDataBlock";       break;
-       case kDecisionDebugDataBlock:  stream << "kDecisionDebugDataBlock";  break;
-       default:                       stream << "INVALID";
+       case kUnknownDataBlock:         stream << "kUnknownDataBlock";         break;
+       case kTriggerRecordsDataBlock:  stream << "kTriggerRecordsDataBlock";  break;
+       case kTrigRecsDebugDataBlock:   stream << "kTrigRecsDebugDataBlock";   break;
+       case kRecHitsDataBlock:         stream << "kRecHitsDataBlock";         break;
+       case kClustersDataBlock:        stream << "kClustersDataBlock";        break;
+       case kChannelsDataBlock:        stream << "kChannelsDataBlock";        break;
+       case kMansoTracksDataBlock:     stream << "kMansoTracksDataBlock";     break;
+       case kMansoCandidatesDataBlock: stream << "kMansoCandidatesDataBlock"; break;
+       case kSinglesDecisionDataBlock: stream << "kSinglesDecisionDataBlock"; break;
+       case kPairsDecisionDataBlock:   stream << "kPairsDecisionDataBlock";   break;
+       default:                        stream << "INVALID";
        }
        return stream;
 }