-
/**************************************************************************
* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
* *
// --- ROOT system ---
#include "TH1.h"
-#include <TCanvas.h>
#include <TH1D.h>
#include <TH2.h>
-#include <TF1.h>
-
-
-
// --- AliRoot header files ---
+#include "AliITSQADataMakerRec.h"
#include "AliITSQASDDChecker.h"
#include "AliLog.h"
#include "AliCDBEntry.h"
-#include "AliQAManager.h"
-#include "AliQACheckerBase.h"
-#include "TSystem.h"
+#include "AliCDBManager.h"
+//#include "AliQAManager.h"
+//#include "AliQACheckerBase.h"
+//#include "TSystem.h"
#include "AliITSCalibrationSDD.h"
#include "AliITSgeomTGeo.h"
+//#include "AliITSQAChecker.h"
+
ClassImp(AliITSQASDDChecker)
//__________________________________________________________________
AliITSQASDDChecker::~AliITSQASDDChecker()
{
+
+ //destructor
if(fStepBitSDD)
{
delete[] fStepBitSDD ;
} // dtor
//__________________________________________________________________
-Double_t AliITSQASDDChecker::Check(AliQAv1::ALITASK_t index, TObjArray * list, const AliDetectorRecoParam * /*recoparam*/)
-{
+Double_t AliITSQASDDChecker::Check(AliQAv1::ALITASK_t index, const TObjArray * list, const AliDetectorRecoParam * /*recoparam*/)
+{
+ //check histograms of the different lists
AliInfo(Form("AliITSQASDDChecker called with offset: %d\n", fSubDetOffset) );
AliDebug(1,Form("AliITSQASDDChecker called with offset: %d\n", fSubDetOffset));
case AliQAv1::kRAW:
AliInfo(Form("Check on %s\n",AliQAv1::GetAliTaskName(index)));
- if (list->GetEntries() == 0.){ //check if the list is empty
+ if (list->GetEntries() == 0){ //check if the list is empty
//printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
test=test+fHighSDDValue[AliQAv1::kFATAL];
break;
else{
hmodule=hdata;
entries= hdata->GetEntries();
- if(entries==0){
+ if(AliITSQADataMakerRec::AreEqual(entries,0.)){
AliWarning(Form("===================>>>>>> No entries in %s \n",hname.Data()));
//printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
test=test+fStepBitSDD[AliQAv1::kFATAL];
Double_t content=0;
for(Int_t i=1;i<=modmax;i++){
content=hdata->GetBinContent(i);
- if(content==0.){empty++;}
- else if(content!=0.){filled++;}
+ if(AliITSQADataMakerRec::AreEqual(content,0.)){empty++;}
+ else if((AliITSQADataMakerRec::AreEqual(content,0.)==kFALSE)){filled++;}
}//end for
AliInfo(Form(" %s : empty modules %i \t filled modules %i",hname.Data(), empty, filled));
}//end else pattern entries !=0
AliWarning(Form("===================>>>>>> No entries in %s \n",hname.Data()));
//printf("test = %f \t value %f\n",test,fStepBitSDD[AliQAv1::kFATAL]);
test=test+fStepBitSDD[AliQAv1::kFATAL];
- if(entries==0){
+ if(AliITSQADataMakerRec::AreEqual(entries,0.)){
//return test;
//break;
}
Double_t ladcontent=0;
for(Int_t i=1;i<=modmay;i++) {//loop on the ladders
ladcontent=hproj->GetBinContent(i);
- if(ladcontent==0){emptyladders[layer1]++;}
- else if(ladcontent!=0){filledladders[layer1]++;}
+ if(AliITSQADataMakerRec::AreEqual(ladcontent,0.)){emptyladders[layer1]++;}
+ else {filledladders[layer1]++;}
}//end for
AliInfo(Form(" %s : empty ladders %i \t filled ladders %i\n",hname.Data(), emptyladders[layer], filledladders[layer]));//end else layer 3
delete hproj;
}//end if layer 3
}//end if hdata
}//end while
- if(entries==0.&&entries2[0]==0.&&entries2[1]==0.) break;
+ if(AliITSQADataMakerRec::AreEqual(entries,0.)&&AliITSQADataMakerRec::AreEqual(entries2[0],0.)&&AliITSQADataMakerRec::AreEqual(entries2[1],0.)) break;
else{
if(hmodule||(hlayer[0]&&hlayer[1])){
Int_t excluded=0;
for(Int_t i=0;i<2;i++)contentlayer[i]=0.;
if(hmodule)content=hmodule->GetBinContent(imod+1);//if expert bit is active the histogram has been created
contentlayer[lay-3]=hlayer[lay-3]->GetBinContent(det,lad);
- if(content!=0.||contentlayer[lay-3]!=0.)
+ if(AliITSQADataMakerRec::AreEqual(content,0.)==kFALSE||AliITSQADataMakerRec::AreEqual(contentlayer[lay-3],0.)==kFALSE)
{
filledmodules[lay-3]++;
AliWarning(Form("The module %d (layer %i, ladder %i det %i ) excluded from the acquisition, took data \n ",module,lay,lad,det));
exactive++;
}
- else if(content==0.&&contentlayer[lay-3]==0.)emptymodules[lay-3]++;
+ else if(AliITSQADataMakerRec::AreEqual(content,0.)&&AliITSQADataMakerRec::AreEqual(contentlayer[lay-3],0.))emptymodules[lay-3]++;
//AliInfo(Form("The module %d (layer %i, ladder %i det %i ) is bad, content %f content layer %f filled modules position %d ",module,lay,lad,det,contentlayer[lay-3],content,lay-3) );
}//end if bad
else
active++;
//printf("lay: %i\t det %i \t lad %i \n",lay,det,lad );
contentgood=hlayer[lay-3]->GetBinContent(det,lad);
- if(contentgood==0.){emptymodules[lay-3]++;}
- else if(contentgood!=0.){filledmodules[lay-3]++;}
+ if(AliITSQADataMakerRec::AreEqual(contentgood,0.)){emptymodules[lay-3]++;}
+ else {filledmodules[lay-3]++;}
}
//delete cal;
AliInfo(Form("Check on %s\n",AliQAv1::GetAliTaskName(index)));
//TH1*hdata=NULL;
if(list->GetUniqueID()==40){
- if (list->GetEntries() == 0.){ //check if the list is empty
+ if (list->GetEntries() == 0){ //check if the list is empty
//printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
test=fHighSDDValue[AliQAv1::kFATAL];
while( hdata = dynamic_cast<TH1* >(next()) ){
if (hdata){
- if(hdata->GetEntries()==0)test=test+fStepBitSDD[AliQAv1::kFATAL];
+ if(AliITSQADataMakerRec::AreEqual(hdata->GetEntries(),0.))test=test+fStepBitSDD[AliQAv1::kFATAL];
else
{
TString hname=hdata->GetName();
if(uid==60)
{
//digits
- if (list->GetEntries() == 0.){ //check if the list is empty
+ if (list->GetEntries() == 0){ //check if the list is empty
//printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
test=fHighSDDValue[AliQAv1::kFATAL];
else if(uid==50)
{
//hits
- if (list->GetEntries() == 0.){ //check if the list is empty
+ if (list->GetEntries() == 0){ //check if the list is empty
//printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
test=fHighSDDValue[AliQAv1::kFATAL];
else if(uid==70)
{
//sdigits
- if (list->GetEntries() == 0.){ //check if the list is empty
+ if (list->GetEntries() == 0){ //check if the list is empty
//printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
test=fHighSDDValue[AliQAv1::kFATAL];
//__________________________________________________________________
void AliITSQASDDChecker::SetTaskOffset(Int_t taskoffset)
{
+ //set the number of the histograms already present in the list before the SDD histograms
fSubDetOffset = taskoffset;
}
//__________________________________________________________________
-void AliITSQASDDChecker::SetStepBit(Double_t *steprange)
+void AliITSQASDDChecker::SetStepBit(const Double_t *steprange)
{
-
+ //set the values of the step bit for each QA bit range calculated in the AliITSQAChecker class
fStepBitSDD = new Double_t[AliQAv1::kNBIT];
for(Int_t bit=0;bit<AliQAv1::kNBIT;bit++)
{
}
//__________________________________________________________________
-void AliITSQASDDChecker::SetSDDLimits(Float_t *lowvalue, Float_t * highvalue)
+void AliITSQASDDChecker::SetSDDLimits(const Float_t *lowvalue, const Float_t * highvalue)
{
-
+ //set the low and high values in for each QA bit range calculated in the AliITSQAChecker class
fLowSDDValue = new Float_t[AliQAv1::kNBIT];
fHighSDDValue= new Float_t[AliQAv1::kNBIT];
// P. Cerello - apr 2008
//
-
+#include "AliQAv1.h"
// --- ROOT system ---
-class TFile ;
-class TH2F ;
+class TFile;
+class TH2F;
// --- AliRoot header files ---
-#include "AliQAv1.h"
-#include "AliQACheckerBase.h"
-#include "AliITSQAChecker.h"
-#include "AliITSCalibrationSDD.h"
-class AliITSLoader ;
+
+class AliQACheckerBase;
+class AliITSQAChecker;
+class AliITSCalibrationSDD;
+class AliITSLoader;
+class TSystem;
+class AliQAManager;
+class AliLog;
+class TF1;
+class TCanvas;
class AliITSQASDDChecker: public TObject {
AliITSQASDDChecker():fSubDetOffset(0),fStepBitSDD(NULL),fLowSDDValue(NULL),fHighSDDValue(NULL),fCalibration(NULL) {;} // ctor
AliITSQASDDChecker& operator = (const AliITSQASDDChecker& qac) ; //operator =
virtual ~AliITSQASDDChecker(); /*{if(fStepBitSDD) delete[] fStepBitSDD ;if(fLowSDDValue)delete[]fLowSDDValue;if(fHighSDDValue) delete[]fHighSDDValue;if(fCalibration)delete fCalibration;} */// dtor
- virtual Double_t Check(AliQAv1::ALITASK_t index, TObjArray * list, const AliDetectorRecoParam * recoParam);
+ virtual Double_t Check(AliQAv1::ALITASK_t index, const TObjArray * list, const AliDetectorRecoParam * recoParam);
virtual void SetTaskOffset(Int_t taskoffset);
- virtual void SetStepBit(Double_t *steprange);
+ virtual void SetStepBit(const Double_t *steprange);
virtual Double_t *GetStepBit(){return fStepBitSDD;};
- virtual void SetSDDLimits(Float_t *lowvalue, Float_t * highvalue);
+ virtual void SetSDDLimits(const Float_t *lowvalue, const Float_t * highvalue);
private:
AliITSQASDDChecker(const AliITSQASDDChecker& qac):TObject(),fSubDetOffset(qac.fSubDetOffset),fStepBitSDD(qac.fStepBitSDD),fLowSDDValue(qac.fLowSDDValue),fHighSDDValue(qac.fHighSDDValue),fCalibration(qac.fCalibration) {;} // cpy ctor
Int_t fSubDetOffset; // checking operation starting point
- Double_t *fStepBitSDD;
- Float_t *fLowSDDValue;
- Float_t *fHighSDDValue;
- TObjArray *fCalibration;
+ Double_t *fStepBitSDD; //step size for each QAbit(kINFO, kWARNING,kERROR,kFATAL)
+ Float_t *fLowSDDValue; //low value of each QA bit range
+ Float_t *fHighSDDValue; //High value of each QA bit range
+ TObjArray *fCalibration; //TObjArray with Calibration SDD Objects
static const Int_t fgknSDDmodules = 260; // number of SDD modules
static const Int_t fgkmodoffset = 240; // number of SPD modules