+
+//____________________________________________________________________________
+void AliITSQAChecker::SetHisto(Int_t SPDhisto, Int_t SDDhisto, Int_t SSDhisto)
+{
+ //Setting the 3 offsets for each task called
+ fSPDHisto = SPDhisto;
+ fSDDHisto = SDDhisto;
+ fSSDHisto = SSDhisto;
+}
+
+ //____________________________________________________________________________
+ void AliITSQAChecker::SetDetTaskOffset(Int_t subdet,Int_t offset)
+ {
+ switch(subdet){
+ case 1:
+ SetSPDTaskOffset(offset);
+ break;
+ case 2:
+ SetSDDTaskOffset(offset);
+ break;
+ case 3:
+ SetSSDTaskOffset(offset);
+ break;
+ default:
+ AliWarning("No specific (SPD,SDD or SSD) subdetector correspond to to this number!!! all offsets set to zero for all the detectors\n");
+ SetTaskOffset(0, 0, 0);
+ break;
+ }
+ }
+
+ //____________________________________________________________________________
+ void AliITSQAChecker::SetDetHisto(Int_t subdet,Int_t histo)
+ {
+ switch(subdet){
+ case 1:
+ SetSPDHisto(histo);
+ break;
+ case 2:
+ SetSDDHisto(histo);
+ break;
+ case 3:
+ SetSSDHisto(histo);
+ break;
+ default:
+ AliWarning("No specific (SPD,SDD or SSD) subdetector correspond to to this number!!! all offsets set to zero for all the detectors\n");
+ SetHisto(0, 0, 0);
+ break;
+ }
+ }
+
+//_____________________________________________________________________________
+
+void AliITSQAChecker::InitQACheckerLimits()
+{
+
+ AliInfo("Setting of tolerance values\n");
+
+ Float_t lowtolerancevalue[AliQAv1::kNBIT];
+
+ Float_t hightolerancevalue[AliQAv1::kNBIT];
+ for(Int_t bit=0;bit<AliQAv1::kNBIT;bit++)
+ {
+ lowtolerancevalue[bit]=(bit*1000.);
+ hightolerancevalue[bit]=((bit+1.)*1000.);
+ }
+ SetHiLo(hightolerancevalue,lowtolerancevalue);
+ // 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] ));
+
+ if(fDet == 0 || fDet == 1) {
+ fSPDChecker->SetSPDLimits( lowtolerancevalue,hightolerancevalue );
+ }
+ if(fDet == 0 || fDet == 2) {
+ fSDDChecker->SetSDDLimits( lowtolerancevalue,hightolerancevalue );
+ }
+ if(fDet == 0 || fDet == 3) {
+ fSSDChecker->SetSSDLimits( lowtolerancevalue,hightolerancevalue );
+ }
+
+
+
+}
+
+
+//_____________________________________________________________________________
+
+void AliITSQAChecker::CreateStepForBit(Double_t histonumb,Double_t *steprange)
+{
+ 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);
+ steprange[bit]=double((fUpTestValue[bit] - fLowTestValue[AliQAv1::kINFO])/histonumb);
+ //printf("%i\t %f \t %f \t %f \t %f\n",bit, fUpTestValue[bit],fLowTestValue[AliQAv1::kINFO],histonumb,steprange[bit] );
+ }
+ //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]));
+}
+
+
+//_____________________________________________________________________________
+void AliITSQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
+{
+
+ AliQAv1 * qa = AliQAv1::Instance(index) ;
+
+
+ for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
+
+ if (! qa->IsEventSpecieSet(AliRecoParam::ConvertIndex(specie)))
+ continue ;
+ if ( value == NULL ) { // 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, AliRecoParam::ConvertIndex(specie)) ;
+ else if ( value[specie] > fLowTestValue[AliQAv1::kERROR] && value[specie] <= fUpTestValue[AliQAv1::kERROR] )
+ qa->Set(AliQAv1::kERROR, AliRecoParam::ConvertIndex(specie)) ;
+ else if ( value[specie] > fLowTestValue[AliQAv1::kWARNING] && value[specie] <= fUpTestValue[AliQAv1::kWARNING] )
+ qa->Set(AliQAv1::kWARNING, AliRecoParam::ConvertIndex(specie)) ;
+ else if ( value[specie] > fLowTestValue[AliQAv1::kINFO] && value[specie] <= fUpTestValue[AliQAv1::kINFO] )
+ qa->Set(AliQAv1::kINFO, AliRecoParam::ConvertIndex(specie)) ;
+ //else if(value[specie]==0) qa->Set(AliQAv1::kFATAL, AliRecoParam::ConvertIndex(specie)) ; //no ckeck has been done
+ }
+ qa->ShowStatus(AliQAv1::kITS,index,AliRecoParam::ConvertIndex(specie));
+ }//end for
+
+}
+
+
+//__________________________________________________________________
+void AliITSQAChecker::MakeImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode)
+{
+
+ //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")) 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);
+ }
+
+}
+