Minor changes needed for debugging purphoses
authorphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Oct 2007 15:51:02 +0000 (15:51 +0000)
committerphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Oct 2007 15:51:02 +0000 (15:51 +0000)
HLT/PHOS/AliHLTPHOSRawAnalyzer.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzer.h
HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx
HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h
HLT/PHOS/AliHLTPHOSRawAnalyzerCrude.cxx
HLT/PHOS/AliHLTPHOSRcuCellAccumulatedEnergyDataStruct.h
HLT/PHOS/AliHLTPHOSRcuCellEnergyDataStruct.h

index 176f19ba949e11dc5b61b4b4a78484c24fb865ae..cff9cafebfb9596387832307e9a0011311542b01 100644 (file)
@@ -149,6 +149,7 @@ AliHLTPHOSRawAnalyzer::MakeInitialGuess(int treshold)
   cout << "Make initial guess not yet implemeted" << endl;  
 }
 
+
 void
 AliHLTPHOSRawAnalyzer::SetStartIndex(int index)
 {
index fe1c683b893abb680ebf3131d63dcafb1b277e8b..0fc6460e0feda2983e5ae709f0f4c024bb6d0b54 100644 (file)
@@ -29,7 +29,7 @@ class AliHLTPHOSRawAnalyzer: public AliHLTPHOSBase
   void SetStartIndex(int startIndex);
   void MakeInitialGuess();
   void MakeInitialGuess(int treshold);
-
+  
   virtual void SetTVector(Double_t *tVector, Int_t size);
   virtual void SetAVector(Double_t *aVector, Int_t size);
   virtual void Evaluate(Int_t start = 0, Int_t lenght = 100) = 0;
index 7256884efabc0174248ecef64e9f715eb3073c56..8e8a8e3a85135614b9b233b02e70533ddd85ac25 100644 (file)
 #include "AliHLTAltroData.h"
 #include "AliHLTPHOSMapper.h"
 #include "AliHLTAltroBunch.h"
-
+#include "AliHLTPHOSSanityInspector.h"
+#include "AliHLTPHOSBaseline.h"
+#include "TFile.h"
+#include "TTree.h"
+#include "TClonesArray.h"
 //using namespace std;
 
 AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent():AliHLTPHOSRcuProcessor(), fAnalyzerPtr(0), 
                                                                 fSendChannelData(kFALSE),fOutPtr(0), fMapperPtr(0), fDecoderPtr(0), 
-                                                                fAltroDataPtr(0), fAltroBunchPtr(0) 
+                                                                fAltroDataPtr(0), fAltroBunchPtr(0), fUseBaselineSubtraction(false), fDebugCnt(0)
 {
   fMapperPtr = new AliHLTPHOSMapper();
   
@@ -80,59 +84,127 @@ AliHLTPHOSRawAnalyzerComponent::GetOutputDataSize(unsigned long& constBase, doub
 
 {
   constBase = 30;
-  inputMultiplier = 1;
+  inputMultiplier = 1.2;
 }
 
 
+//int 
+//AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventD  //  AliHLTPHOSRcuCellEnergyDebugDataStruct* fOutPtr;ata& evtData, const AliHLTComponentBlockData* blocks, AliHLTComponentTriggerData& trigData, 
+//                                      AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks )
 int 
-AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks )
+AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, AliHLTComponentTriggerData& trigData, 
+                                        AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks )
 {
   UInt_t offset           = 0; 
   UInt_t mysize           = 0;
   UInt_t tSize            = 0;
-  //  Int_t tmpChannelCnt     = 0;
+  Float_t baseline = 0;
   AliHLTUInt8_t* outBPtr;
-
   AliHLTAltroBunch *bunchPtr;
   outBPtr = outputPtr;
   const AliHLTComponentBlockData* iter = NULL; 
   unsigned long ndx;
-  for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
-    {
+  
+  //  printf("\n% \n", ndx);
+
+  //  cout << "evtData block count =   " <<  evtData.fBlockCnt  << endl;
+
+
+  fDebugCnt++;
   
 
-    Int_t tmpChannelCnt     = 0;
+  for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
+    {
+      //      cout <<"TP0"<< endl;
+     Int_t tmpChannelCnt     = 0;
       iter = blocks+ndx;
       mysize = 0;
       offset = tSize;
+      //      cout <<"TP1"<< endl;
+      Int_t *dt = (Int_t*)(reinterpret_cast<UChar_t*>( iter->fPtr ));
+      //      cout <<"TP2"<< endl;
+      Int_t crazyness = 0;
+
       if ( iter->fDataType != AliHLTPHOSDefinitions::fgkDDLPackedRawDataType )
        {
          //      cout <<"WARNING: not AliHLTPHOSDefinitions::fgkDDLPackedRawDataType  "  << endl;
-         continue; //!!!!! Commented out to read TPC data, remember to put back
+         //      cout <<  "equippment "<< fkEquippmentID << " Event count =" <<  fDebugCnt   <<"    AliHLTPHOSRawAnalyzerComponent::DoEvent ,  ERROR"<< endl;
+         continue; 
+
+         //      if(fPhosEventCount < 10)
+         //        { 
+         //          continue; //!!!!! Commented out to read TPC data, remember to put back
+         //        }
        }
+      else
+       {
+         //      cout << "equippment " << fkEquippmentID << " Event count =" <<  fDebugCnt  << " Dat type is:  AliHLTPHOSDefinitions::fgkDDLPackedRawDataType" << endl;
+       }
+      
+      if( fPhosEventCount%100 == 0)
+       {
+         cout << "event count = "<< fPhosEventCount <<endl;
+         
+       } 
+
+    
+      /*
+      printf("\Common data header for equippment %d\n",  fkEquippmentID);
+      printf("Event#: %d -- RCU X: %d - RCU Z: %d\n\n", fPhosEventCount, fRcuX, fRcuZ);
+
+      for(Int_t n = 0; n < 8; n++)
+       {
+         printf("CDH(%d): 0x%X\n", n, dt[n]);
+       }
+
+      printf("\n");    
+      */
+    
 
-       fDecoderPtr->SetMemory(reinterpret_cast<UChar_t*>( iter->fPtr ), iter->fSize);
+      fDecoderPtr->SetMemory(reinterpret_cast<UChar_t*>( iter->fPtr ), iter->fSize);
       //    fDecoderPtr->SetMemory2(reinterpret_cast<UChar_t*>( iter->fPtr ), iter->fSize);
       fDecoderPtr->Decode();
+  
       fOutPtr =  (AliHLTPHOSRcuCellEnergyDataStruct*)outBPtr;
       fOutPtr->fRcuX = fRcuX;
       fOutPtr->fRcuZ = fRcuZ;
       fOutPtr->fModuleID =fModuleID;
+      
       while( fDecoderPtr->NextChannel(fAltroDataPtr) == true )
        {
-         fAnalyzerPtr->SetData(fAltroDataPtr->fData);
+         
+         //      if(fAltroDataPtr->fDataSize != 72)
+         //      if(fAltroDataPtr->fDataSize != 142)
+         if(fAltroDataPtr->fDataSize != (fNTotalSamples +2))
+           {
+             cout << "Error, fDataSize = " << fAltroDataPtr->fDataSize << endl;
+             continue;
+           }
+
+         crazyness = fSanityInspectorPtr->CheckInsanity(fAltroDataPtr->fData, fAltroDataPtr->fDataSize - 2);
+         fAnalyzerPtr->SetData(fAltroDataPtr->fData);  //  AliHLTPHOSRcuCellEnergyDebugDataStruct* fOutPtr;
          fAnalyzerPtr->Evaluate(0, fAltroDataPtr->fDataSize -2);  
 
          fOutPtr->fValidData[tmpChannelCnt].fZ  = fMapperPtr->hw2geomapPtr[fAltroDataPtr->fHadd].zRow;
          fOutPtr->fValidData[tmpChannelCnt].fX  = fMapperPtr->hw2geomapPtr[fAltroDataPtr->fHadd].xCol; 
          fOutPtr->fValidData[tmpChannelCnt].fGain  = fMapperPtr->hw2geomapPtr[fAltroDataPtr->fHadd].gain; 
-         fOutPtr->fValidData[tmpChannelCnt].fEnergy  = (float)fAnalyzerPtr->GetEnergy();
+         if(fUseBaselineSubtraction)
+          {
+            baseline = fBaselines[fOutPtr->fValidData[tmpChannelCnt].fX][fOutPtr->fValidData[tmpChannelCnt].fZ][ fOutPtr->fValidData[tmpChannelCnt].fGain];
+          }
+         fOutPtr->fValidData[tmpChannelCnt].fEnergy  = (float)fAnalyzerPtr->GetEnergy() - baseline;
          fOutPtr->fValidData[tmpChannelCnt].fTime    = (float)fAnalyzerPtr->GetTiming();
+         fOutPtr->fValidData[tmpChannelCnt].fCrazyness = (int)crazyness;
+         for(Int_t sample = 0; sample < fNTotalSamples; sample++)
+           {
+             //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+             (fOutPtr->fValidData[tmpChannelCnt].fData)[sample] = fAltroDataPtr->fData[sample] - (int)baseline;
+           }
+         
          tmpChannelCnt ++;
+         
        }
-    
-  
       fOutPtr->fCnt =  tmpChannelCnt;
       mysize += sizeof(AliHLTPHOSRcuCellEnergyDataStruct);
 
@@ -157,20 +229,23 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData
                   , tSize, size );
          return EMSGSIZE;
        }
+       
       //   fDecoderPtr->GetFailureRate();
-
+     
     }
+  
 
   fPhosEventCount++; 
 
+  //  cout << "event cunt =" <<   fPhosEventCount << endl;
+
   if(fPrintInfo == kTRUE)
     {
-      if(fPhosEventCount%fPrintInfoFrequncy == 0)
+     if(fPhosEventCount%fPrintInfoFrequncy == 0)
        {
          cout <<"Analyzing event " <<  fPhosEventCount  << "for Equippment " << fkEquippmentID << endl; 
        }  
     }
-  size = tSize;
 
   return 0;
 }//end DoEvent
@@ -183,6 +258,7 @@ AliHLTPHOSRawAnalyzerComponent::DoInit( int argc, const char** argv )
   fAltroDataPtr = new AliHLTAltroData();
   fAltroBunchPtr = new AliHLTAltroBunch();
   fDecoderPtr = new AliHLTDDLDecoder();
+  fSanityInspectorPtr = new AliHLTPHOSSanityInspector();
   fSendChannelData = kFALSE;
   fPrintInfo = kFALSE;
   Reset();
@@ -190,6 +266,16 @@ AliHLTPHOSRawAnalyzerComponent::DoInit( int argc, const char** argv )
   TString argument="";
   iResult = ScanArguments(argc, argv);
 
+  for(int i = 0; i < argc; i++)
+    {
+      if(!strcmp("-baselinefile", argv[i]))
+       {
+         cout << "Getting baselines from " << argv[i+1] << endl;
+         SetBaselines(argv[i+1]);
+       }
+    }
+
   if(fIsSetEquippmentID == kFALSE)
     {
       cout << "The argument equippmentID is not set: set it with a component argumet like this: -equippmentID  <number>" << endl;
@@ -202,7 +288,7 @@ AliHLTPHOSRawAnalyzerComponent::DoInit( int argc, const char** argv )
       iResult = 0; 
       //      fRawMemoryReader->SetEquipmentID(fkEquippmentID);
     }
-
+  
   //  return iResult;
   //  return 0;
   return iResult;
@@ -225,7 +311,7 @@ AliHLTPHOSRawAnalyzerComponent::Reset()
            }
        }
     }
-
+  
   ResetDataPtr(0, ALTRO_MAX_SAMPLES);
 
 } // end Reset
@@ -240,3 +326,29 @@ AliHLTPHOSRawAnalyzerComponent::ResetDataPtr(int startindex, int sampleCnt)
     }
 }
 
+void 
+AliHLTPHOSRawAnalyzerComponent::SetBaselines(const char* file)
+{
+  fUseBaselineSubtraction = true;
+  AliHLTPHOSBaseline *baseline = 0;
+  TFile *baselineFile = TFile::Open(file);
+  TTree *baselineTree = (TTree*)baselineFile->Get("baselineTree");
+  TClonesArray *baselineArray = new TClonesArray("AliHLTPHOSBaseline", 7168);
+  baselineTree->SetBranchAddress("Baselines", &baselineArray);
+  baselineTree->GetEntry(0);
+  for(Int_t i = 0; i < baselineArray->GetEntriesFast(); i++)
+    {
+      baseline = (AliHLTPHOSBaseline*)baselineArray->At(i);
+      if((baseline->GetX() < ((fRcuX + 1)*N_XCOLUMNS_RCU)) && (baseline->GetX() >= fRcuX*N_XCOLUMNS_RCU))
+       {
+         if((baseline->GetZ() < ((fRcuZ + 1)*N_ZROWS_RCU)) && (baseline->GetZ() >= fRcuZ*N_ZROWS_RCU))
+           {
+             fBaselines[baseline->GetX() - fRcuX*N_XCOLUMNS_RCU][baseline->GetZ() - fRcuZ*N_ZROWS_RCU][baseline->GetGain()] = baseline->GetBaseline();
+             //              cout <<  fBaselines[baseline->GetX() - fRcuX*N_XCOLUMNS_RCU][baseline->GetZ() - fRcuZ*N_ZROWS_RCU][baseline->GetGain()] << endl;
+           }
+       }
+    }
+  baselineFile->Close();
+  delete baselineFile;
+  baselineFile = 0;
+}
index 80c3bbf5fd8d7ff4ab7883ab3a730fe4ac7e6970..9e8128d88f7227eabdc9816318f4b1c769042e64 100644 (file)
@@ -12,6 +12,7 @@ class AliHLTPHOSMapper;
 class AliHLTDDLDecoder;
 class AliHLTAltroData;
 class AliHLTAltroBunch;
+class AliHLTPHOSSanityInspector;
 
 class AliHLTPHOSRawAnalyzerComponent: public AliHLTPHOSRcuProcessor
 {
@@ -34,14 +35,22 @@ class AliHLTPHOSRawAnalyzerComponent: public AliHLTPHOSRcuProcessor
                     AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks ); 
   void Reset();
   void ResetDataPtr(int startindex = 0, int sampleCnt = 0);
+  void SetBaselines(const char* baselineFile);
   Bool_t fSendChannelData;       /**<wether or not to send raw data from the component into shared memory*/
   Double_t fTmpChannelData[ALTRO_MAX_SAMPLES];                        /**<temporary variable to store raw samples from a single altro channel*/
   Double_t fMaxValues[N_MODULES][N_ZROWS_MOD][N_XCOLUMNS_MOD][N_GAINS]; /**<array to store cell energies*/
-  AliHLTPHOSRcuCellEnergyDataStruct* fOutPtr;         /**<Pointer to outputbuffer to write results from the component into shared memory*/
+  // AliHLTPHOSRcuCellEnergyDataStruct* fOutPtr;         /**<Pointer to outputbuffer to write results from the component into shared memory*/
+
+  AliHLTPHOSRcuCellEnergyDataStruct* fOutPtr;
   AliHLTPHOSMapper *fMapperPtr;
   AliHLTDDLDecoder *fDecoderPtr;
   AliHLTAltroData  *fAltroDataPtr;
   AliHLTAltroBunch *fAltroBunchPtr;
+  AliHLTPHOSSanityInspector *fSanityInspectorPtr;
+  Bool_t fUseBaselineSubtraction;
+  Float_t fBaselines[N_XCOLUMNS_RCU][N_ZROWS_RCU][N_GAINS];
+  int fDebugCnt;
+  
 };
 #endif
 
index 036b0264bd7f08397a87649bb5010bd1797bc531..71d56a4f19b06290e8d28b52fe4b2b9e5c57bc01 100644 (file)
@@ -77,7 +77,7 @@ AliHLTPHOSRawAnalyzerCrude::Evaluate(int start, int length)
       //         tmpTime = i;               
       //       }
 
-      if(fIntDataPtr[i] >  tmpAmplitudeMax)
+      if(fIntDataPtr[i] >  tmpAmplitudeMax && i > 5)
        {
          tmpAmplitudeMax = fIntDataPtr[i];
          tmpTime = i;               
index 7d0f8c30f60c22045d36b336d9865ffefb6a44f1..c4c3755ba684464db49c531a78f97f50c9c24265 100644 (file)
@@ -29,6 +29,7 @@ struct AliHLTPHOSRcuCellAccumulatedEnergyDataStruct
   AliHLTUInt8_t fRcuZ; 
   float fAccumulatedEnergies[N_XCOLUMNS_RCU][N_ZROWS_RCU][N_GAINS];
   AliHLTUInt32_t fHits[N_XCOLUMNS_RCU][N_ZROWS_RCU][N_GAINS];
+  AliHLTUInt32_t fDeadChannelMap[N_XCOLUMNS_RCU][N_ZROWS_RCU][N_GAINS];
 };
 
 
index 4e136b5f7de57d6015c78af36b388db0ead2316a..053afd430b227c95bfcfab5aef5ccfa8eb57b143 100644 (file)
@@ -15,7 +15,7 @@
  * about the suitability of this software for any purpose. It is          *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
-#include "AliHLTPHOSCommonDefs.h"
+//#include "AliHLTPHOSCommonDefs.h"
 #include "AliHLTPHOSValidCellDataStruct.h"
 #include "Rtypes.h"
 
@@ -28,7 +28,6 @@ struct AliHLTPHOSRcuCellEnergyDataStruct
   Int_t fRcuX;
   Int_t fRcuZ;
   Int_t fCnt;
-
   AliHLTPHOSValidCellDataStruct fValidData[N_ZROWS_RCU*N_XCOLUMNS_RCU*N_GAINS];
   
 };