4 #include "AliHLTPHOSDigitMakerComponent.h"
5 #include "AliHLTPHOSDigitMaker.h"
7 #include "AliHLTPHOSProcessor.h"
8 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
9 #include "AliHLTPHOSDigitContainerDataStruct.h"
10 #include "TClonesArray.h"
13 #include <sys/types.h>
15 const AliHLTComponentDataType AliHLTPHOSDigitMakerComponent::fgkInputDataTypes[]={kAliHLTVoidDataType,{0,"",""}};
17 AliHLTPHOSDigitMakerComponent gAliHLTPHOSDigitMakerComponent;
19 AliHLTPHOSDigitMakerComponent::AliHLTPHOSDigitMakerComponent() :
20 AliHLTPHOSProcessor(),
27 AliHLTPHOSDigitMakerComponent::~AliHLTPHOSDigitMakerComponent()
32 AliHLTPHOSDigitMakerComponent::Deinit()
36 delete fDigitMakerPtr;
43 AliHLTPHOSDigitMakerComponent::GetComponentID()
45 return "PhosDigitMaker";
50 AliHLTPHOSDigitMakerComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
52 //Get datatypes for input
53 const AliHLTComponentDataType* pType=fgkInputDataTypes;
54 while (pType->fID!=0) {
55 list.push_back(*pType);
60 AliHLTComponentDataType
61 AliHLTPHOSDigitMakerComponent::GetOutputDataType()
63 return AliHLTPHOSDefinitions::fgkAliHLTDigitDataType;
68 AliHLTPHOSDigitMakerComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
75 AliHLTPHOSDigitMakerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
76 AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
77 std::vector<AliHLTComponentBlockData>& outputBlocks)
92 AliHLTUInt8_t* outBPtr;
94 const AliHLTComponentBlockData* iter = 0;
96 fDigitContainerPtr = (AliHLTPHOSDigitContainerDataStruct*)outBPtr;
97 //fDigitMakerPtr->SetDigitContainerStruct(fDigitContainerPtr);
98 fDigitMakerPtr->SetDigitContainerStruct((AliHLTPHOSDigitContainerDataStruct*)outBPtr);
100 for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
104 if(iter->fDataType != AliHLTPHOSDefinitions::fgkCellEnergyDataType)
106 // cout << "Warning: data type is not fgkCellEnergyDataType " << endl;
110 digitCount = fDigitMakerPtr->MakeDigits(reinterpret_cast<AliHLTPHOSRcuCellEnergyDataStruct*>(iter->fPtr));
117 mysize += sizeof(AliHLTPHOSDigitContainerDataStruct);
118 ((AliHLTPHOSDigitContainerDataStruct*)outBPtr)->fNDigits = digitCount;
119 AliHLTComponentBlockData bd;
123 bd.fDataType = AliHLTPHOSDefinitions::fgkAliHLTDigitDataType;
124 bd.fSpecification = 0xFFFFFFFF;
125 outputBlocks.push_back( bd );
132 Logging( kHLTLogFatal, "HLT::AliHLTPHOSDigitMakerComponent::DoEvent", "Too much data",
133 "Data written over allowed buffer. Amount written: %lu, allowed amount: %lu."
138 fDigitMakerPtr->Reset();
140 if(fEventCount % 10 == 0)
142 cout << "Event #: " << fEventCount << endl;
143 cout << " - Number of digits found: " << digitCount << endl;
151 AliHLTPHOSDigitMakerComponent::DoInit(int argc, const char** argv )
155 fDigitMakerPtr = new AliHLTPHOSDigitMaker();
157 for(int i = 0; i < argc; i++)
159 if(!strcmp("-threshold", argv[i]))
160 fDigitMakerPtr->SetDigitThreshold(atoi(argv[i+1]));
161 if(!strcmp("-presamples", argv[i]))
162 fDigitMakerPtr->SetNrPresamples(atoi(argv[i+1]));
165 //fDigitMakerPtr->SetDigitThreshold(2);
171 AliHLTPHOSDigitMakerComponent::Spawn()
173 return new AliHLTPHOSDigitMakerComponent();