]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONQAChecker.cxx
Init full store at once to avoid confusing its normal growth with a memory leak
[u/mrichter/AliRoot.git] / MUON / AliMUONQAChecker.cxx
... / ...
CommitLineData
1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16// $Id$
17
18#include "AliMUONQAChecker.h"
19
20/// \class AliMUONQAChecker
21///
22/// Implementation of AliQACheckerBase for MCH and MTR
23///
24/// \author Laurent Aphecetche, Subatech
25
26#include "AliMUONRecoParam.h"
27#include "AliMUONTrackerQAChecker.h"
28#include "AliMUONTriggerQAChecker.h"
29#include "AliCodeTimer.h"
30
31/// \cond CLASSIMP
32ClassImp(AliMUONQAChecker)
33/// \endcond
34
35//__________________________________________________________________
36AliMUONQAChecker::AliMUONQAChecker() :
37 AliQACheckerBase("MUON","MUON Quality Assurance Data Maker"),
38fCheckers(new TObjArray)
39{
40 /// ctor
41 fCheckers->SetOwner(kTRUE);
42 fCheckers->Add(new AliMUONTrackerQAChecker());
43 fCheckers->Add(new AliMUONTriggerQAChecker());
44}
45
46//__________________________________________________________________
47AliMUONQAChecker::~AliMUONQAChecker()
48{
49 /// dtor
50 delete fCheckers;
51}
52
53//______________________________________________________________________________
54Double_t *
55AliMUONQAChecker::Check(AliQAv1::ALITASK_t index,
56 TObjArray** list,
57 AliDetectorRecoParam * recoParam)
58{
59 /// Check objects in list
60
61 AliCodeTimerAuto(AliQAv1::GetTaskName(index),0);
62
63 TIter next(fCheckers);
64 AliMUONVQAChecker* qac;
65 AliMUONRecoParam* muonRecoParam = static_cast<AliMUONRecoParam*>(recoParam);
66 AliMUONVQAChecker::ECheckCode* ecc(0x0);
67 Double_t* rv = new Double_t[AliRecoParam::kNSpecies];
68 for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i )
69 {
70 rv[i] = -1.0;
71 }
72
73 while ( ( qac = static_cast<AliMUONVQAChecker*>(next())) )
74 {
75 if ( index == AliQAv1::kRAW )
76 {
77 ecc = qac->CheckRaws(list,muonRecoParam);
78 }
79
80 if ( index == AliQAv1::kREC)
81 {
82 ecc = qac->CheckRecPoints(list,muonRecoParam);
83 }
84
85 if ( index == AliQAv1::kESD )
86 {
87 ecc = qac->CheckESD(list,muonRecoParam);
88 }
89
90 if ( ecc )
91 {
92 for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i )
93 {
94 switch ( ecc[i] )
95 {
96 case AliMUONVQAChecker::kInfo:
97 rv[i] = 1.0;
98 break;
99 case AliMUONVQAChecker::kWarning:
100 rv[i] = 0.75;
101 break;
102 case AliMUONVQAChecker::kError:
103 rv[i] = 0.25;
104 break;
105 case AliMUONVQAChecker::kFatal:
106 rv[i] = -1.0;
107 break;
108 default:
109 rv[i] = -1.0;
110 break;
111 }
112 }
113 }
114 }
115
116 delete[] ecc;
117
118 return rv;
119}
120
121//______________________________________________________________________________
122void AliMUONQAChecker::Init(const AliQAv1::DETECTORINDEX_t det)
123{
124 /// intialises QA and QA checker settings
125 AliQAv1::Instance(det) ;
126 Float_t hiValue[AliQAv1::kNBIT] ;
127 Float_t lowValue[AliQAv1::kNBIT] ;
128 lowValue[AliQAv1::kINFO] = 0.999 ;
129 hiValue[AliQAv1::kINFO] = 1.0 ;
130 hiValue[AliQAv1::kWARNING] = 0.99 ;
131 lowValue[AliQAv1::kWARNING] = 0.5 ;
132 lowValue[AliQAv1::kERROR] = 0.0 ;
133 hiValue[AliQAv1::kERROR] = 0.5 ;
134 lowValue[AliQAv1::kFATAL] = -1.0 ;
135 hiValue[AliQAv1::kFATAL] = 0.0 ;
136 SetHiLo(&hiValue[0], &lowValue[0]) ;
137}
138
139//______________________________________________________________________________
140void
141AliMUONQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
142{
143 /// sets the QA according the return value of the Check
144
145 AliQAv1 * qa = AliQAv1::Instance(index);
146
147 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
148 qa->UnSet(AliQAv1::kFATAL, specie);
149 qa->UnSet(AliQAv1::kWARNING, specie);
150 qa->UnSet(AliQAv1::kERROR, specie);
151 qa->UnSet(AliQAv1::kINFO, specie);
152
153 if ( ! value ) { // No checker is implemented, set all QA to Fatal
154 qa->Set(AliQAv1::kFATAL, specie) ;
155 } else {
156 if ( value[specie] >= fLowTestValue[AliQAv1::kFATAL] && value[specie] < fUpTestValue[AliQAv1::kFATAL] )
157 qa->Set(AliQAv1::kFATAL, specie) ;
158 else if ( value[specie] > fLowTestValue[AliQAv1::kERROR] && value[specie] <= fUpTestValue[AliQAv1::kERROR] )
159 qa->Set(AliQAv1::kERROR, specie) ;
160 else if ( value[specie] > fLowTestValue[AliQAv1::kWARNING] && value[specie] <= fUpTestValue[AliQAv1::kWARNING] )
161 qa->Set(AliQAv1::kWARNING, specie) ;
162 else if ( value[specie] > fLowTestValue[AliQAv1::kINFO] && value[specie] <= fUpTestValue[AliQAv1::kINFO] )
163 qa->Set(AliQAv1::kINFO, specie) ;
164 }
165 }
166}