]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONQAChecker.cxx
Incrementing class version in AliMUONLocalTrigger, which was forgotten
[u/mrichter/AliRoot.git] / MUON / AliMUONQAChecker.cxx
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
32 ClassImp(AliMUONQAChecker)
33 /// \endcond
34
35 //__________________________________________________________________
36 AliMUONQAChecker::AliMUONQAChecker() : 
37     AliQACheckerBase("MUON","MUON Quality Assurance Data Maker"),
38 fCheckers(new TObjArray)
39 {
40         /// ctor
41   fCheckers->SetOwner(kTRUE);
42   fCheckers->Add(new AliMUONTrackerQAChecker());
43   fCheckers->Add(new AliMUONTriggerQAChecker());
44 }          
45
46 //__________________________________________________________________
47 AliMUONQAChecker::~AliMUONQAChecker() 
48 {
49         /// dtor
50   delete fCheckers;
51 }
52
53 //______________________________________________________________________________
54 Double_t *
55 AliMUONQAChecker::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 //______________________________________________________________________________
122 void 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 //______________________________________________________________________________
140 void 
141 AliMUONQAChecker::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 }