#include "AliMUONTrackerQAChecker.h"
#include "AliMUONTriggerQAChecker.h"
#include "AliCodeTimer.h"
+#include "AliMUONQAIndices.h"
/// \cond CLASSIMP
ClassImp(AliMUONQAChecker)
/// \endcond
+namespace
+{
+ const Int_t TRACKER=0;
+ const Int_t TRIGGER=1;
+}
+
//__________________________________________________________________
AliMUONQAChecker::AliMUONQAChecker() :
AliQACheckerBase("MUON","MUON Quality Assurance Data Maker"),
{
/// ctor
fCheckers->SetOwner(kTRUE);
- fCheckers->Add(new AliMUONTrackerQAChecker());
- fCheckers->Add(new AliMUONTriggerQAChecker());
+ fCheckers->AddAt(new AliMUONTrackerQAChecker(),TRACKER);
+ fCheckers->AddAt(new AliMUONTriggerQAChecker(),TRIGGER);
}
//__________________________________________________________________
}
//______________________________________________________________________________
-Double_t *
-AliMUONQAChecker::Check(AliQAv1::ALITASK_t index,
+void
+AliMUONQAChecker::Check(Double_t* rv, AliQAv1::ALITASK_t index,
TObjArray** list,
const AliDetectorRecoParam * recoParam)
{
AliCodeTimerAuto(AliQAv1::GetTaskName(index),0);
- TIter next(fCheckers);
- AliMUONVQAChecker* qac;
const AliMUONRecoParam* muonRecoParam = static_cast<const AliMUONRecoParam*>(recoParam);
AliMUONVQAChecker::ECheckCode* ecc(0x0);
- Double_t* rv = new Double_t[AliRecoParam::kNSpecies];
+
for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i )
{
rv[i] = -1.0;
}
- while ( ( qac = static_cast<AliMUONVQAChecker*>(next())) )
+ for ( Int_t ic = 0; ic <= fCheckers->GetLast(); ++ic )
{
+ if ( ic != TRACKER && ic != TRIGGER ) continue;
+
+ Bool_t trackerRequested(kFALSE);
+ Bool_t triggerRequested(kFALSE);
+
+ for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i )
+ {
+ // no need to take into account detector that was not requested
+ if ( ic == TRACKER && AliQAv1::GetData(list,AliMUONQAIndices::kTrackerIsThere,AliRecoParam::ConvertIndex(i)) ) trackerRequested=kTRUE;
+ if ( ic == TRIGGER && AliQAv1::GetData(list,AliMUONQAIndices::kTriggerIsThere,AliRecoParam::ConvertIndex(i)) ) triggerRequested=kTRUE;
+ }
+
+ if ( ic == TRACKER && !trackerRequested )
+ {
+ AliInfo("Skipping tracker check as tracker not requested");
+ continue;
+ }
+
+ if ( ic == TRIGGER && !triggerRequested )
+ {
+ AliInfo("Skipping trigger check as trigger not requested");
+ continue;
+ }
+
+ AliMUONVQAChecker* qac = static_cast<AliMUONVQAChecker*>(fCheckers->At(ic));
+
if ( index == AliQAv1::kRAW )
{
ecc = qac->CheckRaws(list,muonRecoParam);
{
for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i )
{
+ // no need to take into account detector that was not requested
+ if ( ic == TRACKER && AliQAv1::GetData(list,AliMUONQAIndices::kTrackerIsThere,AliRecoParam::ConvertIndex(i))==0x0 ) continue;
+ if ( ic == TRIGGER && AliQAv1::GetData(list,AliMUONQAIndices::kTriggerIsThere,AliRecoParam::ConvertIndex(i))==0x0 ) continue;
+
switch ( ecc[i] )
{
case AliMUONVQAChecker::kInfo:
rv[i] = -1.0;
break;
default:
+ AliError("Invalid ecc value. FIXME !");
rv[i] = -1.0;
break;
}
}
}
+
+ delete[] ecc;
}
-
- delete[] ecc;
-
- return rv;
}
//______________________________________________________________________________
hiValue[AliQAv1::kFATAL] = 0.0 ;
SetHiLo(&hiValue[0], &lowValue[0]) ;
}
-
-//______________________________________________________________________________
-void
-AliMUONQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
-{
- /// sets the QA according the return value of the Check
-
- AliQAv1 * qa = AliQAv1::Instance(index);
-
- for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
- qa->UnSet(AliQAv1::kFATAL, specie);
- qa->UnSet(AliQAv1::kWARNING, specie);
- qa->UnSet(AliQAv1::kERROR, specie);
- qa->UnSet(AliQAv1::kINFO, specie);
-
- if ( ! value ) { // No checker is implemented, set all QA to Fatal
- qa->Set(AliQAv1::kFATAL, specie) ;
- } else {
- if ( value[specie] >= fLowTestValue[AliQAv1::kFATAL] && value[specie] < fUpTestValue[AliQAv1::kFATAL] )
- qa->Set(AliQAv1::kFATAL, specie) ;
- else if ( value[specie] > fLowTestValue[AliQAv1::kERROR] && value[specie] <= fUpTestValue[AliQAv1::kERROR] )
- qa->Set(AliQAv1::kERROR, specie) ;
- else if ( value[specie] > fLowTestValue[AliQAv1::kWARNING] && value[specie] <= fUpTestValue[AliQAv1::kWARNING] )
- qa->Set(AliQAv1::kWARNING, specie) ;
- else if ( value[specie] > fLowTestValue[AliQAv1::kINFO] && value[specie] <= fUpTestValue[AliQAv1::kINFO] )
- qa->Set(AliQAv1::kINFO, specie) ;
- }
- }
-}