]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/PHOS/AliHLTPHOSRcuCalibrationProcessorComponent.cxx
Selectiv readout and writing to FXS (oystein)
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSRcuCalibrationProcessorComponent.cxx
CommitLineData
6a76e30e 1
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"
11
12using namespace std;
13
14AliHLTPHOSRcuCalibrationProcessorComponent gAliHLTPHOSRcuCalibrationProcessorComponent;
15
16AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent() :
17 AliHLTCalibrationProcessor(),
25b7f84c 18 fCalibDataPtr(0),
6a76e30e 19 fRcuCalibProcessorPtr(0),
25b7f84c 20 fShmPtr(0)
6a76e30e 21{
22}
23
24AliHLTPHOSRcuCalibrationProcessorComponent::~AliHLTPHOSRcuCalibrationProcessorComponent()
25{
26}
27
25b7f84c 28AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent(const AliHLTPHOSRcuCalibrationProcessorComponent&) :
29 AliHLTCalibrationProcessor(),
30 fCalibDataPtr(0),
31 fRcuCalibProcessorPtr(0),
32 fShmPtr(0)
6a76e30e 33{
34 HLTFatal("copy constructor untested");
35}
36
37AliHLTPHOSRcuCalibrationProcessorComponent& AliHLTPHOSRcuCalibrationProcessorComponent::operator=(const AliHLTPHOSRcuCalibrationProcessorComponent&)
38{
39 HLTFatal("assignement operator untested");
40}
41
42const char* AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
43{
44 return "PhosRcuCalibrationProcessor";
45}
46
47void AliHLTPHOSRcuCalibrationProcessorComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
48{
49 list.clear();
50 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyDataType);
51 /*
52 list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyHistogramDataType);
53 list.push_back(AliHLTPHOSDefinitions::fgkCellAverageEnergyDataType);
54 list.push_back(AliHLTPHOSDefinitions::fgkCellAccumulatedEnergyDataType);
55 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingHistogramDataType);
56 list.push_back(AliHLTPHOSDefinitions::fgkCellTimingAverageDataType);
57 */
58}
59
60AliHLTComponentDataType AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataType()
61{
62 return AliHLTPHOSDefinitions::fgkEmcCalibDataType;
63}
64
65void AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
66{
67 constBase = 0;
68 inputMultiplier = 2;
69}
70
71AliHLTComponent* AliHLTPHOSRcuCalibrationProcessorComponent::Spawn()
72{
73 return new AliHLTPHOSRcuCalibrationProcessorComponent();
74}
75
76
77Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ScanArgument( Int_t argc, const char** argv)
78{
79 return 0;
80}
81
82Int_t AliHLTPHOSRcuCalibrationProcessorComponent::InitCalibration()
83{
84 fCalibDataPtr = new TObjArray();
85 fRcuCalibProcessorPtr = new AliHLTPHOSRcuCalibrationProcessor(2, 0, 0);
86 fShmPtr = new AliHLTPHOSSharedMemoryInterface();
87 return 0;
88}
89
90Int_t AliHLTPHOSRcuCalibrationProcessorComponent::DeinitCalibration()
91{
92 return 0;
93}
94
95Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ProcessCalibration(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
96{
97
98 UInt_t specification = 0;
99
100 const AliHLTComponentBlockData* iter = 0;
101
102 iter = GetFirstInputBlock( kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC);
103
104 AliHLTPHOSRcuCellEnergyDataStruct* cellDataPtr = 0;
105
106 AliHLTPHOSValidCellDataStruct* currentChannel = 0;
107
108 int totalSamples = 1;
109
110 while(iter != 0)
111 {
112 specification = specification|iter->fSpecification;
113
114 cellDataPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)( iter->fPtr);
115 fShmPtr->SetMemory(cellDataPtr);
116 currentChannel = fShmPtr->NextChannel();
117
118 while(currentChannel != 0)
119 {
120 fRcuCalibProcessorPtr->FillEnergy(currentChannel->fX, currentChannel->fZ, currentChannel->fGain, currentChannel->fEnergy);
121 fRcuCalibProcessorPtr->FillLiveChannels(currentChannel->fData, totalSamples, currentChannel->fX, currentChannel->fZ,currentChannel->fGain);
122 currentChannel = fShmPtr->NextChannel();
123 }
124
125 iter = GetNextInputBlock();
126 }
127
128 PushBack((TObject*) fCalibDataPtr, AliHLTPHOSDefinitions::fgkEmcCalibDataType, specification);
129
130 return 0;
131}
132
133Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ShipDataToFXS( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/ ) {
134 // see header file for class documentation
135
136 // ** PushBack data to FXS ...
137 PushToFXS( (TObject*) fCalibDataPtr, "PHOS", "calibHistoHLT" ) ;
138
139 return 0;
140}