-/**************************************************************************
+ /**************************************************************************
* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
* *
* Author: The ALICE Off-line Project. *
// --- ROOT system ---
#include "TH1.h"
#include <Riostream.h>
+#include "TStyle.h"
// --- AliRoot header files ---
#include "AliITSQAChecker.h"
rv[specie] = 0.; // nothing to check
}
else {
- Double_t *stepbit=new Double_t[AliQAv1::kNBIT];
+ Double_t stepbit[AliQAv1::kNBIT];
Double_t histonumb= list[specie]->GetEntries();
CreateStepForBit(histonumb,stepbit);
TIter next1(list[specie]);
Bool_t skipped[6]={kFALSE,kFALSE,kFALSE,kFALSE,kFALSE,kFALSE};
// look for layers that we wanted to skip
while ( (hdata = dynamic_cast<TH1 *>(next1())) ) {
- if(!hdata) continue;
- TString hname = hdata->GetName();
- if(!hname.Contains("hESDSkippedLayers")) continue;
- for(Int_t k=1; k<7; k++) {
- if(hdata->GetBinContent(k)>0) {
- nskipped++;
- skipped[k-1]=kTRUE;
- }
- }
- }
+ if(hdata){
+ TString hname = hdata->GetName();
+ if(!hname.Contains("hESDSkippedLayers")) continue;
+ for(Int_t k=1; k<7; k++) {
+ if(hdata->GetBinContent(k)>0) {
+ nskipped++;
+ skipped[k-1]=kTRUE;
+ }
+ }
+ }
+ }
TIter next(list[specie]);
while ( (hdata = dynamic_cast<TH1 *>(next())) ) {
if(hdata){
AliDebug(AliQAv1::GetQADebugLevel(),Form("SA tracks have few points on layer %d - look at histogram hESDClustersSA",k));
}
}
- }
-
+ }//end clustermapsa
+
else if(hname.Contains("hESDClusterMapMI") && entries>0.){
// Check if there are layers with anomalously low
// contributing points to MI reconstructed tracks
AliDebug(AliQAv1::GetQADebugLevel(),Form("MI tracks have few points on layer %d - look at histogram hESDClustersMI",k));
}
}
- }
-
+ }//end clustermapmi
+
else if(hname.Contains("hESDClustersMI") && entries>0.){
// Check if 6 clusters MI tracks are the majority
AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
AliDebug(AliQAv1::GetQADebugLevel(),Form("MI Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersMI",k-1,6-nskipped));
}
}
- }
-
+ }//end clustersmi
+
else if(hname.Contains("hESDClustersSA") && entries>0.){
// Check if 6 clusters SA tracks are the majority
AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
AliDebug(AliQAv1::GetQADebugLevel(), Form("SA Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersSA",k-1,6-nskipped));
}
}
- }
-
+ }//end clusterssa
+
else if(hname.Contains("hSPDVertexZ") && entries>0.){
// Check if average Z vertex coordinate is -5 < z < 5 cm
AliDebug(AliQAv1::GetQADebugLevel(),Form("Processing histogram %s",hname.Data()));
verSPDZ = kFALSE;
AliDebug(AliQAv1::GetQADebugLevel(),Form("Average z vertex coordinate is at z= %10.4g cm",hdata->GetMean()));
}
- }
- }
- else{
- AliError("ESD Checker - invalid data type");
- }
- }
- rv[specie] = 0.;
- if(tested>0){
- if(tested == empty){
- rv[specie] = 2500.; // set to error
- AliWarning(Form("All ESD histograms are empty - specie=%d",specie));
- }
- else {
- rv[specie] = 2500.-1500.*(static_cast<Double_t>(tested-empty)/static_cast<Double_t>(tested)); // INFO if all histos are filled
- if(cluMapSA)rv[specie]-=200.;
- if(cluMapMI)rv[specie]-=200.;
- if(cluMI)rv[specie]-=200.;
- if(cluSA)rv[specie]-=200.;
- if(verSPDZ)rv[specie]-=199.; // down to 1 if everything is OK
- }
- }
+ }//end spdvertexz
+
+ else{ AliError("ESD Checker - invalid data type");}//end else
+
+ rv[specie] = 0.;
+ if(tested>0){
+ if(tested == empty){
+ rv[specie] = 2500.; // set to error
+ AliWarning(Form("All ESD histograms are empty - specie=%d",specie));
+ }
+ else {
+ rv[specie] = 2500.-1500.*(static_cast<Double_t>(tested-empty)/static_cast<Double_t>(tested)); // INFO if all histos are filled
+ if(cluMapSA)rv[specie]-=200.;
+ if(cluMapMI)rv[specie]-=200.;
+ if(cluMI)rv[specie]-=200.;
+ if(cluSA)rv[specie]-=200.;
+ if(verSPDZ)rv[specie]-=199.; // down to 1 if everything is OK
+ }
+ }//end tested
+ }//end hdata
+ }//end while
+ // AliDebug(AliQAv1::GetQADebugLevel(), Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
+ AliInfo(Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
}
- // AliDebug(AliQAv1::GetQADebugLevel(), Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
- AliInfo(Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
}
- } // end of ESD QA
-
- //____________________________________________________________________________
+ } // end of ESD QA
+ else{
+
+ //____________________________________________________________________________
- Double_t spdCheck[AliRecoParam::kNSpecies] ;
- Double_t sddCheck[AliRecoParam::kNSpecies] ;
- Double_t ssdCheck[AliRecoParam::kNSpecies] ;
+ Double_t spdCheck[AliRecoParam::kNSpecies] ;
+ Double_t sddCheck[AliRecoParam::kNSpecies] ;
+ Double_t ssdCheck[AliRecoParam::kNSpecies] ;
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
+ if ( !AliQAv1::Instance()->IsEventSpecieSet(specie)) continue;
if ( AliQAv1::Instance()->IsEventSpecieSet(specie) ) {
Double_t histotot=list[specie]->GetEntries();
if(histotot!=0)
//drift
if(fDet == 0 || fDet == 2) {
fSDDChecker->SetTaskOffset(fSDDOffset);
+ fSDDChecker->SetEventSpecieForCheck(specie);
Double_t histoSDD=double(GetSDDHisto());
if(AliITSQADataMakerRec::AreEqual(histoSDD,0)==kFALSE){
Double_t *stepSDD=new Double_t[AliQAv1::kNBIT];
}
delete []stepSDD;
}//end check SDD entries
- else{spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+ else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
if(sddCheck[specie]>rv[specie])rv[specie]=sddCheck[specie];
}//end SDD
//strip
}
delete [] stepSSD;
}//end check SSD entries
- else{spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+ else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
if(ssdCheck[specie]>rv[specie])rv[specie]=ssdCheck[specie];
}//end SSD
}//end entries
}//end if event specie
}//end for
+ }
}
-
//____________________________________________________________________________
void AliITSQAChecker::SetTaskOffset(Int_t SPDOffset, Int_t SDDOffset, Int_t SSDOffset)
{
//____________________________________________________________________________
void AliITSQAChecker::SetDetTaskOffset(Int_t subdet,Int_t offset)
{
+ //returns the offset for each task and for each subdetector
switch(subdet){
case 1:
SetSPDTaskOffset(offset);
//____________________________________________________________________________
void AliITSQAChecker::SetDetHisto(Int_t subdet,Int_t histo)
{
+ //set the number od histograms for the subdetector
switch(subdet){
case 1:
SetSPDHisto(histo);
void AliITSQAChecker::InitQACheckerLimits()
{
-
+ //init the tolerance range for each QA bit
AliInfo("Setting of tolerance values\n");
Float_t lowtolerancevalue[AliQAv1::kNBIT];
void AliITSQAChecker::CreateStepForBit(Double_t histonumb,Double_t *steprange)
{
+ //creation of the step bit for each QA bit
for(Int_t bit=0;bit < AliQAv1::kNBIT; bit++)
{
//printf("%i\t %f \t %f \t %f \n",bit, fUpTestValue[bit],fLowTestValue[AliQAv1::kINFO],histonumb);
//_____________________________________________________________________________
void AliITSQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
{
-
+ //Setting of the QA tolerance values
AliQAv1 * qa = AliQAv1::Instance(index) ;
}
+//__________________________________________________________________
+void AliITSQAChecker::MakeImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode)
+{
+ //make a summary image
+ //gStyle->SetPalette(1);
+
+ //Int_t nImages = 0 ;
+ //Int_t imageindex=0;
+ for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
+ if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) )
+ continue ;
+ //else imageindex=esIndex;
+
+ TIter next(list[esIndex]) ;
+ TH1 * hdata = NULL ;
+ while ( (hdata=static_cast<TH1 *>(next())) ) {
+ TString cln(hdata->ClassName()) ;
+ if ( ! cln.Contains("TH") )
+ continue ;
+ if(cln.Contains("TH2"))
+ {
+ Float_t min=hdata->GetMinimum();
+ Float_t max=hdata->GetMaximum();
+ if(max>min) hdata->SetOption("colz");
+ }
+ }
+ break ;
+ }
+
+ Bool_t retvalue=kFALSE;
+
+ if(GetSubDet()==0) MakeITSImage(list,task, mode);
+ else if(GetSubDet()==1)
+ {
+ retvalue=fSPDChecker->MakeSPDImage(list,task, mode) ;
+ if(retvalue==kFALSE)AliQACheckerBase::MakeImage(list,task, mode);
+ }
+ else if(GetSubDet()==2){ retvalue=fSDDChecker->MakeSDDImage(list,task, mode) ;if(retvalue==kFALSE)AliQACheckerBase::MakeImage(list,task,mode); }
+ else if(GetSubDet()==3)
+ {
+ retvalue=fSSDChecker->MakeSSDImage(list,task, mode) ;
+ if(retvalue==kFALSE)AliQACheckerBase::MakeImage(list,task, mode);
+ }
+
+}
+