#include "AliITSQASPDChecker.h"
#include "AliITSQASDDChecker.h"
#include "AliITSQASSDChecker.h"
+#include "AliITSQADataMakerRec.h"
ClassImp(AliITSQAChecker)
return *this;
}
+
//____________________________________________________________________________
-Double_t * AliITSQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, AliDetectorRecoParam * /*recoParam*/)
+AliITSQAChecker::~AliITSQAChecker(){
+ // destructor
+ if(fSPDChecker)delete fSPDChecker;
+ if(fSDDChecker)delete fSDDChecker;
+ if(fSSDChecker)delete fSSDChecker;
+
+}
+//____________________________________________________________________________
+void AliITSQAChecker::Check(Double_t * rv, AliQAv1::ALITASK_t index, TObjArray ** list, const AliDetectorRecoParam * recoParam)
{
- // Super-basic check on the QA histograms on the input list:
- // look whether they are empty!
- //for the ITS subdetectorQA (Raws Digits Hits RecPoints SDigits) return the worst (= lowest) value of the three result
+ // basic checks on the QA histograms on the input list
+ //for the ITS subdetectorQA (Raws Digits Hits RecPoints SDigits) return the worst value of the three result
if(index == AliQAv1::kESD){
-
- Double_t * rv = new Double_t[AliRecoParam::kNSpecies] ;
+
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
rv[specie] = 0.0 ;
if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) )
if(skipped[k-1]) continue;
if(hdata->GetBinContent(k)<0.5*(entries/6.)){
cluMapSA = kFALSE;
- AliDebug(AliQAv1::GetQADebugLevel(), Form("SA tracks have few points on layer %d - look at histogram hESDClustersSA",k));
+ AliDebug(AliQAv1::GetQADebugLevel(),Form("SA tracks have few points on layer %d - look at histogram hESDClustersSA",k));
}
}
}
if(skipped[k-1]) continue;
if(hdata->GetBinContent(k)<0.5*(entries/6.)){
cluMapMI = kFALSE;
- AliDebug(AliQAv1::GetQADebugLevel(), Form("MI tracks have few points on layer %d - look at histogram hESDClustersMI",k));
+ AliDebug(AliQAv1::GetQADebugLevel(),Form("MI tracks have few points on layer %d - look at histogram hESDClustersMI",k));
}
}
}
for(Int_t k=2; k<7-nskipped; k++){
if(hdata->GetBinContent(k)>maxlaytracks){
cluMI = kFALSE;
- AliDebug(AliQAv1::GetQADebugLevel(), Form("MI Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersMI",k-1,6-nskipped));
+ AliDebug(AliQAv1::GetQADebugLevel(),Form("MI Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersMI",k-1,6-nskipped));
}
}
}
verSPDZ = kTRUE;
if(hdata->GetMean()<-5. && hdata->GetMean()>5.){
verSPDZ = kFALSE;
- AliDebug(AliQAv1::GetQADebugLevel(), Form("Average z vertex coordinate is at z= %10.4g cm",hdata->GetMean()));
+ 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] = 0.1;
- AliWarning("All ESD histograms are empty");
- }
- else {
- rv[specie] = 0.1+0.4*(static_cast<Double_t>(tested-empty)/static_cast<Double_t>(tested));
- if(cluMapSA)rv[specie]+=0.1;
- if(cluMapMI)rv[specie]+=0.1;
- if(cluMI)rv[specie]+=0.1;
- if(cluSA)rv[specie]+=0.1;
- if(verSPDZ)rv[specie]+=0.1;
- }
- }
- }
- }
- AliDebug(AliQAv1::GetQADebugLevel(), Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
+ }
+ 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
+ }
+ }
+ }
+ // 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]));
}
- return rv ;
} // end of ESD QA
-
- Double_t * retval = new Double_t[AliRecoParam::kNSpecies] ;
- //____________________________________________________________________________
+ 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)
spdCheck[specie]=0.;
sddCheck[specie]=0.;
ssdCheck[specie]=0.;
- retval[specie] = 0.0 ;//
+ rv[specie] = 0.0 ;//
//pixel
if(fDet == 0 || fDet == 1) {
fSPDChecker->SetTaskOffset(fSPDOffset);
//printf("spdoffset = %i \n",fSPDOffset );
Double_t histoSPD=double(GetSPDHisto());
-
- Double_t *stepSPD=new Double_t[AliQAv1::kNBIT];
- CreateStepForBit(histoSPD,stepSPD);
- fSPDChecker->SetStepBit(stepSPD);
- spdCheck[specie] = fSPDChecker->Check(index, list[specie]);
- if(spdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||spdCheck[specie]<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)));
- spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
- }
- //if(spdCheck[specie]<0.5)AliInfo(Form("SPD check result for %s (%s) is < 0.5 .The result is %f ",AliQAv1::GetAliTaskName(index),AliRecoParam::GetEventSpecieName(specie),spdCheck[specie]) );
- delete []stepSPD;
- retval[specie]=spdCheck[specie];
- }
+ if(AliITSQADataMakerRec::AreEqual(histoSPD,0)==kFALSE){
+ Double_t *stepSPD=new Double_t[AliQAv1::kNBIT];
+ CreateStepForBit(histoSPD,stepSPD);
+ fSPDChecker->SetStepBit(stepSPD);
+ spdCheck[specie] = fSPDChecker->Check(index, list[specie], recoParam);
+ if(spdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||spdCheck[specie]<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)));
+ spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
+ }
+ delete []stepSPD;
+ }//end check SPD entries
+ else{spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+ rv[specie]=spdCheck[specie];
+ }//end SPD check
//drift
if(fDet == 0 || fDet == 2) {
fSDDChecker->SetTaskOffset(fSDDOffset);
Double_t histoSDD=double(GetSDDHisto());
- Double_t *stepSDD=new Double_t[AliQAv1::kNBIT];
- CreateStepForBit(histoSDD,stepSDD);
- fSDDChecker->SetStepBit(stepSDD);
- sddCheck[specie] = fSDDChecker->Check(index, list[specie]);
- if(sddCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||sddCheck[specie]<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)));
- sddCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
- }
- //if(sddCheck[specie]<0.5)AliInfo(Form("SDD check result for %s (%s) is < 0.5 .The result is %f\f ",AliQAv1::GetAliTaskName(index),AliRecoParam::GetEventSpecieName(specie),sddCheck[specie]) );
- delete []stepSDD;
- if(sddCheck[specie]>retval[specie])retval[specie]=sddCheck[specie];
- }
+ if(AliITSQADataMakerRec::AreEqual(histoSDD,0)==kFALSE){
+ Double_t *stepSDD=new Double_t[AliQAv1::kNBIT];
+ CreateStepForBit(histoSDD,stepSDD);
+ fSDDChecker->SetStepBit(stepSDD);
+ sddCheck[specie] = fSDDChecker->Check(index, list[specie], recoParam);
+ if(sddCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||sddCheck[specie]<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)));
+ sddCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
+ }
+ delete []stepSDD;
+ }//end check SDD entries
+ else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+ if(sddCheck[specie]>rv[specie])rv[specie]=sddCheck[specie];
+ }//end SDD
//strip
if(fDet == 0 || fDet == 3) {
fSSDChecker->SetTaskOffset(fSSDOffset);
Double_t histoSSD=double(GetSSDHisto());
+ if(AliITSQADataMakerRec::AreEqual(histoSSD,0)==kFALSE){
Double_t *stepSSD=new Double_t[AliQAv1::kNBIT];
CreateStepForBit(histoSSD,stepSSD);
fSSDChecker->SetStepBit(stepSSD);
- ssdCheck[specie] = fSSDChecker->Check(index, list[specie]);
+ ssdCheck[specie] = fSSDChecker->Check(index, list[specie], recoParam);
if(ssdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||ssdCheck[specie]<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)));
ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
}
- //if(ssdCheck[specie]<0.5)AliInfo(Form("SSD check result for %s (%s) is < 0.5 . The result is %f ",AliQAv1::GetAliTaskName(index),AliRecoParam::GetEventSpecieName(specie),ssdCheck[specie]) );
delete [] stepSSD;
- if(ssdCheck[specie]>retval[specie])retval[specie]=ssdCheck[specie];
- }
+ }//end check SSD entries
+ else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+ if(ssdCheck[specie]>rv[specie])rv[specie]=ssdCheck[specie];
+ }//end SSD
- 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],retval[specie]));
+ 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]));
// here merging part for common ITS QA result
//
}//end entries
}//end if event specie
}//end for
- return retval;
+ }
}
-
//____________________________________________________________________________
void AliITSQAChecker::SetTaskOffset(Int_t SPDOffset, Int_t SDDOffset, Int_t SSDOffset)
{