1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 #include "AliMUONQAChecker.h"
20 /// \class AliMUONQAChecker
22 /// Implementation of AliQACheckerBase for MCH and MTR
24 /// \author Laurent Aphecetche, Subatech
26 #include "AliMUONRecoParam.h"
27 #include "AliMUONTrackerQAChecker.h"
28 #include "AliMUONTriggerQAChecker.h"
29 #include "AliCodeTimer.h"
32 ClassImp(AliMUONQAChecker)
35 //__________________________________________________________________
36 AliMUONQAChecker::AliMUONQAChecker() :
37 AliQACheckerBase("MUON","MUON Quality Assurance Data Maker"),
38 fCheckers(new TObjArray)
41 fCheckers->SetOwner(kTRUE);
42 fCheckers->Add(new AliMUONTrackerQAChecker());
43 fCheckers->Add(new AliMUONTriggerQAChecker());
46 //__________________________________________________________________
47 AliMUONQAChecker::~AliMUONQAChecker()
53 //______________________________________________________________________________
55 AliMUONQAChecker::Check(AliQAv1::ALITASK_t index,
57 const AliDetectorRecoParam * recoParam)
59 /// Check objects in list
61 AliCodeTimerAuto(AliQAv1::GetTaskName(index),0);
63 TIter next(fCheckers);
64 AliMUONVQAChecker* qac;
65 const AliMUONRecoParam* muonRecoParam = static_cast<const 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 )
73 while ( ( qac = static_cast<AliMUONVQAChecker*>(next())) )
75 if ( index == AliQAv1::kRAW )
77 ecc = qac->CheckRaws(list,muonRecoParam);
80 if ( index == AliQAv1::kREC)
82 ecc = qac->CheckRecPoints(list,muonRecoParam);
85 if ( index == AliQAv1::kESD )
87 ecc = qac->CheckESD(list,muonRecoParam);
92 for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i )
96 case AliMUONVQAChecker::kInfo:
99 case AliMUONVQAChecker::kWarning:
102 case AliMUONVQAChecker::kError:
105 case AliMUONVQAChecker::kFatal:
122 //______________________________________________________________________________
123 void AliMUONQAChecker::Init(const AliQAv1::DETECTORINDEX_t det)
125 /// intialises QA and QA checker settings
126 AliQAv1::Instance(det) ;
127 Float_t hiValue[AliQAv1::kNBIT] ;
128 Float_t lowValue[AliQAv1::kNBIT] ;
129 lowValue[AliQAv1::kINFO] = 0.999 ;
130 hiValue[AliQAv1::kINFO] = 1.0 ;
131 hiValue[AliQAv1::kWARNING] = 0.99 ;
132 lowValue[AliQAv1::kWARNING] = 0.5 ;
133 lowValue[AliQAv1::kERROR] = 0.0 ;
134 hiValue[AliQAv1::kERROR] = 0.5 ;
135 lowValue[AliQAv1::kFATAL] = -1.0 ;
136 hiValue[AliQAv1::kFATAL] = 0.0 ;
137 SetHiLo(&hiValue[0], &lowValue[0]) ;
140 //______________________________________________________________________________
142 AliMUONQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
144 /// sets the QA according the return value of the Check
146 AliQAv1 * qa = AliQAv1::Instance(index);
148 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
149 qa->UnSet(AliQAv1::kFATAL, specie);
150 qa->UnSet(AliQAv1::kWARNING, specie);
151 qa->UnSet(AliQAv1::kERROR, specie);
152 qa->UnSet(AliQAv1::kINFO, specie);
154 if ( ! value ) { // No checker is implemented, set all QA to Fatal
155 qa->Set(AliQAv1::kFATAL, specie) ;
157 if ( value[specie] >= fLowTestValue[AliQAv1::kFATAL] && value[specie] < fUpTestValue[AliQAv1::kFATAL] )
158 qa->Set(AliQAv1::kFATAL, specie) ;
159 else if ( value[specie] > fLowTestValue[AliQAv1::kERROR] && value[specie] <= fUpTestValue[AliQAv1::kERROR] )
160 qa->Set(AliQAv1::kERROR, specie) ;
161 else if ( value[specie] > fLowTestValue[AliQAv1::kWARNING] && value[specie] <= fUpTestValue[AliQAv1::kWARNING] )
162 qa->Set(AliQAv1::kWARNING, specie) ;
163 else if ( value[specie] > fLowTestValue[AliQAv1::kINFO] && value[specie] <= fUpTestValue[AliQAv1::kINFO] )
164 qa->Set(AliQAv1::kINFO, specie) ;