Cosmetic changes
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSRawAnalyzerComponent.cxx
1
2 /**************************************************************************
3  * Copyright(c) 2006, ALICE Experiment at CERN, All rights reserved.      *
4  *                                                                        *
5  * Author: Per Thomas Hille for the ALICE HLT Project.                    *
6  * Contributors are mentioned in the code where appropriate.              *
7  *                                                                        *
8  * Permission to use, copy, modify and distribute this software and its   *
9  * documentation strictly for non-commercial purposes is hereby granted   *
10  * without fee, provided that the above copyright notice appears in all   *
11  * copies and that both the copyright notice and this permission notice   *
12  * appear in the supporting documentation. The authors make no claims     *
13  * about the suitability of this software for any purpose. It is          *
14  * provided "as is" without express or implied warranty.                  *
15  **************************************************************************/
16
17 #include "AliHLTPHOSRawAnalyzerComponent.h"
18 #include <iostream>
19 #include "stdio.h"
20
21 #include "AliRawReaderMemory.h"
22 #include "AliCaloRawStream.h"
23 #include <cstdlib>
24 //#include "TH2.h"
25
26 //#include "AliHLTTPCDefinitions.h"
27
28 const AliHLTComponentDataType AliHLTPHOSRawAnalyzerComponent::inputDataTypes[]={kAliHLTVoidDataType,{0,"",""}}; //'zero' terminated array
29 const AliHLTComponentDataType AliHLTPHOSRawAnalyzerComponent::outputDataType=kAliHLTVoidDataType;
30
31
32 //AliHLTPHOSRawAnalyzerComponent gAliHLTPHOSRawAnalyzerComponent;
33 //ClassImp(AliHLTPHOSRawAnalyzerComponent) 
34 AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent():AliHLTProcessor(),  fEventCount(0),  fEquippmentId(0), fPHOSRawStream(), fRawMemoryReader(0)
35 {
36   //  fRawMemoryReader = NULL;
37
38
39 AliHLTPHOSRawAnalyzerComponent::~AliHLTPHOSRawAnalyzerComponent()
40 {
41   if(fRawMemoryReader != 0)
42     {
43       delete fRawMemoryReader;
44     }
45     if(fPHOSRawStream != 0)
46     {
47       delete fPHOSRawStream;
48     }
49
50 }
51
52
53
54 AliHLTPHOSRawAnalyzerComponent::AliHLTPHOSRawAnalyzerComponent(const AliHLTPHOSRawAnalyzerComponent & ) : AliHLTProcessor(),  fEventCount(0),  fEquippmentId(0), fPHOSRawStream(),fRawMemoryReader(0)
55 {
56   //  fRawMemoryReader = NULL;
57 }
58
59
60 int 
61 AliHLTPHOSRawAnalyzerComponent::Deinit()
62 {
63   return 0;
64 }
65
66 int 
67 AliHLTPHOSRawAnalyzerComponent::DoDeinit()
68 {
69   Logging(kHLTLogInfo, "HLT", "PHOS", ",AliHLTPHOSRawAnalyzerComponen DoDeinit");
70
71   if(fRawMemoryReader !=0)
72     {
73       delete fRawMemoryReader;
74     }
75     
76   if(fPHOSRawStream != 0)
77     {
78       delete fPHOSRawStream;
79     }
80   return 0;
81
82 }
83
84 const char* 
85 AliHLTPHOSRawAnalyzerComponent::GetComponentID()
86 {
87   return "AliPhosTestRaw";
88 }
89
90 void
91 AliHLTPHOSRawAnalyzerComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
92 {
93   const AliHLTComponentDataType* pType=inputDataTypes;
94   while (pType->fID!=0) {
95     list.push_back(*pType);
96     pType++;
97   }
98 }
99
100 AliHLTComponentDataType 
101 AliHLTPHOSRawAnalyzerComponent::GetOutputDataType()
102 {
103   return outputDataType;
104 }
105
106 void
107 AliHLTPHOSRawAnalyzerComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier )
108
109 {
110   constBase = 30;
111   inputMultiplier = 0.1;
112 }
113
114
115 int AliHLTPHOSRawAnalyzerComponent::DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
116                                               AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
117                                               AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks )
118 {
119
120   Int_t tmpMod  = 0;
121   Int_t tmpRow  = 0;
122   Int_t tmpCol  = 0;
123   Int_t tmpGain = 0;
124   Int_t processedChannels = 0;
125
126   //  AliHLTUInt8_t *tmpOut = &((AliHLTUInt8_t)(GetEquippmentId()));
127
128   AliHLTUInt8_t *tmpOut =( AliHLTUInt8_t*)&fEquippmentId;
129
130   outputPtr[0] = tmpOut[0];
131   outputPtr[1] = tmpOut[1];
132
133   AliHLTUInt16_t  tmpID = *((AliHLTUInt16_t*)(outputPtr));
134
135   cout << "OutputBuffer setting equippment ID to " << tmpID << endl;
136
137   //  Int_t tmpMax  = 0;
138   const AliHLTComponentBlockData* iter = NULL; 
139   unsigned long ndx;
140   Reset();
141
142   for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
143     {
144       iter = blocks+ndx;
145
146       if ( iter->fDataType != AliHLTPHOSDefinitions::gkDDLPackedRawDataType )
147         {
148           cout << "Warning: data type = is nOT gkDDLPackedRawDataType " << endl;
149           continue;
150         }
151
152      fRawMemoryReader->SetMemory( reinterpret_cast<UChar_t*>( iter->fPtr ), iter->fSize );
153      fRawMemoryReader->DumpData();
154      fRawMemoryReader->RewindEvents();
155      analyzerPtr->SetData(fTmpChannelData);
156  
157       while(fPHOSRawStream->Next())
158         {
159           if (fPHOSRawStream->IsNewHWAddress())
160             {
161               if(processedChannels > 0)
162                 {
163                   analyzerPtr->SetData(fTmpChannelData);
164                   analyzerPtr->Evaluate(0, 1008);
165                   fMaxValues[tmpMod][tmpRow][tmpCol][tmpGain] = analyzerPtr->GetEnergy();
166                   ResetDataPtr(); 
167                 }
168
169               tmpMod  =  fPHOSRawStream->GetModule();
170               tmpRow  =  fPHOSRawStream->GetRow();
171               tmpCol  =  fPHOSRawStream->GetColumn();
172               tmpGain =  fPHOSRawStream->IsLowGain(); 
173               processedChannels ++;
174             }
175
176           fTmpChannelData[fPHOSRawStream->GetTime()] =  fPHOSRawStream->GetSignal();
177         }
178     }
179   DumpData();
180   fEventCount++; 
181   return 0;
182 }//end DoEvent
183
184
185
186 int
187 AliHLTPHOSRawAnalyzerComponent::DoInit( int argc, const char** argv )
188 {
189   cout << "DOINIT argc =" << argc << endl;
190   cout << "DOINIT argv[0] =" << argv[0] << endl;
191   cout << "DOINIT argv[1] =" << argv[1] << endl;
192   cout << "DOINIT argv[2] =" << argv[2] << endl;
193   cout << "DOINIT argv[3] =" << argv[3] << endl;
194   cout << "DOINIT argv[4] =" << argv[4] << endl;
195   cout << "DOINIT argv[5] =" << argv[5] << endl;
196   cout << "DOINIT argv[6] =" << argv[6] << endl;
197  
198   int equippmentId = atoi(argv[6]);
199   cout << "The equipment ID was set to " <<equippmentId << endl;
200   
201  //fRawMemoryReader->SetEquipmentID(1806); 
202
203   Reset();
204   cout << "AliHLTPHOSRawAnalyzerComponent::DoInit Creating new  AliRawReaderMemory()" << endl; 
205   //legoPlotPtr   = new TH2S("Lego plot 1","Phi0 20Gev, High gain", 56*5, 0, 56*5, 64, 0, 64);
206   fRawMemoryReader = new AliRawReaderMemory();
207   fPHOSRawStream = new  AliCaloRawStream(fRawMemoryReader,"PHOS");
208   fRawMemoryReader->SetEquipmentID(equippmentId); 
209
210   SetEquippmentId(equippmentId);
211
212   cout <<"AliHLTPHOSRawAnalyzerComponent::DoIni  DONE!" << endl;
213   if (argc==0 && argv==NULL) {
214     // this is currently just to get rid of the warning "unused parameter"
215   }
216   return 0;
217 }
218
219 void
220 AliHLTPHOSRawAnalyzerComponent::DumpData()
221 {
222   for(int mod = 0; mod <5; mod ++)
223     {
224       printf("\n ***********  MODULE %d ************\n", mod);
225       for(int row = 0; row < 64; row ++)
226         {
227           for(int col = 0; col < 56; col ++)
228             {
229               if( fMaxValues[mod][row][col][0] != 0)
230                 { 
231                   cout << fMaxValues[mod][row][col][0] << "\t";
232                 }
233             }
234         } 
235     }
236 }
237
238
239 void
240 AliHLTPHOSRawAnalyzerComponent::Reset()
241 {
242   for(int mod = 0; mod <5; mod ++)
243     {
244       for(int row = 0; row < 64; row ++)
245         {
246           for(int col = 0; col < 56; col ++)
247             {
248               for(int gain = 0; gain <2; gain ++ )
249                 {
250                   fMaxValues[mod][row][col][gain] = 0;
251                 }
252             }
253         }
254     }
255
256   for(int i = 0 ; i< 1008; i++)
257     {
258       fTmpChannelData[i] = 0;
259     }
260 } // end Reset
261
262 void
263 AliHLTPHOSRawAnalyzerComponent::ResetDataPtr()
264 {
265   for(int i = 0 ; i< 1008; i++)
266     {
267       fTmpChannelData[i] = 0;
268     }
269 }
270
271
272 void 
273 AliHLTPHOSRawAnalyzerComponent::SetEquippmentId(int id)
274 {
275   fEquippmentId = id;
276 }
277
278 int 
279 AliHLTPHOSRawAnalyzerComponent::GetEquippmentId()
280 {
281   return  fEquippmentId;
282 }