ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

// *****************************************
//  Checks the quality assurance 
//  by comparing with reference data
//  P. Cerello Apr 2008
//  INFN Torino

// --- ROOT system ---
#include "TH1.h"
#include "TString.h"
#include "TCanvas.h"
#include "TStyle.h"
#include "TPad.h"
//#include "Riostream.h"

// --- AliRoot header files ---
#include "AliITSQASSDChecker.h"
#include "AliITSQADataMakerRec.h"
#include "AliLog.h"

ClassImp(AliITSQASSDChecker)
//__________________________________________________________________
AliITSQASSDChecker& AliITSQASSDChecker::operator = (const AliITSQASSDChecker& qac ) 
{
  // Equal operator.
  this->~AliITSQASSDChecker();
  new(this) AliITSQASSDChecker(qac);
  return *this;
}

void AliITSQASSDChecker::CheckRaws(TH1* histo) {  
  // checker for RAWS
  Double_t minSSDDataSize = 0;
  Double_t maxSSDDataSize = 200;
  Double_t minDDLDataSize = 0;
  Double_t maxDDLDataSize = 50;
  Double_t minLDCDataSize = 0;
  Double_t maxLDCDataSize = 100;
  Double_t minMeanDDLDataSize = 0;
  Double_t maxMeanDDLDataSize = 50;
  Double_t minMeanLDCDataSize = 0;
  Double_t maxMeanLDCDataSize = 100;
  //  Double_t maxOccupancy = 5;

  TString histname = histo->GetName();

  if (histname.EndsWith("SSDEventType")) {
    if (histo->GetEntries()==0) {
      AliWarning("Event type histogram is empty");
    }
    else if (histo->GetBinContent(histo->FindBin(7))==0) AliWarning("No type 7 (physics) events in EventType");
  }

  if (histname.EndsWith("SSDDataSize")) {
    if (histo->GetEntries()==0) AliWarning("SSD data size histogram is empty");
    if (histo->GetMean()>maxSSDDataSize||histo->GetMean()<minSSDDataSize) AliWarning(Form("SSD mean data size is %-.2g kB", histo->GetMean()));
  }

  if (histname.EndsWith("SSDDataSizePerDDL")) {
    if (histo->GetEntries()==0) {
      AliWarning("Data size per DDL histogram is empty");
    }
    else {
      for(Int_t i = 512; i < 528; i++) {
        if(histo->GetBinContent(histo->FindBin(i))==0) {
           AliWarning(Form("Data size / DDL histogram: bin for DDL %i is empty",i));
        }
        else if(histo->GetBinContent(histo->FindBin(i))<minDDLDataSize||histo->GetBinContent(histo->FindBin(i))>maxDDLDataSize) AliWarning(Form("Data size DDL %i is %-.2g kB",i,histo->GetBinContent(histo->FindBin(i))));
     }
    }
  }

  if (histname.EndsWith("SSDDataSizePerLDC")) {
    if (histo->GetEntries()==0) {
      AliWarning("Data size per LDC histogram is empty");
    }    
    else {
      AliInfo(Form("Data size per LDC histogram has %f entries",histo->GetEntries()));
      for(Int_t i = 170; i < 178; i++) {
        if(histo->GetBinContent(histo->FindBin(i))==0) {
          AliWarning(Form("Data size / LDC histogram: bin for LDC %i is empty",i));
        }
	else if(AliITSQADataMakerRec::AreEqual(histo->GetBinContent(histo->FindBin(i)),minLDCDataSize) ||histo->GetBinContent(histo->FindBin(i))>maxLDCDataSize) AliWarning(Form("Data size LDC %i is %-.2g kB",i,histo->GetBinContent(i)));
      }
    }
  }

  if (histname.EndsWith("SSDLDCId")) {
    if (histo->GetEntries()==0) {
      AliWarning("LDC ID histogram is empty");
    }    
    else {
      for(Int_t i = 170; i < 177; i++) {
        if(histo->GetBinContent(histo->FindBin(i))==0) {
          AliWarning(Form("LDC ID histogram: No entries for LDC %i",i));
        }
        else if(histo->GetBinContent(histo->FindBin(i))!=histo->GetBinContent(histo->FindBin(i+1))) {
          AliWarning("LDC Id distribution is not uniform");
          i=176;
        }
      }
    }
  }

  if (histname.EndsWith("SSDDDLId")) {
    if (histo->GetEntries()==0) {
      AliWarning("DDL ID histogram is empty");
    }
    else {
      for(Int_t i = 512; i < 527; i++) {
        if(histo->GetBinContent(histo->FindBin(i))==0) {
          AliWarning(Form("DDL ID histogram: No entries for DDL %i",i));
        }
        else if(histo->GetBinContent(histo->FindBin(i))!=histo->GetBinContent(histo->FindBin(i+1))) {
          AliWarning("DDL Id distribution is not uniform");
          i=526;
        }
      }
    }
  }

  if (histname.Contains("SSDDataSizeLDC")) {
    if (histo->GetEntries()==0) {
      AliWarning(Form("LDC %s data size distribution is empty", histname(histname.Length()-3,3).Data()));
    }
    else if (histo->GetMean()<minMeanLDCDataSize||histo->GetMean()>maxMeanLDCDataSize) AliWarning(Form("Mean data size of LDC %s is %-.2g kB",histname(histname.Length()-3,3).Data(), histo->GetMean()));
  }

  if (histname.Contains("SSDDataSizeDDL")) {
    if (histo->GetEntries()==0) {
      AliWarning(Form("DDL %s data size distribution is empty", histname(histname.Length()-3,3).Data()));
    } 
    else if (histo->GetMean()<minMeanDDLDataSize||histo->GetMean()>maxMeanDDLDataSize) AliWarning(Form("Mean data size of DDL %s is %-.2g kB",histname(histname.Length()-3,3).Data(), histo->GetMean()));
  }

  /* Lines below commented out because nothing was checked with them since the AliWarning was commented (F. Prino, June 18 2014)
  if (histname.Contains("SSDAverageOccupancy")) {
 
    const char* side = "";
    int ladder = 0;
    int layernr = 0;

    if (histname.EndsWith("5")) layernr = 499;
    if (histname.EndsWith("6")) layernr = 599;

    for (Int_t i = 1; i < histo->GetNbinsY() + 1; i++) { //ladder/side loop
      if(i==3.*int(i/3.)){
        ladder=int(i/3.)+layernr;
        side="P side";
      }
      else if(i==3.*int(i+1/3.)){
        ladder=int((i+1)/3.)+layernr;
        side="N side";
      }

      for (Int_t j = 1; j < histo->GetNbinsX() + 1; j++) { //module loop
        //if(histo->GetBinContent(j,i)>maxOccupancy)
          // AliWarning(Form("Occupancy ladder %i, module %i, %s is %-.2f %%",ladder,j,side, histo->GetBinContent(j,i)));
      }//module loop
    }//ladder loop
  }
  */
}


//__________________________________________________________________
Bool_t  AliITSQASSDChecker::MakeSSDImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode) {
  //create the image for raws and recpoints. In the other case, the default methodof CheckerBase class will be used  //
  gStyle->SetPalette(1,0);
  Bool_t rval=kFALSE;
  fImage=(TCanvas**)AliQAChecker::Instance()->GetDetQAChecker(0)->GetImage();

  if(task == AliQAv1::kRAWS) 
    rval = MakeSSDRawsImage(list, task,mode);
  else rval=kFALSE;
  
  return rval;
}

//_______________________________________________________________________
Bool_t AliITSQASSDChecker::MakeSSDRawsImage(TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode ) {
  // MakeSSDRawsImage: raw data QA plots
  for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
    //printf("-------------------------> %i \n", esIndex);
    if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) || list[esIndex]->GetEntries() == 0) continue;
    else {
      const Char_t * title = Form("QA_%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(esIndex)) ; 
      if ( !fImage[esIndex] ) fImage[esIndex] = new TCanvas(title, title,1280,980) ;
	
      fImage[esIndex]->Clear() ; 
      fImage[esIndex]->SetTitle(title) ; 
      fImage[esIndex]->cd();
 
      //TPaveText someText(0.015, 0.015, 0.98, 0.98);
      //someText.AddText(title);
      //someText.Draw(); 
      fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ; 
      fImage[esIndex]->Clear() ; 
      Int_t nx =2; //TMath::Nint(TMath::Sqrt(nImages));
      Int_t ny =2; // nx  ; 
	
      fImage[esIndex]->Divide(nx, ny) ; 
      TIter nexthist(list[esIndex]) ; 
      TH1* hist = NULL ;
      Int_t npad = 1 ; 
      fImage[esIndex]->cd(npad); 
      fImage[esIndex]->cd(npad)->SetBorderMode(0) ;
      while ( (hist=static_cast<TH1*>(nexthist())) ) {
	//gPad=fImage[esIndex]->cd(npad)->GetPad(npad);
	TString cln(hist->ClassName()) ; 
	if ( ! cln.Contains("TH") ) continue ;
	
	if(hist->TestBit(AliQAv1::GetImageBit())) {
	  //Printf("Histo name: %s - Class: %s",hist->GetName(),hist->ClassName());
	  hist->GetXaxis()->SetTitleSize(0.02);
	  hist->GetYaxis()->SetTitleSize(0.02);
	  hist->GetXaxis()->SetLabelSize(0.02);
	  hist->GetYaxis()->SetLabelSize(0.02);
	  if(cln.Contains("TH2")) {
	    gPad->SetRightMargin(0.15);
	    gPad->SetLeftMargin(0.05);
	    hist->SetStats(0);
	    hist->SetOption("colz") ;
	    //hist->GetListOfFunctions()->FindObject("palette")->SetLabelSize(0.025);
	    //gPad->Update();
	  }
	  hist->DrawCopy() ; 
	  fImage[esIndex]->cd(++npad) ; 
	  fImage[esIndex]->cd(npad)->SetBorderMode(0) ; 
	}
      }
      fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ; 
    }
  }
  
  return kTRUE;
}

//__________________________________________________________________
Double_t AliITSQASSDChecker::Check(AliQAv1::ALITASK_t /*index*/, const TObjArray * list, const AliDetectorRecoParam * /*recoParam*/) { 
  // main checker method 
  AliDebug(AliQAv1::GetQADebugLevel(),Form("AliITSQASSDChecker called with offset: %d\n", fSubDetOffset));

  AliInfo(Form("AliITSQASSDChecker called with offset: %d\n", fSubDetOffset) );
  //cout<<"(AliITSQASSDChecker::Check): List name "<<list->GetName()<<endl;
  Double_t test = 0.0  ;
  Int_t count = 0 ;
  TString listname = list->GetName();

  if (list->GetEntries() == 0){
    test = 1. ; // nothing to check
  }
  else {

    TIter next(list) ;
    TH1 * hdata ;
    count = 0 ;
    while ( (hdata = dynamic_cast<TH1 *>(next())) ) {
      if (hdata) {
	TString histname = hdata->GetName();
	if(!histname.Contains("fHistSSD")) continue;
        Double_t rv = 0.;
        if(hdata->GetEntries()>0) {
           rv = 1;

	   //if(histname.Contains("PerDDL")) cout << "(AliITSQASSDChecker::Check) " << histname << " has " << hdata->GetEntries() << " entries. Mean: " << hdata->GetMean() << endl;
       
       //    if(hdata->GetMean()>0&&!histname.Contains("_Ladder")) cout << "(AliITSQASSDChecker::Check) " << histname << " not empty! " << hdata->GetEntries() << " entries. Mean: " << hdata->GetMean() << endl;
        }

    //    if (listname.Contains("Raws")) CheckRaws(hdata);
   //     if (listname.Contains("RecPoints")) CheckRecPoints(hdata);

        //AliDebug(AliQAv1::GetQADebugLevel(), Form("%s -> %f", hdata->GetName(), rv)) ;
	//cout<<hdata->GetName()<<" - "<<rv<<endl;
        count++ ;
        test += rv ;
      }
      else{
        AliError("Data type cannot be processed") ;
      }
    }
    if (count != 0) {
      if (AliITSQADataMakerRec::AreEqual(test,0.)) {
        AliWarning("Histograms are there, but they are all empty: setting flag to kWARNING");
        test = 0.5;  //upper limit value to set kWARNING flag for a task
      }
      else {
        test /= count ;
      }
    }
  }
  
  //AliDebug(AliQAv1::GetQADebugLevel(), Form("Test Result = %f", test)) ;
  //cout<<"Test result: "<<test<<endl;

  return test ;

  //return 0.;


}

//__________________________________________________________________
void AliITSQASSDChecker::SetTaskOffset(Int_t TaskOffset){
  // defines offset for SSD
  fSubDetOffset = TaskOffset;
}

//__________________________________________________________________
void AliITSQASSDChecker::SetStepBit(const Double_t *steprange) {
  // defines step range
  fStepBitSSD = new Double_t[AliQAv1::kNBIT];
  for(Int_t bit=0;bit<AliQAv1::kNBIT;bit++)
    {
      fStepBitSSD[bit]=steprange[bit];
    }
}

//__________________________________________________________________
void  AliITSQASSDChecker::SetSSDLimits(const Float_t *lowvalue, const Float_t * highvalue){
  // defines 
  fLowSSDValue = new Float_t[AliQAv1::kNBIT];
  fHighSSDValue= new Float_t[AliQAv1::kNBIT];

  for(Int_t bit=0;bit<AliQAv1::kNBIT;bit++)
    {
      fLowSSDValue[bit]=lowvalue[bit];
      fHighSSDValue[bit]= highvalue[bit];
    }

}
 AliITSQASSDChecker.cxx:1
 AliITSQASSDChecker.cxx:2
 AliITSQASSDChecker.cxx:3
 AliITSQASSDChecker.cxx:4
 AliITSQASSDChecker.cxx:5
 AliITSQASSDChecker.cxx:6
 AliITSQASSDChecker.cxx:7
 AliITSQASSDChecker.cxx:8
 AliITSQASSDChecker.cxx:9
 AliITSQASSDChecker.cxx:10
 AliITSQASSDChecker.cxx:11
 AliITSQASSDChecker.cxx:12
 AliITSQASSDChecker.cxx:13
 AliITSQASSDChecker.cxx:14
 AliITSQASSDChecker.cxx:15
 AliITSQASSDChecker.cxx:16
 AliITSQASSDChecker.cxx:17
 AliITSQASSDChecker.cxx:18
 AliITSQASSDChecker.cxx:19
 AliITSQASSDChecker.cxx:20
 AliITSQASSDChecker.cxx:21
 AliITSQASSDChecker.cxx:22
 AliITSQASSDChecker.cxx:23
 AliITSQASSDChecker.cxx:24
 AliITSQASSDChecker.cxx:25
 AliITSQASSDChecker.cxx:26
 AliITSQASSDChecker.cxx:27
 AliITSQASSDChecker.cxx:28
 AliITSQASSDChecker.cxx:29
 AliITSQASSDChecker.cxx:30
 AliITSQASSDChecker.cxx:31
 AliITSQASSDChecker.cxx:32
 AliITSQASSDChecker.cxx:33
 AliITSQASSDChecker.cxx:34
 AliITSQASSDChecker.cxx:35
 AliITSQASSDChecker.cxx:36
 AliITSQASSDChecker.cxx:37
 AliITSQASSDChecker.cxx:38
 AliITSQASSDChecker.cxx:39
 AliITSQASSDChecker.cxx:40
 AliITSQASSDChecker.cxx:41
 AliITSQASSDChecker.cxx:42
 AliITSQASSDChecker.cxx:43
 AliITSQASSDChecker.cxx:44
 AliITSQASSDChecker.cxx:45
 AliITSQASSDChecker.cxx:46
 AliITSQASSDChecker.cxx:47
 AliITSQASSDChecker.cxx:48
 AliITSQASSDChecker.cxx:49
 AliITSQASSDChecker.cxx:50
 AliITSQASSDChecker.cxx:51
 AliITSQASSDChecker.cxx:52
 AliITSQASSDChecker.cxx:53
 AliITSQASSDChecker.cxx:54
 AliITSQASSDChecker.cxx:55
 AliITSQASSDChecker.cxx:56
 AliITSQASSDChecker.cxx:57
 AliITSQASSDChecker.cxx:58
 AliITSQASSDChecker.cxx:59
 AliITSQASSDChecker.cxx:60
 AliITSQASSDChecker.cxx:61
 AliITSQASSDChecker.cxx:62
 AliITSQASSDChecker.cxx:63
 AliITSQASSDChecker.cxx:64
 AliITSQASSDChecker.cxx:65
 AliITSQASSDChecker.cxx:66
 AliITSQASSDChecker.cxx:67
 AliITSQASSDChecker.cxx:68
 AliITSQASSDChecker.cxx:69
 AliITSQASSDChecker.cxx:70
 AliITSQASSDChecker.cxx:71
 AliITSQASSDChecker.cxx:72
 AliITSQASSDChecker.cxx:73
 AliITSQASSDChecker.cxx:74
 AliITSQASSDChecker.cxx:75
 AliITSQASSDChecker.cxx:76
 AliITSQASSDChecker.cxx:77
 AliITSQASSDChecker.cxx:78
 AliITSQASSDChecker.cxx:79
 AliITSQASSDChecker.cxx:80
 AliITSQASSDChecker.cxx:81
 AliITSQASSDChecker.cxx:82
 AliITSQASSDChecker.cxx:83
 AliITSQASSDChecker.cxx:84
 AliITSQASSDChecker.cxx:85
 AliITSQASSDChecker.cxx:86
 AliITSQASSDChecker.cxx:87
 AliITSQASSDChecker.cxx:88
 AliITSQASSDChecker.cxx:89
 AliITSQASSDChecker.cxx:90
 AliITSQASSDChecker.cxx:91
 AliITSQASSDChecker.cxx:92
 AliITSQASSDChecker.cxx:93
 AliITSQASSDChecker.cxx:94
 AliITSQASSDChecker.cxx:95
 AliITSQASSDChecker.cxx:96
 AliITSQASSDChecker.cxx:97
 AliITSQASSDChecker.cxx:98
 AliITSQASSDChecker.cxx:99
 AliITSQASSDChecker.cxx:100
 AliITSQASSDChecker.cxx:101
 AliITSQASSDChecker.cxx:102
 AliITSQASSDChecker.cxx:103
 AliITSQASSDChecker.cxx:104
 AliITSQASSDChecker.cxx:105
 AliITSQASSDChecker.cxx:106
 AliITSQASSDChecker.cxx:107
 AliITSQASSDChecker.cxx:108
 AliITSQASSDChecker.cxx:109
 AliITSQASSDChecker.cxx:110
 AliITSQASSDChecker.cxx:111
 AliITSQASSDChecker.cxx:112
 AliITSQASSDChecker.cxx:113
 AliITSQASSDChecker.cxx:114
 AliITSQASSDChecker.cxx:115
 AliITSQASSDChecker.cxx:116
 AliITSQASSDChecker.cxx:117
 AliITSQASSDChecker.cxx:118
 AliITSQASSDChecker.cxx:119
 AliITSQASSDChecker.cxx:120
 AliITSQASSDChecker.cxx:121
 AliITSQASSDChecker.cxx:122
 AliITSQASSDChecker.cxx:123
 AliITSQASSDChecker.cxx:124
 AliITSQASSDChecker.cxx:125
 AliITSQASSDChecker.cxx:126
 AliITSQASSDChecker.cxx:127
 AliITSQASSDChecker.cxx:128
 AliITSQASSDChecker.cxx:129
 AliITSQASSDChecker.cxx:130
 AliITSQASSDChecker.cxx:131
 AliITSQASSDChecker.cxx:132
 AliITSQASSDChecker.cxx:133
 AliITSQASSDChecker.cxx:134
 AliITSQASSDChecker.cxx:135
 AliITSQASSDChecker.cxx:136
 AliITSQASSDChecker.cxx:137
 AliITSQASSDChecker.cxx:138
 AliITSQASSDChecker.cxx:139
 AliITSQASSDChecker.cxx:140
 AliITSQASSDChecker.cxx:141
 AliITSQASSDChecker.cxx:142
 AliITSQASSDChecker.cxx:143
 AliITSQASSDChecker.cxx:144
 AliITSQASSDChecker.cxx:145
 AliITSQASSDChecker.cxx:146
 AliITSQASSDChecker.cxx:147
 AliITSQASSDChecker.cxx:148
 AliITSQASSDChecker.cxx:149
 AliITSQASSDChecker.cxx:150
 AliITSQASSDChecker.cxx:151
 AliITSQASSDChecker.cxx:152
 AliITSQASSDChecker.cxx:153
 AliITSQASSDChecker.cxx:154
 AliITSQASSDChecker.cxx:155
 AliITSQASSDChecker.cxx:156
 AliITSQASSDChecker.cxx:157
 AliITSQASSDChecker.cxx:158
 AliITSQASSDChecker.cxx:159
 AliITSQASSDChecker.cxx:160
 AliITSQASSDChecker.cxx:161
 AliITSQASSDChecker.cxx:162
 AliITSQASSDChecker.cxx:163
 AliITSQASSDChecker.cxx:164
 AliITSQASSDChecker.cxx:165
 AliITSQASSDChecker.cxx:166
 AliITSQASSDChecker.cxx:167
 AliITSQASSDChecker.cxx:168
 AliITSQASSDChecker.cxx:169
 AliITSQASSDChecker.cxx:170
 AliITSQASSDChecker.cxx:171
 AliITSQASSDChecker.cxx:172
 AliITSQASSDChecker.cxx:173
 AliITSQASSDChecker.cxx:174
 AliITSQASSDChecker.cxx:175
 AliITSQASSDChecker.cxx:176
 AliITSQASSDChecker.cxx:177
 AliITSQASSDChecker.cxx:178
 AliITSQASSDChecker.cxx:179
 AliITSQASSDChecker.cxx:180
 AliITSQASSDChecker.cxx:181
 AliITSQASSDChecker.cxx:182
 AliITSQASSDChecker.cxx:183
 AliITSQASSDChecker.cxx:184
 AliITSQASSDChecker.cxx:185
 AliITSQASSDChecker.cxx:186
 AliITSQASSDChecker.cxx:187
 AliITSQASSDChecker.cxx:188
 AliITSQASSDChecker.cxx:189
 AliITSQASSDChecker.cxx:190
 AliITSQASSDChecker.cxx:191
 AliITSQASSDChecker.cxx:192
 AliITSQASSDChecker.cxx:193
 AliITSQASSDChecker.cxx:194
 AliITSQASSDChecker.cxx:195
 AliITSQASSDChecker.cxx:196
 AliITSQASSDChecker.cxx:197
 AliITSQASSDChecker.cxx:198
 AliITSQASSDChecker.cxx:199
 AliITSQASSDChecker.cxx:200
 AliITSQASSDChecker.cxx:201
 AliITSQASSDChecker.cxx:202
 AliITSQASSDChecker.cxx:203
 AliITSQASSDChecker.cxx:204
 AliITSQASSDChecker.cxx:205
 AliITSQASSDChecker.cxx:206
 AliITSQASSDChecker.cxx:207
 AliITSQASSDChecker.cxx:208
 AliITSQASSDChecker.cxx:209
 AliITSQASSDChecker.cxx:210
 AliITSQASSDChecker.cxx:211
 AliITSQASSDChecker.cxx:212
 AliITSQASSDChecker.cxx:213
 AliITSQASSDChecker.cxx:214
 AliITSQASSDChecker.cxx:215
 AliITSQASSDChecker.cxx:216
 AliITSQASSDChecker.cxx:217
 AliITSQASSDChecker.cxx:218
 AliITSQASSDChecker.cxx:219
 AliITSQASSDChecker.cxx:220
 AliITSQASSDChecker.cxx:221
 AliITSQASSDChecker.cxx:222
 AliITSQASSDChecker.cxx:223
 AliITSQASSDChecker.cxx:224
 AliITSQASSDChecker.cxx:225
 AliITSQASSDChecker.cxx:226
 AliITSQASSDChecker.cxx:227
 AliITSQASSDChecker.cxx:228
 AliITSQASSDChecker.cxx:229
 AliITSQASSDChecker.cxx:230
 AliITSQASSDChecker.cxx:231
 AliITSQASSDChecker.cxx:232
 AliITSQASSDChecker.cxx:233
 AliITSQASSDChecker.cxx:234
 AliITSQASSDChecker.cxx:235
 AliITSQASSDChecker.cxx:236
 AliITSQASSDChecker.cxx:237
 AliITSQASSDChecker.cxx:238
 AliITSQASSDChecker.cxx:239
 AliITSQASSDChecker.cxx:240
 AliITSQASSDChecker.cxx:241
 AliITSQASSDChecker.cxx:242
 AliITSQASSDChecker.cxx:243
 AliITSQASSDChecker.cxx:244
 AliITSQASSDChecker.cxx:245
 AliITSQASSDChecker.cxx:246
 AliITSQASSDChecker.cxx:247
 AliITSQASSDChecker.cxx:248
 AliITSQASSDChecker.cxx:249
 AliITSQASSDChecker.cxx:250
 AliITSQASSDChecker.cxx:251
 AliITSQASSDChecker.cxx:252
 AliITSQASSDChecker.cxx:253
 AliITSQASSDChecker.cxx:254
 AliITSQASSDChecker.cxx:255
 AliITSQASSDChecker.cxx:256
 AliITSQASSDChecker.cxx:257
 AliITSQASSDChecker.cxx:258
 AliITSQASSDChecker.cxx:259
 AliITSQASSDChecker.cxx:260
 AliITSQASSDChecker.cxx:261
 AliITSQASSDChecker.cxx:262
 AliITSQASSDChecker.cxx:263
 AliITSQASSDChecker.cxx:264
 AliITSQASSDChecker.cxx:265
 AliITSQASSDChecker.cxx:266
 AliITSQASSDChecker.cxx:267
 AliITSQASSDChecker.cxx:268
 AliITSQASSDChecker.cxx:269
 AliITSQASSDChecker.cxx:270
 AliITSQASSDChecker.cxx:271
 AliITSQASSDChecker.cxx:272
 AliITSQASSDChecker.cxx:273
 AliITSQASSDChecker.cxx:274
 AliITSQASSDChecker.cxx:275
 AliITSQASSDChecker.cxx:276
 AliITSQASSDChecker.cxx:277
 AliITSQASSDChecker.cxx:278
 AliITSQASSDChecker.cxx:279
 AliITSQASSDChecker.cxx:280
 AliITSQASSDChecker.cxx:281
 AliITSQASSDChecker.cxx:282
 AliITSQASSDChecker.cxx:283
 AliITSQASSDChecker.cxx:284
 AliITSQASSDChecker.cxx:285
 AliITSQASSDChecker.cxx:286
 AliITSQASSDChecker.cxx:287
 AliITSQASSDChecker.cxx:288
 AliITSQASSDChecker.cxx:289
 AliITSQASSDChecker.cxx:290
 AliITSQASSDChecker.cxx:291
 AliITSQASSDChecker.cxx:292
 AliITSQASSDChecker.cxx:293
 AliITSQASSDChecker.cxx:294
 AliITSQASSDChecker.cxx:295
 AliITSQASSDChecker.cxx:296
 AliITSQASSDChecker.cxx:297
 AliITSQASSDChecker.cxx:298
 AliITSQASSDChecker.cxx:299
 AliITSQASSDChecker.cxx:300
 AliITSQASSDChecker.cxx:301
 AliITSQASSDChecker.cxx:302
 AliITSQASSDChecker.cxx:303
 AliITSQASSDChecker.cxx:304
 AliITSQASSDChecker.cxx:305
 AliITSQASSDChecker.cxx:306
 AliITSQASSDChecker.cxx:307
 AliITSQASSDChecker.cxx:308
 AliITSQASSDChecker.cxx:309
 AliITSQASSDChecker.cxx:310
 AliITSQASSDChecker.cxx:311
 AliITSQASSDChecker.cxx:312
 AliITSQASSDChecker.cxx:313
 AliITSQASSDChecker.cxx:314
 AliITSQASSDChecker.cxx:315
 AliITSQASSDChecker.cxx:316
 AliITSQASSDChecker.cxx:317
 AliITSQASSDChecker.cxx:318
 AliITSQASSDChecker.cxx:319
 AliITSQASSDChecker.cxx:320
 AliITSQASSDChecker.cxx:321
 AliITSQASSDChecker.cxx:322
 AliITSQASSDChecker.cxx:323
 AliITSQASSDChecker.cxx:324
 AliITSQASSDChecker.cxx:325
 AliITSQASSDChecker.cxx:326
 AliITSQASSDChecker.cxx:327
 AliITSQASSDChecker.cxx:328
 AliITSQASSDChecker.cxx:329
 AliITSQASSDChecker.cxx:330
 AliITSQASSDChecker.cxx:331
 AliITSQASSDChecker.cxx:332
 AliITSQASSDChecker.cxx:333
 AliITSQASSDChecker.cxx:334
 AliITSQASSDChecker.cxx:335
 AliITSQASSDChecker.cxx:336
 AliITSQASSDChecker.cxx:337
 AliITSQASSDChecker.cxx:338
 AliITSQASSDChecker.cxx:339
 AliITSQASSDChecker.cxx:340
 AliITSQASSDChecker.cxx:341
 AliITSQASSDChecker.cxx:342
 AliITSQASSDChecker.cxx:343
 AliITSQASSDChecker.cxx:344
 AliITSQASSDChecker.cxx:345
 AliITSQASSDChecker.cxx:346
 AliITSQASSDChecker.cxx:347
 AliITSQASSDChecker.cxx:348