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(),
18 fRcuCalibProcessorPtr(0),
23 AliHLTPHOSRcuCalibrationProcessorComponent::~AliHLTPHOSRcuCalibrationProcessorComponent()
27 AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent(const AliHLTPHOSRcuCalibrationProcessorComponent&)
28 // fHistogramProducer(0)
30 HLTFatal("copy constructor untested");
33 AliHLTPHOSRcuCalibrationProcessorComponent& AliHLTPHOSRcuCalibrationProcessorComponent::operator=(const AliHLTPHOSRcuCalibrationProcessorComponent&)
35 HLTFatal("assignement operator untested");
38 const char* AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
40 return "PhosRcuCalibrationProcessor";
43 void AliHLTPHOSRcuCalibrationProcessorComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
46 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyDataType);
48 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyHistogramDataType);
49 list.push_back(AliHLTPHOSDefinitions::fgkCellAverageEnergyDataType);
50 list.push_back(AliHLTPHOSDefinitions::fgkCellAccumulatedEnergyDataType);
51 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingHistogramDataType);
52 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingAverageDataType);
56 AliHLTComponentDataType AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataType()
58 return AliHLTPHOSDefinitions::fgkEmcCalibDataType;
61 void AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
67 AliHLTComponent* AliHLTPHOSRcuCalibrationProcessorComponent::Spawn()
69 return new AliHLTPHOSRcuCalibrationProcessorComponent();
73 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ScanArgument( Int_t argc, const char** argv)
78 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::InitCalibration()
80 fCalibDataPtr = new TObjArray();
81 fRcuCalibProcessorPtr = new AliHLTPHOSRcuCalibrationProcessor(2, 0, 0);
82 fShmPtr = new AliHLTPHOSSharedMemoryInterface();
86 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::DeinitCalibration()
91 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ProcessCalibration(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
94 UInt_t specification = 0;
96 const AliHLTComponentBlockData* iter = 0;
98 iter = GetFirstInputBlock( kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC);
100 AliHLTPHOSRcuCellEnergyDataStruct* cellDataPtr = 0;
102 AliHLTPHOSValidCellDataStruct* currentChannel = 0;
104 int totalSamples = 1;
108 specification = specification|iter->fSpecification;
110 cellDataPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)( iter->fPtr);
111 fShmPtr->SetMemory(cellDataPtr);
112 currentChannel = fShmPtr->NextChannel();
114 while(currentChannel != 0)
116 fRcuCalibProcessorPtr->FillEnergy(currentChannel->fX, currentChannel->fZ, currentChannel->fGain, currentChannel->fEnergy);
117 fRcuCalibProcessorPtr->FillLiveChannels(currentChannel->fData, totalSamples, currentChannel->fX, currentChannel->fZ,currentChannel->fGain);
118 currentChannel = fShmPtr->NextChannel();
121 iter = GetNextInputBlock();
124 PushBack((TObject*) fCalibDataPtr, AliHLTPHOSDefinitions::fgkEmcCalibDataType, specification);
129 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ShipDataToFXS( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/ ) {
130 // see header file for class documentation
132 // ** PushBack data to FXS ...
133 PushToFXS( (TObject*) fCalibDataPtr, "PHOS", "calibHistoHLT" ) ;