2 #include "AliHLTPHOSRcuCalibrationProcessorComponent.h"
3 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
4 #include "AliHLTPHOSValidCellDataStruct.h"
5 #include "AliHLTPHOSConstants.h"
6 #include "AliHLTPHOSDefinitions.h"
7 #include "AliHLTPHOSEmcCalibData.h"
8 #include "AliHLTPHOSRcuCalibrationProcessor.h"
9 #include "AliHLTPHOSSharedMemoryInterface.h"
10 #include "TObjArray.h"
14 AliHLTPHOSRcuCalibrationProcessorComponent gAliHLTPHOSRcuCalibrationProcessorComponent;
16 AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent() :
17 AliHLTCalibrationProcessor(),
19 fRcuCalibProcessorPtr(0),
26 AliHLTPHOSRcuCalibrationProcessorComponent::~AliHLTPHOSRcuCalibrationProcessorComponent()
33 AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent(const AliHLTPHOSRcuCalibrationProcessorComponent&) :
34 AliHLTCalibrationProcessor(),
36 fRcuCalibProcessorPtr(0),
39 HLTFatal("copy constructor untested");
44 AliHLTPHOSRcuCalibrationProcessorComponent& AliHLTPHOSRcuCalibrationProcessorComponent::operator=(const AliHLTPHOSRcuCalibrationProcessorComponent&)
46 HLTFatal("assignement operator untested");
49 const char* AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
51 return "PhosRcuCalibrationProcessor";
55 void AliHLTPHOSRcuCalibrationProcessorComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
58 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyDataType);
60 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyHistogramDataType);
61 list.push_back(AliHLTPHOSDefinitions::fgkCellAverageEnergyDataType);
62 list.push_back(AliHLTPHOSDefinitions::fgkCellAccumulatedEnergyDataType);
63 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingHistogramDataType);
64 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingAverageDataType);
69 AliHLTComponentDataType AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataType()
71 return AliHLTPHOSDefinitions::fgkEmcCalibDataType;
75 void AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
83 AliHLTPHOSRcuCalibrationProcessorComponent::Spawn()
85 return new AliHLTPHOSRcuCalibrationProcessorComponent();
90 AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
92 return "PhosCalibrationProcessor";
97 AliHLTPHOSRcuCalibrationProcessorComponent::ScanArgument( Int_t argc, const char** argv)
99 const char **c = argv;
107 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::InitCalibration()
109 fCalibDataPtr = new TObjArray();
110 fRcuCalibProcessorPtr = new AliHLTPHOSRcuCalibrationProcessor(2, 0, 0);
111 fShmPtr = new AliHLTPHOSSharedMemoryInterface();
115 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::DeinitCalibration()
120 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ProcessCalibration(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
122 const AliHLTComponentEventData eDta = evtData;
123 AliHLTComponentTriggerData tDta = trigData;
125 UInt_t specification = 0;
126 const AliHLTComponentBlockData* iter = 0;
127 iter = GetFirstInputBlock( kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC);
128 AliHLTPHOSRcuCellEnergyDataStruct* cellDataPtr = 0;
129 AliHLTPHOSValidCellDataStruct* currentChannel = 0;
130 int totalSamples = 1;
134 specification = specification|iter->fSpecification;
136 cellDataPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)( iter->fPtr);
137 fShmPtr->SetMemory(cellDataPtr);
138 currentChannel = fShmPtr->NextChannel();
140 while(currentChannel != 0)
142 fRcuCalibProcessorPtr->FillEnergy(currentChannel->fX, currentChannel->fZ, currentChannel->fGain, currentChannel->fEnergy);
143 fRcuCalibProcessorPtr->FillLiveChannels(currentChannel->fData, totalSamples, currentChannel->fX, currentChannel->fZ,currentChannel->fGain);
144 currentChannel = fShmPtr->NextChannel();
147 iter = GetNextInputBlock();
150 PushBack((TObject*) fCalibDataPtr, AliHLTPHOSDefinitions::fgkEmcCalibDataType, specification);
155 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ShipDataToFXS( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/ ) {
156 // see header file for class documentation
158 // ** PushBack data to FXS ...
159 PushToFXS( (TObject*) fCalibDataPtr, "PHOS", "calibHistoHLT" ) ;