X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=HLT%2FPHOS%2FAliHLTPHOSClusterizerComponent.cxx;h=f0aea00c13be8368897d07aff6e425b36827831c;hb=c1e4a18c8c989337a189923561451b3195feeaf7;hp=c14610383121e2b8c93484aa4cfd021be88cfa3f;hpb=6e709a0db099597d2b0bfc43932c945c576e46b1;p=u%2Fmrichter%2FAliRoot.git diff --git a/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx b/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx index c1461038312..f0aea00c13b 100644 --- a/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx +++ b/HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx @@ -1,7 +1,9 @@ +// $Id$ + /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * - * Authors: Øystein Djuvsland * + * Authors: Oystein Djuvsland * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * @@ -12,259 +14,89 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ +#include #include "AliHLTPHOSClusterizerComponent.h" -#include "AliHLTPHOSClusterizer.h" -#include "AliHLTPHOSPhysicsDefinitions.h" -#include "AliHLTPHOSDefinitions.h" -#include "AliHLTPHOSRecPointDataStruct.h" -#include "AliHLTPHOSClusterDataStruct.h" -#include "AliHLTPHOSRecPointListDataStruct.h" - -using namespace std; +#include "AliHLTCaloRecPointDataStruct.h" +#include "AliHLTCaloRecPointHeaderStruct.h" +#include "AliHLTPHOSGeometry.h" +#include "AliHLTCaloClusterAnalyser.h" -const AliHLTComponentDataType AliHLTPHOSClusterizerComponent::fgkInputDataTypes[]={kAliHLTVoidDataType,{0,"",""}}; -AliHLTPHOSClusterizerComponent gAliHLTPHOSClusterizerComponent; - -AliHLTPHOSClusterizerComponent::AliHLTPHOSClusterizerComponent():AliHLTProcessor(), fClusterizerPtr(0), fOutPtr(0), - fRecPointStructArrayPtr(0), fRecPointListPtr(0) -{ - //Constructor -} -AliHLTPHOSClusterizerComponent::~AliHLTPHOSClusterizerComponent() -{ - //Destructor +/** @file AliHLTPHOSClusterizerComponent.cxx + @author Oystein Djuvsland + @date + @brief A clusterizer component for PHOS HLT +*/ - if(fClusterizerPtr) - { - delete fClusterizerPtr; - fClusterizerPtr = 0; - } - - if(fRecPointListPtr) - { - delete fRecPointListPtr; - fRecPointListPtr = 0; - } +// see header file for class documentation +// or +// refer to README to build package +// or +// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt +#include "AliHLTCaloDefinitions.h" +#include "AliHLTPHOSGeometry.h" +#include "AliHLTPHOSRecoParamHandler.h" - if(fRecPointStructArrayPtr) - { - for(int i = 0; i < 1000; i++) - { - fRecPointStructArrayPtr[i].Del(); - } - delete fRecPointStructArrayPtr; - fRecPointStructArrayPtr = 0; - } - -} +AliHLTPHOSClusterizerComponent gAliHLTPHOSClusterizerComponent; -AliHLTPHOSClusterizerComponent::AliHLTPHOSClusterizerComponent(const AliHLTPHOSClusterizerComponent &):AliHLTProcessor(), - fClusterizerPtr(0), - fOutPtr(0), - fRecPointStructArrayPtr(0), - fRecPointListPtr(0) +AliHLTPHOSClusterizerComponent::AliHLTPHOSClusterizerComponent(): + AliHLTCaloClusterizerComponent("PHOS") { - //Copy constructor, not implemented -} + //See headerfile for documentation -int -AliHLTPHOSClusterizerComponent::Deinit() -{ - //Deinitialization + fDataOrigin = const_cast(kAliHLTDataOriginPHOS); - if(fClusterizerPtr) - { - delete fClusterizerPtr; - fClusterizerPtr = 0; - } + //AliHLTPHOSGeometry *geom = new AliHLTPHOSGeometry; - if(fRecPointListPtr) - { - delete fRecPointListPtr; - fRecPointListPtr = 0; - } + fAnalyserPtr->SetGeometry(new AliHLTPHOSGeometry); - for(int i = 0; i < 1000; i++) - { - fRecPointStructArrayPtr[i].Del(); - } + fRecoParamsPtr = new AliHLTPHOSRecoParamHandler(); - if(fRecPointStructArrayPtr) - { - for(int i = 0; i < 1000; i++) - { - fRecPointStructArrayPtr[i].Del(); - } - delete fRecPointStructArrayPtr; - fRecPointStructArrayPtr = 0; - } - - - - - - return 0; -} - -int -AliHLTPHOSClusterizerComponent::DoDeinit() -{ - //Do deinitialization - Logging(kHLTLogInfo, "HLT", "PHOS", ",AliHLTPHOSClusterizerComponent DoDeinit"); - - return 0; } - -const Char_t* -AliHLTPHOSClusterizerComponent::GetComponentID() +AliHLTPHOSClusterizerComponent::~AliHLTPHOSClusterizerComponent() { - return "AliHltPhosClusterizer"; + //See headerfile for documentation } void AliHLTPHOSClusterizerComponent::GetInputDataTypes( vector& list) { - //Get datatypes for input - const AliHLTComponentDataType* pType=fgkInputDataTypes; - while (pType->fID!=0) { - list.push_back(*pType); - pType++; - } + //See headerfile for documentation + list.clear(); + list.push_back(AliHLTCaloDefinitions::fgkDigitDataType|kAliHLTDataOriginPHOS); } -AliHLTComponentDataType +AliHLTComponentDataType AliHLTPHOSClusterizerComponent::GetOutputDataType() { - return AliHLTPHOSPhysicsDefinitions::fgkAliHLTClusterDataType; + //See headerfile for documentation + return kAliHLTDataTypeCaloCluster|kAliHLTDataOriginPHOS; } void AliHLTPHOSClusterizerComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier ) { - constBase = 30; - inputMultiplier = 0.2; -} - -int -AliHLTPHOSClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, - AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, - std::vector& outputBlocks) -{ - //Do event - - UInt_t tSize = 0; - UInt_t offset = 0; - UInt_t mysize = 0; - Int_t nRecPoints = 0; - Int_t index = 0; - - AliHLTUInt8_t* outBPtr; - outBPtr = outputPtr; - const AliHLTComponentBlockData* iter = 0; - unsigned long ndx; - - for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ ) - { - iter = blocks+ndx; - - if(iter->fDataType != AliHLTPHOSDefinitions::fgkCellEnergyDataType) - { - cout << "Warning: data type is not fgkCellEnergyDataType " << endl; - continue; - } - index = fClusterizerPtr->BuildCellEnergyArray( reinterpret_cast(iter->fPtr), - fRecPointListPtr); - - } - - nRecPoints = fClusterizerPtr->CreateRecPointStructArray(fRecPointStructArrayPtr, fRecPointListPtr, index); - - cout << "Number of clusters found: " << nRecPoints << endl; - - for(Int_t i = 0; i < nRecPoints; i++) - { - mysize = 0; - offset = tSize; - - fOutPtr = (AliHLTPHOSClusterDataStruct*)outBPtr; - fClusterizerPtr->CalculateCenterOfGravity(&fRecPointStructArrayPtr[i]); - // fClusterizerPtr->CalculateMoments(&fRecPointStructArrayPtr[i], 0); - // fClusterizerPtr->ClusterizeStruct(&fRecPointStructArrayPtr[i], fOutPtr); - - mysize += sizeof(AliHLTPHOSClusterDataStruct); - - AliHLTComponentBlockData bd; - FillBlockData( bd ); - bd.fOffset = offset; - bd.fSize = mysize; - bd.fDataType = AliHLTPHOSPhysicsDefinitions::fgkAliHLTClusterDataType; - bd.fSpecification = 0xFFFFFFFF; - outputBlocks.push_back( bd ); - - tSize += mysize; - outBPtr += mysize; - - if( tSize > size ) - { - Logging( kHLTLogFatal, "HLT::AliHLTPHOSClusterizerComponent::DoEvent", "Too much data", - "Data written over allowed buffer. Amount written: %lu, allowed amount: %lu." - , tSize, size ); - return EMSGSIZE; - } - } - - size = tSize; - fClusterizerPtr->ResetCellEnergyArray(); - - return 0; - + //See headerfile for documentation + constBase = sizeof(AliHLTCaloRecPointHeaderStruct) + sizeof(AliHLTCaloRecPointDataStruct) + (sizeof(AliHLTCaloDigitDataStruct) << 7); //Reasonable estimate... ; + inputMultiplier = 2.0; } -int -AliHLTPHOSClusterizerComponent::DoInit(int argc, const char** argv ) +const Char_t* +AliHLTPHOSClusterizerComponent::GetComponentID() { - //Do initialization - fClusterizerPtr = new AliHLTPHOSClusterizer(); - 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()); - - return 0; + //See headerfile for documentation + return "PhosClusterizer"; } AliHLTComponent* AliHLTPHOSClusterizerComponent::Spawn() { - //Spawn a new AliHLTPHOSClusterizerComponent, for HLT framework + //See headerfile for documentation + return new AliHLTPHOSClusterizerComponent(); }