X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=HLT%2FTRD%2FAliHLTTRDClusterizerComponent.cxx;h=05965f543b74021f6e35b12ca9e5393f074d4a77;hp=d39fc1e23e23d09cbd6b2f071de0ce6a0bd21a83;hb=5e0dedf72234f432566dd13355cfb8cd19bb882d;hpb=b3182b67a143418acce5fb92d2fdfc52fd854c01 diff --git a/HLT/TRD/AliHLTTRDClusterizerComponent.cxx b/HLT/TRD/AliHLTTRDClusterizerComponent.cxx index d39fc1e23e2..05965f543b7 100644 --- a/HLT/TRD/AliHLTTRDClusterizerComponent.cxx +++ b/HLT/TRD/AliHLTTRDClusterizerComponent.cxx @@ -1,25 +1,26 @@ // $Id$ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Authors: Matthias Richter * - * Timm Steinbeck * - * for The ALICE Off-line Project. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ +//************************************************************************** +//* This file is property of and copyright by the ALICE HLT Project * +//* ALICE Experiment at CERN, All rights reserved. * +//* * +//* Primary Authors: * +//* for The ALICE HLT Project. * +//* * +//* Permission to use, copy, modify and distribute this software and its * +//* documentation strictly for non-commercial purposes is hereby granted * +//* without fee, provided that the above copyright notice appears in all * +//* copies and that both the copyright notice and this permission notice * +//* appear in the supporting documentation. The authors make no claims * +//* about the suitability of this software for any purpose. It is * +//* provided "as is" without express or implied warranty. * +//************************************************************************** /** @file AliHLTTRDClusterizerComponent.cxx - @author Timm Steinbeck, Matthias Richter + @author Theodor Rascanu @date - @brief A TRDClusterizer processing component for the HLT. */ + @brief A TRDClusterizer processing component for the HLT. +*/ // see header file for class documentation // // or // @@ -37,16 +38,16 @@ using namespace std; #include "AliHLTTRDClusterizerComponent.h" #include "AliHLTTRDDefinitions.h" -#include "AliHLTTRDCluster.h" +#include "AliHLTTRDClusterizer.h" +#include "AliHLTTRDUtils.h" #include "AliGeomManager.h" #include "AliTRDReconstructor.h" #include "AliCDBManager.h" #include "AliCDBStorage.h" #include "AliCDBEntry.h" -#include "AliHLTTRDClusterizer.h" #include "AliTRDrecoParam.h" -#include "AliTRDrawStreamBase.h" +#include "AliTRDrawStream.h" #include "AliTRDcluster.h" #include "AliRawReaderMemory.h" @@ -54,8 +55,8 @@ using namespace std; #ifdef HAVE_VALGRIND_CALLGRIND_H #include #else -#define CALLGRIND_START_INSTRUMENTATION do { } while (0) -#define CALLGRIND_STOP_INSTRUMENTATION do { } while (0) +#define CALLGRIND_START_INSTRUMENTATION (void)0 +#define CALLGRIND_STOP_INSTRUMENTATION (void)0 #endif #include @@ -64,9 +65,9 @@ using namespace std; ClassImp(AliHLTTRDClusterizerComponent) -AliHLTTRDClusterizerComponent::AliHLTTRDClusterizerComponent(): - AliHLTProcessor(), - fOutputPercentage(500), +AliHLTTRDClusterizerComponent::AliHLTTRDClusterizerComponent() +: AliHLTProcessor(), + fOutputPercentage(100), fOutputConst(0), fClusterizer(NULL), fRecoParam(NULL), @@ -78,8 +79,11 @@ AliHLTTRDClusterizerComponent::AliHLTTRDClusterizerComponent(): fyPosMethod(1), fgeometryFileName(""), fProcessTracklets(kFALSE), - fOfflineMode(kFALSE), - fHLTstreamer(kFALSE) + fHLTstreamer(kTRUE), + fTC(kFALSE), + fHLTflag(kTRUE), + fHighLevelOutput(kFALSE), + fEmulateHLTClusters(kFALSE) { // Default constructor @@ -102,10 +106,10 @@ void AliHLTTRDClusterizerComponent::GetInputDataTypes( vectorSetReconstructor(fReconstructor); fClusterizer->SetUseLabels(kFALSE); if(fReconstructor->IsProcessingTracklets()) fOutputConst = fClusterizer->GetTrMemBlockSize(); - return 0; + + return iResult; } int AliHLTTRDClusterizerComponent::DoDeinit() @@ -181,7 +188,6 @@ int AliHLTTRDClusterizerComponent::DoDeinit() fReconstructor->SetClusters(0x0); delete fReconstructor; fReconstructor = 0x0; - return 0; if (fRecoParam) { @@ -189,6 +195,8 @@ int AliHLTTRDClusterizerComponent::DoDeinit() delete fRecoParam; fRecoParam = 0; } + + return 0; } int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtData, @@ -200,9 +208,16 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD { // Process an event - if (evtData.fEventID == 1) +#ifdef HAVE_VALGRIND_CALLGRIND_H + if (evtData.fEventID == 10) CALLGRIND_START_INSTRUMENTATION; + if(GetFirstInputBlock(kAliHLTDataTypeEOR)) + CALLGRIND_STOP_INSTRUMENTATION; +#endif + + if(!IsDataEvent())return 0; + HLTDebug( "NofBlocks %i", evtData.fBlockCnt ); // Process an event AliHLTUInt32_t totalSize = 0, offset = 0; @@ -240,28 +255,29 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD block.fSize); } - // fMemReader->Reset(); +#ifndef NDEBUG + unsigned long constBase; + double inputMultiplier; + GetOutputDataSize(constBase,inputMultiplier); + if(size<(constBase+block.fSize*inputMultiplier)){ + HLTWarning("Memory Block given might be too small: %i < %i; Event %Lu", size, constBase+block.fSize*inputMultiplier, evtData.fEventID); + } +#endif + + // fMemReader->Reset(); fMemReader->SetMemory((UChar_t*) block.fPtr, block.fSize); AliHLTUInt32_t spec = block.fSpecification; - Int_t id = 1024; - - for ( Int_t ii = 0; ii < 18 ; ii++ ) { - if ( spec & 0x1 ) { - id += ii; - break; - } - spec = spec >> 1 ; - } + Int_t id = AliHLTTRDUtils::GetSM(spec) + 1024; - fMemReader->SetEquipmentID( id ); + fMemReader->SetEquipmentID(id); fClusterizer->SetMemBlock(outputPtr+offset); - Bool_t iclustered = fClusterizer->Raw2ClustersChamber(fMemReader); - if (iclustered == kTRUE) + Bool_t bclustered = fClusterizer->Raw2ClustersChamber(fMemReader); + if(bclustered) { - HLTDebug( "Clustered successfully"); + HLTDebug("Clustered successfully"); } else { @@ -269,9 +285,6 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD return -1; } - // put the tree into output - //fcTree->Print(); - AliHLTUInt32_t addedSize; if(fReconstructor->IsProcessingTracklets()){ addedSize = fClusterizer->GetAddedTrSize(); @@ -291,19 +304,21 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD FillBlockData( bd ); bd.fOffset = offset; bd.fSize = addedSize; - //bd.fSpecification = spec; - bd.fSpecification = gkAliEventTypeData; + bd.fSpecification = block.fSpecification; bd.fDataType = AliHLTTRDDefinitions::fgkMCMtrackletDataType; outputBlocks.push_back( bd ); - HLTDebug( "BD fPtr 0x%x, fOffset %i, size %i, dataType %s, spec 0x%x ", bd.fPtr, bd.fOffset, bd.fSize, DataType2Text(bd.fDataType).c_str(), spec); + HLTDebug( "BD ptr 0x%x, offset %i, size %i, dataType %s, spec 0x%x ", bd.fPtr, bd.fOffset, bd.fSize, DataType2Text(bd.fDataType).c_str(), spec); } offset = totalSize; } addedSize = fClusterizer->GetAddedClSize(); if (addedSize > 0){ - // Using low-level interface - // with interface classes + + Int_t* nTimeBins = (Int_t*)(outputPtr+offset+fClusterizer->GetAddedClSize()); + *nTimeBins = fClusterizer->GetNTimeBins(); + addedSize += sizeof(*nTimeBins); + totalSize += addedSize; if ( totalSize > size ) { @@ -311,22 +326,21 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD totalSize, size ); return EMSGSIZE; } - + // Fill block AliHLTComponentBlockData bd; FillBlockData( bd ); bd.fOffset = offset; bd.fSize = addedSize; - //bd.fSpecification = spec; - bd.fSpecification = gkAliEventTypeData; + bd.fSpecification = block.fSpecification; bd.fDataType = AliHLTTRDDefinitions::fgkClusterDataType; outputBlocks.push_back( bd ); - HLTDebug( "BD fPtr 0x%x, fOffset %i, size %i, dataType %s, spec 0x%x ", bd.fPtr, bd.fOffset, bd.fSize, DataType2Text(bd.fDataType).c_str(), spec); + HLTDebug( "BD ptr 0x%x, offset %i, size %i, dataType %s, spec 0x%x ", bd.fPtr, bd.fOffset, bd.fSize, DataType2Text(bd.fDataType).c_str(), spec); offset = totalSize; - } - else - HLTWarning("Array of clusters is empty!"); + else{ + HLTDebug("Array of clusters is empty!"); + } } fReconstructor->SetClusters(0x0); @@ -335,8 +349,15 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD return 0; } -void AliHLTTRDClusterizerComponent::PrintObject( TClonesArray* inClustersArray) +void AliHLTTRDClusterizerComponent::PrintObject( +#ifdef __DEBUG + TClonesArray* inClustersArray +#else + TClonesArray* +#endif + ) { +#ifdef __DEBUG AliTRDcluster* cluster=0x0; for (Int_t i=0; i < inClustersArray->GetEntriesFast(); i++){ @@ -346,7 +367,7 @@ void AliHLTTRDClusterizerComponent::PrintObject( TClonesArray* inClustersArray) HLTDebug(" Detector = %i, Amplitude = %f, Center = %f", cluster->GetDetector(), cluster->GetQ(), cluster->GetCenter()); HLTDebug(" LocalTimeBin = %i; NPads = %i; maskedPosition: %s, status: %s", cluster->GetLocalTimeBin(), cluster->GetNPads(),cluster->GetPadMaskedPosition(),cluster->GetPadMaskedPosition()); } - +#endif } int AliHLTTRDClusterizerComponent::Configure(const char* arguments){ @@ -363,13 +384,7 @@ int AliHLTTRDClusterizerComponent::Configure(const char* arguments){ argument=((TObjString*)pTokens->At(i))->GetString(); if (argument.IsNull()) continue; - if (argument.CompareTo("-OFFLINE")==0) { - fOfflineMode = kTRUE; - HLTFatal("You have selected OFFLINE mode!"); - HLTFatal("This program shall NOT run on the HLT cluster like this!"); - continue; - } - else if (argument.CompareTo("output_percentage")==0) { + if (argument.CompareTo("output_percentage")==0) { if ((bMissingParam=(++i>=pTokens->GetEntries()))) break; HLTInfo("Setting output percentage to: %s", ((TObjString*)pTokens->At(i))->GetString().Data()); fOutputPercentage=((TObjString*)pTokens->At(i))->GetString().Atoi(); @@ -381,52 +396,116 @@ int AliHLTTRDClusterizerComponent::Configure(const char* arguments){ fgeometryFileName=((TObjString*)pTokens->At(i))->GetString(); continue; } - if (argument.CompareTo("-lowflux")==0) { + else if (argument.CompareTo("-lowflux")==0) { fRecoParamType = 0; HLTInfo("Low flux reconstruction selected"); continue; } - if (argument.CompareTo("-highflux")==0) { + else if (argument.CompareTo("-highflux")==0) { fRecoParamType = 1; HLTInfo("High flux reconstruction selected"); continue; } - if (argument.CompareTo("-cosmics")==0) { + else if (argument.CompareTo("-cosmics")==0) { fRecoParamType = 2; HLTInfo("Cosmics reconstruction selected"); continue; } - if (argument.CompareTo("-simulation")==0) { + else if (argument.CompareTo("-simulation")==0) { fRecoDataType = 0; HLTInfo("Awaiting simulated data"); continue; } - if (argument.CompareTo("-experiment")==0) { + else if (argument.CompareTo("-experiment")==0) { fRecoDataType = 1; HLTInfo("Awaiting real data"); continue; } - if (argument.CompareTo("-processTracklets")==0) { + else if (argument.CompareTo("-processTracklets")==0) { fProcessTracklets = kTRUE; - HLTInfo("Processing L1 Tracklets"); + HLTInfo("Writing L1 tracklets to output"); continue; } - if (argument.CompareTo("-noZS")==0) { - fOutputPercentage = 100; + else if (argument.CompareTo("-noZS")==0) { + fOutputPercentage = 10; HLTInfo("Awaiting non zero surpressed data"); continue; } - if (argument.CompareTo("-faststreamer")==0) { + else if (argument.CompareTo("-HLTflag")==0) { + if ((bMissingParam=(++i>=pTokens->GetEntries()))) break; + TString toCompareTo=((TObjString*)pTokens->At(i))->GetString(); + if (toCompareTo.CompareTo("yes")==0){ + HLTInfo("Setting HLTflag to: %s", toCompareTo.Data()); + fHLTflag=kTRUE; + } + else if (toCompareTo.CompareTo("no")==0){ + HLTInfo("Setting HLTflag to: %s", toCompareTo.Data()); + fHLTflag=kFALSE; + } + else { + HLTError("unknown argument for HLTflag: %s", toCompareTo.Data()); + iResult=-EINVAL; + break; + } + continue; + } + else if (argument.CompareTo("-faststreamer")==0) { fHLTstreamer = kTRUE; HLTInfo("Useing fast raw streamer"); continue; } + else if (argument.CompareTo("-nofaststreamer")==0) { + fHLTstreamer = kFALSE; + HLTInfo("Don't use fast raw streamer"); + continue; + } + else if (argument.CompareTo("-tailcancellation")==0) { + fTC = kTRUE; + HLTInfo("Useing tailcancellation"); + continue; + } else if (argument.CompareTo("-rawver")==0) { if ((bMissingParam=(++i>=pTokens->GetEntries()))) break; HLTInfo("Raw data version is: %s", ((TObjString*)pTokens->At(i))->GetString().Data()); fRawDataVersion=((TObjString*)pTokens->At(i))->GetString().Atoi(); continue; } + else if (argument.CompareTo("-highLevelOutput")==0) { + if ((bMissingParam=(++i>=pTokens->GetEntries()))) break; + TString toCompareTo=((TObjString*)pTokens->At(i))->GetString(); + if (toCompareTo.CompareTo("yes")==0){ + HLTWarning("Setting highLevelOutput to: %s", toCompareTo.Data()); + fHighLevelOutput=kTRUE; + } + else if (toCompareTo.CompareTo("no")==0){ + HLTInfo("Setting highLevelOutput to: %s", toCompareTo.Data()); + fHighLevelOutput=kFALSE; + } + else { + HLTError("unknown argument for highLevelOutput: %s", toCompareTo.Data()); + iResult=-EINVAL; + break; + } + continue; + } + else if (argument.CompareTo("-emulateHLToutput")==0) { + if ((bMissingParam=(++i>=pTokens->GetEntries()))) break; + TString toCompareTo=((TObjString*)pTokens->At(i))->GetString(); + if (toCompareTo.CompareTo("yes")==0){ + HLTWarning("Setting emulateHLToutput to: %s", toCompareTo.Data()); + fEmulateHLTClusters=kTRUE; + } + else if (toCompareTo.CompareTo("no")==0){ + HLTInfo("Setting emulateHLToutput to: %s", toCompareTo.Data()); + fEmulateHLTClusters=kFALSE; + } + else { + HLTError("unknown argument for emulateHLToutput: %s", toCompareTo.Data()); + iResult=-EINVAL; + break; + } + continue; + } else if (argument.CompareTo("-yPosMethod")==0) { if ((bMissingParam=(++i>=pTokens->GetEntries()))) break; TString toCompareTo=((TObjString*)pTokens->At(i))->GetString(); @@ -448,7 +527,7 @@ int AliHLTTRDClusterizerComponent::Configure(const char* arguments){ break; } continue; - } + } else { HLTError("unknown argument: %s", argument.Data()); @@ -463,7 +542,6 @@ int AliHLTTRDClusterizerComponent::Configure(const char* arguments){ iResult=-EINVAL; } if(iResult>=0){ - if(fOfflineMode)SetOfflineParams(); iResult=SetParams(); } return iResult; @@ -473,7 +551,7 @@ int AliHLTTRDClusterizerComponent::SetParams() { Int_t iResult=0; if(!AliCDBManager::Instance()->IsDefaultStorageSet()){ - HLTError("DefaultStorage is not Set in CDBManager"); + HLTError("DefaultStorage is not set in CDBManager"); return -EINVAL; } if(AliCDBManager::Instance()->GetRun()<0){ @@ -483,7 +561,7 @@ int AliHLTTRDClusterizerComponent::SetParams() HLTInfo("CDB default storage: %s; RunNo: %i", (AliCDBManager::Instance()->GetDefaultStorage()->GetBaseFolder()).Data(), AliCDBManager::Instance()->GetRun()); if(!AliGeomManager::GetGeometry()){ - if(!TFile::Open(fgeometryFileName.Data())){ + if(fgeometryFileName.CompareTo("")==0 || !TFile::Open(fgeometryFileName.Data())){ HLTInfo("Loading standard geometry file"); AliGeomManager::LoadGeometry(); }else{ @@ -491,55 +569,85 @@ int AliHLTTRDClusterizerComponent::SetParams() AliGeomManager::LoadGeometry(fgeometryFileName.Data()); } if(!AliGeomManager::GetGeometry()){ - HLTError("Cannot load geometry"); + HLTError("Could not load geometry"); return -EINVAL; } + HLTInfo("Applying Alignment from CDB object"); + AliGeomManager::ApplyAlignObjsFromCDB("TRD"); } else{ HLTInfo("Geometry Already Loaded!"); } - TString recoOptions="hlt,!cw,sl_cf_0"; - - switch(fRecoDataType){ - case 0: recoOptions += ",tc"; break; - case 1: recoOptions += ",!tc"; break; - } - switch(fyPosMethod){ - case 0: recoOptions += ",!gs,!lut"; break; - case 1: recoOptions += ",!gs,lut"; break; - case 2: recoOptions += ",gs,!lut"; break; - } - if(fProcessTracklets) recoOptions += ",tp"; - else recoOptions += ",!tp"; - - - if (fRecoParamType == 0) - { - HLTDebug("Low flux params init."); - fRecoParam = AliTRDrecoParam::GetLowFluxParam(); + if(fReconstructor->GetRecoParam()){ + fRecoParam = new AliTRDrecoParam(*fReconstructor->GetRecoParam()); + HLTInfo("RecoParam already set!"); + }else{ + if(fRecoParamType == 0){ +#ifndef HAVE_NOT_ALITRD_RECOPARAM_r41621 + if(fHLTflag){ + HLTInfo("Low flux HLT params init."); + fRecoParam = AliTRDrecoParam::GetLowFluxHLTParam(); + }else +#endif + { + HLTInfo("Low flux params init."); + fRecoParam = AliTRDrecoParam::GetLowFluxParam(); + } } - - if (fRecoParamType == 1) - { - HLTDebug("High flux params init."); - fRecoParam = AliTRDrecoParam::GetHighFluxParam(); + if(fRecoParamType == 1){ +#ifndef HAVE_NOT_ALITRD_RECOPARAM_r41621 + if(fHLTflag){ + HLTInfo("High flux HLT params init."); + fRecoParam = AliTRDrecoParam::GetHighFluxHLTParam(); + }else +#endif + { + HLTInfo("High flux params init."); + fRecoParam = AliTRDrecoParam::GetHighFluxParam(); + } } - - if (fRecoParamType == 2) - { - HLTDebug("Cosmic Test params init."); + if(fRecoParamType == 2){ + HLTInfo("Cosmic Test params init."); fRecoParam = AliTRDrecoParam::GetCosmicTestParam(); } + } - if (fRecoParam == 0) + if (!fRecoParam) { HLTError("No reco params initialized. Sniffing big trouble!"); return -EINVAL; } + if(fTC){fRecoParam->SetTailCancelation(kTRUE); HLTDebug("Enableing Tail Cancelation"); } + else{fRecoParam->SetTailCancelation(kFALSE); HLTDebug("Disableing Tail Cancelation"); } + + switch(fyPosMethod){ + case 0: fRecoParam->SetGAUS(kFALSE); fRecoParam->SetLUT(kFALSE); break; + case 1: fRecoParam->SetGAUS(kFALSE); fRecoParam->SetLUT(kTRUE); break; + case 2: fRecoParam->SetGAUS(kTRUE); fRecoParam->SetLUT(kFALSE); break; + } + + fRecoParam->SetStreamLevel(AliTRDrecoParam::kClusterizer, 0); fReconstructor->SetRecoParam(fRecoParam); - fReconstructor->SetStreamLevel(0, AliTRDReconstructor::kClusterizer); + + if(!fClusterizer){ + fClusterizer = new AliHLTTRDClusterizer("TRDCclusterizer", "TRDCclusterizer"); + HLTDebug("TRDClusterizer at 0x%x", fClusterizer); + } + + TString recoOptions="!cw"; + if(fHLTflag){ + recoOptions += ",hlt"; + + // we transfer clusters that do no contain the XYZ coodrinates (AliHLTTRDCluster), + // thus this coordinate transformation ist useless +#ifndef HAVE_NOT_ALITRD_CLUSTERIZER_r42837 + fClusterizer->SetSkipTransform(); +#endif + } + if(fProcessTracklets) recoOptions += ",tp"; + else recoOptions += ",!tp"; HLTDebug("Reconstructor options are: %s",recoOptions.Data()); fReconstructor->SetOption(recoOptions.Data()); @@ -552,49 +660,19 @@ int AliHLTTRDClusterizerComponent::SetParams() if (fRecoDataType == 0) { - AliTRDrawStreamBase::SetRawStreamVersion(AliTRDrawStreamBase::kTRDsimStream); HLTDebug("Data type expected is SIMULATION!"); } if (fRecoDataType == 1) { - AliTRDrawStreamBase::SetRawStreamVersion(AliTRDrawStreamBase::kTRDrealStream); HLTDebug("Data type expected is EXPERIMENT!"); } - if (fHLTstreamer) - { - AliTRDrawStreamBase::SetRawStreamVersion("FAST"); - HLTDebug("fast rawstreamer used"); - } - - if(!fClusterizer){ - fClusterizer = new AliHLTTRDClusterizer("TRDCclusterizer", "TRDCclusterizer"); - HLTDebug("TRDClusterizer at 0x%x", fClusterizer); - } - fClusterizer->SetRawVersion(fRawDataVersion); return iResult; } -void AliHLTTRDClusterizerComponent::SetOfflineParams(){ - if(!AliCDBManager::Instance()->IsDefaultStorageSet()){ - HLTFatal("You are resetting the Default Storage of the CDBManager!"); - HLTFatal("Let's hope that this program is NOT running on the HLT cluster!"); - //AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); - }else{ - HLTError("DefaultStorage was already set!"); - } - if(AliCDBManager::Instance()->GetRun()<0){ - HLTFatal("You are resetting the CDB run number to 0!"); - HLTFatal("Let's hope that this program is NOT running on the HLT cluster!"); - //AliCDBManager::Instance()->SetRun(0); - }else{ - HLTError("Run Number was already set!"); - } -} - int AliHLTTRDClusterizerComponent::Reconfigure(const char* cdbEntry, const char* chainId) { // see header file for class documentation @@ -624,3 +702,19 @@ int AliHLTTRDClusterizerComponent::Reconfigure(const char* cdbEntry, const char* return iResult; } + +void AliHLTTRDClusterizerComponent::GetOCDBObjectDescription(TMap* const targetMap){ + // Get a list of OCDB object description needed for the particular component + if (!targetMap) return; + targetMap->Add(new TObjString("HLT/ConfigTRD/ClusterizerComponent"), new TObjString("component arguments")); + targetMap->Add(new TObjString("TRD/Calib/ChamberGainFactor"), new TObjString("gain factor of chambers")); + targetMap->Add(new TObjString("TRD/Calib/ChamberT0"), new TObjString("T0 of chambers")); + targetMap->Add(new TObjString("TRD/Calib/ChamberVdrift"), new TObjString("drift velocity of chambers")); + targetMap->Add(new TObjString("TRD/Calib/DetNoise"), new TObjString("noise of chambers")); + targetMap->Add(new TObjString("TRD/Calib/LocalGainFactor"), new TObjString("per pad gain factor")); + targetMap->Add(new TObjString("TRD/Calib/LocalT0"), new TObjString("per pad T0")); + targetMap->Add(new TObjString("TRD/Calib/LocalVdrift"), new TObjString("per pad drift velocity")); + targetMap->Add(new TObjString("TRD/Calib/PadNoise"), new TObjString("per pad noise")); + targetMap->Add(new TObjString("TRD/Calib/PadStatus"), new TObjString("pad status")); + targetMap->Add(new TObjString("TRD/Calib/PRFWidth"), new TObjString("pad response function")); +}