]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
A new structure AliHLTPHOSValidCellDataStruct.h was added in order to improve
authorphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 2 Feb 2007 11:17:04 +0000 (11:17 +0000)
committerphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 2 Feb 2007 11:17:04 +0000 (11:17 +0000)
the online processing performance. Instead of looping trough all 35480 channels
the raw anlyzer algorithm only has to loop the data in an array of ValidCellDataStructs.
This, combined with a counter counting the number of channels containing valid
data drastically improves performance because the arrays containing analyzed
data dont have to be resetted. The AliHLTPHOSRawAnalyzer  class
was modified to incorporate this new feature.

HLT/PHOS/AliHLTPHOSLinkDef.h
HLT/PHOS/AliHLTPHOSModuleCellEnergyDataStruct.h
HLT/PHOS/AliHLTPHOSRawAnalyzer.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h
HLT/PHOS/AliHLTPHOSRcuCellEnergyDataStruct.h
HLT/PHOS/AliHLTPHOSValidCellDataStruct.h

index 1cdd2f142fadd2ec400da1a17f34722ff21eeb87..88bec6cbf6affd30dd5d447848d39c579c22d6e8 100644 (file)
@@ -12,7 +12,7 @@
 #pragma link C++ class AliHLTPHOSPulseGenerator+;
 #pragma link C++ class AliHLTPHOSEmcCalibData+; 
 #pragma link C++ class AliHLTPHOSDefinitions+;
-#pragma link C++ class AliHLTPHOSValiCellDataStruct+;
+//#pragma link C++ class AliHLTPHOSValidCellDataStruct+;
 //#pragma link C++ class AliHLTPHOSRawAnalyzerComponent+;
 //#pragma link C++ class AliHLTPHOSRawAnalyzerPeakFinderComponent+;
 //#pragma link C++ class AliHLTPHOSRawAnalyzerCrudeComponent+;
index a45ff395a5b77831bb2955e8937acfc709a28bbd..d5281505972ec7fa6233797b78e5b44322537a72 100644 (file)
@@ -2,12 +2,16 @@
 #define ALIHLTPHOSNODULECELLENERGYDATASTRUCT_H
 
 #include "AliHLTPHOSCommonDefs.h"
+#include "AliHLTPHOSValiCellDataStruct.h"
 
 struct AliHLTPHOSModuleCellEnergyDataStruct
 {
   AliHLTUInt8_t fModuleID;
   AliHLTUInt16_t fCnt;
-  AliHLTUInt16_t fValidData[N_ROWS_MOD*N_COLUMNS_MOD*N_GAINS];
+  //  AliHLTUInt16_t fValidData[N_ROWS_MOD*N_COLUMNS_MOD*N_GAINS];
+  
+  AliHLTPHOSValidCellDataStruct fValidData[N_RCUS]; 
+
   unsigned long cellEnergies[N_ROWS_MOD][N_COLUMNS_MOD][N_GAINS];
 };
 
index fccd6f87c41040d5905c9aa512a0fa9335601223..e5e361fc52bf286c524947520cd98a6eaa7f0aa8 100644 (file)
@@ -23,7 +23,6 @@ using std::endl;
 
 AliHLTPHOSRawAnalyzer:: AliHLTPHOSRawAnalyzer():fFloatDataPtr(0), fSampleFrequency(10), fTau(2), fDTof(99999), fDAmpl(99999), n(99999)
 {
-  //  cout <<"AliHLTPHOSRawAnalyzer Base class::Creating a new AliHLTPHOSRawAnalyzer() object"<<endl;
   fFloatDataPtr = new double[1008];
 }
 
index cbb9547744c78efec78662d7332b07b5b6e2a537..f253121ff3a4cbf16bdcb9792c4cffc9a4a9ea24 100644 (file)
@@ -24,9 +24,9 @@
 
 
 const AliHLTComponentDataType AliHLTPHOSRawAnalyzerComponent::inputDataTypes[]={kAliHLTVoidDataType,{0,"",""}}; //'zero' terminated array
+int   AliHLTPHOSRawAnalyzerComponent::fEventCount = 0; 
 
-
-AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent():AliHLTProcessor(),  fEventCount(0),  fEquippmentID(0), fPHOSRawStream(), fRawMemoryReader(0)
+AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent():AliHLTProcessor(), fEquippmentID(0), fPHOSRawStream(), fRawMemoryReader(0)
 {
 
 } 
@@ -46,7 +46,7 @@ AliHLTPHOSRawAnalyzerComponent::~AliHLTPHOSRawAnalyzerComponent()
 
 
 
-AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent(const AliHLTPHOSRawAnalyzerComponent & ) : AliHLTProcessor(),  fEventCount(0),  fEquippmentID(0), fPHOSRawStream(),fRawMemoryReader(0)
+AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent(const AliHLTPHOSRawAnalyzerComponent & ) : AliHLTProcessor(),  fEquippmentID(0), fPHOSRawStream(),fRawMemoryReader(0)
 {
 }
 
@@ -119,9 +119,13 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
   UInt_t offset           = 0; 
   UInt_t mysize           = 0;
   UInt_t tSize            = 0;
+  Int_t tmpChannelCnt     = 0;
+
+
+  cout << "analyzing event: " << fEventCount << endl; 
 
   //  AliHLTPHOSRcuCellEnergyDataStruct
-  AliHLTPHOSRcuCellEnergyDataStruct* outPtr; 
+  //  AliHLTPHOSRcuCellEnergyDataStruct* outPtr; 
   AliHLTUInt8_t* outBPtr;
   outBPtr = outputPtr;
   const AliHLTComponentBlockData* iter = NULL; 
@@ -131,6 +135,7 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
 
   for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
     {
+  
       iter = blocks+ndx;
       mysize = 0;
       offset = tSize;
@@ -149,7 +154,14 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
       outPtr->fRcuX = fRcuX;
       outPtr->fRcuZ = fRcuZ;
       outPtr->fModuleID = fModuleID;
-      outPtr->fCnt = 0;
+      
+      //     cout << "analyzing evnt: " <<  fEventCount << "Module:" << fModuleID << "Rcu(" <<  fRcuZ <<"," << fRcuX << ")" << endl;
+  
+    //   outPtr->fCnt = 0;
+      tmpChannelCnt = 0;
+      //  outPtr->fValidData.fRcuX =  fRcuX;
+      //  outPtr->fValidData.fRcuZ =  fRcuZ;
 
       while(fPHOSRawStream->Next())
        {
@@ -160,28 +172,47 @@ int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evt
                  analyzerPtr->SetData(fTmpChannelData);
                  //              cout << "sampleCnt = " << sampleCnt << endl;
                  analyzerPtr->Evaluate(0, sampleCnt);
-                 fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain] = analyzerPtr->GetEnergy();
+                 //              fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain] = analyzerPtr->GetEnergy();
 
                  //      outPtr->fValidData[fCnt] = ;
-                 outPtr->fCnt ++;
+                 //              outPtr->fCnt ++;
                  //fCnt;
-                 outPtr->fCellEnergies[tmpRow - fRcuRowOffeset][tmpCol - fRcuColOffeset][tmpGain] =  fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain];
+                 //              outPtr->fCellEnergies[tmpRow - fRcuRowOffeset][tmpCol - fRcuColOffeset][tmpGain] =  fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain];
+                 //              outPtr->fCellEnergies[tmpRow][tmpCol][tmpGain] =  fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain];
+                 outPtr->fCellEnergies[tmpRow][tmpCol][tmpGain] =  analyzerPtr->GetEnergy();
                  sampleCnt = 0;
-                 ResetDataPtr(); 
+
+                 outPtr->fValidData[tmpChannelCnt].fGain = tmpGain;
+                 outPtr->fValidData[tmpChannelCnt].fRow  = tmpRow;
+                 outPtr->fValidData[tmpChannelCnt].fCol  = tmpCol; 
+                 
+                 tmpChannelCnt ++;
+
+                 //              outPtr->fCnt ++;
+                 //              ResetDataPtr(); 
 
                }
 
-             tmpMod  =  fPHOSRawStream->GetModule();
-             tmpRow  =  fPHOSRawStream->GetRow();
-             tmpCol  =  fPHOSRawStream->GetColumn();
+
+
+             tmpMod  =  fPHOSRawStream->GetModule() ;
+             tmpRow  =  fPHOSRawStream->GetRow() - fRcuRowOffeset;
+             tmpCol  =  fPHOSRawStream->GetColumn() - fRcuColOffeset;
              tmpGain =  fPHOSRawStream->IsLowGain(); 
              
+             //    outPtr->fValidData.fRow = tmpRow;
+             //   outPtr->fValidData).fCol = tmpCol;
+             
+             
              processedChannels ++;
            }
          fTmpChannelData[fPHOSRawStream->GetTime()] =  fPHOSRawStream->GetSignal();
          sampleCnt ++;
        }
-      
+     
+      outPtr->fCnt =  tmpChannelCnt;
+      //     cout << "outPtr->fCnt = "  << outPtr->fCnt << endl;
  
       AliHLTComponentBlockData bd;
       FillBlockData( bd );
index dbacfea7457c01f75fa2b8b2fd76a7de985f30dc..179b9d9bb60e72311bb67654ff16fa419aec8f9c 100644 (file)
@@ -10,6 +10,9 @@
 #include "AliCaloRawStream.h"
 #include "AliHLTPHOSDefinitions.h"
 
+class AliHLTPHOSRcuCellEnergyDataStruct;
+
+
 class AliHLTPHOSRawAnalyzerComponent: public AliHLTProcessor
 {
  public:
@@ -42,7 +45,7 @@ class AliHLTPHOSRawAnalyzerComponent: public AliHLTProcessor
   void ResetDataPtr();
 
  private:
-  int fEventCount;
+  static int fEventCount;
   AliHLTUInt32_t fEquippmentID;
   AliHLTUInt16_t fRcuX;
   AliHLTUInt16_t fRcuZ;
@@ -53,6 +56,7 @@ class AliHLTPHOSRawAnalyzerComponent: public AliHLTProcessor
   Double_t fMaxValues[5][64][56][2];
   AliCaloRawStream *fPHOSRawStream;
   AliRawReaderMemory *fRawMemoryReader;
+  AliHLTPHOSRcuCellEnergyDataStruct* outPtr;
   static const AliHLTComponentDataType inputDataTypes[];
 };
 #endif
index 6adb562271f1f079590e838ce2eac722fe19c9dc..04abc946d02614e0874e39479dd8e05f7aa5b01d 100644 (file)
@@ -10,8 +10,8 @@ struct AliHLTPHOSRcuCellEnergyDataStruct
   AliHLTUInt16_t fRcuZ;
   AliHLTUInt16_t fModuleID;
   AliHLTUInt16_t fCnt;
-  AliHLTPHOSValiCellDataStruct fValidData;
-  Double_t fCellEnergies[ N_ROWS_RCU][ N_COLUMNS_RCU][N_GAINS];
+  AliHLTPHOSValidCellDataStruct fValidData[N_ROWS_RCU*N_COLUMNS_RCU*N_GAINS];
+  Double_t fCellEnergies[N_ROWS_RCU][N_COLUMNS_RCU][N_GAINS];
   
 };
 
index d4a90acac74f4eb230eccc7695b4efe546602f2c..8f3c5fd0c4dcf82786a6f43a8e5a7c17b373cd98 100644 (file)
@@ -5,11 +5,11 @@
 //#include "AliHLTDataTypes.h"
 //#include "Rtypes.h"
 
-struct AliHLTPHOSValiCellDataStruct
+struct AliHLTPHOSValidCellDataStruct
 {
-  AliHLTUInt16_t fRcuX;
-  AliHLTUInt16_t fRcuZ;
-  AliHLTUInt16_t fModuleID;
+  //  AliHLTUInt16_t fRcuX;
+  //  AliHLTUInt16_t fRcuZ;
+  //  AliHLTUInt16_t fModuleID;
   AliHLTUInt16_t fRow;
   AliHLTUInt16_t fCol;
   AliHLTUInt16_t fGain;