Firs working implmetation of the ModuleMerger component. The data
authorphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Jan 2007 11:44:45 +0000 (11:44 +0000)
committerphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Jan 2007 11:44:45 +0000 (11:44 +0000)
is analyzed with the AliHLTPHOSRawAnalyzer on a per RCU basis.
A pointer to the shared memeory wher the analysis results are stored
is passed to the Merger. The merger merges the data form the RCUs
and dums the result to screen.

HLT/PHOS/AliHLTPHOSModuleMergerComponent.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h
HLT/PHOS/AliHLTPHOSRcuCellEnergyData.h

index 72614c244920d8a140ca159562e4cda0f48bf259..8d170115af9167916786036c9b5ca430efab2246 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-//#include "AliHLTPHOSModuleMergerComponent.h"
-
 #include "AliHLTPHOSModuleMergerComponent.h"
 #include <iostream>
 #include "stdio.h"
-
 #include "AliRawReaderMemory.h"
 #include "AliCaloRawStream.h"
 #include <cstdlib>
-//#include "TH2.h"
+#include "AliHLTPHOSRcuCellEnergyData.h"
 
-//#include "AliHLTTPCDefinitions.h"
 
 const AliHLTComponentDataType  AliHLTPHOSModuleMergerComponent::inputDataTypes[]={kAliHLTVoidDataType,{0,"",""}}; //'zero' terminated array
 const AliHLTComponentDataType  AliHLTPHOSModuleMergerComponent::outputDataType=kAliHLTVoidDataType;
 
 
 AliHLTPHOSModuleMergerComponent gAliHLTPHOSModuleMergerComponent;
-//ClassImp( AliHLTPHOSModuleMergerComponent) 
 AliHLTPHOSModuleMergerComponent:: AliHLTPHOSModuleMergerComponent():AliHLTProcessor(),  fEventCount(0),  fEquippmentID(0)
 {
 
@@ -81,11 +76,8 @@ void
 AliHLTComponentDataType 
 AliHLTPHOSModuleMergerComponent::GetOutputDataType()
 {
-  // return AliHLTPHOSDefinitions::gkUnpackedRawDataType;
   return AliHLTPHOSDefinitions::gkCellEnergyDataType;
-  //  return outputDataType;
-
- }
+}
 
 void
 AliHLTPHOSModuleMergerComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier )
@@ -102,68 +94,37 @@ int  AliHLTPHOSModuleMergerComponent::DoEvent( const AliHLTComponentEventData& e
 {
   unsigned long ndx;
   const AliHLTComponentBlockData* iter = NULL;   
-  // cout << "Inside AliHLTPHOSModuleMergerComponent::DoEvent" << endl;
-  //  AliHLTUInt32_t *tmp = 
-  //  cout << " AliHLTPHOSModuleMergerComponen: the size of ouputblocks is " << outputBlocks.size()  <<endl;
-  //  cout << " AliHLTPHOSModuleMergerComponen: the size of inputblock is "  << blocks->fSize  <<endl;
-  //  cout << " AliHLTPHOSModuleMergerComponen: the size "  << size  <<endl;
-  
-  //  cout << "AliHLTPHOSModuleMergerComponen: evtData  fStructSize  =  "<< evtData.fStructSize<<endl;
-  //  cout << "AliHLTPHOSModuleMergerComponen: evtData  EventID      =  "<< evtData.fEventID<<endl;
-  //  cout << "AliHLTPHOSModuleMergerComponen: evtData  block count  =  "<< evtData.fBlockCnt<<endl;
-  for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
-    {
-      iter = blocks+ndx;
-      //   iter = ndx; 
-
-      AliHLTUInt32_t *tmpPtr = reinterpret_cast<AliHLTUInt32_t*>( iter->fPtr); 
-      //
-      //  if( iter->fDataType != AliHLTPHOSDefinitions::gkDDLPackedRawDataType )
-      //       {
-      //         cout << "Warning: data type = is nOT gkDDLPackedRawDataType " << endl;
-      //         continue;
-      //       }
-
-
-      if (iter->fDataType == kAliHLTVoidDataType){ cout << "ModuleMerger: datatype is kAliHLTVoidDataType :" << endl;} 
-      if (iter->fDataType ==  kAliHLTAnyDataType){ cout << "ModuleMerger: datatype is kAliHLTAnyDataType :" << endl;} 
-      if (iter->fDataType == AliHLTPHOSDefinitions::gkDDLPackedRawDataType){ cout << "ModuleMerger: datatType is : AliHLTPHOSDefinitions::gkDDLPackedRawDataType :" << endl;} 
-      if (iter->fDataType == AliHLTPHOSDefinitions::gkCellEnergyDataType){ cout << "ModuleMerger: datatype isAliHLTPHOSDefinitions::gkCellEnergyDataType" << endl;} 
-   
-      //  if (iter->fDataType == AliHLTPHOSDefinitions::gkPackedRawDataType){ cout << "ModuleMerger: datatype is: AliHLTPHOSDefinitions::gkPackedRawDataType" << endl;} 
-      //  if (iter->fDataType == AliHLTPHOSDefinitions::gkUnpackedRawDataType){ cout << "ModuleMerger: datatype is: AliHLTPHOSDefinitions::gkUnpackedRawDataType" << endl;} 
-      //  if (iter->fDataType == AliHLTPHOSDefinitions::gkClustersDataType){ cout << "ModuleMerger: datatype is: AliHLTPHOSDefinitions::gkClustersDataType" << endl;} 
-      //  if (iter->fDataType == AliHLTPHOSDefinitions::gkVertexDataType){ cout << "ModuleMerger: datatype is: AliHLTPHOSDefinitions::gkVertexDataTypeg" << endl;} 
-      //  if (iter->fDataType == AliHLTPHOSDefinitions::gkTrackSegmentsDataType){ cout << "ModuleMerger: datatype is: AliHLTPHOSDefinitions::gkTrackSegmentsDataTypeg" << endl;} 
+  AliHLTPHOSRcuCellEnergyData *cellDataPtr;
 
-    }
-
-
-
-  cout << "blocks.fSize = " << blocks->fSize << endl ; 
-
-  //  AliHLTUInt32_t* tmpPtr = reinterpret_cast<AliHLTUInt32_t*>(blocks->fPtr);
+  Reset();
 
-  AliHLTUInt32_t* tmpPtr = (AliHLTUInt32_t*)(blocks->fPtr);
-  //  *tmpPtr = 100;
+  for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
+    {
+      int tmpModuleID = 0;
+      int tmpRcuX = 0;
+      int tmpRcuZ = 0;
 
+      iter = blocks+ndx;
+      AliHLTPHOSRcuCellEnergyData *cellDataPtr = (AliHLTPHOSRcuCellEnergyData*)( iter->fPtr);
 
+      tmpModuleID = cellDataPtr->fModuleID;
+      tmpRcuX     = cellDataPtr->fRcuX ;
+      tmpRcuZ     = cellDataPtr->fRcuZ;
 
-  cout << "ModuleMerge*tmpPtr =" << *tmpPtr << endl;
-  cout << "ModuleMerge tmpPtr =" << tmpPtr << endl;
+      for(int row = 0; row<32; row ++)
+       {
+         for(int col = 0; col < 28; col ++)
+           {
+             for(int gain=0; gain <2; gain++)
+               {
+                 fMaxValues[tmpModuleID][row + 32*tmpRcuX][col + 28*tmpRcuZ][gain] =  cellDataPtr->fCellEnergies[row][col][gain];  
+               }         
+           }
+       }
 
-  for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
-    {
-      //     AliHLTUInt16_t* tmpPtr = reinterpret_cast<AliHLTUInt16_t*>(blocks->fPtr);   
-      iter = blocks+ndx;
-      //      AliHLTUInt16_t *tmp =  (AliHLTUInt16_t *)(iter->fPtr);
-      //    cout <<"AliHLTPHOSModuleMergerComponent::Equippment ID *tmp= " <<  *tmp  << endl;
-      //      cout <<"AliHLTPHOSModuleMergerComponent::Equippment ID  blocks->fPtr[0] = " << tmpPtr[0] << endl;
     }
-  
-  
+
+  DumpData();
   fEventCount++; 
   return 0;
 }//end DoEvent
index 605c7bbe0ff80afde4673f01f6dfb95669efdb15..b86b0d46edde5fb28ef6619497c6da8998e3ca37 100644 (file)
@@ -1,4 +1,3 @@
-
 /**************************************************************************
  * Copyright(c) 2006, ALICE Experiment at CERN, All rights reserved.      *
  *                                                                        *
 #include "AliRawReaderMemory.h"
 #include "AliCaloRawStream.h"
 #include <cstdlib>
-//#include "TH2.h"
+#include "AliHLTPHOSRcuCellEnergyData.h"
 
-//#include "AliHLTTPCDefinitions.h"
 
 const AliHLTComponentDataType AliHLTPHOSRawAnalyzerComponent::inputDataTypes[]={kAliHLTVoidDataType,{0,"",""}}; //'zero' terminated array
-//const AliHLTComponentDataType AliHLTPHOSRawAnalyzerComponent::outputDataType=kAliHLTVoidDataType;
 
 
-//AliHLTPHOSRawAnalyzerComponent gAliHLTPHOSRawAnalyzerComponent;
-//ClassImp(AliHLTPHOSRawAnalyzerComponent) 
 AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent():AliHLTProcessor(),  fEventCount(0),  fEquippmentID(0), fPHOSRawStream(), fRawMemoryReader(0)
 {
-  //  fRawMemoryReader = NULL;
+
 } 
 
 AliHLTPHOSRawAnalyzerComponent::~AliHLTPHOSRawAnalyzerComponent()
@@ -53,7 +48,6 @@ AliHLTPHOSRawAnalyzerComponent::~AliHLTPHOSRawAnalyzerComponent()
 
 AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent(const AliHLTPHOSRawAnalyzerComponent & ) : AliHLTProcessor(),  fEventCount(0),  fEquippmentID(0), fPHOSRawStream(),fRawMemoryReader(0)
 {
-  //  fRawMemoryReader = NULL;
 }
 
 
@@ -100,9 +94,7 @@ AliHLTPHOSRawAnalyzerComponent::GetInputDataTypes( vector<AliHLTComponentDataTyp
 AliHLTComponentDataType 
 AliHLTPHOSRawAnalyzerComponent::GetOutputDataType()
 {
-  //   return AliHLTTPCDefinitions::gkUnpackedRawDataType;
   return AliHLTPHOSDefinitions::gkCellEnergyDataType;
-  //  return outputDataType;
 }
 
 void
@@ -126,14 +118,12 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
   UInt_t offset = 0; 
   UInt_t mysize = 0;
   UInt_t tSize  = 0;
-
+  AliHLTPHOSRcuCellEnergyData* outPtr; 
   AliHLTUInt8_t* outBPtr;
-  AliHLTUInt32_t* outPtr;
   outBPtr = outputPtr;
-
   const AliHLTComponentBlockData* iter = NULL; 
-  
   unsigned long ndx;
+
   Reset();
 
   for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
@@ -150,12 +140,15 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
        }
 
      fRawMemoryReader->SetMemory( reinterpret_cast<UChar_t*>( iter->fPtr ), iter->fSize );
-
-     //   fRawMemoryReader->DumpData();
-     //  fRawMemoryReader->RewindEvents();
-    
      analyzerPtr->SetData(fTmpChannelData);
+
+     outPtr =  (AliHLTPHOSRcuCellEnergyData*)outBPtr;
+     mysize += sizeof(AliHLTPHOSRcuCellEnergyData);
+
+     outPtr->fRcuX = fRcuX;
+     outPtr->fRcuZ = fRcuZ;
+     outPtr->fModuleID = fModuleID;
+
       while(fPHOSRawStream->Next())
        {
          if (fPHOSRawStream->IsNewHWAddress())
@@ -165,6 +158,7 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
                  analyzerPtr->SetData(fTmpChannelData);
                  analyzerPtr->Evaluate(0, 1008);
                  fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain] = analyzerPtr->GetEnergy();
+                 outPtr->fCellEnergies[tmpRow - fRcuRowOffeset][tmpCol - fRcuColOffeset][tmpGain] =  fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain];
                  ResetDataPtr(); 
                }
 
@@ -182,30 +176,21 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
  
       AliHLTComponentBlockData bd;
       FillBlockData( bd );
-      mysize += sizeof(fEquippmentID);
-
-      outPtr = ( AliHLTUInt32_t*)outBPtr;  
-      *outPtr = fEquippmentID;
-
-      //      bd.fPtr = &fEquippmentId;
       bd.fOffset = offset;
       bd.fSize = mysize;
-      
       bd.fDataType = AliHLTPHOSDefinitions::gkCellEnergyDataType;
       outputBlocks.push_back( bd );
-      
-      
       tSize += mysize;
       outBPtr += mysize;
       
-      if ( tSize > size )
+      if( tSize > size )
        {
          Logging( kHLTLogFatal, "HLT::AliHLTPHOSRawAnalyzerComponent::DoEvent", "Too much data",
                   "Data written over allowed buffer. Amount written: %lu, allowed amount: %lu."
                   , tSize, size );
          return EMSGSIZE;
        }
-
+      
     }
 
   fEventCount++; 
@@ -218,31 +203,13 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
 int
 AliHLTPHOSRawAnalyzerComponent::DoInit( int argc, const char** argv )
 {
-  cout << "DOINIT argc =" << argc << endl;
-  cout << "DOINIT argv[0] =" << argv[0] << endl;
-  cout << "DOINIT argv[1] =" << argv[1] << endl;
-  cout << "DOINIT argv[2] =" << argv[2] << endl;
-  cout << "DOINIT argv[3] =" << argv[3] << endl;
-  cout << "DOINIT argv[4] =" << argv[4] << endl;
-  cout << "DOINIT argv[5] =" << argv[5] << endl;
-  cout << "DOINIT argv[6] =" << argv[6] << endl;
   int equippmentID = atoi(argv[6]);
-  cout << "The equipment ID was set to " <<equippmentID << endl;
-  
- //fRawMemoryReader->SetEquipmentID(1806); 
-
   Reset();
-  cout << "AliHLTPHOSRawAnalyzerComponent::DoInit Creating new  AliRawReaderMemory()" << endl; 
-  //legoPlotPtr   = new TH2S("Lego plot 1","Phi0 20Gev, High gain", 56*5, 0, 56*5, 64, 0, 64);
   fRawMemoryReader = new AliRawReaderMemory();
   fPHOSRawStream = new  AliCaloRawStream(fRawMemoryReader,"PHOS");
   fRawMemoryReader->SetEquipmentID(equippmentID); 
-
   SetEquippmentID(equippmentID);
   SetCoordinates(equippmentID);
-
-  //  cout <<"AliHLTPHOSRawAnalyzerComponent::DoIni  DONE!" << endl;
   if (argc==0 && argv==NULL) {
     // this is currently just to get rid of the warning "unused parameter"
   }
@@ -314,39 +281,38 @@ AliHLTPHOSRawAnalyzerComponent::GetEquippmentID()
   return  fEquippmentID;
 }
 
-
 void 
 AliHLTPHOSRawAnalyzerComponent::SetCoordinates(AliHLTUInt32_t equippmentID)
 {
   int rcuIndex =  (fEquippmentID - 1792)%4;
-  //  int moduleIndex = (fEquippmentID  -1792 -rcuIndex)/5;
- fModuleID = (fEquippmentID  -1792 -rcuIndex)/5;
+  fModuleID = (fEquippmentID  -1792 -rcuIndex)/5;
 
   if(rcuIndex == 0)
     {
       fRcuX = 0; 
-      fRcuY = 0;
+      fRcuZ = 0;
     }
 
   if(rcuIndex == 1)
     {
-      fRcuX = 1
-      fRcuY = 0;
+      fRcuX = 0
+      fRcuZ = 1;
     }
  
   if(rcuIndex == 2)
     {
-      fRcuX = 0
-      fRcuY = 1;
+      fRcuX = 1
+      fRcuZ = 0;
     }
 
 
-  if(rcuIndex == 2)
+  if(rcuIndex == 3)
     {
       fRcuX = 1; 
-      fRcuY = 1;
+      fRcuZ = 1;
     }
 
-//  cout << "AliHLTPHOSModuleMergerComponent::SetRcuCoordinates. (fEquippmentId - 1792)%4 =  " << rcuIndex << endl;
-//  cout << "AliHLTPHOSModuleMergerComponent::SetRcuCoordinates. Module undex =  " <<  moduleIndex  << endl; 
+  fRcuRowOffeset = 32*fRcuX;
+  fRcuColOffeset = 28*fRcuZ;
+
 }
index 9fbcd8de7115a1cf82e47e217120c382d15f8807..52c7c97c790e65829edf3ec3ff2290764df9fbd3 100644 (file)
@@ -42,20 +42,16 @@ class AliHLTPHOSRawAnalyzerComponent: public AliHLTProcessor
 
  private:
   int fEventCount;
-  //  int fEquippmentId;
-  //  AliHLTUInt16_t fEquippmentId;
   AliHLTUInt32_t fEquippmentID;
-  AliHLTUInt8_t fRcuX;
-  AliHLTUInt8_t fRcuY;
-  AliHLTUInt8_t fModuleID;
-
+  AliHLTUInt16_t fRcuX;
+  AliHLTUInt16_t fRcuZ;
+  AliHLTUInt16_t fRcuRowOffeset;
+  AliHLTUInt16_t fRcuColOffeset;
+  AliHLTUInt16_t fModuleID;
   Double_t fTmpChannelData[1008];
   Double_t fMaxValues[5][64][56][2];
   AliCaloRawStream *fPHOSRawStream;
   AliRawReaderMemory *fRawMemoryReader;
-
   static const AliHLTComponentDataType inputDataTypes[];
-  //  static const AliHLTComponentDataType outputDataType;
-  
 };
 #endif
index 62e34724a887bd4b1424df6e8f97f56611ee29fa..36c3fb9ce89713238781d3569fae7be7de21452f 100644 (file)
@@ -3,11 +3,11 @@
 
 struct AliHLTPHOSRcuCellEnergyData
 {
-  AliHLTUInt8_t fRcuX;
-  AliHLTUInt8_t fRcuY;
-  AliHLTUInt8_t fModuleID;
+  AliHLTUInt16_t fRcuX;
+  AliHLTUInt16_t fRcuZ;
+  AliHLTUInt16_t fModuleID;
   
-  unsigned long cellEnergies[32][28][2];
+  Double_t fCellEnergies[32][28][2];
   
 };