fixes for SSD online QA problems (Panos)
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Sep 2011 08:19:21 +0000 (08:19 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Sep 2011 08:19:21 +0000 (08:19 +0000)
ITS/AliITSQASSDChecker.cxx
ITS/AliITSQASSDChecker.h
ITS/AliITSQASSDDataMakerRec.cxx

index 309ab4a..4ea3aed 100644 (file)
@@ -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<TH1*>(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*/) { 
index 4310d85..3b87875 100644 (file)
@@ -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 
 
 };
 
index f602b81..41afdc0 100644 (file)
@@ -272,7 +272,7 @@ void AliITSQASSDDataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObj
        Double_t gSizePerDDL = ((TH1*)harr[offs+5+i])->GetMean();
        //cout<<"DDL: "<<i+512<<" - Size: "<<gSizePerDDL<<" - Mean: "<<gSizePerDDL<<endl;
        //cout<<"Entries: "<<((TH1*)harr[offs+5+i])->GetEntries()<<endl;
-       ((TH1*)harr[offs+4+i])->SetBinContent(i+1,gSizePerDDL);
+       ((TH1*)harr[offs+4])->SetBinContent(i+1,gSizePerDDL);
        //cout<<"After filling DDL: "<<i+512<<" - Size: "<< ((TH1F*)harr[offs+4+i])->GetBinContent(i+1)<<endl;
       }
       //
@@ -280,7 +280,7 @@ void AliITSQASSDDataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObj
       for(Int_t i = 0; i < fgkNumOfLDCs; i++) {
        if ( !(harr[offs+23+i]&&harr[offs+22+i])) continue;
        Double_t gSizePerLDC = ((TH1*)harr[offs+23+i])->GetMean();
-       ((TH1*)harr[offs+22+i])->SetBinContent(i+1,gSizePerLDC);
+       ((TH1*)harr[offs+22])->SetBinContent(i+1,gSizePerLDC);
        //cout<<"LDC: "<<i+170<<" - Size: "<<gSizePerLDC<<" - Mean: "<<" - Size: "<<((TH1*)harr[offs+23+i])->GetMean()<<endl;
       }
       //
@@ -428,7 +428,7 @@ Int_t AliITSQASSDDataMakerRec::InitRaws() {
                                    "SSD Data Size;(SSD data size) [KB];Events",
                                    1000,0,500);
   rv = fAliITSQADataMakerRec->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";