]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/AliHLTPHOSRcuCalibrationProcessorComponent.cxx
Do not set default CDB storage, if not defined, but return Fatal.
[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   fCalibDataPtr(0),
19   fRcuCalibProcessorPtr(0),
20   fShmPtr(0)
21 {
22
23 }
24
25
26 AliHLTPHOSRcuCalibrationProcessorComponent::~AliHLTPHOSRcuCalibrationProcessorComponent() 
27 {
28
29 }
30
31
32 /*
33 AliHLTPHOSRcuCalibrationProcessorComponent::AliHLTPHOSRcuCalibrationProcessorComponent(const AliHLTPHOSRcuCalibrationProcessorComponent&) :
34   AliHLTCalibrationProcessor(),
35   fCalibDataPtr(0),
36   fRcuCalibProcessorPtr(0),
37   fShmPtr(0)
38 {
39   HLTFatal("copy constructor untested");
40 }
41 */
42
43  /*
44 AliHLTPHOSRcuCalibrationProcessorComponent& AliHLTPHOSRcuCalibrationProcessorComponent::operator=(const AliHLTPHOSRcuCalibrationProcessorComponent&)
45 {
46   HLTFatal("assignement operator untested");
47 }
48
49 const char* AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
50 {
51   return "PhosRcuCalibrationProcessor";
52 }
53 */
54
55 void AliHLTPHOSRcuCalibrationProcessorComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
56 {
57   list.clear();
58   list.push_back(AliHLTPHOSDefinitions::fgkCellEnergyDataType);
59   /*
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);
65   */
66 }
67
68
69 AliHLTComponentDataType AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataType()
70 {
71   return AliHLTPHOSDefinitions::fgkEmcCalibDataType;
72 }
73
74                                      
75 void AliHLTPHOSRcuCalibrationProcessorComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
76 {
77   constBase = 0;
78   inputMultiplier = 2;
79 }
80
81
82 AliHLTComponent* 
83 AliHLTPHOSRcuCalibrationProcessorComponent::Spawn()
84 {
85   return new AliHLTPHOSRcuCalibrationProcessorComponent();
86 }
87
88
89 const char* 
90 AliHLTPHOSRcuCalibrationProcessorComponent::GetComponentID()
91 {
92   return "PhosCalibrationProcessor";
93 }
94
95
96 Int_t 
97 AliHLTPHOSRcuCalibrationProcessorComponent::ScanArgument( Int_t argc, const char** argv)
98 {
99   const char **c = argv;
100   Int_t t= argc;
101   c++;
102   t++;
103
104   return 0;
105 }
106
107 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::InitCalibration()
108 {
109   fCalibDataPtr = new TObjArray();
110   fRcuCalibProcessorPtr = new AliHLTPHOSRcuCalibrationProcessor(2, 0, 0);
111   fShmPtr = new AliHLTPHOSSharedMemoryInterface();
112   return 0;
113 }
114
115 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::DeinitCalibration()
116 {
117   return 0;
118 }
119
120 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ProcessCalibration(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
121 {
122   const  AliHLTComponentEventData eDta  = evtData;
123   AliHLTComponentTriggerData  tDta =  trigData;
124
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;
131
132   while(iter != 0)
133     {
134       specification = specification|iter->fSpecification;
135       
136       cellDataPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)( iter->fPtr);
137       fShmPtr->SetMemory(cellDataPtr);
138       currentChannel = fShmPtr->NextChannel();
139       
140        while(currentChannel != 0)
141         {
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();
145         }
146
147       iter = GetNextInputBlock(); 
148     }
149
150   PushBack((TObject*) fCalibDataPtr,  AliHLTPHOSDefinitions::fgkEmcCalibDataType, specification);
151  
152   return 0; 
153 }
154   
155 Int_t AliHLTPHOSRcuCalibrationProcessorComponent::ShipDataToFXS( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/ ) {
156   // see header file for class documentation
157  
158   // ** PushBack data to FXS ...
159   PushToFXS( (TObject*) fCalibDataPtr, "PHOS", "calibHistoHLT" ) ;
160   
161   return 0;
162