4 #include "AliHLTPHOSRcuCalibrationProcessorComponent.h"
5 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
6 #include "AliHLTPHOSValidCellDataStruct.h"
7 #include "AliHLTPHOSConstants.h"
8 #include "AliHLTPHOSDefinitions.h"
9 #include "AliHLTPHOSEmcCalibData.h"
10 #include "AliHLTPHOSRcuCalibrationProcessor.h"
11 #include "AliHLTPHOSSharedMemoryInterface.h"
12 #include "TObjArray.h"
16 AliHLTPHOSRcuCalibrationProcessorComponent gAliHLTPHOSRcuCalibrationProcessorComponent;
18 AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent() :
19 AliHLTCalibrationProcessor(),
21 fRcuCalibProcessorPtr(0),
28 AliHLTPHOSRcuCalibrationProcessorComponent::~AliHLTPHOSRcuCalibrationProcessorComponent()
35 AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent(const AliHLTPHOSRcuCalibrationProcessorComponent&) :
36 AliHLTCalibrationProcessor(),
38 fRcuCalibProcessorPtr(0),
41 HLTFatal("copy constructor untested");
46 AliHLTPHOSRcuCalibrationProcessorComponent& AliHLTPHOSRcuCalibrationProcessorComponent::operator=(const AliHLTPHOSRcuCalibrationProcessorComponent&)
48 HLTFatal("assignement operator untested");
51 const char* AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
53 return "PhosRcuCalibrationProcessor";
57 void AliHLTPHOSRcuCalibrationProcessorComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
60 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyDataType);
62 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyHistogramDataType);
63 list.push_back(AliHLTPHOSDefinitions::fgkCellAverageEnergyDataType);
64 list.push_back(AliHLTPHOSDefinitions::fgkCellAccumulatedEnergyDataType);
65 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingHistogramDataType);
66 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingAverageDataType);
71 AliHLTComponentDataType AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataType()
73 return AliHLTPHOSDefinitions::fgkEmcCalibDataType;
77 void AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
85 AliHLTPHOSRcuCalibrationProcessorComponent::Spawn()
87 return new AliHLTPHOSRcuCalibrationProcessorComponent();
92 AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
94 return "PhosCalibrationProcessor";
99 AliHLTPHOSRcuCalibrationProcessorComponent::ScanArgument( Int_t argc, const char** argv)
101 const char **c = argv;
109 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::InitCalibration()
111 fCalibDataPtr = new TObjArray();
112 fRcuCalibProcessorPtr = new AliHLTPHOSRcuCalibrationProcessor(2, 0, 0);
113 fShmPtr = new AliHLTPHOSSharedMemoryInterface();
117 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::DeinitCalibration()
122 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ProcessCalibration(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
124 const AliHLTComponentEventData eDta = evtData;
125 AliHLTComponentTriggerData tDta = trigData;
127 UInt_t specification = 0;
128 const AliHLTComponentBlockData* iter = 0;
129 iter = GetFirstInputBlock( kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC);
130 AliHLTPHOSRcuCellEnergyDataStruct* cellDataPtr = 0;
131 AliHLTPHOSValidCellDataStruct* currentChannel = 0;
132 int totalSamples = 1;
136 specification = specification|iter->fSpecification;
138 cellDataPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)( iter->fPtr);
139 fShmPtr->SetMemory(cellDataPtr);
140 currentChannel = fShmPtr->NextChannel();
142 Int_t* tmpDataPtr = 0;
145 while(currentChannel != 0)
147 tmpDataPtr = fShmPtr->GetRawData(nSamples);
148 fRcuCalibProcessorPtr->FillEnergy(currentChannel->fX, currentChannel->fZ, currentChannel->fGain, currentChannel->fEnergy);
149 fRcuCalibProcessorPtr->FillLiveChannels(tmpDataPtr, totalSamples, currentChannel->fX, currentChannel->fZ,currentChannel->fGain);
150 currentChannel = fShmPtr->NextChannel();
153 iter = GetNextInputBlock();
156 PushBack((TObject*) fCalibDataPtr, AliHLTPHOSDefinitions::fgkEmcCalibDataType, specification);
161 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ShipDataToFXS( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/ ) {
162 // see header file for class documentation
164 // ** PushBack data to FXS ...
165 PushToFXS( (TObject*) fCalibDataPtr, "PHOS", "calibHistoHLT" ) ;