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