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(Double_t* rv, 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);
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:
119 //______________________________________________________________________________
120 void AliMUONQAChecker::Init(const AliQAv1::DETECTORINDEX_t det)
122 /// intialises QA and QA checker settings
123 AliQAv1::Instance(det) ;
124 Float_t hiValue[AliQAv1::kNBIT] ;
125 Float_t lowValue[AliQAv1::kNBIT] ;
126 lowValue[AliQAv1::kINFO] = 0.999 ;
127 hiValue[AliQAv1::kINFO] = 1.0 ;
128 hiValue[AliQAv1::kWARNING] = 0.99 ;
129 lowValue[AliQAv1::kWARNING] = 0.5 ;
130 lowValue[AliQAv1::kERROR] = 0.0 ;
131 hiValue[AliQAv1::kERROR] = 0.5 ;
132 lowValue[AliQAv1::kFATAL] = -1.0 ;
133 hiValue[AliQAv1::kFATAL] = 0.0 ;
134 SetHiLo(&hiValue[0], &lowValue[0]) ;
137 //______________________________________________________________________________
139 AliMUONQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
141 /// sets the QA according the return value of the Check
143 AliQAv1 * qa = AliQAv1::Instance(index);
145 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
146 qa->UnSet(AliQAv1::kFATAL, specie);
147 qa->UnSet(AliQAv1::kWARNING, specie);
148 qa->UnSet(AliQAv1::kERROR, specie);
149 qa->UnSet(AliQAv1::kINFO, specie);
151 if ( ! value ) { // No checker is implemented, set all QA to Fatal
152 qa->Set(AliQAv1::kFATAL, specie) ;
154 if ( value[specie] >= fLowTestValue[AliQAv1::kFATAL] && value[specie] < fUpTestValue[AliQAv1::kFATAL] )
155 qa->Set(AliQAv1::kFATAL, specie) ;
156 else if ( value[specie] > fLowTestValue[AliQAv1::kERROR] && value[specie] <= fUpTestValue[AliQAv1::kERROR] )
157 qa->Set(AliQAv1::kERROR, specie) ;
158 else if ( value[specie] > fLowTestValue[AliQAv1::kWARNING] && value[specie] <= fUpTestValue[AliQAv1::kWARNING] )
159 qa->Set(AliQAv1::kWARNING, specie) ;
160 else if ( value[specie] > fLowTestValue[AliQAv1::kINFO] && value[specie] <= fUpTestValue[AliQAv1::kINFO] )
161 qa->Set(AliQAv1::kINFO, specie) ;