From eded565d4a6c0da93dec3954b9c1c3e2e3fcf101 Mon Sep 17 00:00:00 2001 From: masera Date: Fri, 23 Sep 2011 08:19:21 +0000 Subject: [PATCH] fixes for SSD online QA problems (Panos) --- ITS/AliITSQASSDChecker.cxx | 75 +++++++++++++++++++++++++++++++++ ITS/AliITSQASSDChecker.h | 16 ++++--- ITS/AliITSQASSDDataMakerRec.cxx | 8 ++-- 3 files changed, 90 insertions(+), 9 deletions(-) diff --git a/ITS/AliITSQASSDChecker.cxx b/ITS/AliITSQASSDChecker.cxx index 309ab4a2b42..4ea3aed1872 100644 --- a/ITS/AliITSQASSDChecker.cxx +++ b/ITS/AliITSQASSDChecker.cxx @@ -24,6 +24,9 @@ // --- ROOT system --- #include "TH1.h" #include "TString.h" +#include "TCanvas.h" +#include "TStyle.h" +#include "TPad.h" //#include "Riostream.h" // --- AliRoot header files --- @@ -175,6 +178,78 @@ void AliITSQASSDChecker::CheckRaws(TH1* histo) { } +//__________________________________________________________________ +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(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*/) { diff --git a/ITS/AliITSQASSDChecker.h b/ITS/AliITSQASSDChecker.h index 4310d85e9eb..3b878751137 100644 --- a/ITS/AliITSQASSDChecker.h +++ b/ITS/AliITSQASSDChecker.h @@ -17,6 +17,7 @@ // --- ROOT system --- class TFile ; class TH2F ; +class TCanvas; // --- AliRoot header files --- #include "AliQAv1.h" @@ -29,7 +30,7 @@ class AliITSLoader ; class AliITSQASSDChecker: public TObject { public: - AliITSQASSDChecker():fSubDetOffset(0),fStepBitSSD(NULL),fLowSSDValue(NULL),fHighSSDValue(NULL) {;} // ctor + AliITSQASSDChecker():fSubDetOffset(0),fStepBitSSD(NULL),fLowSSDValue(NULL),fHighSSDValue(NULL), fImage(NULL) {;} // ctor AliITSQASSDChecker& operator = (const AliITSQASSDChecker& qac) ; //operator = virtual ~AliITSQASSDChecker() {if(fStepBitSSD) delete[] fStepBitSSD ;if(fLowSSDValue)delete[]fLowSSDValue;if(fHighSSDValue) delete[]fHighSSDValue; } // dtor virtual Double_t Check(AliQAv1::ALITASK_t /*index*/, const TObjArray * list, const AliDetectorRecoParam * recoParam); @@ -42,19 +43,24 @@ public: void SetTaskOffset(Int_t TaskOffset); void SetSSDLimits(const Float_t *lowvalue, const Float_t * highvalue); - virtual Bool_t MakeSSDImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode) - { AliInfo(Form("Use default MakeImage method for the %s for task %s mode %s \n",list[0]->ClassName(), AliQAv1::GetTaskName(task).Data(), AliQAv1::GetModeName(mode))); return kFALSE;} + virtual Bool_t MakeSSDImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode) ; + //virtual Bool_t MakeSSDImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode) + //{ AliInfo(Form("Use default MakeImage method for the %s for task %s mode %s \n",list[0]->ClassName(), AliQAv1::GetTaskName(task).Data(), AliQAv1::GetModeName(mode))); return kFALSE;} + Bool_t MakeSSDRawsImage(TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode );//{AliInfo("The method for raw image has been called\n");} private: - AliITSQASSDChecker(const AliITSQASSDChecker& qac):TObject(),fSubDetOffset(qac.fSubDetOffset),fStepBitSSD(qac.fStepBitSSD),fLowSSDValue(qac.fLowSSDValue),fHighSSDValue(qac.fHighSSDValue) {;} // cpy ctor + AliITSQASSDChecker(const AliITSQASSDChecker& qac):TObject(),fSubDetOffset(qac.fSubDetOffset),fStepBitSSD(qac.fStepBitSSD),fLowSSDValue(qac.fLowSSDValue),fHighSSDValue(qac.fHighSSDValue), fImage(qac.fImage) {;} // cpy ctor Int_t fSubDetOffset; // checking operation starting point Double_t *fStepBitSSD; // step size Float_t *fLowSSDValue; // low limit Float_t *fHighSSDValue; // high limit - ClassDef(AliITSQASSDChecker,2) // description + + TCanvas ** fImage ; //[AliRecoParam::kNSpecies] + + ClassDef(AliITSQASSDChecker,3) // description }; diff --git a/ITS/AliITSQASSDDataMakerRec.cxx b/ITS/AliITSQASSDDataMakerRec.cxx index f602b81a0ba..41afdc08fdc 100644 --- a/ITS/AliITSQASSDDataMakerRec.cxx +++ b/ITS/AliITSQASSDDataMakerRec.cxx @@ -272,7 +272,7 @@ void AliITSQASSDDataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObj Double_t gSizePerDDL = ((TH1*)harr[offs+5+i])->GetMean(); //cout<<"DDL: "<GetEntries()<SetBinContent(i+1,gSizePerDDL); + ((TH1*)harr[offs+4])->SetBinContent(i+1,gSizePerDDL); //cout<<"After filling DDL: "<GetBinContent(i+1)<GetMean(); - ((TH1*)harr[offs+22+i])->SetBinContent(i+1,gSizePerLDC); + ((TH1*)harr[offs+22])->SetBinContent(i+1,gSizePerLDC); //cout<<"LDC: "<GetMean()<Add2RawsList(fHistSSDDataSize, - offsRw+fSSDRawsOffset, !expert, !image, !saveCorr); + offsRw+fSSDRawsOffset, !expert, image, !saveCorr); fSSDRawsOffset += 1; TH1F *fHistSSDDataSizePercentage = new TH1F("fHistSSDDataSizePercentage", "SSD Data Size Percentage;SSD data size [%];Events", @@ -472,7 +472,7 @@ Int_t AliITSQASSDDataMakerRec::InitRaws() { 8,169.5,177.5); fHistSSDDataSizePerLDC->SetStats(kFALSE); rv = fAliITSQADataMakerRec->Add2RawsList(fHistSSDDataSizePerLDC, - offsRw+fSSDRawsOffset, expert, image, !saveCorr); fSSDRawsOffset += 1; + offsRw+fSSDRawsOffset, expert, !image, !saveCorr); fSSDRawsOffset += 1; TH1F *fHistSSDDataSizeLDC[fgkNumOfLDCs]; for(Int_t i = 1; i < fgkNumOfLDCs+1; i++) { gName = "fHistSSDDataSizeLDC"; -- 2.43.0