]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx
Cosmetics and minor modifications
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSRawAnalyzerComponent.cxx
index b199ace4dd7a5a5acb1d61cb809be88ac851cc9c..73afc1c4263286d091fb2c80478f548af9e3c1d8 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-
-
 #include "AliHLTPHOSRawAnalyzer.h"
 #include "AliHLTPHOSRawAnalyzerComponent.h"
 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
 #include "AliHLTPHOSMapper.h"
 #include "AliHLTPHOSSanityInspector.h"
 #include "AliHLTPHOSBaseline.h"
-#include "AliHLTPHOSDigitContainerDataStruct.h"
-#include "AliHLTPHOSDigitMaker.h"
 #include "TFile.h"
 #include "TTree.h"
 #include "TClonesArray.h"
@@ -45,46 +41,28 @@ AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent():AliHLTPHOSRcuPr
                                                                  fDecoderPtr(0),  
                                                                  fAltroDataPtr(0),
                                                                  fAltroBunchPtr(0),
-                                                                 fDoPushCellEnergies(true),
-                                                                 fDoMakeDigits(false),
-                                                                 fDigitMakerPtr(0),
+                                                                 fDoPushRawData(false),
                                                                  fDigitContainerPtr(0),
                                                                  fDoSelectiveReadOut(false),
                                                                  fSelectedChannelsList(0),
-                                                                 fDoCheckDataSize(false)
+                                                                 fDoCheckDataSize(false),
+                                                                fNCorruptedBlocks(0),
+                                                                fNOKBlocks(0)
                                                                  //fRawMemoryReader(0), fPHOSRawStream(0) 
 {
   //comment
-  // fMapperPtr = new AliHLTPHOSMapper();
+  fMapperPtr = new AliHLTPHOSMapper();
   fAltroDataPtr = new AliAltroData();
   fAltroBunchPtr = new AliAltroBunch();
   fDecoderPtr = new AliAltroDecoder();
   fSanityInspectorPtr = new AliHLTPHOSSanityInspector();
   fSelectedChannelsList = new AliHLTUInt16_t[N_XCOLUMNS_RCU*N_ZROWS_RCU*N_GAINS];
 }
+
+
 AliHLTPHOSRawAnalyzerComponent::~AliHLTPHOSRawAnalyzerComponent()
 {
-  //comment
-  if(fMapperPtr)
-    {
-      delete  fMapperPtr;
-      fMapperPtr = 0;
-    }
-  if(fAltroDataPtr)
-    {
-      delete fAltroDataPtr;
-      fAltroDataPtr = 0;
-    }
-  if(fAltroBunchPtr)
-    {
-      delete fAltroBunchPtr;
-      fAltroBunchPtr = 0;
-    }
-  if(fDecoderPtr)
-    {
-      delete fDecoderPtr;
-      fDecoderPtr = 0;
-    }
+  Deinit();
 }
 
 
@@ -118,7 +96,6 @@ AliHLTPHOSRawAnalyzerComponent::Deinit()
 }
 
 
-
 const char* 
 AliHLTPHOSRawAnalyzerComponent::GetComponentID()
 {
@@ -126,6 +103,7 @@ AliHLTPHOSRawAnalyzerComponent::GetComponentID()
   return "AliPhosTestRaw";
 }
 
+
 void
 AliHLTPHOSRawAnalyzerComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
 {
@@ -152,8 +130,7 @@ AliHLTPHOSRawAnalyzerComponent::GetOutputDataTypes(AliHLTComponentDataTypeList&
   // see header file for class documentation
   tgtList.clear();
   tgtList.push_back(AliHLTPHOSDefinitions::fgkCellEnergyDataType);
-  tgtList.push_back(AliHLTPHOSDefinitions::fgkDigitDataType);
-  tgtList.push_back(kAliHLTDataTypeHwAddr16);
+   tgtList.push_back(kAliHLTDataTypeHwAddr16);
   return tgtList.size();
 }
 
@@ -172,11 +149,11 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData
                                         AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks )
 {
   //comment
+
   UInt_t offset            = 0; 
   UInt_t mysize            = 0;
   UInt_t tSize             = 0;
   Float_t baseline         = 0;
-  UInt_t digitCount        = 0;
   AliHLTUInt8_t* outBPtr;
   outBPtr = outputPtr;
   const AliHLTComponentBlockData* iter = NULL; 
@@ -186,128 +163,133 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData
   Int_t nSamples = 0;
   UInt_t nSelected = 0;
   UInt_t specification = 0;
-
   for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
     {
+      
       Int_t tmpChannelCnt     = 0;
       iter = blocks+ndx;
       mysize = 0;
       offset = tSize;
       Int_t crazyness = 0;
+      UInt_t tmpSize = 0;
       mysize += sizeof(AliHLTPHOSRcuCellEnergyDataStruct);
 
       if ( iter->fDataType != AliHLTPHOSDefinitions::fgkDDLPackedRawDataType )
        {
          continue; 
        }
-
       specification = specification|iter->fSpecification;
+
       fDecoderPtr->SetMemory(reinterpret_cast<UChar_t*>( iter->fPtr ), iter->fSize);
       fDecoderPtr->Decode();
       fOutPtr =  (AliHLTPHOSRcuCellEnergyDataStruct*)outBPtr;
+
       fOutPtr->fRcuX = fRcuX;
       fOutPtr->fRcuZ = fRcuZ;
       fOutPtr->fModuleID =fModuleID;
-      Reset(fOutPtr);
-      rawDataBufferPos += (mysize)/sizeof(Int_t); 
 
+      rawDataBufferPos += (mysize)/sizeof(Int_t); 
+            
       while( fDecoderPtr->NextChannel(fAltroDataPtr) == true )
        {
+
          nSamples = fAltroDataPtr->GetDataSize() - 2;
+
          if(fDoCheckDataSize)
            {
              if(nSamples != fNTotalSamples)
                {
+                 cout <<"processing event " << fPhosEventCount << endl;;  
+                 cout << "Wrong number of samples Expected  "<< fNTotalSamples << " samples (assuming non zero supressed data) but recieved  " << nSamples << endl;
                  Logging( kHLTLogError, __FILE__ , "Wrong number of samples", "Expected  %lu samples (assuming non zero supressed data) but recieved %lu", fNTotalSamples,  nSamples); 
+                 fNCorruptedBlocks ++;   
+                 continue;  
                }
            }
-        
-         crazyness = fSanityInspectorPtr->CheckInsanity(fAltroDataPtr->GetData(), fAltroDataPtr->GetDataSize() - 2);
-         fAnalyzerPtr->SetData(fAltroDataPtr->GetData());  
+
+         fNOKBlocks ++;
+         
+         if((fPhosEventCount%10 ==0) && fPhosEventCount !=0)
+           {
+             //              float percent = ((float)(100*fNCorruptedBlocks))/((float)(fNOKBlocks + fNCorruptedBlocks) );
+           }
+         
+         crazyness = fSanityInspectorPtr->CheckInsanity((const UInt_t*)fAltroDataPtr->GetData(), (const Int_t)(fAltroDataPtr->GetDataSize() - 2));
+
+         fAnalyzerPtr->SetData(fAltroDataPtr->GetData(), fAltroDataPtr->GetDataSize() -2);   
          fAnalyzerPtr->Evaluate(0, fAltroDataPtr->GetDataSize() -2);  
 
-         Int_t x = fMapperPtr->fHw2geomapPtr[fAltroDataPtr->GetHadd()].fXCol;
-         Int_t z = fMapperPtr->fHw2geomapPtr[fAltroDataPtr->GetHadd()].fZRow;
-         Int_t gain = fMapperPtr->fHw2geomapPtr[fAltroDataPtr->GetHadd()].fGain;         
-         validCellPtr = &(fOutPtr->fValidData[x][z][gain]);
-         validCellPtr->fX = x;
-         validCellPtr->fZ = z;
-         validCellPtr->fGain = gain;
+         fOutPtr->fValidData[tmpChannelCnt].fZ  = fMapperPtr->fHw2geomapPtr[fAltroDataPtr->GetHadd()].fZRow;
+         fOutPtr->fValidData[tmpChannelCnt].fX  = fMapperPtr->fHw2geomapPtr[fAltroDataPtr->GetHadd()].fXCol; 
+         fOutPtr->fValidData[tmpChannelCnt].fGain  = fMapperPtr->fHw2geomapPtr[fAltroDataPtr->GetHadd()].fGain; 
 
          if(fUseBaselineSubtraction)
            {
-             baseline = fBaselines[validCellPtr->fX][validCellPtr->fZ][ validCellPtr->fGain];
+             baseline = fBaselines[fOutPtr->fValidData[tmpChannelCnt].fX][fOutPtr->fValidData[tmpChannelCnt].fZ][ fOutPtr->fValidData[tmpChannelCnt].fGain];
            }
-         baseline = 0;
+
+         fOutPtr->fValidData[tmpChannelCnt].fEnergy  = (float)fAnalyzerPtr->GetEnergy() - baseline;
+         fOutPtr->fValidData[tmpChannelCnt].fTime    = (float)fAnalyzerPtr->GetTiming();
+         fOutPtr->fValidData[tmpChannelCnt].fCrazyness = (int)crazyness;
          
-         validCellPtr->fEnergy  = (float)fAnalyzerPtr->GetEnergy() - baseline;
-         validCellPtr->fTime    = (float)fAnalyzerPtr->GetTiming();
-         validCellPtr->fCrazyness = (int)crazyness;
-         validCellPtr->fNSamples = nSamples;
-         validCellPtr->fID = tmpChannelCnt;
-         validCellPtr->fData = rawDataBufferPos;
          const UInt_t *tmpData =  fAltroDataPtr->GetData();
 
-         if(fDoPushCellEnergies)
+         if(fDoPushRawData)
            {
+             tmpSize += nSamples + 1;
+             *rawDataBufferPos = nSamples;
+             cout << "# samples: " << *rawDataBufferPos << endl;
              for(int sample = 0; sample < nSamples; sample++)
                {
-                 (validCellPtr->fData)[sample] = tmpData[sample] - (int)baseline;
+                 rawDataBufferPos++;
+                 *(rawDataBufferPos) = tmpData[sample] - (Int_t)baseline;
                }
+             rawDataBufferPos++;
            }
          if(fDoSelectiveReadOut)
            {
-             if(validCellPtr->fEnergy > fSelectiveReadOutThresholds[x][z][gain])
+             if(validCellPtr->fEnergy > fSelectiveReadOutThresholds[fOutPtr->fValidData[tmpChannelCnt].fX][fOutPtr->fValidData[tmpChannelCnt].fZ][fOutPtr->fValidData[tmpChannelCnt].fGain])
                {
                  fSelectedChannelsList[nSelected] = (AliHLTUInt16_t)(fAltroDataPtr->GetHadd());
                  nSelected++;
                }
            }
 
-         UInt_t tmpSize =  sizeof(Int_t)*(validCellPtr->fNSamples);
-         mysize += tmpSize;
-         rawDataBufferPos += tmpSize/sizeof(Int_t);
+         //      UInt_t tmpSize =  sizeof(Int_t)*(fOutPtr->fValidData[tmpChannelCnt].fNSamples);
+         //      mysize += sizeof(Int_t)*(fOutPtr->fValidData[tmpChannelCnt].fNSamples);
+         //mysize += tmpSize;
+         //rawDataBufferPos += tmpSize/sizeof(Int_t);
+         
+         
          tmpChannelCnt ++;
        }
+
+      mysize += tmpSize*4;
+      //      cout << "mysize: " << mysize << " - tmpSize: " << 
+
+      if(fDoPushRawData)
+       {
+         fOutPtr->fHasRawData = true;
+       }
+      else
+       {
+         fOutPtr->fHasRawData = false;
+       }
       
       fOutPtr->fCnt  = tmpChannelCnt;
       fOutPtr->fSize = mysize;
+
+      AliHLTComponentBlockData bdCellEnergy;
+      FillBlockData( bdCellEnergy );
+      bdCellEnergy.fOffset = offset;
+      bdCellEnergy.fSize = mysize;
+      bdCellEnergy.fDataType = AliHLTPHOSDefinitions::fgkCellEnergyDataType;
+      bdCellEnergy.fSpecification = specification;
+      outputBlocks.push_back( bdCellEnergy );
       
-      if(fDoPushCellEnergies)
-       {
-         AliHLTComponentBlockData bdCellEnergy;
-         FillBlockData( bdCellEnergy );
-         bdCellEnergy.fOffset = offset;
-         bdCellEnergy.fSize = mysize;
-         bdCellEnergy.fDataType = AliHLTPHOSDefinitions::fgkCellEnergyDataType;
-         bdCellEnergy.fSpecification = specification;
-         outputBlocks.push_back( bdCellEnergy );
-         
-         tSize += mysize;
-         outBPtr += mysize;
-       }
-      
-      //Making Digits
-      if(fDoMakeDigits)
-       {
-         Int_t digitSize = 0;
-         fDigitMakerPtr->SetDigitContainerStruct((AliHLTPHOSDigitContainerDataStruct*)outBPtr);          
-         digitCount = fDigitMakerPtr->MakeDigits(fOutPtr);
-         offset = tSize;
-         digitSize += sizeof(AliHLTPHOSDigitContainerDataStruct);
-         
-         AliHLTComponentBlockData bdDigits;
-         FillBlockData(bdDigits);
-         bdDigits.fOffset = offset;
-         bdDigits.fSize = mysize;
-         bdDigits.fDataType = AliHLTPHOSDefinitions::fgkDigitDataType;
-         bdDigits.fSpecification = specification;
-         outputBlocks.push_back( bdDigits );
-         
-         tSize += digitSize;
-         outBPtr += digitSize;
-         fDigitMakerPtr->Reset();
-       }      
+      tSize += mysize;
+      outBPtr += mysize;
                   
       //Pushing selected channel addresses
       if(fDoSelectiveReadOut)
@@ -331,7 +313,8 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData
          tSize += mysize;
          outBPtr += mysize;
        }
-      
+   
+   
       if( tSize > size )
        {
          Logging( kHLTLogFatal, "HLT::AliHLTPHOSRawAnalyzerComponent::DoEvent", "Too much data",
@@ -339,18 +322,22 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData
                   , tSize, size );
          return EMSGSIZE;
        }
-       
+      
     }
 
   fPhosEventCount++; 
 
+
+
   if(fPrintInfo == kTRUE)
     {
+
       if(fPhosEventCount%fPrintInfoFrequncy == 0)
        {
          Logging(kHLTLogBenchmark, __FILE__ , IntToChar(  __LINE__ ) , "Analyzing event %lu", fPhosEventCount);
        }  
-    }
+   }
 
   return 0;
 }//end DoEvent
@@ -360,11 +347,17 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData
 int
 AliHLTPHOSRawAnalyzerComponent::DoInit( int argc, const char** argv )
 { 
+  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  // fAnalyzerPtr->SetCorrectBaselineUsingFirstFiveSamples();
+  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
   //See base class for documentation
   fSendChannelData = kFALSE;
   fPrintInfo = kFALSE;
   int iResult=0;
   TString argument="";
+  const int nSigmas = 3;
   fMapperPtr = new AliHLTPHOSMapper();
  
   if(fMapperPtr->GetIsInitializedMapping() == false)
@@ -373,60 +366,29 @@ AliHLTPHOSRawAnalyzerComponent::DoInit( int argc, const char** argv )
       return -4;
     }
 
-  iResult = ScanArguments(argc, argv);
-
-  int nSigmas = 3;
-  
-  fDigitMakerPtr = new AliHLTPHOSDigitMaker();
-  
-  for(int i = 0; i < argc; i++)
+  char tmpbaselinfile[256];
+  if(fUtilitiesPtr->ScanSingleNameArgument(argc, argv, "-baselinefile", tmpbaselinfile) == true  )
     {
-      if(!strcmp("-rmsfilepath", argv[i]))
-       {
-         fDigitMakerPtr->SetDigitThresholds(argv[i+1], nSigmas);
-         SetSelectiveReadOutThresholds(argv[i+1], nSigmas);
-       }
-      if(!strcmp("-baselinefile", argv[i]))
-       {
-         SetBaselines(argv[i+1]);
-       }
-      if(!strcmp("-lowgainfactor", argv[i]))
-       {
-         fDigitMakerPtr->SetGlobalLowGainFactor(atof(argv[i+1]));
-       }
-      if(!strcmp("-highgainfactor", argv[i]))
-       {
-         fDigitMakerPtr->SetGlobalHighGainFactor(atof(argv[i+1]));
-       }
-      if(!strcmp("-selectivereadout", argv[i]))
-       {
-         fDoSelectiveReadOut = true;
-       }
-      if(!strcmp("-makedigits", argv[i]))
-       {
-         fDoMakeDigits = true;
-       }
-      if(!strcmp("-pushcellenergies", argv[i]))
-               {
-         fDoPushCellEnergies = true;
-       }
-      if(!strcmp("-checkdatasize", argv[i]))
-       {
-         fDoCheckDataSize = true;
-       }
-    }
-
-  if(fIsSetEquippmentID == kFALSE)
-    {
-      Logging( kHLTLogFatal, __FILE__, "Missing argument",
-              "The argument equippmentID is not set: set it with a component argumet like this: -equippmentID  <number>");
-      iResult = -3; 
+      SetBaselines(tmpbaselinfile);
     }
-  else
+  
+  char tmpSelectiveThresholdfile[256];
+  if(fUtilitiesPtr->ScanSingleNameArgument(argc, argv, "-baselinefile", tmpSelectiveThresholdfile) == true  )
     {
-      iResult = 0; 
+      fDoSelectiveReadOut = true;
+      SetSelectiveReadOutThresholds(tmpSelectiveThresholdfile, nSigmas);
     }
 
+
+  //fDoSelectiveReadOut = fUtilitiesPtr->ScanSingleNameArgument(argc, argv, "-selectivereadout");
+
+  fDoPushRawData = fUtilitiesPtr->ScanSingleArgument(argc, argv, "-pushrawdata");
+
+  fDoPushRawData = true; //CRAP
+
+  fDoCheckDataSize = fUtilitiesPtr->ScanSingleArgument(argc, argv, "-checkdatasize");
+  iResult = ScanArguments(argc, argv);
   return iResult;
 }
 
@@ -437,6 +399,7 @@ AliHLTPHOSRawAnalyzerComponent::Reset(AliHLTPHOSRcuCellEnergyDataStruct* cellDat
   //comment
   //  for(unsigned int mod = 0; mod < N_MODULES; mod ++)
   //{
+  /*
   for(int x = 0; x < N_XCOLUMNS_RCU; x ++)
     {
 
@@ -450,7 +413,7 @@ AliHLTPHOSRawAnalyzerComponent::Reset(AliHLTPHOSRcuCellEnergyDataStruct* cellDat
            }
        }
     }
-  
+  */
   ResetDataPtr(0, ALTRO_MAX_SAMPLES);
 
 } // end Reset