From 6e709a0db099597d2b0bfc43932c945c576e46b1 Mon Sep 17 00:00:00 2001 From: phille Date: Fri, 13 Jul 2007 09:29:22 +0000 Subject: [PATCH] =?utf8?q?Effective=20c++,=20committed=20on=20behalf=20of?= =?utf8?q?=20=EF=BF=BDystein=20Djuvsland?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- HLT/PHOS/AliHLTDDLDecoder.cxx | 28 ++- HLT/PHOS/AliHLTDDLDecoder.h | 3 +- HLT/PHOS/AliHLTPHOSClusterizer.cxx | 224 ++++++++++++++++-- HLT/PHOS/AliHLTPHOSClusterizer.h | 38 +-- HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx | 75 ++++-- HLT/PHOS/AliHLTPHOSClusterizerComponent.h | 10 +- HLT/PHOS/AliHLTPHOSPhysicsAnalyzer.cxx | 8 +- .../AliHLTPHOSPhysicsAnalyzerPeakFitter.cxx | 22 +- .../AliHLTPHOSPhysicsAnalyzerPeakFitter.h | 2 + .../AliHLTPHOSPhysicsAnalyzerSpectrum.cxx | 6 +- ...LTPHOSPhysicsAnalyzerSpectrumComponent.cxx | 70 +++++- ...iHLTPHOSPhysicsAnalyzerSpectrumComponent.h | 8 +- HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx | 204 +--------------- HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h | 6 +- HLT/PHOS/AliHLTPHOSRecPointDataStruct.h | 20 ++ HLT/PHOS/Makefile.arch | 5 +- HLT/PHOS/Makefile.in | 2 + HLT/PHOS/testDecoder.cxx | 57 +++-- 18 files changed, 467 insertions(+), 321 deletions(-) diff --git a/HLT/PHOS/AliHLTDDLDecoder.cxx b/HLT/PHOS/AliHLTDDLDecoder.cxx index 27789810722..f76dec4cabf 100644 --- a/HLT/PHOS/AliHLTDDLDecoder.cxx +++ b/HLT/PHOS/AliHLTDDLDecoder.cxx @@ -6,7 +6,7 @@ -AliHLTDDLDecoder::AliHLTDDLDecoder() : f32DtaPtr(0), f8DtaPtr(0),fN32HeaderWords(8), fN32RcuTrailerWords(1), fNDDLBlocks(0), +AliHLTDDLDecoder::AliHLTDDLDecoder() : f32DtaPtr(0), f8DtaPtr(0),fN32HeaderWords(8), fN32RcuTrailerWords(2), fNDDLBlocks(0), fBufferPos(0), fN40AltroWords(0), fN40RcuAltroWords(0), fSize(0), fSegmentation(0), f32LastDDLBlockSize(5), f32PayloadSize(0),fBufferIndex(0), fN10bitWords(0) { @@ -66,6 +66,13 @@ AliHLTDDLDecoder::Decode() } } +/* + int tmpMarker = 0; + int tmpMask = 0x3c0; + tmpMarker = (buffer[index] << 4 ) | ((buffer[index-1] & tmpMask) >> 6); + return tmpMarker; +*/ + bool AliHLTDDLDecoder::NextChannel(AliHLTAltroData *altroDataPtr) { @@ -73,9 +80,23 @@ AliHLTDDLDecoder::NextChannel(AliHLTAltroData *altroDataPtr) if(fBufferPos > fN32HeaderWords) { - tmp = GetMarker(fBuffer, fBufferPos); + // tmp = GetMarker(fBuffer, fBufferPos); + + if((fBuffer[fBufferPos] << 4 ) | ((fBuffer[fBufferPos-1] & 0x3c0) >> 6) == 0x2aaa) + { + altroDataPtr->fIsComplete = true; + fComplete ++; + } + else + { + altroDataPtr->fIsComplete = false; + fInComplete ++; + printf("\nERROR!!!! marker = 0x%x\n", tmp); + } + // printf("\nmarker = 0x%x", GetMarker(fBuffer, fBufferPos)); - + + /* if(tmp == 0x2aaa) { // printf("\nmarker = 0x%x", tmp); @@ -88,6 +109,7 @@ AliHLTDDLDecoder::NextChannel(AliHLTAltroData *altroDataPtr) fInComplete ++; // printf("\nERROR!!!! marker = 0x%x\n", tmp); } + */ fBufferPos --; fNAltro10bitWords = ( (fBuffer[fBufferPos] & 0x3f) << 4 ) | ((fBuffer[fBufferPos -1] & (0xF << 6)) >> 6) ; diff --git a/HLT/PHOS/AliHLTDDLDecoder.h b/HLT/PHOS/AliHLTDDLDecoder.h index 22f6377dc96..c7601765677 100644 --- a/HLT/PHOS/AliHLTDDLDecoder.h +++ b/HLT/PHOS/AliHLTDDLDecoder.h @@ -28,7 +28,8 @@ class AliHLTDDLDecoder bool CheckPayload(); bool Decode(); bool NextChannel(AliHLTAltroData *altroDataPtr); - bool NextBunch(); + + // bool NextBunch(); template void DumpData(T *array, int N, int nPerLine) diff --git a/HLT/PHOS/AliHLTPHOSClusterizer.cxx b/HLT/PHOS/AliHLTPHOSClusterizer.cxx index 377f58eec57..f852f7d2e61 100644 --- a/HLT/PHOS/AliHLTPHOSClusterizer.cxx +++ b/HLT/PHOS/AliHLTPHOSClusterizer.cxx @@ -12,7 +12,7 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ - + /** @file AliHLTPHOSClusterizer.cxx @author Øystein Djuvsland @date @@ -38,15 +38,15 @@ ClassImp(AliHLTPHOSClusterizer); /** * Main constructor **/ -AliHLTPHOSClusterizer::AliHLTPHOSClusterizer():fPHOSModule(-1), fThreshold(0), fClusterThreshold(0), +AliHLTPHOSClusterizer::AliHLTPHOSClusterizer():fPHOSModule(0), fThreshold(0), fClusterThreshold(0), fHighGainFactor(0.005), fLowGainFactor(0.08), fArraySize(3), fMultiplicity(fArraySize*fArraySize) { - //Main constructor + //See header file for documentation }//end -AliHLTPHOSClusterizer::AliHLTPHOSClusterizer(const AliHLTPHOSClusterizer &):fPHOSModule(-1), fThreshold(0), fClusterThreshold(0), +AliHLTPHOSClusterizer::AliHLTPHOSClusterizer(const AliHLTPHOSClusterizer &):fPHOSModule(0), fThreshold(0), fClusterThreshold(0), fHighGainFactor(0.005), fLowGainFactor(0.08), fArraySize(3), fMultiplicity(fArraySize*fArraySize) { @@ -64,11 +64,11 @@ AliHLTPHOSClusterizer:: ~AliHLTPHOSClusterizer() * @param recPointList list to be filled with coordinates of local maxima in the detector **/ -Int_t +int AliHLTPHOSClusterizer::BuildCellEnergyArray(AliHLTPHOSRcuCellEnergyDataStruct* cellData, AliHLTPHOSRecPointListDataStruct* recPointList) { - //Build the cell energy array of the detector + //BuildCellEnergyArray Int_t x = 0; Int_t z = 0; @@ -135,13 +135,13 @@ AliHLTPHOSClusterizer::BuildCellEnergyArray(AliHLTPHOSRcuCellEnergyDataStruct* c * @param list list of rec points * @param nPoints number of points **/ -Int_t +int AliHLTPHOSClusterizer::CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* recPointStructArrayPtr, AliHLTPHOSRecPointListDataStruct* list, - Int_t nPoints) + int nPoints) { - //Create the rec point struct array + //CreateRecPointStructArray Int_t flag = 0; Int_t edgeFlagRows = 0; @@ -150,9 +150,12 @@ AliHLTPHOSClusterizer::CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* r Int_t nRecPoints = 0; Int_t z = 0; Int_t x = 0; + Int_t i = 0; + Int_t j = 0; + Int_t a = 0; Float_t* energiesList = NULL; - + for(Int_t point = 0; point < nPoints; point++) { z = list[point].fZ; @@ -172,13 +175,14 @@ AliHLTPHOSClusterizer::CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* r if(!flag) energiesList = new Float_t[fMultiplicity]; + flag = 0; k = 0; - for(Int_t i = -fArraySize/2; i <= fArraySize/2; i++) + for(i = -fArraySize/2; i <= fArraySize/2; i++) { if(flag) break; - for(Int_t j = -fArraySize/2; j <= fArraySize/2; j++) + for(j = -fArraySize/2; j <= fArraySize/2; j++) { if(fEnergyArray[x+i][z+j] > fEnergyArray[x][z] && abs(i) < 2 && abs(j) < 2) @@ -186,6 +190,7 @@ AliHLTPHOSClusterizer::CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* r flag = 1; break; } + energiesList[k] = fEnergyArray[x+i][z+j]; k++; } @@ -194,20 +199,25 @@ AliHLTPHOSClusterizer::CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* r if(!flag && k) { - recPointStructArrayPtr[nRecPoints].fEnergiesListPtr = energiesList; + for(a = 0; a < k; a++) + { + (recPointStructArrayPtr[nRecPoints].fEnergiesListPtr)[a] = energiesList[a]; + } recPointStructArrayPtr[nRecPoints].fCoordinatesPtr[0] = x; recPointStructArrayPtr[nRecPoints].fCoordinatesPtr[1] = z; recPointStructArrayPtr[nRecPoints].fX = x; recPointStructArrayPtr[nRecPoints].fZ = z; - recPointStructArrayPtr[nRecPoints].fMultiplicity = fMultiplicity; + // recPointStructArrayPtr[nRecPoints].fMultiplicity = fMultiplicity; recPointStructArrayPtr[nRecPoints].fPHOSModule = list[point].fModule; nRecPoints++; } } - - - energiesList = NULL; + if(energiesList) + { + delete [] energiesList; + energiesList = NULL; + } return nRecPoints; @@ -219,10 +229,11 @@ AliHLTPHOSClusterizer::CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* r * Not working well at this point! * @param recPointPtr pointer to the rec point **/ -Int_t +int AliHLTPHOSClusterizer::CalculateCenterOfGravity(AliHLTPHOSRecPointDataStruct* recPointPtr) { - //Calculate the center of gravity + //CalculateCenterOfGravity + //Copied from offline code, and modified Float_t xt = 0; Float_t zt = 0; @@ -242,15 +253,17 @@ AliHLTPHOSClusterizer::CalculateCenterOfGravity(AliHLTPHOSRecPointDataStruct* re xi = x + i; zj = z + j; w = TMath::Max( (Float_t)0., (Float_t)(w0 + log( fEnergyArray[x+i][z+j] / fEnergyArray[x][z]) ) ) ; + //printf("log in cog: %f\n", log( fEnergyArray[x+i][z+j] / fEnergyArray[x][z])); xt += xi * w ; zt += zj * w ; - wtot += w ; - + wtot += w ; } } xt /= wtot ; zt /= wtot ; + //printf("wtot cog: %f\n", wtot); + recPointPtr->fX = xt; recPointPtr->fZ = zt; @@ -258,18 +271,177 @@ AliHLTPHOSClusterizer::CalculateCenterOfGravity(AliHLTPHOSRecPointDataStruct* re }//end CalculateCenterOfGravity +int +AliHLTPHOSClusterizer::CalculateMoments(AliHLTPHOSRecPointDataStruct* recPointPtr, Bool_t axisOnly) +{ + //Copied from offline code, and modified + + + // Calculate the shower moments in the eigen reference system + // M2x, M2z, M3x, M4z + // Calculate the angle between the shower position vector and the eigen vector + + Double_t wtot = 0. ; + Double_t x = 0.; + Double_t z = 0.; + Double_t dxx = 0.; + Double_t dzz = 0.; + Double_t dxz = 0.; + Double_t lambda0=0, lambda1=0; + Float_t logWeight = 4.5; + + //Int_t iDigit; + + // 1) Find covariance matrix elements: + // || dxx dxz || + // || dxz dzz || + + Int_t xi; + Int_t zj; + Double_t w; + + Int_t xc = recPointPtr->fCoordinatesPtr[0]; + Int_t zc = recPointPtr->fCoordinatesPtr[1]; + + for(Int_t i = -fArraySize/2; i <= fArraySize/2; i++) + { + xi = xc + i; + for(Int_t j = -fArraySize/2; j <= fArraySize/2; j++) + { + zj = zc + j; + if (fEnergyArray[xi][zj] > 0) + { + w = TMath::Max(0.,logWeight + log( fEnergyArray[xi][zj]/fEnergyArray[xc][zc] ) ) ; + //printf("log in mom: %f\n", TMath::Log( fEnergyArray[xi][zj] / fEnergyArray[xc][zc])); + x += w * xi ; + z += w * zj ; + dxx += w * xi * xi ; + dzz += w * zj * zj ; + dxz += w * xi * zj ; + wtot += w ; + } + } + } + //printf("wtot: %f\n", wtot); + if (wtot>0) + { + x /= wtot ; + z /= wtot ; + dxx /= wtot ; + dzz /= wtot ; + dxz /= wtot ; + dxx -= x * x ; + dzz -= z * z ; + dxz -= x * z ; + + // 2) Find covariance matrix eigen values lambda0 and lambda1 + + lambda0 = 0.5 * (dxx + dzz) + TMath::Sqrt( 0.25 * (dxx - dzz) * (dxx - dzz) + dxz * dxz ) ; + lambda1 = 0.5 * (dxx + dzz) - TMath::Sqrt( 0.25 * (dxx - dzz) * (dxx - dzz) + dxz * dxz ) ; + } + + recPointPtr->fM2x = lambda0; + recPointPtr->fM2z = lambda1; + // printf("lambda0 = %f -- lambda1 = %f\n", lambda0, lambda1); + // 3) Find covariance matrix eigen vectors e0 and e1 + if(!axisOnly) + { + TVector2 e0,e1; + if (dxz != 0) + e0.Set(1.,(lambda0-dxx)/dxz); + else + e0.Set(0.,1.); + + e0 = e0.Unit(); + e1.Set(-e0.Y(),e0.X()); + + // 4) Rotate cluster tensor from (x,z) to (e0,e1) system + // and calculate moments M3x and M4z + + Float_t cosPhi = e0.X(); + Float_t sinPhi = e0.Y(); + + Float_t xiPHOS ; + Float_t zjPHOS ; + Double_t dx3, dz3, dz4; + wtot = 0.; + x = 0.; + z = 0.; + dxx = 0.; + dzz = 0.; + dxz = 0.; + dx3 = 0.; + dz3 = 0.; + dz4 = 0.; + for(Int_t i = -fArraySize/2; i <= fArraySize/2; i++) + { + for(Int_t j = -fArraySize/2; j <= fArraySize/2; j++) + { + xi = xc + i; + zj = zc + j; + xiPHOS = (Float_t)xi*cosPhi + (Float_t)zj*sinPhi; + zjPHOS = (Float_t)zj*cosPhi - (Float_t)xi*sinPhi; + // xi = (Float_t)xi*cosPhi + (Float_t)zj*sinPhi; + // zj = (Float_t)zj*cosPhi - (Float_t)xi*sinPhi; + if (fEnergyArray[xi][zj] > 0) + { + w = TMath::Max(0.,logWeight+TMath::Log(fEnergyArray[xi][zj]/fEnergyArray[xc][zc] ) ) ; + // printf("log in mom: %f\n", TMath::Log( fEnergyArray[xi][zj] / fEnergyArray[xc][zc])); + + x += w * xi ; + z += w * zj ; + dxx += w * xi * xi ; + dzz += w * zj * zj ; + dxz += w * xi * zj ; + dx3 += w * xi * xi * xi; + dz3 += w * zj * zj * zj ; + dz4 += w * zj * zj * zj * zj ; + wtot += w ; + } + } + } + if (wtot>0) + { + x /= wtot ; + z /= wtot ; + dxx /= wtot ; + dzz /= wtot ; + dxz /= wtot ; + dx3 /= wtot ; + dz3 /= wtot ; + dz4 /= wtot ; + dx3 += -3*dxx*x + 2*x*x*x; + dz4 += -4*dz3*z + 6*dzz*z*z -3*z*z*z*z; + dxx -= x * x ; + dzz -= z * z ; + dxz -= x * z ; + } + + // 5) Find an angle between cluster center vector and eigen vector e0 + + Float_t phi = 0; + if ( (x*x+z*z) > 0 ) + phi = TMath::ACos ((x*e0.X() + z*e0.Y()) / sqrt(x*x + z*z)); + + recPointPtr->fM3x = dx3; + recPointPtr->fM4z = dz4; + recPointPtr->fPhixe = phi; + // printf("%f\n",phi); + } + return 0; +} /** * Create a simpler data struct for a rec point, containing * only coordinates, energy and timing * @param recPointPtr pointer to the rec point -* @param clusterStructPtr pointer to the cluster struct +* @clusterStructPtr pointer to the cluster struct **/ -Int_t +int AliHLTPHOSClusterizer::ClusterizeStruct(AliHLTPHOSRecPointDataStruct* recPointPtr, AliHLTPHOSClusterDataStruct* clusterStructPtr) { - //Simplify the rec points + //ClusterizeStruct Float_t clusterEnergy = 0; Float_t* energiesListPtr = recPointPtr->fEnergiesListPtr; @@ -294,11 +466,11 @@ AliHLTPHOSClusterizer::ClusterizeStruct(AliHLTPHOSRecPointDataStruct* recPointPt /** * Resets the cell energy array **/ -Int_t +int AliHLTPHOSClusterizer::ResetCellEnergyArray() { - //Reset the cell energy array + //ResetCellEnergyArray for(Int_t x = 0; x < N_ROWS_MOD; x++) { diff --git a/HLT/PHOS/AliHLTPHOSClusterizer.h b/HLT/PHOS/AliHLTPHOSClusterizer.h index 8cbe2971a0c..384ae255520 100644 --- a/HLT/PHOS/AliHLTPHOSClusterizer.h +++ b/HLT/PHOS/AliHLTPHOSClusterizer.h @@ -1,8 +1,8 @@ /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ - + /** @file AliHLTPHOSClusterizer.h - @author Øystein Djuvsland + @author Øystein Djuvsland @date @brief A temporary clusterizer for PHOS */ @@ -10,9 +10,7 @@ #ifndef ALIHLTPHOSCLUSTERIZER_H #define ALIHLTPHOSCLUSTERIZER_H -//#include "AliHLTPHOSCommonDefs.h" -#include "AliHLTPHOSConstants.h" -using namespace PhosHLTConst; +#include "AliHLTPHOSCommonDefs.h" struct AliHLTPHOSClusterDataStruct; struct AliHLTPHOSRecPointDataStruct; @@ -30,25 +28,29 @@ class AliHLTPHOSClusterizer AliHLTPHOSClusterizer(const AliHLTPHOSClusterizer &); AliHLTPHOSClusterizer & operator = (const AliHLTPHOSClusterizer &) {return *this;} - void SetThreshold(Float_t threshold) {fThreshold = threshold;} - void SetClusterThreshold(Float_t clusterThreshold) {fClusterThreshold = clusterThreshold;} + void SetThreshold(float threshold) {fThreshold = threshold;} + void SetClusterThreshold(float clusterThreshold) {fClusterThreshold = clusterThreshold;} - void SetHighGainFactor(Float_t highGain) {fHighGainFactor = highGain;} - void SetLowGainFactor(Float_t lowGain) {fLowGainFactor = lowGain;} - void SetArraySize(Int_t size) + void SetHighGainFactor(float highGain) {fHighGainFactor = highGain;} + void SetLowGainFactor(float lowGain) {fLowGainFactor = lowGain;} + void SetArraySize(int size) { fArraySize = size; fMultiplicity = fArraySize * fArraySize; } + float GetThreshold() {return fThreshold;} + float GetClusterThreshold() {return fClusterThreshold;} + float GetHighGainFactor() {return fHighGainFactor;} + float GetLowGainFactor() {return fLowGainFactor;} + float GetArraySize() {return fArraySize;} + float GetMultiplicity() {return fMultiplicity;} - Float_t GetHighGainFactor() {return fHighGainFactor;} - Float_t GetLowGainFactor() {return fLowGainFactor;} - - Int_t BuildCellEnergyArray(AliHLTPHOSRcuCellEnergyDataStruct *structPtr, AliHLTPHOSRecPointListDataStruct* recPointList); - Int_t CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* rectStructsPtr, AliHLTPHOSRecPointListDataStruct* list, Int_t nPoints); - Int_t CalculateCenterOfGravity(AliHLTPHOSRecPointDataStruct* recPointPtr); - Int_t ClusterizeStruct(AliHLTPHOSRecPointDataStruct* recArrayPtr, AliHLTPHOSClusterDataStruct* clusterArrayPtr); - Int_t ResetCellEnergyArray(); + int BuildCellEnergyArray(AliHLTPHOSRcuCellEnergyDataStruct *structPtr, AliHLTPHOSRecPointListDataStruct* recPointList); + int CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* rectStructsPtr, AliHLTPHOSRecPointListDataStruct* list, int nPoints); + int CalculateCenterOfGravity(AliHLTPHOSRecPointDataStruct* recPointPtr); + int CalculateMoments(AliHLTPHOSRecPointDataStruct* recPointPtr, Bool_t axisOnly); + int ClusterizeStruct(AliHLTPHOSRecPointDataStruct* recArrayPtr, AliHLTPHOSClusterDataStruct* clusterArrayPtr); + int ResetCellEnergyArray(); private: diff --git a/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx b/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx index 5da28e01cc1..c1461038312 100644 --- a/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx +++ b/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx @@ -32,7 +32,6 @@ AliHLTPHOSClusterizerComponent::AliHLTPHOSClusterizerComponent():AliHLTProcessor fRecPointStructArrayPtr(0), fRecPointListPtr(0) { //Constructor - } AliHLTPHOSClusterizerComponent::~AliHLTPHOSClusterizerComponent() @@ -53,10 +52,14 @@ AliHLTPHOSClusterizerComponent::~AliHLTPHOSClusterizerComponent() if(fRecPointStructArrayPtr) { + for(int i = 0; i < 1000; i++) + { + fRecPointStructArrayPtr[i].Del(); + } delete fRecPointStructArrayPtr; fRecPointStructArrayPtr = 0; } - + } AliHLTPHOSClusterizerComponent::AliHLTPHOSClusterizerComponent(const AliHLTPHOSClusterizerComponent &):AliHLTProcessor(), @@ -68,7 +71,7 @@ AliHLTPHOSClusterizerComponent::AliHLTPHOSClusterizerComponent(const AliHLTPHOSC //Copy constructor, not implemented } -Int_t +int AliHLTPHOSClusterizerComponent::Deinit() { //Deinitialization @@ -84,17 +87,30 @@ AliHLTPHOSClusterizerComponent::Deinit() delete fRecPointListPtr; fRecPointListPtr = 0; } - + + for(int i = 0; i < 1000; i++) + { + fRecPointStructArrayPtr[i].Del(); + } + if(fRecPointStructArrayPtr) { + for(int i = 0; i < 1000; i++) + { + fRecPointStructArrayPtr[i].Del(); + } delete fRecPointStructArrayPtr; fRecPointStructArrayPtr = 0; } + + + + return 0; } -Int_t +int AliHLTPHOSClusterizerComponent::DoDeinit() { //Do deinitialization @@ -132,10 +148,10 @@ AliHLTPHOSClusterizerComponent::GetOutputDataSize(unsigned long& constBase, doub { constBase = 30; - inputMultiplier = 1; + inputMultiplier = 0.2; } -Int_t +int AliHLTPHOSClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, std::vector& outputBlocks) @@ -163,12 +179,14 @@ AliHLTPHOSClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData, continue; } index = fClusterizerPtr->BuildCellEnergyArray( reinterpret_cast(iter->fPtr), - fRecPointListPtr); + fRecPointListPtr); } - + nRecPoints = fClusterizerPtr->CreateRecPointStructArray(fRecPointStructArrayPtr, fRecPointListPtr, index); + cout << "Number of clusters found: " << nRecPoints << endl; + for(Int_t i = 0; i < nRecPoints; i++) { mysize = 0; @@ -176,7 +194,8 @@ AliHLTPHOSClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData, fOutPtr = (AliHLTPHOSClusterDataStruct*)outBPtr; fClusterizerPtr->CalculateCenterOfGravity(&fRecPointStructArrayPtr[i]); - fClusterizerPtr->ClusterizeStruct(&fRecPointStructArrayPtr[i], fOutPtr); + // fClusterizerPtr->CalculateMoments(&fRecPointStructArrayPtr[i], 0); + // fClusterizerPtr->ClusterizeStruct(&fRecPointStructArrayPtr[i], fOutPtr); mysize += sizeof(AliHLTPHOSClusterDataStruct); @@ -207,25 +226,39 @@ AliHLTPHOSClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData, } -Int_t +int AliHLTPHOSClusterizerComponent::DoInit(int argc, const char** argv ) { //Do initialization - fClusterizerPtr = new AliHLTPHOSClusterizer(); - fClusterizerPtr->SetThreshold(atof(argv[0])); - fClusterizerPtr->SetClusterThreshold(atof(argv[1])); - fClusterizerPtr->SetHighGainFactor(atof(argv[2])); - fClusterizerPtr->SetLowGainFactor(atof(argv[3])); - fClusterizerPtr->SetArraySize(atoi(argv[4])); + for(int i = 0; i < argc; i++) + { + if(!strcmp("-threshold", argv[i])) + fClusterizerPtr->SetThreshold(atof(argv[i+1])); + if(!strcmp("-clusterthreshold", argv[i])) + fClusterizerPtr->SetClusterThreshold(atof(argv[i+1])); + if(!strcmp("-highgain", argv[i])) + fClusterizerPtr->SetHighGainFactor(atof(argv[i+1])); + if(!strcmp("-lowgain", argv[i])) + fClusterizerPtr->SetLowGainFactor(atof(argv[i+1])); + if(!strcmp("-arraysize", argv[i])) + fClusterizerPtr->SetArraySize(atoi(argv[i+1])); + } fClusterizerPtr->ResetCellEnergyArray(); fRecPointListPtr = new AliHLTPHOSRecPointListDataStruct[N_ROWS_MOD*N_COLUMNS_MOD]; fRecPointStructArrayPtr = new AliHLTPHOSRecPointDataStruct[1000]; + for(int i = 0; i < 1000; i++) + { + fRecPointStructArrayPtr[i].fMultiplicity = atoi(argv[4])* atoi(argv[4]); + fRecPointStructArrayPtr[i].New(); + } + printf("Clusterizer component started with:\n"); + printf(" Cell threshold: %f\n", fClusterizerPtr->GetThreshold()); + printf(" Cluster threshold: %f\n", fClusterizerPtr->GetClusterThreshold()); + printf(" High gain factor: %f\n", fClusterizerPtr->GetHighGainFactor()); + printf(" Low gain factor: %f\n", fClusterizerPtr->GetLowGainFactor()); + printf(" Cluster array size: %d\n\n", fClusterizerPtr->GetArraySize()); - if (argc==0 && argv==NULL) { - // this is currently just to get rid of the warning "unused parameter" - } - return 0; } diff --git a/HLT/PHOS/AliHLTPHOSClusterizerComponent.h b/HLT/PHOS/AliHLTPHOSClusterizerComponent.h index 392672f4f36..9843b9b71c8 100644 --- a/HLT/PHOS/AliHLTPHOSClusterizerComponent.h +++ b/HLT/PHOS/AliHLTPHOSClusterizerComponent.h @@ -34,13 +34,13 @@ class AliHLTPHOSClusterizerComponent: public AliHLTProcessor return *this; } const char* GetComponentID(); - void GetInputDataTypes(std::vector >&); + void GetInputDataTypes(std::vector& list); AliHLTComponentDataType GetOutputDataType(); void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier); - Int_t DoEvent(const AliHLTComponentEventData&, const AliHLTComponentBlockData*, + int DoEvent(const AliHLTComponentEventData&, const AliHLTComponentBlockData*, AliHLTComponentTriggerData&, AliHLTUInt8_t*, AliHLTUInt32_t&, std::vector&); @@ -48,9 +48,9 @@ class AliHLTPHOSClusterizerComponent: public AliHLTProcessor protected: - Int_t DoInit(int argc, const char** argv); - Int_t Deinit(); - Int_t DoDeinit(); + int DoInit(int argc, const char** argv); + int Deinit(); + int DoDeinit(); private: AliHLTPHOSClusterizer* fClusterizerPtr; //Pointer to the clusterizer diff --git a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzer.cxx b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzer.cxx index 70d7fd7a1e2..530ee3ab202 100644 --- a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzer.cxx +++ b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzer.cxx @@ -2,7 +2,7 @@ /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * - * Author: Øystein Djuvsland * + * Author: Øystein Djuvsland * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * @@ -24,12 +24,10 @@ #include "AliHLTPHOSCommonDefs.h" #include "AliHLTPHOSClusterDataStruct.h" -#include "AliHLTPHOSConstants.h" -using namespace PhosHLTConst; ClassImp(AliHLTPHOSPhysicsAnalyzer); -AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer():fClustersPtr(NULL) +AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer():fClustersPtr(0), fRootHistPtr(0), fPHOSRadius(0) { @@ -47,7 +45,7 @@ AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer():fClustersPtr(NULL) } } -AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer(const AliHLTPHOSPhysicsAnalyzer &):fClustersPtr(NULL) +AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer(const AliHLTPHOSPhysicsAnalyzer &):fClustersPtr(0), fRootHistPtr(0), fPHOSRadius(0) { //Cooy constructor diff --git a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.cxx b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.cxx index f9f1ffb731e..e4a8d8afa01 100644 --- a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.cxx +++ b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.cxx @@ -26,15 +26,26 @@ ClassImp(AliHLTPHOSPhysicsAnalyzerPeakFitter); AliHLTPHOSPhysicsAnalyzerPeakFitter::AliHLTPHOSPhysicsAnalyzerPeakFitter() : fGainLow(80), fGainHigh(5), fRootHistPtr(0) { + //Constructor } AliHLTPHOSPhysicsAnalyzerPeakFitter::~AliHLTPHOSPhysicsAnalyzerPeakFitter() { + //Destructor } +AliHLTPHOSPhysicsAnalyzerPeakFitter::AliHLTPHOSPhysicsAnalyzerPeakFitter(const AliHLTPHOSPhysicsAnalyzerPeakFitter&): fGainLow(80), fGainHigh(5), + fRootHistPtr(0) +{ + //Copy constructor +} + + Int_t AliHLTPHOSPhysicsAnalyzerPeakFitter::FitGaussian() { + //FitGaussian + Int_t maxBin = fRootHistPtr->GetMaximumBin(); Float_t binWidth = fRootHistPtr->GetBinWidth(maxBin); Float_t maxBinValue = (Float_t)(maxBin * binWidth); @@ -42,9 +53,7 @@ AliHLTPHOSPhysicsAnalyzerPeakFitter::FitGaussian() Float_t highRange = maxBinValue + 0.03; TF1* gaussian = new TF1("gaussian", "gaus", 0.1, 0.2); - Double_t params[3] = {maxBinValue, 0}; - - + fRootHistPtr->Fit(gaussian->GetName(), "", "",lowRange, highRange); return 0; @@ -54,16 +63,13 @@ AliHLTPHOSPhysicsAnalyzerPeakFitter::FitGaussian() Int_t AliHLTPHOSPhysicsAnalyzerPeakFitter::FitLorentzian() { - - + //FitLorentzian Int_t maxBin = fRootHistPtr->GetMaximumBin(); Float_t binWidth = fRootHistPtr->GetBinWidth(maxBin); Float_t maxBinValue = (Float_t)(maxBin * binWidth); Double_t lowRange = maxBinValue - 0.03; Double_t highRange = maxBinValue + 0.03; - Int_t npar = 3; - char* name = "lorentzian"; TF1* lorentzian = new TF1(name, "([0]*1/TMath::Pi())*[1]/((x[0]-[2])*(x[0]-[2])+[1]*[1])", lowRange, highRange); @@ -75,7 +81,7 @@ AliHLTPHOSPhysicsAnalyzerPeakFitter::FitLorentzian() lorentzian->GetParameters(params); - TFile *outfile = new TFile("/home/odjuvsla/pi0HistFit.root","recreate"); + TFile *outfile = new TFile("/afsuser/odjuvsland","recreate"); fRootHistPtr->Write(); outfile->Close(); diff --git a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.h b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.h index 06fad9d2a93..dd39ce5f42c 100644 --- a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.h +++ b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerPeakFitter.h @@ -19,6 +19,8 @@ class AliHLTPHOSPhysicsAnalyzerPeakFitter AliHLTPHOSPhysicsAnalyzerPeakFitter(); virtual ~AliHLTPHOSPhysicsAnalyzerPeakFitter(); + AliHLTPHOSPhysicsAnalyzerPeakFitter(const AliHLTPHOSPhysicsAnalyzerPeakFitter &); + AliHLTPHOSPhysicsAnalyzerPeakFitter & operator = (const AliHLTPHOSPhysicsAnalyzerPeakFitter &) {return *this;} void SetHistogram(TH1F* histPtr) { fRootHistPtr = histPtr; } diff --git a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrum.cxx b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrum.cxx index 935cd9b05b6..6213825671a 100644 --- a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrum.cxx +++ b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrum.cxx @@ -24,7 +24,7 @@ ClassImp(AliHLTPHOSPhysicsAnalyzerSpectrum); -AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum():AliHLTPHOSPhysicsAnalyzer() +AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum():AliHLTPHOSPhysicsAnalyzer(), fPos0Ptr(0), fPos1Ptr(0), fThresholdPtr(0), fEnergyPtr(0) { //Constructor @@ -37,7 +37,7 @@ AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum():AliHLTPHO } -AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum(const AliHLTPHOSPhysicsAnalyzerSpectrum &):AliHLTPHOSPhysicsAnalyzer() +AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum(const AliHLTPHOSPhysicsAnalyzerSpectrum &):AliHLTPHOSPhysicsAnalyzer(), fPos0Ptr(0), fPos1Ptr(0), fThresholdPtr(0), fEnergyPtr(0) { //Copy constructor not implemented } @@ -137,8 +137,6 @@ AliHLTPHOSPhysicsAnalyzerSpectrum::SetThreshold(Float_t photonEnergy0, Float_t p { //Setting the cut thresholds - if(!fThresholdPtr) fThresholdPtr = new Float_t[2]; - fThresholdPtr[0] = photonEnergy0; fThresholdPtr[1] = photonEnergy1; diff --git a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.cxx b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.cxx index 7c793fe0b03..b96f66f0c1d 100644 --- a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.cxx +++ b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.cxx @@ -27,7 +27,9 @@ UInt_t AliHLTPHOSPhysicsAnalyzerSpectrumComponent::fgCount = 0; AliHLTPHOSPhysicsAnalyzerSpectrumComponent gAliHLTPHOSPhysicsAnalyzerSpectrumComponent; AliHLTPHOSPhysicsAnalyzerSpectrumComponent::AliHLTPHOSPhysicsAnalyzerSpectrumComponent():AliHLTProcessor(), fAnalyzerPtr(0), - fRootHistPtr(0) + fPeakFitter(0), fRootHistPtr(0), + fWriteInterval(0) + { //Constructor } @@ -55,9 +57,9 @@ AliHLTPHOSPhysicsAnalyzerSpectrumComponent::~AliHLTPHOSPhysicsAnalyzerSpectrumCo } -AliHLTPHOSPhysicsAnalyzerSpectrumComponent::AliHLTPHOSPhysicsAnalyzerSpectrumComponent(const AliHLTPHOSPhysicsAnalyzerSpectrumComponent &):AliHLTProcessor(), - fAnalyzerPtr(0), - fRootHistPtr(0) +AliHLTPHOSPhysicsAnalyzerSpectrumComponent::AliHLTPHOSPhysicsAnalyzerSpectrumComponent(const AliHLTPHOSPhysicsAnalyzerSpectrumComponent &):AliHLTProcessor(), fAnalyzerPtr(0), + fPeakFitter(0), fRootHistPtr(0), + fWriteInterval(0) { //Copy constructor not implemented } @@ -128,16 +130,17 @@ AliHLTPHOSPhysicsAnalyzerSpectrumComponent::GetOutputDataSize(unsigned long& con { //Get the data size of the output constBase = 30; - inputMultiplier = 1; + inputMultiplier = 2; } -Int_t -AliHLTPHOSPhysicsAnalyzerSpectrumComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, - AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* /*outputPtr*/, AliHLTUInt32_t& /*size*/, - std::vector& /*outputBlocks*/) -{ +//Int_t +//AliHLTPHOSPhysicsAnalyzerSpectrumComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, +// AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* /*outputPtr*/, AliHLTUInt32_t& /*size*/, +// std::vector& /*outputBlocks*/) +//{ //Do event + /* const AliHLTComponentBlockData* iter = NULL; unsigned long ndx; @@ -159,17 +162,60 @@ AliHLTPHOSPhysicsAnalyzerSpectrumComponent::DoEvent(const AliHLTComponentEventDa if(fgCount%fWriteInterval == 0 && fgCount != 0) { - PushBack(fRootHistPtr, kAliHLTAnyDataType, (AliHLTUInt32_t)0); + // PushBack(fRootHistPtr, kAliHLTAnyDataType, (AliHLTUInt32_t)0); } fgCount++; + + // if(fgCount%100==0) + // { + // printf("fgCount: %d\n\n", fgCount); + cout << "fgCount: " << fgCount << endl; + // } return 0; } +*/ + +int +AliHLTPHOSPhysicsAnalyzerSpectrumComponent::DoEvent(const AliHLTComponentEventData &/*evtData*/, AliHLTComponentTriggerData &/*trigData*/) +{ + const AliHLTComponentBlockData* iter = NULL; + int ndx = 0; + //int nBlocks = GetNumberOfInputBlocks(); + + if((iter = GetFirstInputBlock(AliHLTPHOSPhysicsDefinitions::fgkAliHLTClusterDataType))) + { + fClusterArrayPtr[ndx] = reinterpret_cast(iter->fPtr); + } + + while((iter = GetNextInputBlock())) + { + ndx++; + fClusterArrayPtr[ndx] = reinterpret_cast(iter->fPtr); + } + + fAnalyzerPtr->Analyze(fClusterArrayPtr, ndx); + + if(fgCount%fWriteInterval == 0 && fgCount != 0) + { + PushBack(fRootHistPtr, kAliHLTAnyDataType, (AliHLTUInt32_t)0); + } + + fgCount++; + + if(fgCount%100==0) + { + //printf("fgCount: %d\n\n", fgCount); + cout << "fgCount: " << fgCount << endl; + } + + return 0; +} Int_t -AliHLTPHOSPhysicsAnalyzerSpectrumComponent::DoInit(int argc, const char** argv ) +AliHLTPHOSPhysicsAnalyzerSpectrumComponent::DoInit(Int_t argc, const Char_t** argv ) { //Initialize the component Float_t firstThreshold = atof(argv[0]); diff --git a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.h b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.h index 15491441853..6330cea2899 100644 --- a/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.h +++ b/HLT/PHOS/AliHLTPHOSPhysicsAnalyzerSpectrumComponent.h @@ -30,17 +30,17 @@ class AliHLTPHOSPhysicsAnalyzerSpectrumComponent: public AliHLTProcessor return *this; } const char* GetComponentID(); - void GetInputDataTypes(std::vector >&); + void GetInputDataTypes(std::vector& list); AliHLTComponentDataType GetOutputDataType(); void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier); - + /* Int_t DoEvent(const AliHLTComponentEventData&, const AliHLTComponentBlockData*, AliHLTComponentTriggerData&, AliHLTUInt8_t*, AliHLTUInt32_t&, - std::vector&); - + std::vector&);*/ + int DoEvent(const AliHLTComponentEventData&, AliHLTComponentTriggerData&); AliHLTComponent* Spawn(); diff --git a/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx b/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx index 90e58ff5dda..58ec449e85c 100644 --- a/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx +++ b/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.cxx @@ -130,19 +130,6 @@ AliHLTPHOSRawAnalyzerComponent::GetOutputDataSize(unsigned long& constBase, doub int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, vector& outputBlocks ) { - // cout << "AliHLTPHOSRawAnalyzerComponent::DoEven" << endl; - // cout << "AliHLTPHOSRawAnalyzerComponent::DoEven" << endl; - // cout << "evtData.fStructSize" << evtData.fStructSize << endl; - // cout << "evtData.fEventID" << evtData.fEventID << endl ; - cout << "AliHLTPHOSRawAnalyzerComponent::DoEvent: evtData.fBlockCnt = " << evtData.fBlockCnt << endl ; - // cout << "size =" << size << endl; - // cout << "blocks->fSize =" << blocks->fSize << endl; - // cout << "blocks->fOffset =" << blocks->fOffset << endl; - - // AliHLTUInt8_t tmpMod = 0; - // AliHLTUInt8_t tmpZ = 0; - // AliHLTUInt8_t tmpX = 0; - // AliHLTUInt8_t tmpGain = 0; Int_t sampleCnt = 0; Int_t processedChannels = 0; UInt_t offset = 0; @@ -157,11 +144,8 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData const AliHLTComponentBlockData* iter = NULL; unsigned long ndx; - for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ ) { - printf("\nNEW DDL BLOCK\n"); - iter = blocks+ndx; mysize = 0; offset = tSize; @@ -172,30 +156,17 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData // continue; } - fDecoderPtr->SetMemory(reinterpret_cast( iter->fPtr ), iter->fSize); - fDecoderPtr->Decode(); - - fOutPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)outBPtr; - int tmpCnt = 0; - printf("\n********** NEW EVENT ************\n"); - printf("\n********************************"); - printf("\n********************************"); - printf("\n********************************\n"); - + // int tmpCnt = 0; + while( fDecoderPtr->NextChannel(fAltroDataPtr) == true ) { - - // fDecoderPtr->NextChannel(fAltroDataPtr); fAnalyzerPtr->SetData(fAltroDataPtr->fData); - fAnalyzerPtr->Evaluate(0, fAltroDataPtr->fDataSize); - // fOutPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)outBPtr; - - + fAnalyzerPtr->Evaluate(0, fAltroDataPtr->fDataSize -2); fOutPtr->fValidData[tmpChannelCnt].fGain = fMapperPtr->ALTRO_MAP[fAltroDataPtr->fHadd].gain; fOutPtr->fValidData[tmpChannelCnt].fZ = fMapperPtr->ALTRO_MAP[fAltroDataPtr->fHadd].row; @@ -203,38 +174,11 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData fOutPtr->fValidData[tmpChannelCnt].fEnergy = (float)fAnalyzerPtr->GetEnergy(); fOutPtr->fValidData[tmpChannelCnt].fTime = (float)fAnalyzerPtr->GetTiming(); tmpChannelCnt ++; - - - if(tmpCnt < 1) - { - - printf("\n******New ALTRO BLOCK**********\n"); - printf("tmpCnt = %d \n", tmpCnt); - printf("size = %d\n", fAltroDataPtr->fDataSize); - printf("harware adress = %d\n", fAltroDataPtr->fHadd); - // DumpData(fAltroDataPtr->fData, fAltroDataPtr->fDataSize, 4); - // DumpData(fAltroDataPtr->fData, 128, 4); - // cout << "gain =" <ALTRO_MAP[fAltroDataPtr->fHadd].gain << endl; - // cout << "row =" <ALTRO_MAP[fAltroDataPtr->fHadd].row << endl; - // cout << "col =" <ALTRO_MAP[fAltroDataPtr->fHadd].col << endl; - // cout << "Channel = " << fAltroDataPtr->GetChannel()<< endl; - // cout << "Chip = " << fAltroDataPtr->GetChip()<< endl; - // cout << "Card = " << fAltroDataPtr->GetCard()<< endl; - // cout << "Branch = " << fAltroDataPtr->GetBranch()<< endl; - // DumpData(fAltroDataPtr->fData, fAltroDataPtr->fDataSize , 4); - printf("\n****** END altroblock **********\n"); - } - - tmpCnt ++; - - // printf("harware adress = %d\n", fAltroDataPtr->fHadd); - // printf("size = %d\n", fAltroDataPtr->fDataSize); + // tmpCnt ++; } - mysize += sizeof(AliHLTPHOSRcuCellEnergyDataStruct); - // cout <<"Pushing data block" << endl; - + fOutPtr->fCnt = tmpChannelCnt; AliHLTComponentBlockData bd; FillBlockData( bd ); @@ -250,145 +194,15 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData if( tSize > size ) { - cout <<"kHLTLogFatal, HLT::AliHLTPHOSRawAnalyzerComponent::DoEvent Too much data Data written over allowed buffer. Amount written:" + cout <<"kHLTLogFatal, HLT::AliHLTPHOSRawAnalyzerComponent::DoEvent Too much dataData written over allowed buffer. Amount written:" << tSize << " allowed" << size << endl; Logging( kHLTLogFatal, "HLT::AliHLTPHOSRawAnalyzerComponent::DoEvent", "Too much data", "Data written over allowed buffer. Amount written: %lu, allowed amount: %lu." , tSize, size ); return EMSGSIZE; } - - printf("\nEND DDL BLOCK\n"); - - - } - - fPhosEventCount++; - - if(fPrintInfo == kTRUE) - { - if(fPhosEventCount%fPrintInfoFrequncy == 0) - { - cout <<"Analyzing event " << fPhosEventCount << "for Equippment " << fkEquippmentID << endl; - } } - size = tSize; - - return 0; -}//end DoEvent - - - - - - // printf("\nRawAnalyzer: printing data\n"); - - - /* - int cnt = 0; - - for(int i=0; i< 100; i ++) - { - if(cnt%4 == 0) printf("\n"); - printf(":%d\t",fAltroDataPtr->fData[i] ); - cnt ++; - } - */ - // } - - - - - // while( fDecoderPtr->NextChannel(fAltroDataPtr)) - // { - // fAnalyzerPtr->SetData(fTmpChannelData); - // } - - /* - - fOutPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)outBPtr; - mysize += sizeof(AliHLTPHOSRcuCellEnergyDataStruct); - fOutPtr->fRcuX = fRcuX; - fOutPtr->fRcuZ = fRcuZ; - fOutPtr->fModuleID = fModuleID; - tmpChannelCnt = 0; - - - while(fPHOSRawStream->Next()) - { - if (fPHOSRawStream->IsNewHWAddress()) - { - if(processedChannels > 0) - { - // cout << "rawanalyzer fPHOSRawStream->IsNewHWAddress()" <SetData(fTmpChannelData); - fAnalyzerPtr->Evaluate(0, sampleCnt); - fOutPtr->fValidData[tmpChannelCnt].fGain = tmpGain; - fOutPtr->fValidData[tmpChannelCnt].fZ = tmpZ; - fOutPtr->fValidData[tmpChannelCnt].fX = tmpX; - fOutPtr->fValidData[tmpChannelCnt].fEnergy = (float)fAnalyzerPtr->GetEnergy(); - fOutPtr->fValidData[tmpChannelCnt].fTime = (float)fAnalyzerPtr->GetTiming(); - ResetDataPtr(tmpStartIndex, sampleCnt); - tmpChannelCnt ++; - sampleCnt = 0; - } - - tmpMod = (AliHLTUInt8_t)fPHOSRawStream->GetModule() ; - tmpX =(AliHLTUInt8_t)fPHOSRawStream->GetRow() - fRcuXOffset; - tmpZ =(AliHLTUInt8_t)fPHOSRawStream->GetColumn() - fRcuZOffset; - tmpGain = fPHOSRawStream->IsLowGain(); - processedChannels ++; - } - - if(sampleCnt == 0) - { - tmpStartIndex = fPHOSRawStream->GetTime(); - } - - fTmpChannelData[fPHOSRawStream->GetTime()] = fPHOSRawStream->GetSignal(); - sampleCnt ++; - - } - - tmpChannelCnt ++; - - cout <<"tmpChannnelCnt =" << tmpChannelCnt << endl; - // DumpChannelData(fTmpChannelData); - fAnalyzerPtr->SetData(fTmpChannelData); - fAnalyzerPtr->Evaluate(0, sampleCnt); - fOutPtr->fValidData[tmpChannelCnt].fGain = tmpGain; - fOutPtr->fValidData[tmpChannelCnt].fZ = tmpZ; - fOutPtr->fValidData[tmpChannelCnt].fX = tmpX; - fOutPtr->fValidData[tmpChannelCnt].fEnergy = fAnalyzerPtr->GetEnergy(); - fOutPtr->fValidData[tmpChannelCnt].fTime = fAnalyzerPtr->GetTiming(); - ResetDataPtr(tmpStartIndex, sampleCnt); - - sampleCnt = 0; - fOutPtr->fCnt = tmpChannelCnt; - AliHLTComponentBlockData bd; - FillBlockData( bd ); - bd.fOffset = offset; - - bd.fSize = mysize; - bd.fDataType = AliHLTPHOSDefinitions::fgkCellEnergyDataType; - bd.fSpecification = 0xFFFFFFFF; - outputBlocks.push_back( bd ); - tSize += mysize; - outBPtr += mysize; - - if( tSize > size ) - { - cout <<"kHLTLogFatal, HLT::AliHLTPHOSRawAnalyzerComponent::DoEvent Too much data Data written over allowed buffer. Amount written:" << tSize << " allowed" << size << endl; - Logging( kHLTLogFatal, "HLT::AliHLTPHOSRawAnalyzerComponent::DoEvent", "Too much data", - "Data written over allowed buffer. Amount written: %lu, allowed amount: %lu." - , tSize, size ); - return EMSGSIZE; - } - */ - - -/* fPhosEventCount++; if(fPrintInfo == kTRUE) @@ -402,7 +216,6 @@ AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData return 0; }//end DoEvent -*/ @@ -473,6 +286,8 @@ AliHLTPHOSRawAnalyzerComponent::DumpData(int gain) const //_________________________________________________________________________________________________ + +/* void AliHLTPHOSRawAnalyzerComponent::DumpChannelData(Double_t *data) const { @@ -496,6 +311,8 @@ AliHLTPHOSRawAnalyzerComponent::DumpChannelData(Double_t *data) const cout << endl; } +*/ + //_________________________________________________________________________________________________ void @@ -521,6 +338,7 @@ AliHLTPHOSRawAnalyzerComponent::Reset() + //_________________________________________________________________________________________________ void AliHLTPHOSRawAnalyzerComponent::ResetDataPtr(int startindex, int sampleCnt) diff --git a/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h b/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h index 1a8da800d10..f14997cb161 100644 --- a/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h +++ b/HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h @@ -35,8 +35,10 @@ class AliHLTPHOSRawAnalyzerComponent: public AliHLTPHOSProcessor virtual int DoInit(int argc =0, const char** argv = 0); virtual int Deinit(); - void DumpData(int gain =0) const; - void DumpChannelData(Double_t *data =0) const; + + // void DumpData(int gain =0) const; + // void DumpChannelData(Double_t *data =0) const; + virtual const char* GetComponentID() = 0; virtual void GetInputDataTypes( vector & list); virtual AliHLTComponentDataType GetOutputDataType(); diff --git a/HLT/PHOS/AliHLTPHOSRecPointDataStruct.h b/HLT/PHOS/AliHLTPHOSRecPointDataStruct.h index d6ea6587c4e..7cbe32d3a67 100644 --- a/HLT/PHOS/AliHLTPHOSRecPointDataStruct.h +++ b/HLT/PHOS/AliHLTPHOSRecPointDataStruct.h @@ -22,7 +22,27 @@ struct AliHLTPHOSRecPointDataStruct AliHLTUInt8_t fCoordinatesPtr[2]; Float_t fX; Float_t fZ; + Float_t fM2x; + Float_t fM2z; + Float_t fM3x; + Float_t fM4z; + Float_t fPhixe; + Float_t fDistanceToBadChannel; Float_t* fEnergiesListPtr; + + void New() + { + fEnergiesListPtr = new Float_t[fMultiplicity]; + } + + void Del() + { + if(fEnergiesListPtr) + { + delete [] fEnergiesListPtr; + fEnergiesListPtr = 0; + } + } }; #endif diff --git a/HLT/PHOS/Makefile.arch b/HLT/PHOS/Makefile.arch index 7ba32252de8..c5b06a03a70 100644 --- a/HLT/PHOS/Makefile.arch +++ b/HLT/PHOS/Makefile.arch @@ -28,7 +28,10 @@ ifeq ($(ARCH),linux) # Linux with egcs, gcc 2.9x, gcc 3.x (>= RedHat 5.2) CXX = g++ #CXXFLAGS = -O9 -Wall -fPIC -CXXFLAGS = -O9 -Wall -fPIC -g + +#CXXFLAGS = -O9 -Wall -fPIC -g +CXXFLAGS = -O9 -Wall + LD = g++ LDFLAGS = -O SOFLAGS = -shared diff --git a/HLT/PHOS/Makefile.in b/HLT/PHOS/Makefile.in index b3aa4f39101..16ed1a58230 100644 --- a/HLT/PHOS/Makefile.in +++ b/HLT/PHOS/Makefile.in @@ -150,6 +150,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +EN_HLT_MUON_FALSE = @EN_HLT_MUON_FALSE@ +EN_HLT_MUON_TRUE = @EN_HLT_MUON_TRUE@ EN_HLT_PHOS_FALSE = @EN_HLT_PHOS_FALSE@ EN_HLT_PHOS_TRUE = @EN_HLT_PHOS_TRUE@ EN_HLT_SAMPLE_FALSE = @EN_HLT_SAMPLE_FALSE@ diff --git a/HLT/PHOS/testDecoder.cxx b/HLT/PHOS/testDecoder.cxx index e5da626a122..33088025f01 100644 --- a/HLT/PHOS/testDecoder.cxx +++ b/HLT/PHOS/testDecoder.cxx @@ -5,11 +5,20 @@ #include #include #include +#include +#include "stdio.h" using namespace std; +///#define N_LOOPS 1000 + int main(int argc, const char** argv) { + int n_loops = 1000000; + + clock_t start; + clock_t end; + AliHLTAltroData altrodata; AliHLTAltroBunch altrobunch; @@ -28,32 +37,44 @@ int main(int argc, const char** argv) fin.read (dataPtr,length); fin.close(); - - decoder->SetMemory((UChar_t*)dataPtr, length); - decoder->Decode(); - - int cnt = 0; - while(decoder->NextChannel(&altrodata) == true) + start =clock(); + + for(int i=0; i < n_loops; i++) { - - altrodata.Reset(); - - - // decoder->PrintInfo(altrodata, altrodata.fDataSize, 4); + decoder->SetMemory((UChar_t*)dataPtr, length); + decoder->Decode(); + while(decoder->NextChannel(&altrodata) == true) + { + // altrodata.Reset(); + // decoder->PrintInfo(altrodata, altrodata.fDataSize, 4); - // cout << endl; + // cout << endl; - while( altrodata.NextBunch(altrobunch) == true) - { - // cout << "altrobunch.fDataSize = " << altrobunch.fBunchSize << endl; - // cout << "altrobunch. fEndTimeBin = " << altrobunch. fEndTimeBin << endl; + + + while( altrodata.NextBunch(altrobunch) == true) + { + // cout << "altrobunch.fDataSize = " << altrobunch.fBunchSize << endl; + // cout << "altrobunch. fEndTimeBin = " << altrobunch. fEndTimeBin << endl; + } + } - + + // end = clock(); + } + end = clock(); + + float mikro = (float)(((float)end -(float)start)/((float)n_loops)); + + + + printf("\nProcessing time per event is %f us\n", mikro); + decoder->GetFailureRate(); - cnt ++; + // cnt ++; return 0; } -- 2.43.0