LCOV - code coverage report
Current view: top level - MUON/MUONbase - AliMUONQAChecker.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 8 69 11.6 %
Date: 2016-06-14 17:26:59 Functions: 3 8 37.5 %

          Line data    Source code
       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             : #include "AliMUONQAIndices.h"
      31             : 
      32             : /// \cond CLASSIMP
      33          18 : ClassImp(AliMUONQAChecker)
      34             : /// \endcond
      35             : 
      36             : namespace
      37             : {
      38             :   const Int_t TRACKER=0;
      39             :   const Int_t TRIGGER=1;
      40             : }
      41             : 
      42             : //__________________________________________________________________
      43             : AliMUONQAChecker::AliMUONQAChecker() : 
      44           2 :     AliQACheckerBase("MUON","MUON Quality Assurance Data Maker"),
      45           6 : fCheckers(new TObjArray)
      46          10 : {
      47             :         /// ctor
      48           2 :   fCheckers->SetOwner(kTRUE);
      49           6 :   fCheckers->AddAt(new AliMUONTrackerQAChecker(),TRACKER);
      50           6 :   fCheckers->AddAt(new AliMUONTriggerQAChecker(),TRIGGER);
      51           4 : }          
      52             : 
      53             : //__________________________________________________________________
      54             : AliMUONQAChecker::~AliMUONQAChecker() 
      55           0 : {
      56             :         /// dtor
      57           0 :   delete fCheckers;
      58           0 : }
      59             : 
      60             : //______________________________________________________________________________
      61             : void
      62             : AliMUONQAChecker::Check(Double_t* rv, AliQAv1::ALITASK_t index, 
      63             :                         TObjArray** list, 
      64             :                         const AliDetectorRecoParam * recoParam)
      65             : {
      66             :   /// Check objects in list
      67             :   
      68           0 :   AliCodeTimerAuto(AliQAv1::GetTaskName(index),0);
      69             :   
      70           0 :   const AliMUONRecoParam* muonRecoParam = static_cast<const AliMUONRecoParam*>(recoParam);
      71             :   AliMUONVQAChecker::ECheckCode* ecc(0x0);
      72             : 
      73           0 :   for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i ) 
      74             :   {
      75           0 :     rv[i] = -1.0;
      76             :   }
      77             :   
      78           0 :   for ( Int_t ic = 0; ic <= fCheckers->GetLast(); ++ic )
      79             :   {
      80           0 :     if ( ic != TRACKER && ic != TRIGGER ) continue;
      81             : 
      82             :     Bool_t trackerRequested(kFALSE);
      83             :     Bool_t triggerRequested(kFALSE);
      84             :     
      85           0 :     for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i ) 
      86             :     {
      87             :       // no need to take into account detector that was not requested
      88           0 :       if ( ic == TRACKER && AliQAv1::GetData(list,AliMUONQAIndices::kTrackerIsThere,AliRecoParam::ConvertIndex(i)) ) trackerRequested=kTRUE;
      89           0 :       if ( ic == TRIGGER && AliQAv1::GetData(list,AliMUONQAIndices::kTriggerIsThere,AliRecoParam::ConvertIndex(i)) ) triggerRequested=kTRUE;
      90             :     }
      91             :     
      92           0 :     if ( ic == TRACKER && !trackerRequested ) 
      93             :     {
      94           0 :       AliInfo("Skipping tracker check as tracker not requested");
      95           0 :       continue;      
      96             :     }
      97             :     
      98           0 :     if ( ic == TRIGGER && !triggerRequested ) 
      99             :     {
     100           0 :       AliInfo("Skipping trigger check as trigger not requested");
     101           0 :       continue;      
     102             :     }
     103             :     
     104           0 :     AliMUONVQAChecker* qac = static_cast<AliMUONVQAChecker*>(fCheckers->At(ic));
     105             :     
     106           0 :     if ( index == AliQAv1::kRAW ) 
     107             :     {    
     108           0 :       ecc = qac->CheckRaws(list,muonRecoParam);
     109           0 :     }
     110             : 
     111           0 :     if ( index == AliQAv1::kREC)
     112             :     {
     113           0 :       ecc = qac->CheckRecPoints(list,muonRecoParam);
     114           0 :     }
     115             :     
     116           0 :     if ( index == AliQAv1::kESD )
     117             :     {
     118           0 :       ecc = qac->CheckESD(list,muonRecoParam);
     119           0 :     }
     120             :     
     121           0 :     if ( ecc ) 
     122             :     {
     123           0 :       for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i ) 
     124             :       {
     125             :         // no need to take into account detector that was not requested
     126           0 :         if ( ic == TRACKER && AliQAv1::GetData(list,AliMUONQAIndices::kTrackerIsThere,AliRecoParam::ConvertIndex(i))==0x0 ) continue;
     127           0 :         if ( ic == TRIGGER && AliQAv1::GetData(list,AliMUONQAIndices::kTriggerIsThere,AliRecoParam::ConvertIndex(i))==0x0 ) continue;
     128             :                 
     129           0 :         switch ( ecc[i] ) 
     130             :         {
     131             :           case AliMUONVQAChecker::kInfo:
     132           0 :             rv[i] = 1.0;
     133           0 :             break;
     134             :           case AliMUONVQAChecker::kWarning:
     135           0 :             rv[i] = 0.75;
     136           0 :             break;
     137             :           case AliMUONVQAChecker::kError:
     138           0 :             rv[i] = 0.25;
     139           0 :             break;
     140             :           case AliMUONVQAChecker::kFatal:
     141           0 :             rv[i] = -1.0;
     142           0 :             break;
     143             :           default:
     144           0 :             AliError("Invalid ecc value. FIXME !");
     145           0 :             rv[i] = -1.0;
     146           0 :             break;
     147             :         }
     148             :       }
     149           0 :     }
     150             : 
     151           0 :     delete[] ecc;
     152           0 :   }
     153           0 : }
     154             : 
     155             : //______________________________________________________________________________
     156             : void AliMUONQAChecker::Init(const AliQAv1::DETECTORINDEX_t det) 
     157             : {
     158             :   /// intialises QA and QA checker settings
     159           0 :   AliQAv1::Instance(det) ; 
     160           0 :   Float_t hiValue[AliQAv1::kNBIT] ; 
     161           0 :   Float_t lowValue[AliQAv1::kNBIT] ;
     162           0 :   lowValue[AliQAv1::kINFO]      = 0.999   ; 
     163           0 :   hiValue[AliQAv1::kINFO]       = 1.0 ; 
     164           0 :   hiValue[AliQAv1::kWARNING]    = 0.99 ; 
     165           0 :   lowValue[AliQAv1::kWARNING]   = 0.5 ; 
     166           0 :   lowValue[AliQAv1::kERROR]     = 0.0   ; 
     167           0 :   hiValue[AliQAv1::kERROR]      = 0.5 ; 
     168           0 :   lowValue[AliQAv1::kFATAL]     = -1.0   ; 
     169           0 :   hiValue[AliQAv1::kFATAL]      = 0.0 ; 
     170           0 :   SetHiLo(&hiValue[0], &lowValue[0]) ; 
     171           0 : }

Generated by: LCOV version 1.11