LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSQAChecker.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 47 274 17.2 %
Date: 2016-06-14 17:26:59 Functions: 4 15 26.7 %

          Line data    Source code
       1             :  /**************************************************************************
       2             :  * Copyright(c) 2007-2009, 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             : // *****************************************
      19             : //  Checks the quality assurance 
      20             : //  by comparing with reference data
      21             : //  W.Ferrarese  P.Cerello  Mag 2008
      22             : //  INFN Torino
      23             : 
      24             : // --- ROOT system ---
      25             : #include "TH1.h"
      26             : #include <Riostream.h>
      27             : #include "TStyle.h"
      28             : 
      29             : // --- AliRoot header files ---
      30             : #include "AliITSQAChecker.h"
      31             : #include "AliITSQASPDChecker.h"
      32             : #include "AliITSQASDDChecker.h"
      33             : #include "AliITSQASSDChecker.h"
      34             : #include "AliITSQADataMakerRec.h"
      35             : 
      36         118 : ClassImp(AliITSQAChecker)
      37             : 
      38             : //____________________________________________________________________________
      39             : AliITSQAChecker::AliITSQAChecker(Bool_t kMode, Short_t subDet, Short_t ldc) :
      40           3 : AliQACheckerBase("ITS","SDD Quality Assurance Checker"),
      41           3 : fkOnline(0),
      42           3 : fDet(0),  
      43           3 : fLDC(0),
      44           3 : fSPDOffset(0), 
      45           3 : fSDDOffset(0), 
      46           3 : fSSDOffset(0),
      47           3 : fSPDHisto(0),
      48           3 : fSDDHisto(0),
      49           3 : fSSDHisto(0),
      50           3 : fSPDChecker(0),  // SPD Checker
      51           3 : fSDDChecker(0),  // SDD Checker
      52           3 : fSSDChecker(0)  // SSD Checker
      53             : 
      54           9 : {
      55             :   // Standard constructor
      56           3 :   fkOnline = kMode; fDet = subDet; fLDC = ldc;
      57           3 :   if(fDet == 0 || fDet == 1) {
      58          15 :     AliDebug(AliQAv1::GetQADebugLevel(),"AliITSQAChecker::Create SPD Checker\n");
      59           9 :     fSPDChecker = new AliITSQASPDChecker();
      60           3 :   }
      61           3 :   if(fDet == 0 || fDet == 2) {
      62          15 :     AliDebug(AliQAv1::GetQADebugLevel(),"AliITSQAChecker::Create SDD Checker\n");
      63           9 :     fSDDChecker = new AliITSQASDDChecker();
      64           3 :   }
      65           3 :   if(fDet == 0 || fDet == 3) {
      66          15 :     AliDebug(AliQAv1::GetQADebugLevel(),"AliITSQAChecker::Create SSD Checker\n");
      67           9 :     fSSDChecker = new AliITSQASSDChecker();
      68           3 :   }
      69           3 :   InitQACheckerLimits();
      70           6 : }
      71             : 
      72             : //____________________________________________________________________________
      73           0 : AliITSQAChecker::~AliITSQAChecker(){
      74             :   // destructor
      75           0 :   if(fSPDChecker)delete fSPDChecker;
      76           0 :   if(fSDDChecker)delete fSDDChecker;
      77           0 :   if(fSSDChecker)delete fSSDChecker;
      78             : 
      79           0 : }
      80             : //____________________________________________________________________________
      81             : void AliITSQAChecker::Check(Double_t * rv, AliQAv1::ALITASK_t index, TObjArray ** list, const AliDetectorRecoParam * recoParam)
      82             : {
      83             : 
      84             : 
      85             :   // basic checks on the QA histograms on the input list
      86             :   //for the ITS subdetectorQA (Raws Digits Hits RecPoints SDigits) return the worst value of the three result
      87           0 :   if(index == AliQAv1::kESD){
      88             :     
      89           0 :     for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
      90           0 :       rv[specie] = 0.0 ; 
      91           0 :       if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) 
      92             :         continue ; 
      93           0 :       AliDebug(AliQAv1::GetQADebugLevel(),"Checker for ESD");
      94             :       Int_t tested = 0;
      95             :       Int_t empty = 0;
      96             :       // The following flags are set to kTRUE if the corresponding
      97             :       // QA histograms exceed a given quality threshold
      98             :       Bool_t cluMapSA = kFALSE;
      99             :       Bool_t cluMapMI = kFALSE;
     100             :       Bool_t cluMI = kFALSE;
     101             :       Bool_t cluSA = kFALSE;
     102             :       Bool_t verSPDZ = kFALSE;
     103           0 :       if (list[specie]->GetEntries() == 0) {
     104           0 :         rv[specie] = 0.; // nothing to check
     105           0 :       }
     106             :       else {
     107           0 :         Double_t stepbit[AliQAv1::kNBIT];
     108           0 :         Double_t histonumb= list[specie]->GetEntries();
     109           0 :         CreateStepForBit(histonumb,stepbit); 
     110           0 :         TIter next1(list[specie]);
     111             :         TH1 * hdata;
     112             :         Int_t nskipped=0;
     113           0 :         Bool_t skipped[6]={kFALSE,kFALSE,kFALSE,kFALSE,kFALSE,kFALSE};
     114             :         // look for layers that we wanted to skip
     115           0 :         while ( (hdata = dynamic_cast<TH1 *>(next1())) ) {
     116           0 :           if(hdata){
     117           0 :             TString hname = hdata->GetName();
     118           0 :             if(!hname.Contains("hESDSkippedLayers")) continue;
     119           0 :             for(Int_t k=1; k<7; k++) {
     120           0 :               if(hdata->GetBinContent(k)>0) { 
     121           0 :                 nskipped++; 
     122           0 :                 skipped[k-1]=kTRUE; 
     123           0 :               } 
     124             :             } 
     125           0 :           }
     126             :         }
     127           0 :         TIter next(list[specie]);
     128           0 :         while ( (hdata = dynamic_cast<TH1 *>(next())) ) {
     129           0 :           if(hdata){
     130           0 :             TString hname = hdata->GetName();
     131           0 :             Double_t entries = hdata->GetEntries();
     132           0 :             ++tested;
     133           0 :             if(!(entries>0.))++empty;
     134           0 :             AliDebug(AliQAv1::GetQADebugLevel(),Form("ESD hist name %s - entries %12.1g",hname.Data(),entries));
     135           0 :             if(hname.Contains("hESDClusterMapSA") && entries>0.){
     136             :               cluMapSA = kTRUE;
     137           0 :               AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
     138             :               // Check if there are layers with anomalously low 
     139             :               // contributing points to SA reconstructed tracks
     140           0 :               for(Int_t k=1;k<7;k++){
     141             :                 // check if the layer was skipped
     142           0 :                 if(skipped[k-1]) continue;
     143           0 :                 if(hdata->GetBinContent(k)<0.5*(entries/6.)){
     144             :                   cluMapSA = kFALSE;
     145           0 :                   AliDebug(AliQAv1::GetQADebugLevel(),Form("SA tracks have few points on layer %d - look at histogram hESDClustersSA",k));
     146             :                 }
     147             :               }  
     148           0 :             }//end clustermapsa 
     149             :             
     150           0 :             else if(hname.Contains("hESDClusterMapMI") && entries>0.){
     151             :               // Check if there are layers with anomalously low 
     152             :               // contributing points to MI reconstructed tracks
     153           0 :               AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
     154             :               cluMapMI = kTRUE;
     155           0 :               for(Int_t k=1;k<7;k++){
     156             :                 // check if the layer was skipped
     157           0 :                 if(skipped[k-1]) continue;
     158           0 :                 if(hdata->GetBinContent(k)<0.5*(entries/6.)){
     159             :                   cluMapMI = kFALSE;
     160           0 :                   AliDebug(AliQAv1::GetQADebugLevel(),Form("MI tracks have few points on layer %d - look at histogram hESDClustersMI",k));
     161             :                 }
     162             :               }  
     163           0 :             }//end clustermapmi
     164             :             
     165           0 :             else if(hname.Contains("hESDClustersMI") && entries>0.){
     166             :               // Check if 6 clusters MI tracks are the majority
     167           0 :               AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
     168             :               cluMI = kTRUE;
     169           0 :               Double_t maxlaytracks = hdata->GetBinContent(7-nskipped);
     170           0 :               for(Int_t k=2; k<7-nskipped; k++){
     171           0 :                 if(hdata->GetBinContent(k)>maxlaytracks){
     172             :                   cluMI = kFALSE;
     173           0 :                   AliDebug(AliQAv1::GetQADebugLevel(),Form("MI Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersMI",k-1,6-nskipped));
     174             :                 }
     175             :               }
     176           0 :             }//end clustersmi
     177             :             
     178           0 :             else if(hname.Contains("hESDClustersSA") && entries>0.){
     179             :               // Check if 6 clusters SA tracks are the majority
     180           0 :               AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
     181             :               cluSA = kTRUE;
     182           0 :               Double_t maxlaytracks = hdata->GetBinContent(7-nskipped);
     183           0 :               for(Int_t k=2; k<7-nskipped; k++){
     184           0 :                 if(hdata->GetBinContent(k)>maxlaytracks){
     185             :                   cluSA = kFALSE;
     186           0 :                   AliDebug(AliQAv1::GetQADebugLevel(), Form("SA Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersSA",k-1,6-nskipped));
     187             :                 }
     188             :               }
     189           0 :             }//end clusterssa
     190             :             
     191           0 :             else if(hname.Contains("hSPDVertexZ") && entries>0.){
     192             :               // Check if average Z vertex coordinate is -5 < z < 5 cm
     193           0 :               AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
     194             :               verSPDZ = kTRUE;
     195           0 :               if(hdata->GetMean()<-5. && hdata->GetMean()>5.){
     196             :                 verSPDZ = kFALSE;
     197           0 :                 AliDebug(AliQAv1::GetQADebugLevel(),Form("Average z vertex coordinate is at z= %10.4g cm",hdata->GetMean()));
     198             :               }
     199             :             }//end spdvertexz
     200             :             
     201           0 :             else{ AliError("ESD Checker - invalid data type");}//end else
     202             :             
     203           0 :             rv[specie] = 0.;
     204           0 :             if(tested>0){
     205           0 :               if(tested == empty){
     206           0 :                 rv[specie] = 2500.; // set to error
     207           0 :                 AliWarning(Form("All ESD histograms are empty - specie=%d",specie));
     208             :               }
     209             :               else {
     210           0 :                 rv[specie] = 2500.-1500.*(static_cast<Double_t>(tested-empty)/static_cast<Double_t>(tested)); // INFO if all histos are filled
     211           0 :                 if(cluMapSA)rv[specie]-=200.;
     212           0 :                 if(cluMapMI)rv[specie]-=200.;
     213           0 :                 if(cluMI)rv[specie]-=200.;
     214           0 :                 if(cluSA)rv[specie]-=200.;
     215           0 :                 if(verSPDZ)rv[specie]-=199.;  // down to 1 if everything is OK
     216             :               }
     217             :             }//end tested
     218           0 :           }//end hdata
     219             :         }//end while
     220             :         //     AliDebug(AliQAv1::GetQADebugLevel(), Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
     221           0 :         AliInfo(Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
     222           0 :       }
     223           0 :     }
     224           0 :   } // end of ESD QA
     225             :   else{
     226             :     
     227             :     //____________________________________________________________________________
     228             : 
     229           0 :     Double_t spdCheck[AliRecoParam::kNSpecies] ;
     230           0 :     Double_t sddCheck[AliRecoParam::kNSpecies] ;
     231           0 :     Double_t ssdCheck[AliRecoParam::kNSpecies] ;
     232             : 
     233             : 
     234             : 
     235           0 :     for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
     236           0 :       if ( !AliQAv1::Instance()->IsEventSpecieSet(specie)) continue; 
     237           0 :       if ( AliQAv1::Instance()->IsEventSpecieSet(specie) ) {
     238           0 :         Double_t histotot=list[specie]->GetEntries();
     239           0 :         if(histotot!=0)
     240             :           {
     241           0 :             spdCheck[specie]=0.;
     242           0 :             sddCheck[specie]=0.;
     243           0 :             ssdCheck[specie]=0.;
     244           0 :             rv[specie] = 0.0 ;// 
     245             :             //pixel
     246           0 :             if(fDet == 0 || fDet == 1) {
     247           0 :               fSPDChecker->SetTaskOffset(fSPDOffset);
     248             :               //printf("spdoffset = %i \n",fSPDOffset );
     249           0 :               Double_t histoSPD=double(GetSPDHisto());
     250           0 :               if(AliITSQADataMakerRec::AreEqual(histoSPD,0)==kFALSE){
     251           0 :                 Double_t *stepSPD=new Double_t[AliQAv1::kNBIT];
     252           0 :                 CreateStepForBit(histoSPD,stepSPD);
     253           0 :                 fSPDChecker->SetStepBit(stepSPD);
     254           0 :                 spdCheck[specie] = fSPDChecker->Check(index, list[specie], recoParam);
     255           0 :                 if(spdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||spdCheck[specie]<0.)
     256             :                   {
     257           0 :                     AliInfo(Form("SPD check result for %s  is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),spdCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
     258           0 :                     spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
     259           0 :                   }
     260           0 :                 delete []stepSPD;
     261           0 :               }//end check SPD entries
     262           0 :               else{spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
     263           0 :               rv[specie]=spdCheck[specie];
     264           0 :             }//end SPD check
     265             :             //drift
     266           0 :             if(fDet == 0 || fDet == 2) {
     267           0 :               fSDDChecker->SetTaskOffset(fSDDOffset);
     268           0 :               fSDDChecker->SetEventSpecieForCheck(specie);
     269           0 :               Double_t histoSDD=double(GetSDDHisto());
     270           0 :               if(AliITSQADataMakerRec::AreEqual(histoSDD,0)==kFALSE){
     271           0 :                 Double_t *stepSDD=new Double_t[AliQAv1::kNBIT];
     272           0 :                 CreateStepForBit(histoSDD,stepSDD);
     273           0 :                 fSDDChecker->SetStepBit(stepSDD);
     274           0 :                 sddCheck[specie] = fSDDChecker->Check(index, list[specie], recoParam);       
     275           0 :                 if(sddCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||sddCheck[specie]<0.)
     276             :                   {
     277           0 :                     AliInfo(Form("SDD check result for %s  is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),sddCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
     278           0 :                     sddCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
     279           0 :                   }
     280           0 :                 delete []stepSDD;
     281           0 :               }//end check SDD entries
     282           0 :               else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
     283           0 :               if(sddCheck[specie]>rv[specie])rv[specie]=sddCheck[specie];  
     284           0 :             }//end SDD
     285             :             //strip
     286           0 :             if(fDet == 0 || fDet == 3) {
     287           0 :               fSSDChecker->SetTaskOffset(fSSDOffset);
     288           0 :               Double_t histoSSD=double(GetSSDHisto());
     289           0 :               if(AliITSQADataMakerRec::AreEqual(histoSSD,0)==kFALSE){
     290           0 :               Double_t *stepSSD=new Double_t[AliQAv1::kNBIT];
     291           0 :               CreateStepForBit(histoSSD,stepSSD);
     292           0 :               fSSDChecker->SetStepBit(stepSSD);
     293           0 :               ssdCheck[specie] = fSSDChecker->Check(index, list[specie], recoParam);
     294           0 :               if(ssdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||ssdCheck[specie]<0.)
     295             :                 {
     296           0 :                   AliInfo(Form("SSD check result for %s is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),ssdCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
     297           0 :                   ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
     298           0 :                 }
     299           0 :               delete [] stepSSD;
     300           0 :               }//end check SSD entries
     301           0 :               else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
     302           0 :               if(ssdCheck[specie]>rv[specie])rv[specie]=ssdCheck[specie];
     303           0 :             }//end SSD
     304             :             
     305           0 :             AliInfo(Form("Check result for %s: \n\t  SPD %f \n\t  SDD %f \n\t  SSD %f \n Check result %f \n ",AliQAv1::GetAliTaskName(index),spdCheck[specie],sddCheck[specie],ssdCheck[specie],rv[specie]));
     306             :             // here merging part for common ITS QA result
     307             :             // 
     308           0 :           }//end entries
     309           0 :       }//end if event specie
     310             :     }//end for
     311           0 :   }
     312           0 : }
     313             : 
     314             : //____________________________________________________________________________
     315             : void AliITSQAChecker::SetTaskOffset(Int_t SPDOffset, Int_t SDDOffset, Int_t SSDOffset)
     316             : {
     317             :   //Setting the 3 offsets for each task called
     318           0 :   fSPDOffset = SPDOffset;
     319           0 :   fSDDOffset = SDDOffset;
     320           0 :   fSSDOffset = SSDOffset;
     321           0 : }
     322             : 
     323             : //____________________________________________________________________________
     324             : void AliITSQAChecker::SetHisto(Int_t SPDhisto, Int_t SDDhisto, Int_t SSDhisto)
     325             : {
     326             :   //Setting the 3 offsets for each task called
     327           0 :   fSPDHisto = SPDhisto;
     328           0 :   fSDDHisto = SDDhisto;
     329           0 :   fSSDHisto = SSDhisto;
     330           0 : }
     331             : 
     332             :  //____________________________________________________________________________
     333             :  void AliITSQAChecker::SetDetTaskOffset(Int_t subdet,Int_t offset)
     334             :  {
     335             :    //returns the offset for each task and for each subdetector
     336           0 :    switch(subdet){
     337             :    case 1:
     338           0 :      SetSPDTaskOffset(offset);
     339           0 :      break;
     340             :    case 2:
     341           0 :      SetSDDTaskOffset(offset);
     342           0 :      break;
     343             :    case 3:
     344           0 :      SetSSDTaskOffset(offset);
     345           0 :      break;
     346             :    default:
     347           0 :      AliWarning("No specific (SPD,SDD or SSD) subdetector correspond to to this number!!! all offsets set to zero for all the detectors\n");
     348           0 :      SetTaskOffset(0, 0, 0);
     349           0 :      break;
     350             :    }
     351           0 :  }
     352             : 
     353             :  //____________________________________________________________________________
     354             :  void AliITSQAChecker::SetDetHisto(Int_t subdet,Int_t histo)
     355             :  {
     356             :    //set the number od histograms for the subdetector
     357           0 :    switch(subdet){
     358             :    case 1:
     359           0 :      SetSPDHisto(histo);
     360           0 :      break;
     361             :    case 2:
     362           0 :      SetSDDHisto(histo);
     363           0 :      break;
     364             :    case 3:
     365           0 :      SetSSDHisto(histo);
     366           0 :      break;
     367             :    default:
     368           0 :      AliWarning("No specific (SPD,SDD or SSD) subdetector correspond to to this number!!! all offsets set to zero for all the detectors\n");
     369           0 :      SetHisto(0, 0, 0);
     370           0 :      break;
     371             :    }
     372           0 :  }
     373             : 
     374             : //_____________________________________________________________________________
     375             : 
     376             : void AliITSQAChecker::InitQACheckerLimits()
     377             : {
     378             :   //init the tolerance range for each QA bit 
     379           6 :   AliInfo("Setting of tolerance values\n");
     380             : 
     381           3 :   Float_t lowtolerancevalue[AliQAv1::kNBIT];
     382             : 
     383           3 :   Float_t hightolerancevalue[AliQAv1::kNBIT];
     384          30 :   for(Int_t bit=0;bit<AliQAv1::kNBIT;bit++)
     385             :     {
     386          12 :       lowtolerancevalue[bit]=(bit*1000.);
     387          12 :       hightolerancevalue[bit]=((bit+1.)*1000.);
     388             :     }
     389           3 :   SetHiLo(hightolerancevalue,lowtolerancevalue);
     390             :   //  AliInfo(Form("Range Value  \n INFO    -> %f <  value <  %f \n WARNING -> %f <  value <= %f \n ERROR   -> %f <  value <= %f \n FATAL   -> %f <= value <  %f \n", fLowTestValue[AliQAv1::kINFO], fUpTestValue[AliQAv1::kINFO], fLowTestValue[AliQAv1::kWARNING], fUpTestValue[AliQAv1::kWARNING], fLowTestValue[AliQAv1::kERROR], fUpTestValue[AliQAv1::kERROR], fLowTestValue[AliQAv1::kFATAL], fUpTestValue[AliQAv1::kFATAL]  ));
     391             : 
     392           3 :   if(fDet == 0 || fDet == 1) {
     393           3 :     fSPDChecker->SetSPDLimits( lowtolerancevalue,hightolerancevalue );
     394           3 :   }
     395           3 :   if(fDet == 0 || fDet == 2) {
     396           3 :     fSDDChecker->SetSDDLimits( lowtolerancevalue,hightolerancevalue );
     397           3 :   }
     398           3 :   if(fDet == 0 || fDet == 3) {
     399           3 :     fSSDChecker->SetSSDLimits( lowtolerancevalue,hightolerancevalue );
     400           3 :   }
     401             : 
     402             : 
     403             :   
     404           3 : }
     405             : 
     406             : 
     407             : //_____________________________________________________________________________
     408             : 
     409             : void AliITSQAChecker::CreateStepForBit(Double_t histonumb,Double_t *steprange)
     410             : {
     411             :   //creation of the step bit for each QA bit 
     412           0 :   for(Int_t bit=0;bit < AliQAv1::kNBIT; bit++)
     413             :     {       
     414             :       //printf("%i\t %f \t %f \t %f \n",bit, fUpTestValue[bit],fLowTestValue[AliQAv1::kINFO],histonumb);
     415           0 :       steprange[bit]=double((fUpTestValue[bit] - fLowTestValue[AliQAv1::kINFO])/histonumb);
     416             :       //printf("%i\t %f \t %f \t %f \t %f\n",bit, fUpTestValue[bit],fLowTestValue[AliQAv1::kINFO],histonumb,steprange[bit] );
     417             :     }
     418             :   //AliInfo(Form("StepBitValue:numner of histo %f\n\t INFO %f \t WARNING %f \t ERROR %f \t FATAL %f \n",histonumb, steprange[AliQAv1::kINFO],steprange[AliQAv1::kWARNING],steprange[AliQAv1::kERROR],steprange[AliQAv1::kFATAL]));
     419           0 : }
     420             : 
     421             : 
     422             : //_____________________________________________________________________________
     423             : void AliITSQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
     424             : {
     425             :   //Setting of the QA tolerance values
     426           0 :   AliQAv1 * qa = AliQAv1::Instance(index) ;
     427             : 
     428             : 
     429           0 :   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
     430             : 
     431           0 :     if (! qa->IsEventSpecieSet(AliRecoParam::ConvertIndex(specie)))
     432             :       continue ;
     433           0 :     if (  value == NULL ) { // No checker is implemented, set all QA to Fatal
     434           0 :       qa->Set(AliQAv1::kFATAL, specie) ; 
     435           0 :     } else {
     436           0 :       if ( value[specie] > fLowTestValue[AliQAv1::kFATAL] && value[specie] <= fUpTestValue[AliQAv1::kFATAL] ) 
     437           0 :         qa->Set(AliQAv1::kFATAL, AliRecoParam::ConvertIndex(specie)) ; 
     438           0 :       else if ( value[specie] > fLowTestValue[AliQAv1::kERROR] && value[specie] <= fUpTestValue[AliQAv1::kERROR]  )
     439           0 :         qa->Set(AliQAv1::kERROR, AliRecoParam::ConvertIndex(specie)) ; 
     440           0 :       else if ( value[specie] > fLowTestValue[AliQAv1::kWARNING] && value[specie] <= fUpTestValue[AliQAv1::kWARNING]  )
     441           0 :         qa->Set(AliQAv1::kWARNING, AliRecoParam::ConvertIndex(specie)) ;
     442           0 :       else if ( value[specie] > fLowTestValue[AliQAv1::kINFO] && value[specie] <= fUpTestValue[AliQAv1::kINFO] ) 
     443           0 :         qa->Set(AliQAv1::kINFO, AliRecoParam::ConvertIndex(specie)) ;        
     444             :       //else if(value[specie]==0) qa->Set(AliQAv1::kFATAL, AliRecoParam::ConvertIndex(specie)) ; //no ckeck has been done
     445             :     }
     446           0 :     qa->ShowStatus(AliQAv1::kITS,index,AliRecoParam::ConvertIndex(specie));
     447           0 :   }//end for
     448             : 
     449           0 : }
     450             : 
     451             : 
     452             : //__________________________________________________________________
     453             : void  AliITSQAChecker::MakeImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode)
     454             : {
     455             :   //make a summary image
     456             :   //gStyle->SetPalette(1);
     457             : 
     458             :   //Int_t nImages = 0 ;
     459             :   //Int_t imageindex=0;
     460           0 :   for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
     461           0 :     if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) ) 
     462             :       continue ;
     463             :     //else imageindex=esIndex;
     464             : 
     465           0 :     TIter next(list[esIndex]) ;  
     466             :     TH1 * hdata = NULL ; 
     467           0 :     while ( (hdata=static_cast<TH1 *>(next())) ) {
     468           0 :       TString cln(hdata->ClassName()) ; 
     469           0 :       if ( ! cln.Contains("TH") )
     470           0 :         continue ; 
     471           0 :       if(cln.Contains("TH2")) 
     472             :         {
     473           0 :           Float_t min=hdata->GetMinimum();
     474           0 :           Float_t max=hdata->GetMaximum();
     475           0 :           if(max>min) hdata->SetOption("colz");
     476           0 :         }
     477           0 :     }
     478             :     break ; 
     479           0 :   }
     480             : 
     481             :   Bool_t retvalue=kFALSE;
     482             : 
     483           0 :   if(GetSubDet()==0) MakeITSImage(list,task, mode);
     484           0 :   else if(GetSubDet()==1) 
     485             :     {
     486           0 :       retvalue=fSPDChecker->MakeSPDImage(list,task, mode) ; 
     487           0 :       if(retvalue==kFALSE)AliQACheckerBase::MakeImage(list,task, mode);
     488             :     }
     489           0 :   else if(GetSubDet()==2){ retvalue=fSDDChecker->MakeSDDImage(list,task, mode) ;if(retvalue==kFALSE)AliQACheckerBase::MakeImage(list,task,mode); }
     490           0 :   else if(GetSubDet()==3) 
     491             :     {
     492           0 :       retvalue=fSSDChecker->MakeSSDImage(list,task, mode) ;
     493           0 :       if(retvalue==kFALSE)AliQACheckerBase::MakeImage(list,task, mode); 
     494             :     }
     495             : 
     496           0 : }
     497             : 

Generated by: LCOV version 1.11