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;
42 AliHLTPHOSDigitMakerComponent::GetComponentID()
44 return "PhosDigitMaker";
49 AliHLTPHOSDigitMakerComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
51 //Get datatypes for input
52 const AliHLTComponentDataType* pType=fgkInputDataTypes;
53 while (pType->fID!=0) {
54 list.push_back(*pType);
59 AliHLTComponentDataType
60 AliHLTPHOSDigitMakerComponent::GetOutputDataType()
62 return AliHLTPHOSDefinitions::fgkAliHLTDigitDataType;
67 AliHLTPHOSDigitMakerComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
74 AliHLTPHOSDigitMakerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
75 AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
76 std::vector<AliHLTComponentBlockData>& outputBlocks)
91 AliHLTUInt8_t* outBPtr;
93 const AliHLTComponentBlockData* iter = 0;
95 fDigitContainerPtr = (AliHLTPHOSDigitContainerDataStruct*)outBPtr;
96 //fDigitMakerPtr->SetDigitContainerStruct(fDigitContainerPtr);
97 fDigitMakerPtr->SetDigitContainerStruct((AliHLTPHOSDigitContainerDataStruct*)outBPtr);
99 for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
103 if(iter->fDataType != AliHLTPHOSDefinitions::fgkCellEnergyDataType)
105 // cout << "Warning: data type is not fgkCellEnergyDataType " << endl;
109 digitCount = fDigitMakerPtr->MakeDigits(reinterpret_cast<AliHLTPHOSRcuCellEnergyDataStruct*>(iter->fPtr));
116 mysize += sizeof(AliHLTPHOSDigitContainerDataStruct);
117 ((AliHLTPHOSDigitContainerDataStruct*)outBPtr)->fNDigits = digitCount;
118 AliHLTComponentBlockData bd;
122 bd.fDataType = AliHLTPHOSDefinitions::fgkAliHLTDigitDataType;
123 bd.fSpecification = 0xFFFFFFFF;
124 outputBlocks.push_back( bd );
131 Logging( kHLTLogFatal, "HLT::AliHLTPHOSDigitMakerComponent::DoEvent", "Too much data",
132 "Data written over allowed buffer. Amount written: %lu, allowed amount: %lu."
137 fDigitMakerPtr->Reset();
139 if(fEventCount % 10 == 0)
141 cout << "Event #: " << fEventCount << endl;
142 cout << " - Number of digits found: " << digitCount << endl;
150 AliHLTPHOSDigitMakerComponent::DoInit(int argc, const char** argv )
154 fDigitMakerPtr = new AliHLTPHOSDigitMaker();
156 for(int i = 0; i < argc; i++)
158 if(!strcmp("-threshold", argv[i]))
159 fDigitMakerPtr->SetDigitThreshold(atoi(argv[i+1]));
160 if(!strcmp("-presamples", argv[i]))
161 fDigitMakerPtr->SetNrPresamples(atoi(argv[i+1]));
164 //fDigitMakerPtr->SetDigitThreshold(2);
170 AliHLTPHOSDigitMakerComponent::Spawn()
172 return new AliHLTPHOSDigitMakerComponent();