Porting HLT doxygen documentation to cmake
[u/mrichter/AliRoot.git] / HLT / ITS / AliHLTITSQAComponent.cxx
CommitLineData
1fe3ca76 1// $Id$
2//**************************************************************************
3//* This file is property of and copyright by the ALICE HLT Project *
4//* ALICE Experiment at CERN, All rights reserved. *
5//* *
6//* Primary Authors: Piergiorgio Cerello <cerello@to.infn.it> *
7//* for The ALICE HLT Project. *
8//* *
9//* Permission to use, copy, modify and distribute this software and its *
10//* documentation strictly for non-commercial purposes is hereby granted *
11//* without fee, provided that the above copyright notice appears in all *
12//* copies and that both the copyright notice and this permission notice *
13//* appear in the supporting documentation. The authors make no claims *
14//* about the suitability of this software for any purpose. It is *
15//* provided "as is" without express or implied warranty. *
16//**************************************************************************
17
ebf7a8e8 18/// @file AliHLTITSQAComponent.cxx
1fe3ca76 19/// @author Piergiorgio Cerello cerello@to.infn.it
20/// @date 2009-07-03
21/// @brief Interface component to the ITS QA
22
1fe3ca76 23#include "AliHLTITSQAComponent.h"
24#include "AliHLTITSClusterDataFormat.h"
25#include "AliCDBEntry.h"
26#include "AliCDBManager.h"
27#include "AliITSRecPoint.h"
28#include <TFile.h>
29#include <TString.h>
30#include "TObjString.h"
31#include "TObjArray.h"
32
1fe3ca76 33//#include <stdlib.h>
34//#include <cerrno>
35
8e0f6ca3 36using namespace std;
37
1fe3ca76 38/** ROOT macro for the implementation of ROOT specific class methods */
39ClassImp(AliHLTITSQAComponent)
40
41AliHLTITSQAComponent::AliHLTITSQAComponent()
42:
43fAliITSQADataMakerRec(NULL)
44{
45 // see header file for class documentation
46 // or
47 // refer to README to build package
48 // or
49 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
50
51}
52
53AliHLTITSQAComponent::~AliHLTITSQAComponent()
54{
55 // see header file for class documentation
56}
57
58// Public functions to implement AliHLTComponent's interface.
59// These functions are required for the registration process
60
61const char* AliHLTITSQAComponent::GetComponentID()
62{
63 // see header file for class documentation
64
65 return "ITSClusterQA";
66}
67
68void AliHLTITSQAComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list)
69{
70 // see header file for class documentation
71 list.clear();
72 list.push_back( kAliHLTDataTypeTObjArray );
73}
74
75AliHLTComponentDataType AliHLTITSQAComponent::GetOutputDataType()
76{
77 // see header file for class documentation
78 return kAliHLTDataTypeHistogram;
79
80}
81
82void AliHLTITSQAComponent::GetOutputDataSize( unsigned long& constBase, double& inputMultiplier )
83{
84 // see header file for class documentation
85 // XXX TODO: Find more realistic values.
86 constBase = 80000;
87 inputMultiplier = 10;
88}
89
90AliHLTComponent* AliHLTITSQAComponent::Spawn()
91{
92 // see header file for class documentation
93 return new AliHLTITSQAComponent;
94}
95
96int AliHLTITSQAComponent::DoInit( int argc, const char** argv )
97{
98// add AliITSQADataMakerRec constructor
99 fAliITSQADataMakerRec = new AliITSQADataMakerRec();
100 int iResult=0;
101 TString configuration="";
102 TString argument="";
103 for (int i=0; i<argc && iResult>=0; i++) {
104 argument=argv[i];
105 if (!configuration.IsNull()) configuration+=" ";
106 configuration+=argument;
107 }
108
109 if (!configuration.IsNull()) {
110 iResult=Configure(configuration.Data());
111 }
112
113 return iResult;
114}
115
116int AliHLTITSQAComponent::DoDeinit()
117{
118 // see header file for class documentation
119// add AliITSQADataMakerRec destruction
120 if(fAliITSQADataMakerRec) delete fAliITSQADataMakerRec;
121 return 0;
122}
123
124int AliHLTITSQAComponent::DoEvent(const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/)
125{
126
127 int TotalSpacePoint = 0;
128
129 const AliHLTComponentBlockData* iter = NULL;
130
131 if(!IsDataEvent())
132 return 0;
133
134 static Int_t rp = 1;
135 // Check id histograms already created for this Event Specie
136 if ( rp ) { fAliITSQADataMakerRec->InitRecPoints(); rp = 0; }
137 for ( iter = GetFirstInputBlock(kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD); iter != NULL; iter = GetNextInputBlock() ) {
138
139 const AliHLTITSClusterData* clusterData = (const AliHLTITSClusterData*) iter->fPtr;
140 Int_t nSpacepoint = (Int_t) clusterData->fSpacePointCnt;
141 TotalSpacePoint += nSpacepoint;
142 AliHLTITSSpacePointData *clusters = (AliHLTITSSpacePointData*) clusterData->fSpacePoints;
143
144 for(int i=0;i<nSpacepoint;i++){
145 Int_t lab[4]={0,0,0,0};
146 Float_t hit[6]={0,0,0,0,0,0};
147 Int_t info[3]={0,0,0};
148
149 lab[0]=clusters[i].fTracks[0];
150 lab[1]=clusters[i].fTracks[1];
151 lab[2]=clusters[i].fTracks[2];
152 lab[3]=clusters[i].fIndex;
153 hit[0]=clusters[i].fY;
154 hit[1]=clusters[i].fZ;
155 hit[2]=clusters[i].fSigmaY2;
156 hit[3]=clusters[i].fSigmaZ2;
157 hit[4]=clusters[i].fQ;
158 hit[5]=clusters[i].fSigmaYZ;
159 info[0]=clusters[i].fNy;
160 info[1]=clusters[i].fNz;
161 info[2]=clusters[i].fLayer;
162
163 AliITSRecPoint recpoint(lab,hit,info);
64f27b26 164 fAliITSQADataMakerRec->FillRecPoint(recpoint);
1fe3ca76 165 }
166 }
167 for(Int_t i=0; i<6; i++) {
168 //if(fPlotCharge){
64f27b26 169 AliHLTUInt32_t specification = 0x0;
170 PushBack( (TObject*) fAliITSQADataMakerRec->GetITSGlobalHisto(i),kAliHLTDataTypeHistogram,specification);
1fe3ca76 171 //}
172 }
173 HLTInfo("ITSClusterHisto found %d Total Spacepoints", TotalSpacePoint);
174
175 return 0;
176}
177
178int AliHLTITSQAComponent::Configure(const char* arguments)
179{
180
181 int iResult=0;
182
183 if (!arguments) return iResult;
184
185 TString allArgs=arguments;
186 TString argument;
187
188 TObjArray* pTokens=allArgs.Tokenize(" ");
189
190 if (pTokens) {
191 for (int i=0; i<pTokens->GetEntries() && iResult>=0; i++) {
192 argument=((TObjString*)pTokens->At(i))->GetString();
193 if (argument.IsNull()) continue;
194/*
195 if (argument.CompareTo("-plot-all")==0) {
196 HLTInfo("Ploting all historgams");
197 fPlotXY = kTRUE;
198 fPlotXYZ = kTRUE;
199 fPlotCharge = kTRUE;
200 continue;
201 }
202 else if (argument.CompareTo("-plot-xy")==0) {
203 HLTInfo("Ploting Global XY");
204 fPlotXY = kTRUE;
205 continue;
206 }
207
208 else if (argument.CompareTo("-plot-xyz")==0) {
209 HLTInfo("Ploting Global XYZ");
210 //fPlotXYZ = kTRUE;
211 continue;
212 }
213 else if (argument.CompareTo("-plot-charge")==0) {
214 HLTInfo("Ploting charge of clusters");
215 fPlotCharge = kTRUE;
216 continue;
217 }
218*/
219 else {
220 HLTError("unknown argument %s", argument.Data());
221 iResult=-EINVAL;
222 break;
223 }
224 }
225 delete pTokens;
226 }
227
228 return iResult;
229}
230
231int AliHLTITSQAComponent::Reconfigure(const char* cdbEntry, const char* chainId)
232{
233 // see header file for class documentation
234 int iResult=0;
235
236 const char* path="HLT/ConfigITS/HistoComponent";
237 const char* defaultNotify="";
238 if (cdbEntry) {
239 path=cdbEntry;
240 defaultNotify=" (default)";
241 }
242 if (path) {
243 HLTInfo("reconfigure from entry %s%s, chain id %s", path, defaultNotify,(chainId!=NULL && chainId[0]!=0)?chainId:"<none>");
244 AliCDBEntry *pEntry = AliCDBManager::Instance()->Get(path);
245 if (pEntry) {
246 TObjString* pString=dynamic_cast<TObjString*>(pEntry->GetObject());
247 if (pString) {
248 HLTInfo("received configuration object string: \'%s\'", pString->GetString().Data());
249 iResult=Configure(pString->GetString().Data());
250 } else {
251 HLTError("configuration object \"%s\" has wrong type, required TObjString", path);
252 }
253 } else {
254 HLTError("can not fetch object \"%s\" from CDB", path);
255 }
256 }
257
258 return iResult;
259}