- bug fixes to get the digit maker working
authorodjuvsla <odjuvsla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 3 Feb 2010 21:48:21 +0000 (21:48 +0000)
committerodjuvsla <odjuvsla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 3 Feb 2010 21:48:21 +0000 (21:48 +0000)
- small changes in the test macro

17 files changed:
HLT/CALO/AliHLTCaloClusterizer.cxx
HLT/CALO/AliHLTCaloDigitMaker.cxx
HLT/CALO/AliHLTCaloDigitMaker.h
HLT/CALO/AliHLTCaloMapper.cxx
HLT/CALO/AliHLTCaloMapper.h
HLT/CALO/AliHLTCaloRawAnalyzerComponentv3.cxx
HLT/PHOS/AliHLTPHOSConstants.cxx
HLT/PHOS/AliHLTPHOSDigitMakerComponent.cxx
HLT/PHOS/AliHLTPHOSDigitMakerComponent.h
HLT/PHOS/AliHLTPHOSMapper.cxx
HLT/PHOS/AliHLTPHOSMapper.h
HLT/PHOS/AliHLTPHOSRawAnalyzerComponentv3.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzerComponentv3.h
HLT/PHOS/AliHLTPHOSRawAnalyzerCrudeComponent.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzerPeakFinderComponent.cxx
HLT/PHOS/macros/rec-hlt-calo-phos.C
HLT/libAliHLTPHOS.pkg

index 01c5e583da26700cd1766c7b8fb91cd57c3f685e..5ef3cc6ba7966a3bc1bfccf4e4f95e55ae243e56 100644 (file)
 #include "AliHLTCaloClusterizer.h"\r
 #include "AliHLTLogging.h"\r
 #include "TMath.h"\r
-#include "AliHLTCaloRecPointContainerStruct.h"\r
 #include "AliHLTCaloRecPointDataStruct.h"\r
 #include "AliHLTCaloDigitDataStruct.h"\r
 #include "AliHLTCaloDigitContainerDataStruct.h"\r
-#include "TClonesArray.h"\r
 #include "AliHLTCaloConstantsHandler.h"\r
-//#ifndef HAVENOT__PHOSRECOPARAMEMC // set from configure if EMC functionality not available in AliPHOSRecoParam\r
-//#include "AliPHOSRecoParam.h"\r
-//#else\r
-//#include "AliPHOSRecoParamEmc.h"\r
-//ff#endif\r
-#include <iostream>\r
-using namespace std;\r
-\r
-\r
 \r
 ClassImp(AliHLTCaloClusterizer);\r
 \r
@@ -98,24 +87,6 @@ AliHLTCaloClusterizer::SetRecPointDataPtr(AliHLTCaloRecPointDataStruct* recPoint
   fRecPointDataPtr = recPointDataPtr;\r
 }\r
 \r
-// void\r
-// AliHLTCaloClusterizer::SetRecoParameters(AliPHOSRecoParam* params)\r
-// {\r
-//   //see header file for documentation\r
-// #ifndef HAVE_NOT_PHOSRECOPARAMEMC // set from configure if EMC functionality not available in AliPHOSRecoParam\r
-//   // the new AliPHOSRecoParam functions, available from revision\r
-//   //  fEmcClusteringThreshold = params->GetEMCClusteringThreshold();\r
-//   // fEmcMinEnergyThreshold = params->GetEMCMinE();\r
-//   //  fLogWeight = params->GetEMCLogWeight();\r
-//   params++;\r
-//   params--;\r
-// #else\r
-//   fEmcClusteringThreshold = params->GetClusteringThreshold();\r
-//   fEmcMinEnergyThreshold = params->GetMinE();\r
-//   fLogWeight = params->GetLogWeight();\r
-// #endif\r
-// }  \r
-\r
 Int_t \r
 AliHLTCaloClusterizer::ClusterizeEvent(UInt_t availableSize, UInt_t& totSize)\r
 {\r
index cd564998030b353818179224a6275e48e11bcb3f..c966499d076830c6bc614bd8008ef94f5f056849 100644 (file)
@@ -36,6 +36,7 @@
 #include "AliHLTCaloChannelDataStruct.h"\r
 #include "AliHLTCaloChannelDataHeaderStruct.h"\r
 #include "AliHLTCaloDigitDataStruct.h"\r
+#include "AliHLTCaloCoordinate.h"\r
 #include "AliHLTCaloSharedMemoryInterfacev2.h" // added by PTH\r
 //#include "AliPHOSEMCAGeometry.h"\r
 #include "TH2F.h"\r
@@ -54,7 +55,8 @@ AliHLTCaloDigitMaker::AliHLTCaloDigitMaker(TString det) :
   fHighGainFactors(0),\r
   fLowGainFactors(0),\r
   fBadChannelMask(0),\r
-  fChannelBook(0)\r
+  fChannelBook(0),\r
+  fMaxEnergy(900)\r
 {\r
   // See header file for documentation\r
 \r
@@ -90,10 +92,6 @@ AliHLTCaloDigitMaker::AliHLTCaloDigitMaker(TString det) :
          \r
        }\r
     }    \r
-  \r
-  //Must be set in child instance\r
-  //fMapperPtr = new AliHLTCaloMapper(det);\r
-\r
 }\r
 \r
 AliHLTCaloDigitMaker::~AliHLTCaloDigitMaker() \r
@@ -114,9 +112,8 @@ AliHLTCaloDigitMaker::MakeDigits(AliHLTCaloChannelDataHeaderStruct* channelDataH
 //   Int_t xMod = -1;\r
 //   Int_t zMod = -1;\r
   \r
-  UShort_t coord1[4];\r
-  //  UShort_t coord2[4];\r
-  Float_t locCoord[3];\r
+\r
+  AliHLTCaloCoordinate coord;\r
   \r
   \r
   AliHLTCaloChannelDataStruct* currentchannel = 0;\r
@@ -130,29 +127,29 @@ AliHLTCaloDigitMaker::MakeDigits(AliHLTCaloChannelDataHeaderStruct* channelDataH
     {\r
       if(availableSize < totSize) return -1;\r
 \r
-      fMapperPtr->GetChannelCoord(currentchannel->fChannelID, coord1);\r
+      fMapperPtr->ChannelId2Coordinate(currentchannel->fChannelID, coord);\r
       \r
-      tmpchannel = currentchannel;\r
-         \r
-      fMapperPtr->GetLocalCoord(currentchannel->fChannelID, locCoord);\r
-      if(UseDigit(coord1, currentchannel))\r
+      //      fMapperPtr->GetLocalCoord(currentchannel->fChannelID, locCoord);\r
+      if(UseDigit(coord, currentchannel))\r
       {\r
-        AddDigit(currentchannel, coord1, locCoord);\r
+       AddDigit(currentchannel, coord);\r
         j++;         \r
         totSize += sizeof(AliHLTCaloDigitDataStruct);\r
       }\r
-      \r
       currentchannel = fShmPtr->NextChannel(); // Get the next channel\r
-\r
-      fMapperPtr->GetLocalCoord(currentchannel->fChannelID, locCoord);\r
-      if(UseDigit(coord1, currentchannel))\r
-      {\r
-        AddDigit(currentchannel, coord1, locCoord);\r
-        j++;         \r
-        totSize += sizeof(AliHLTCaloDigitDataStruct);\r
-      }\r
-       currentchannel = fShmPtr->NextChannel(); // Get the next channel\r
     }\r
+//       if(currentchannel)\r
+//     {\r
+//       fMapperPtr->GetLocalCoord(currentchannel->fChannelID, locCoord);\r
+//       if(UseDigit(coord1, currentchannel))\r
+//         {\r
+//           AddDigit(currentchannel, coord1, locCoord);\r
+//           j++;            \r
+//           totSize += sizeof(AliHLTCaloDigitDataStruct);\r
+//         }\r
+//       currentchannel = fShmPtr->NextChannel(); // Get the next channel\r
+//     }\r
+//     }\r
    \r
    fDigitCount += j;\r
    return fDigitCount; \r
@@ -226,57 +223,58 @@ AliHLTCaloDigitMaker::Reset()
 }\r
 \r
 \r
-void AliHLTCaloDigitMaker::AddDigit(AliHLTCaloChannelDataStruct* channelData, UShort_t* channelCoordinates, Float_t* localCoordinates)\r
+void AliHLTCaloDigitMaker::AddDigit(AliHLTCaloChannelDataStruct* channelData, AliHLTCaloCoordinate &coord)\r
 {\r
 \r
-  fChannelBook[channelCoordinates[0]][channelCoordinates[0]] = fDigitStructPtr;\r
+  fChannelBook[coord.fX][coord.fZ] = fDigitStructPtr;\r
 \r
-  fDigitStructPtr->fX = channelCoordinates[0];\r
-  fDigitStructPtr->fZ = channelCoordinates[1];\r
-\r
-  fDigitStructPtr->fLocX = localCoordinates[0];\r
-  fDigitStructPtr->fLocZ = localCoordinates[1];\r
-\r
-  if(channelCoordinates[2] == fCaloConstants->GetHIGHGAIN() )\r
+  fDigitStructPtr->fX = coord.fX;\r
+  fDigitStructPtr->fZ = coord.fZ;\r
+  fDigitStructPtr->fOverflow = false;\r
+  if(coord.fGain == fCaloConstants->GetHIGHGAIN() )\r
     {\r
-      fDigitStructPtr->fEnergy = channelData->fEnergy*fHighGainFactors[channelCoordinates[0]][channelCoordinates[1]];\r
-      if(channelData->fEnergy >= 1023)\r
+      fDigitStructPtr->fEnergy = channelData->fEnergy*fHighGainFactors[coord.fX][coord.fZ];\r
+      if(channelData->fEnergy >= fMaxEnergy)\r
        {\r
          fDigitStructPtr->fOverflow = true;\r
        }\r
-      //       printf("HG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f \n", channelCoordinates[0], channelCoordinates[1], channelData->fEnergy, fDigitStructPtr->fEnergy);\r
+      //       printf("HG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f \n", coord.fX, coord.fZ, channelData->fEnergy, fDigitStructPtr->fEnergy);\r
     }\r
   else\r
     {\r
-      fDigitStructPtr->fEnergy = channelData->fEnergy*fLowGainFactors[channelCoordinates[0]][channelCoordinates[1]];\r
+      fDigitStructPtr->fEnergy = channelData->fEnergy*fLowGainFactors[coord.fX][coord.fZ];\r
       if(channelData->fEnergy >= 1023)\r
        {\r
          fDigitStructPtr->fOverflow = true;\r
        }\r
-      //       printf("LG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f\n", channelCoordinates[0], channelCoordinates[1], channelData->fEnergy, fDigitStructPtr->fEnergy); \r
+      //       printf("LG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f\n", coord.fX, coord.fZ, channelData->fEnergy, fDigitStructPtr->fEnergy); \r
     }\r
   fDigitStructPtr->fTime = channelData->fTime * 0.0000001; //TODO\r
   fDigitStructPtr->fCrazyness = channelData->fCrazyness;\r
-  fDigitStructPtr->fModule = channelCoordinates[3];\r
+  fDigitStructPtr->fModule = coord.fModuleId;\r
   fDigitStructPtr++;\r
 }\r
 \r
-bool AliHLTCaloDigitMaker::UseDigit(UShort_t *channelCoordinates, AliHLTCaloChannelDataStruct *channel) \r
+bool AliHLTCaloDigitMaker::UseDigit(AliHLTCaloCoordinate &channelCoordinates, AliHLTCaloChannelDataStruct *channel) \r
 {\r
-  AliHLTCaloDigitDataStruct *tmpDigit = fChannelBook[channelCoordinates[0]][channelCoordinates[1]];\r
+  AliHLTCaloDigitDataStruct *tmpDigit = fChannelBook[channelCoordinates.fX][channelCoordinates.fZ];\r
+  //  printf("UseDigit: Got digit, x: %d, z: %d, gain: %d, amp: %f\n", channelCoordinates.fX, channelCoordinates.fZ, channelCoordinates.fGain, channel->fEnergy);\r
   if(tmpDigit)\r
     {\r
-      if(channelCoordinates[2] == fCaloConstants->GetLOWGAIN())\r
+      if(channelCoordinates.fGain == fCaloConstants->GetLOWGAIN())\r
        {\r
+         //      printf("UseDigit: Already have digit with, x: %d, z: %d, with high gain \n", channelCoordinates.fX, channelCoordinates.fZ);\r
          if(tmpDigit->fOverflow)\r
            {\r
+             //              printf("But it was in overflow! Let's use this low gain!");\r
              return true;\r
            }\r
          return false;\r
        }\r
       else\r
        {\r
-         if(channel->fEnergy >= fCaloConstants->GetMAXBINVALUE() )\r
+         //      printf("UseDigit: Already have digit with, x: %d, z: %d, with low gain: %d\n", channelCoordinates.fX, channelCoordinates.fZ);\r
+         if(channel->fEnergy > fMaxEnergy )\r
            {\r
              return false;\r
            }\r
index 189a83bb8ffede586eb1acad6acde0e432c2dd25..35a449c71b898e5abcb7d3ec052512f08ef875a6 100644 (file)
@@ -52,6 +52,7 @@ class TH2F;
 class AliHLTCaloSharedMemoryInterfacev2; // added by PTH\r
 class AliHLTCaloChannelDataHeaderStruct;\r
 class AliHLTCaloMapper;\r
+class AliHLTCaloCoordinate;\r
 class TString;\r
 \r
 //using namespace CaloHLTConst;\r
@@ -107,6 +108,9 @@ public:
   /** Reset the channel book */\r
   void Reset();\r
 \r
+  /** Set the mapper */\r
+  void SetMapper(AliHLTCaloMapper *mapper) { fMapperPtr = mapper; }\r
+\r
 private:\r
   \r
   AliHLTCaloDigitMaker();\r
@@ -116,7 +120,7 @@ private:
    * @param channelData is the channel data\r
    * @param coordinates is the coordinates of the channel, including gain and module\r
    */\r
-  void AddDigit(AliHLTCaloChannelDataStruct* channelData, UShort_t* channelCoordinates, Float_t* localCoordinates);\r
+  void AddDigit(AliHLTCaloChannelDataStruct* channelData, AliHLTCaloCoordinate &coord);\r
 \r
   /**\r
    * Check if we already have this crystal. If so, keep the high gain as long as it \r
@@ -125,7 +129,7 @@ private:
    * @param channel is a pointer to a struct containing channel information\r
    * @return true if we should use the digit. \r
    */\r
-  bool UseDigit(UShort_t *channelCoordinates, AliHLTCaloChannelDataStruct *channel);\r
+  bool UseDigit(AliHLTCaloCoordinate &coord, AliHLTCaloChannelDataStruct *channel);\r
 \r
   /** Pointer to shared memory interface */\r
   AliHLTCaloSharedMemoryInterfacev2* fShmPtr;                    //! transient\r
@@ -151,6 +155,9 @@ private:
   /** Channel book keeping variable */\r
   AliHLTCaloDigitDataStruct ***fChannelBook;                     //! transient\r
 \r
+  /** Maximum energy we allow in a channel */\r
+  Float_t fMaxEnergy;                                            //COMMENT\r
+\r
   /** Assignment operator and copy constructor not implemented */\r
   AliHLTCaloDigitMaker(const AliHLTCaloDigitMaker &);\r
   AliHLTCaloDigitMaker & operator = (const AliHLTCaloDigitMaker &);\r
index 6e0c5bc18d56ab9a8f2aa0eb3efeac46335fa850..61878bf8e35c9d93f9d0f933990618a949aae55e 100644 (file)
@@ -85,7 +85,7 @@ AliHLTCaloMapper::GetChannelID(const AliHLTUInt32_t spec, const Int_t hadd)
   Short_t index = GetDDLFromSpec(spec);
   if( index < 0 )
     {
-      //      HLTError("Specification 0x%X not consistent with single DDL in PHOS", spec);
+      HLTError("Specification 0x%X not consistent with single DDL in PHOS", spec);
       return index;
     }
   else
@@ -149,7 +149,7 @@ AliHLTCaloMapper::GetChannelCoord(const UShort_t channelId, UShort_t* channelCoo
   channelCoord[1] = (channelId >> 6)&0x3f;
   channelCoord[2] = (channelId >> 12)&0x1;
   channelCoord[3] = (channelId >> 13)&0x1f;
-  //  printf("Channel ID: 0x%X Coordinates: x = %d, z = %d, gain = %d\n", channelId, channelCoord[0], channelCoord[1], channelCoord[2]);
+  printf("Channel ID: 0x%X Coordinates: x = %d, z = %d, gain = %d\n", channelId, channelCoord[0], channelCoord[1], channelCoord[2]);
 }
 
 void
@@ -188,6 +188,7 @@ AliHLTCaloMapper::GetDDLFromSpec( const AliHLTUInt32_t spec )
     {
       //   HLTError("Specification %d, not consistent with any DDL in PHOS or EMCAL", spec  );
     }
+
   return tmpIndex;
 }
 
index 08f5163d272c98e3d32a6fab9553298c216dd378..030936f6b9319902f8385bc04a63f4411b5edca3 100644 (file)
@@ -42,7 +42,7 @@ public:
   bool GetIsInitializedMapping();
   virtual char* GetFilePath();
  
-  int  GetChannelID(const AliHLTUInt32_t spec, const Int_t hadd);
+  virtual int  GetChannelID(const AliHLTUInt32_t spec, const Int_t hadd);
   static void GetChannelCoord(const UShort_t channelId, UShort_t* channelCoord);
   static void ChannelId2Coordinate(const int channelId,    AliHLTCaloCoordinate &channelCoord);
   virtual void GetLocalCoord(const int channelId, Float_t* localCoord) const; 
@@ -56,11 +56,18 @@ public:
     char fXCol; // Coordinate in X direction (perpendicular too beam direction an parallell to ground) relatve to one Module
     char fGain; // Gain (high gain = 1, low gain = 0)
   };
-  
   struct fDDLSpecificationMap{ 
-    char fModId; 
+    UInt_t fRcuX; // Coordinate in Z direction (beam direction) relatve too one RCU
+    UInt_t fRcuZ; // Coordinate in X direction (perpendicular too beam direction an parallell to ground) relatve too one RCU
+    UInt_t fRcuXOffset;
+    UInt_t fRcuZOffset;
+    int fModId; 
   };
   
+//   struct fDDLSpecificationMap{ 
+//     char fModId; 
+//   };
+  
 
   fAltromap *fHw2geomapPtr; //pointer to structure holding information about geometrical address 
 
index 61d57db7a15d8c22b89efaee3946c3268e8a4967..6728f8c7681cf86c8073f992ed26483e34ff19a2 100644 (file)
@@ -33,6 +33,7 @@
 #include "AliHLTCaloRcuProcessor.h"
 #include "AliHLTCaloCrazynessDefinitions.h"
 #include "AliHLTCaloChannelRawDataStruct.h"
+#include "AliHLTCaloCoordinate.h"
 
 
 //#include "AliCALOBunchInfo.h"
@@ -224,7 +225,7 @@ AliHLTCaloRawAnalyzerComponentv3::GetOutputDataSize(unsigned long& constBase, do
 Int_t
 AliHLTCaloRawAnalyzerComponentv3::DoIt(const AliHLTComponentBlockData* iter, AliHLTUInt8_t* outputPtr, const AliHLTUInt32_t size, UInt_t& totSize)
 {
+
   int tmpsize=  0;
   Int_t crazyness          = 0;
   Int_t nSamples           = 0;
@@ -235,7 +236,7 @@ AliHLTCaloRawAnalyzerComponentv3::DoIt(const AliHLTComponentBlockData* iter, Ali
  
   totSize += sizeof( AliHLTCaloChannelDataHeaderStruct );
   fRawReaderMemoryPtr->SetMemory(         reinterpret_cast<UChar_t*>( iter->fPtr ),  static_cast<ULong_t>( iter->fSize )  );
-  fRawReaderMemoryPtr->SetEquipmentID(    fMapperPtr->GetDDLFromSpec(  iter->fSpecification) + 4608  );
+  fRawReaderMemoryPtr->SetEquipmentID(    fMapperPtr->GetDDLFromSpec(  iter->fSpecification) + 1792  );
   fRawReaderMemoryPtr->Reset();
   fRawReaderMemoryPtr->NextEvent();
  
@@ -247,8 +248,8 @@ AliHLTCaloRawAnalyzerComponentv3::DoIt(const AliHLTComponentBlockData* iter, Ali
   if(fAltroRawStreamPtr->NextDDL())
   {
     int cnt = 0;
-    fOffset = ( fAltroRawStreamPtr->GetAltroCFG1() >> 10 ) & 0xf;
-    
+    //    fOffset = ( fAltroRawStreamPtr->GetAltroCFG1() >> 10 ) & 0xf;
+    fOffset = 0;
     while( fAltroRawStreamPtr->NextChannel()  )
       { 
        //       cout << __FILE__  << ":" << __LINE__ << ":" <<__FUNCTION__ << "T3"  << endl; 
@@ -261,6 +262,7 @@ AliHLTCaloRawAnalyzerComponentv3::DoIt(const AliHLTComponentBlockData* iter, Ali
            ++ cnt;
            UShort_t* firstBunchPtr = 0;
            int chId = fMapperPtr->GetChannelID(iter->fSpecification, fAltroRawStreamPtr->GetHWAddress()); 
+           //      HLTError("Channel HW address: %d", fAltroRawStreamPtr->GetHWAddress());
            if( fDoPushRawData == true)
              {
                fRawDataWriter->SetChannelId( chId );
@@ -282,7 +284,7 @@ AliHLTCaloRawAnalyzerComponentv3::DoIt(const AliHLTComponentBlockData* iter, Ali
             
            //return 1;
          
-            totSize += sizeof( AliHLTCaloChannelDataStruct );
+           totSize += sizeof( AliHLTCaloChannelDataStruct );
            if(totSize > size)
              {
                //HLTError("Buffer overflow: Trying to write data of size: %d bytes. Output buffer available: %d bytes.", totSize, size);
@@ -315,7 +317,9 @@ AliHLTCaloRawAnalyzerComponentv3::DoIt(const AliHLTComponentBlockData* iter, Ali
 
            channelDataPtr->fChannelID =  chId;
            channelDataPtr->fEnergy = static_cast<Float_t>(fAnalyzerPtr->GetEnergy()) - fOffset;
-
+           AliHLTCaloCoordinate c;
+           fMapperPtr->ChannelId2Coordinate(chId, c); 
+           //      HLTError("Got channel, x: %d, z: %d, gain: %d, energy: %f", c.fX, c.fZ, c.fGain, channelDataPtr->fEnergy);
            channelDataPtr->fTime = static_cast<Float_t>(fAnalyzerPtr->GetTiming());
            channelDataPtr->fCrazyness = static_cast<Short_t>(crazyness);
            channelCount++;
@@ -368,7 +372,7 @@ AliHLTCaloRawAnalyzerComponentv3::DoIt(const AliHLTComponentBlockData* iter, Ali
 
   // channelDataHeaderPtr->fHasRawData  = false;
   channelDataHeaderPtr->fHasRawData = fDoPushRawData;
-  HLTDebug("Number of channels: %d", channelCount);
+  HLTError("Number of channels: %d", channelCount);
   tmpsize += sizeof(AliHLTCaloChannelDataStruct)*channelCount + sizeof(AliHLTCaloChannelDataHeaderStruct); 
   return  tmpsize;
 
index 3cf3ea49f3b9083e0427246c9713fb4c1eaf12e3..557a827522da2e24d98c4ba7b02a83a982e656bc 100644 (file)
@@ -32,8 +32,8 @@ AliHLTPHOSConstants::AliHLTPHOSConstants() :
   fkMAXHOSTS(20),
   fkDEFAULTEVENTPORT(42001),
   fkMAXBINVALUE(1023),
-  fkHIGHGAIN(0),
-  fkLOWGAIN(1),
+  fkHIGHGAIN(1),
+  fkLOWGAIN(0),
   fkALTROMAXSAMPLES(1008),
   fkALTROMAXPRESAMPLES(15),
   fkNZROWSRCU(56),
index df80ad24939c0141a170136c2e13cdbfa6f78cca..0712ab062182f443ac674ade2fbf151b509adec9 100644 (file)
@@ -16,8 +16,9 @@
  **************************************************************************/
 
 #include "AliHLTPHOSDigitMakerComponent.h"
-#include "AliHLTPHOSDigitMaker.h"
-#include "AliHLTPHOSDigitDataStruct.h"
+#include "AliHLTCaloDigitMaker.h"
+#include "AliHLTCaloDigitDataStruct.h"
+#include "AliHLTPHOSMapper.h"
 #include "AliHLTPHOSChannelDataHeaderStruct.h"
 #include "AliHLTPHOSChannelDataStruct.h"
 #include "TFile.h"
@@ -26,7 +27,7 @@
 
 
 /** 
- * @file   AliHLTPHOSDigitMakerComponent.cxx
+ * @file   AliHLTCaloDigitMakerComponent.cxx
  * @author Oystein Djuvsland
  * @date   
  * @brief  A digit maker component for PHOS HLT
@@ -96,7 +97,7 @@ AliHLTPHOSDigitMakerComponent::GetOutputDataSize(unsigned long& constBase, doubl
 {
   //see header file for documentation
   constBase = 0;
-  inputMultiplier = (float)sizeof(AliHLTPHOSDigitDataStruct)/sizeof(AliHLTPHOSChannelDataStruct) + 1;
+  inputMultiplier = (float)sizeof(AliHLTCaloDigitDataStruct)/sizeof(AliHLTPHOSChannelDataStruct) + 1;
 }
 
 int 
@@ -116,9 +117,11 @@ AliHLTPHOSDigitMakerComponent::DoEvent(const AliHLTComponentEventData& evtData,
   unsigned long ndx; 
 
   UInt_t specification = 0;
-  AliHLTPHOSChannelDataHeaderStruct* tmpChannelData = 0;
+  AliHLTCaloChannelDataHeaderStruct* tmpChannelData = 0;
   
-  fDigitMakerPtr->SetDigitHeaderPtr(reinterpret_cast<AliHLTPHOSDigitHeaderStruct*>(outputPtr));
+  //  fDigitMakerPtr->SetDigitHeaderPtr(reinterpret_cast<AliHLTCaloDigitHeaderStruct*>(outputPtr));
+
+  fDigitMakerPtr->SetDigitDataPtr(reinterpret_cast<AliHLTCaloDigitDataStruct*>(outputPtr));
 
   for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
     {
@@ -131,9 +134,9 @@ AliHLTPHOSDigitMakerComponent::DoEvent(const AliHLTComponentEventData& evtData,
        }
 
       specification |= iter->fSpecification;
-      tmpChannelData = reinterpret_cast<AliHLTPHOSChannelDataHeaderStruct*>(iter->fPtr);
+      tmpChannelData = reinterpret_cast<AliHLTCaloChannelDataHeaderStruct*>(iter->fPtr);
     
-      ret = fDigitMakerPtr->MakeDigits(tmpChannelData, size-(digitCount*sizeof(AliHLTPHOSDigitDataStruct)));
+      ret = fDigitMakerPtr->MakeDigits(tmpChannelData, size-(digitCount*sizeof(AliHLTCaloDigitDataStruct)));
       if(ret == -1) 
        {
          HLTError("Trying to write over buffer size");
@@ -142,7 +145,7 @@ AliHLTPHOSDigitMakerComponent::DoEvent(const AliHLTComponentEventData& evtData,
       digitCount += ret; 
     }
   
-  mysize += digitCount*sizeof(AliHLTPHOSDigitDataStruct);
+  mysize += digitCount*sizeof(AliHLTCaloDigitDataStruct);
 
   HLTDebug("# of digits: %d, used memory size: %d, available size: %d", digitCount, mysize, size);
 
@@ -170,7 +173,10 @@ AliHLTPHOSDigitMakerComponent::DoInit(int argc, const char** argv )
 {
   //see header file for documentation
 
-  fDigitMakerPtr = new AliHLTPHOSDigitMaker();
+  fDigitMakerPtr = new AliHLTCaloDigitMaker("PHOS");
+
+  AliHLTCaloMapper *mapper = new AliHLTPHOSMapper();
+  fDigitMakerPtr->SetMapper(mapper);
   
   for(int i = 0; i < argc; i++)
     {
@@ -182,10 +188,6 @@ AliHLTPHOSDigitMakerComponent::DoInit(int argc, const char** argv )
        {
          fDigitMakerPtr->SetGlobalHighGainFactor(atof(argv[i+1]));
        }
-      if(!strcmp("-reverseorder", argv[i]))
-       {
-         fDigitMakerPtr->SetOrdered(false);
-       }
     }
  
   //fDigitMakerPtr->SetDigitThreshold(2);
index 86bbf419e8762fa3ec2d8c14df3c4b61174e754d..bf26bebdbdeed707ce77f9c29b4783f1ecaa5430 100644 (file)
@@ -32,8 +32,8 @@
 
 #include "AliHLTPHOSProcessor.h"
 
-class AliHLTPHOSDigitMaker;
-class AliHLTPHOSDigitContainerDataStruct;
+class AliHLTCaloDigitMaker;
+class AliHLTCaloDigitContainerDataStruct;
 
 /**
  * @class AliHLTPHOSDigitMakerComponent
@@ -141,10 +141,10 @@ protected:
 private:
 
   /** Pointer to the digit maker itself */
-  AliHLTPHOSDigitMaker *fDigitMakerPtr;                    //! transient
+  AliHLTCaloDigitMaker *fDigitMakerPtr;                    //! transient
 
   /** The output of the component, digits in a container */
-  AliHLTPHOSDigitContainerDataStruct *fDigitContainerPtr;  //! transient
+  AliHLTCaloDigitContainerDataStruct *fDigitContainerPtr;  //! transient
 
 };
 #endif
index 4b0b6fe33b8c8466c15598427b2d55e60082cfb4..3ba70bea78103ef377ba96fb0c3c95bb5468cea6 100644 (file)
@@ -50,7 +50,9 @@ Bool_t
 AliHLTPHOSMapper::InitAltroMapping(const unsigned long specification)
 {
   // Loads mapping between Altro addresses and geometrical addresses from file
-   
+
+  //  HLTError("Initialising ALTRO map");
+
   fDDLId = GetDDLFromSpec(specification);
   Int_t modId = GetModuleFromSpec(specification);
 
@@ -123,6 +125,7 @@ void
 AliHLTPHOSMapper::InitDDLSpecificationMapping()
 {
   fSpecificationMapPtr = new fDDLSpecificationMap[fCaloConstants->GetNMODULES()*fCaloConstants->GetNRCUSPERMODULE()];
+  //  HLTError("NUMBER OF DDLs: %d, map ptr: %d", fCaloConstants->GetNMODULES()*fCaloConstants->GetNRCUSPERMODULE(), fSpecificationMapPtr);
   for(Int_t ddl = 0; ddl < fCaloConstants->GetNMODULES()*fCaloConstants->GetNRCUSPERMODULE(); ddl++)
     {
       
@@ -152,7 +155,8 @@ AliHLTPHOSMapper::InitDDLSpecificationMapping()
        }
       
       fSpecificationMapPtr[ddl].fRcuZOffset = fCaloConstants->GetNZROWSRCU()*(fSpecificationMapPtr[ddl].fRcuZ);
-      fSpecificationMapPtr[ddl].fRcuXOffset = fCaloConstants->GetNXCOLUMNSMOD()*(fSpecificationMapPtr[ddl].fRcuX);
+      fSpecificationMapPtr[ddl].fRcuXOffset = fCaloConstants->GetNXCOLUMNSRCU()*(fSpecificationMapPtr[ddl].fRcuX);
+
     }
 }
 
@@ -166,8 +170,12 @@ AliHLTPHOSMapper::GetIsInitializedMapping()
 Int_t
 AliHLTPHOSMapper::GetChannelID(Int_t hwAddress)
 {
-  
+
+  //  HLTError("HW add: %d -> x: %d, z: %d, gain: %d", fHw2geomapPtr[hwAddress].fXCol + fSpecificationMapPtr[fDDLId].fRcuXOffset,
+  //      fHw2geomapPtr[hwAddress].fZRow + fSpecificationMapPtr[fDDLId].fRcuZOffset,
+  //      fHw2geomapPtr[hwAddress].fGain);
   return ((fHw2geomapPtr[hwAddress].fXCol + fSpecificationMapPtr[fDDLId].fRcuXOffset) |
+
          ((fHw2geomapPtr[hwAddress].fZRow + fSpecificationMapPtr[fDDLId].fRcuZOffset) << 6) |
          (fHw2geomapPtr[hwAddress].fGain << 12) |
          fSpecificationMapPtr[fDDLId].fModId << 13);
@@ -205,10 +213,17 @@ AliHLTPHOSMapper::GetChannelID(AliHLTUInt32_t specification, Int_t hwAddress)
   else if(specification == 0x80000) index = 19;
 
   else HLTError("Specification 0x%X not consistent with single DDL in PHOS", specification);
+
   //  HLTError("Channel ID: 0x%X Coordinates: x = %d, z = %d, gain = %d", ((fHw2geomapPtr[hwAddress].fXCol + fSpecificationMapPtr[index].fRcuXOffset) |((fHw2geomapPtr[hwAddress].fZRow + fSpecificationMapPtr[index].fRcuZOffset) << 6) | (fHw2geomapPtr[hwAddress].fGain << 12) | fSpecificationMapPtr[index].fModId << 13),
-  //      fHw2geomapPtr[hwAddress].fXCol,
-  //      fHw2geomapPtr[hwAddress].fZRow, 
+  //      fHw2geomapPtr[hwAddress].fXCol,
+  //     fHw2geomapPtr[hwAddress].fZRow, 
+  //      fHw2geomapPtr[hwAddress].fGain);
+
+  //  HLTError("HW add: %d -> x: %d, z: %d, gain: %d", hwAddress, fHw2geomapPtr[hwAddress].fXCol + fSpecificationMapPtr[index].fRcuXOffset,
+  //      fHw2geomapPtr[hwAddress].fZRow + fSpecificationMapPtr[index].fRcuZOffset,
   //      fHw2geomapPtr[hwAddress].fGain);
+  //  HLTError("RCU X offset: %d", fSpecificationMapPtr[index].fRcuXOffset);
+  //  HLTError("RCU Z offset: %d", fSpecificationMapPtr[index].fRcuZOffset);
   return ((fHw2geomapPtr[hwAddress].fXCol + fSpecificationMapPtr[index].fRcuXOffset) |
          ((fHw2geomapPtr[hwAddress].fZRow + fSpecificationMapPtr[index].fRcuZOffset) << 6) |
          (fHw2geomapPtr[hwAddress].fGain << 12) |
index 93c5acbad02ff68a1126288778d8ba652a8f5fb2..a33454cba18cfff221f8f1688d9386a9fab8c019 100644 (file)
@@ -43,7 +43,7 @@ class AliHLTPHOSMapper : public AliHLTCaloMapper
   Bool_t InitAltroMapping(const unsigned long specification); 
   void InitDDLSpecificationMapping();
   bool GetIsInitializedMapping();
-  char* GetFilePath(const int ddlId);
+  //  char* GetFilePath(const int ddlId);
   
   Int_t GetChannelID(Int_t hwAddress);
   Int_t GetChannelID(AliHLTUInt32_t specification, Int_t hwAddress);
@@ -54,21 +54,15 @@ class AliHLTPHOSMapper : public AliHLTCaloMapper
   int GetDDLFromSpec(AliHLTUInt32_t specification);
   int GetModuleFromSpec(AliHLTUInt32_t specification);
 
-  struct fAltromap{ 
-    int fZRow; // Coordinate in Z direction (beam direction) relatve too one RCU
-    int fXCol; // Coordinate in X direction (perpendicular too beam direction an parallell to ground) relatve too one RCU
-    int fGain; // Gain (high gain = 1, low gain = 0)
-  };
-  
-  struct fDDLSpecificationMap{ 
-    UInt_t fRcuX; // Coordinate in Z direction (beam direction) relatve too one RCU
-    UInt_t fRcuZ; // Coordinate in X direction (perpendicular too beam direction an parallell to ground) relatve too one RCU
-    UInt_t fRcuXOffset;
-    UInt_t fRcuZOffset;
-    int fModId; 
-  };
+//   struct fDDLSpecificationMap{ 
+//     UInt_t fRcuX; // Coordinate in Z direction (beam direction) relatve too one RCU
+//     UInt_t fRcuZ; // Coordinate in X direction (perpendicular too beam direction an parallell to ground) relatve too one RCU
+//     UInt_t fRcuXOffset;
+//     UInt_t fRcuZOffset;
+//     int fModId; 
+//   };
 
-  fAltromap *fHw2geomapPtr; //pointer to structure holding information about geometrical address 
+//  fAltromap *fHw2geomapPtr; //pointer to structure holding information about geometrical address 
 
 
   char fFilepath[1024];
@@ -79,7 +73,7 @@ class AliHLTPHOSMapper : public AliHLTCaloMapper
   AliHLTPHOSMapper(const AliHLTPHOSMapper & );
   AliHLTPHOSMapper & operator = (const AliHLTPHOSMapper &);
   
-  fDDLSpecificationMap* fSpecificationMapPtr;
+  //  fDDLSpecificationMap* fSpecificationMapPtr;
   //AliPHOSEMCAGeometry fPHOSGeometry;
   static const Float_t fCellStep = 2.2;//2.*fPHOSGeometry.GetAirCellHalfSize()[0];
   
index 664d0ecca230a2f1f8c405394cd10b7376cd792e..76e81128c0e5413f3091200fe0b747af18c50ad9 100644 (file)
 
 AliHLTPHOSRawAnalyzerComponentv3::AliHLTPHOSRawAnalyzerComponentv3() :
    AliHLTCaloRawAnalyzerComponentv3("PHOS")
-   ,fAnalyzerPtr(0)
+   ,fCurrentSpec(-1)
 {
    // See header file for class documentation
+  InitMapping(0);
 }
 
 AliHLTPHOSRawAnalyzerComponentv3::~AliHLTPHOSRawAnalyzerComponentv3()
@@ -115,5 +116,9 @@ void AliHLTPHOSRawAnalyzerComponentv3::InitMapping ( const int specification )
 {
    // See header file for class documentation
    fMapperPtr = new AliHLTPHOSMapper;
+   cout << "Initialising mapper..." << endl;
+   fMapperPtr->InitDDLSpecificationMapping();
+   fMapperPtr->InitAltroMapping(specification);
+
 }
 
index 38541d6a2dda49cb87e6e6486d08604a1fa22389..7c296c5980a05e80f6cc983c3ca64125749b018e 100644 (file)
@@ -121,9 +121,6 @@ class AliHLTPHOSRawAnalyzerComponentv3 : public AliHLTCaloRawAnalyzerComponentv3
                     AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
                       AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );  
   
-  /** Pointer to an analyzer object used for raw data anlysis */ 
-  AliHLTPHOSRawAnalyzer *fAnalyzerPtr;   //COMMENT
-
    virtual void InitMapping(const int specification);
 
  private:
index 70fc21cb82fcf442cd328231eb095db5647ff084..82a633e4361069bf10b3e0d09dfccf9b37eb53cc 100644 (file)
 
 
 #include "AliHLTPHOSRawAnalyzerCrudeComponent.h"
-#include "AliHLTPHOSRawAnalyzerCrude.h"
+#include "AliHLTCaloRawAnalyzerCrude.h"
 
 AliHLTPHOSRawAnalyzerCrudeComponent gAliHLTPHOSRawAnalyzerCrudeComponent;
 
 //___________________________________________________________________________
 AliHLTPHOSRawAnalyzerCrudeComponent::AliHLTPHOSRawAnalyzerCrudeComponent()
 {
-  fAnalyzerPtr = new AliHLTPHOSRawAnalyzerCrude();
+  HLTError("Creating raw analyzer");
+  fAnalyzerPtr = new AliHLTCaloRawAnalyzerCrude();
 } 
 
 //___________________________________________________________________________
 AliHLTPHOSRawAnalyzerCrudeComponent::~AliHLTPHOSRawAnalyzerCrudeComponent()
 {
-  if(fAnalyzerPtr)
-    {
-      delete fAnalyzerPtr;
-      fAnalyzerPtr = 0;
-    }
+//   if(fAnalyzerPtr)
+//     {
+//       delete fAnalyzerPtr;
+//       fAnalyzerPtr = 0;
+//     }
 }
 
 //___________________________________________________________________________
index 299475eddc35eb570658c6322ec94d40a1cb5642..d5372675b8be067d1d0d0ce55ccabb0f3ab645a1 100644 (file)
  **************************************************************************/
 
 #include "AliHLTPHOSRawAnalyzerPeakFinderComponent.h"
-#include "AliHLTPHOSRawAnalyzerPeakFinder.h"
+#include "AliHLTCaloRawAnalyzerPeakFinder.h"
 
 AliHLTPHOSRawAnalyzerPeakFinderComponent gAliHLTPHOSRawAnalyzerPeakFinderComponent;
 
 //___________________________________________________________________________________________________________
 AliHLTPHOSRawAnalyzerPeakFinderComponent::AliHLTPHOSRawAnalyzerPeakFinderComponent():AliHLTPHOSRawAnalyzerComponentv3()
 {
-  fAnalyzerPtr = new AliHLTPHOSRawAnalyzerPeakFinder();
+  fAnalyzerPtr = new AliHLTCaloRawAnalyzerPeakFinder();
 
   if(1)//LoadPFVector() == kFALSE)
     {
@@ -110,8 +110,8 @@ AliHLTPHOSRawAnalyzerPeakFinderComponent::LoadPFVector(int startIndex, int nSamp
        {
          res = fscanf(fp, "%lf", &tmpTVector[i]);
        }
-      fAnalyzerPtr->SetAVector(tmpAVector,  nSamples);
-      fAnalyzerPtr->SetTVector(tmpTVector,  nSamples);
+      //      fAnalyzerPtr->SetAVector(tmpAVector,  nSamples);
+      //      fAnalyzerPtr->SetTVector(tmpTVector,  nSamples);
       fclose(fp);
       delete [] tmpAVector;
       delete [] tmpTVector;
index 117bd0b392408d302420a4ae0c037fc16138cfb6..ec376efcffbbb5a37ea4fc6c8775a2a24c4d53bd 100644 (file)
@@ -34,7 +34,7 @@ void rec_hlt_phos()//, char* opt="decoder ESD")
   int rcuEnd = 1;
   //  TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTPHOS.so libAliHLTGlobal.so loglevel=0x7f chains=ESD-FILE";
   //TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTPHOS.so libAliHLTGlobal.so loglevel=0x7f chains=PHS-CA_02";
-  TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTCalo.so libAliHLTPHOS.so libAliHLTGlobal.so loglevel=0x7f chains=PHS-RA_02_1";
+  TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTCalo.so libAliHLTPHOS.so libAliHLTGlobal.so loglevel=0x7f chains=PHS-DM_02_1";
   TString ecInput;
   TString emInput;
   
@@ -57,10 +57,10 @@ void rec_hlt_phos()//, char* opt="decoder ESD")
          AliHLTConfiguration rawConf(ra.Data(), "PhosRawCrude", publisher.Data(), arg.Data());
          
          // digit maker components
-//       dm.Form("PHS-DM_%02d_%d", module, rcu);
-//       arg="";
-//       arg.Form("-sethighgainfactor 0.005 -setlowgainfactor 0.08 -setdigitthresholds 0.005 0.002");
-//       AliHLTConfiguration dmConf(dm.Data(), "PhosDigitMaker", ra.Data(), arg.Data());
+         dm.Form("PHS-DM_%02d_%d", module, rcu);
+         arg="";
+         arg.Form("-sethighgainfactor 0.005 -setlowgainfactor 0.08 -setdigitthresholds 0.005 0.002");
+         AliHLTConfiguration dmConf(dm.Data(), "PhosDigitMaker", ra.Data(), arg.Data());
 
          if(clInput.Length() > 0) clInput += " ";
          clInput+=dm;
index 1d0a657b69fee43eccd2833d06d14cc060d50220..42a19a220ceb657d73ddb39d5b94620a1fb76287 100644 (file)
@@ -19,6 +19,7 @@ CLASS_HDRS:=    AliHLTPHOSClusterizer.h \
                  AliHLTPHOSRawAnalyzerCrude.h \
                  AliHLTPHOSRawAnalyzerCrudeComponent.h \
                  AliHLTPHOSRawAnalyzerPeakFinderComponent.h \
+                 AliHLTPHOSDigitMakerComponent.h \
                  AliHLTPHOSRcuProcessor.h \
                  AliHLTPHOSMapper.h \
                  AliHLTPHOSRawAnalyzerPeakFinder.h \