Merge branch 'histocomp'
authorslindal <slindal@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 16 Apr 2010 14:31:44 +0000 (14:31 +0000)
committerslindal <slindal@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 16 Apr 2010 14:31:44 +0000 (14:31 +0000)
* histocomp:
  Updated histogram drawing functions to prevent histograms jumping to wrong canvas

HLT/EVE/AliHLTEveAny.cxx
HLT/EVE/AliHLTEveBase.cxx
HLT/EVE/AliHLTEveBase.h
HLT/EVE/AliHLTEveCalo.cxx
HLT/EVE/AliHLTEveCalo.h
HLT/EVE/AliHLTEveITS.cxx
HLT/EVE/AliHLTEveITS.h

index ffa8263..351812f 100644 (file)
@@ -16,6 +16,7 @@ AliHLTEveAny::AliHLTEveAny() :
   AliHLTEveBase()
 {
   // Constructor.
+  SetDetector("Any detector");
 }
 
 AliHLTEveAny::~AliHLTEveAny()
@@ -40,6 +41,7 @@ void AliHLTEveAny::ProcessHistogram(AliHLTHOMERBlockDesc * block ) {
   if(!fCanvas) {
     fCanvas = CreateCanvas("Orphans", "Orphans");
     fCanvas->Divide(3, 2);
+    SetMaxHistograms(6);
   }
   AddHistogramsToCanvas(block, fCanvas, fHistoCount);
 }
index 030d93e..116d1eb 100644 (file)
@@ -35,7 +35,9 @@ ClassImp(AliHLTEveBase);
 AliHLTEveBase::AliHLTEveBase() : 
   fEventManager(NULL), 
   fCanvas(NULL),
-  fHistoCount(0)
+  fHistoCount(0),
+  fMaxHistos(0), 
+  fDetector("")
 {
   // Constructor.
 }
@@ -64,14 +66,20 @@ TCanvas * AliHLTEveBase::CreateCanvas(TString  tabTitle, TString  canvasTitle )
   return canvas;
 }
 
+
 void AliHLTEveBase::AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas * canvas, Int_t &cdCount ) {
   //See header file for documentation
+
    
   if ( ! block->GetClassName().CompareTo("TObjArray")) {
     TIter next((TObjArray*)(block->GetTObject()));
     TObject *object;
-   
+    
     while (( object = (TObject*) next())) {
+      if (cdCount == fMaxHistos) {
+       cout << "Too many histograms from detector, increase division size!!!!!!!!!!!! Detector: " << GetDetector() << endl;
+       break;
+      }
       TH2F* histo = dynamic_cast<TH2F*>(object);
       if(histo){
        canvas->cd(++cdCount);
@@ -92,7 +100,11 @@ void AliHLTEveBase::AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas
 
     TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
     ++cdCount;
-    canvas->cd(cdCount);
+    if(cdCount > fMaxHistos){
+    
+      cout << "Too many histograms, divide canvas more or create additional. Or ask svein to fix it! Detector: "<< GetDetector()<<endl;
+      cdCount = 1;
+    }  canvas->cd(cdCount);
     histo->Draw();
     
   } 
@@ -101,6 +113,12 @@ void AliHLTEveBase::AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas
     TH2F *histo = reinterpret_cast<TH2F*>(block->GetTObject());
     if (histo) {
       ++cdCount;
+
+      if(cdCount > fMaxHistos){ 
+       cdCount = 1;
+       cout << "Too many histograms, divide canvas more or create additional. Or ask svein to fix it! Detector :" << GetDetector()<<endl;
+      }
+
       canvas->cd(cdCount);
       histo->Draw("COLZ");
     }
index 863a66f..df2b6e4 100644 (file)
 #define ALIHLTEVEBASE_H
 
 #include "Rtypes.h"
+#include "TString.h"
+
 class AliHLTHOMERBlockDesc;
 class AliEveHOMERManager;
 class TCanvas;
-class TString;
+
 
 class AliHLTEveBase{
 
@@ -47,6 +49,15 @@ protected:
   /** Addhistograms to the canvas */
   virtual void AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas * canvas, Int_t &cdCount );
 
+
+       /// Getters and setters for the max number of histograms
+  void SetMaxHistograms(Int_t mh) {fMaxHistos = mh;}
+  Int_t GetMaxHistograms() const {return fMaxHistos;}
+  
+       ///Getter and setter for the detector string
+  void SetDetector(TString det) {fDetector = det;}
+  TString GetDetector() const {return fDetector;}
+
   
   AliEveHOMERManager * fEventManager; //Pointer to AliEveHOMERManager instance
   TCanvas * fCanvas;                  //Canvas for histograms
@@ -60,6 +71,10 @@ private:
   /** assignment operator prohibited */
   AliHLTEveBase& operator=(const AliHLTEveBase&);
 
+  Int_t fMaxHistos;  // Maximum number histograms there is room for. 
+
+  TString fDetector;  //String denoting the detector
+
   ClassDef(AliHLTEveBase, 0);
 };
 
index 71ccbc9..b805add 100644 (file)
@@ -44,10 +44,16 @@ AliHLTEveCalo::AliHLTEveCalo(Int_t nm, TString name) :
   fBoxSet(NULL),
   fElementList(NULL),
   fNModules(nm),
-  fName(name)
+  fName(name), 
+  fPadTitles(NULL)
 {
   // Constructor.
-  for(int i = 0; i < 9; i++) {
+
+  SetMaxHistograms(9);
+
+  fPadTitles = new TString[GetMaxHistograms()];
+
+  for(int i = 0; i < GetMaxHistograms(); i++) {
     fPadTitles[i] = "";
   }
   
@@ -71,8 +77,6 @@ void AliHLTEveCalo::ProcessBlock(AliHLTHOMERBlockDesc * block) {
   //See header file for documentation
 
   if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) { 
-
-    cout <<"calo histo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< endl;
     ProcessHistogram(block);
    
   } else {
@@ -176,21 +180,22 @@ void AliHLTEveCalo::ResetElements(){
 Int_t AliHLTEveCalo::GetPadNumber(TString name) {
 
 
-  cout << "GetPadNumber name   " << name << endl;
+  //cout << "GetPadNumber name   " << name << endl;
 
-  for(int i = 0; i < 9; i++) {
+  for(int i = 0; i < GetMaxHistograms(); i++) {
     if (!fPadTitles[i].CompareTo(name)){
       return i+1;
     }
     else if (!fPadTitles[i].CompareTo("")) {
-      cout <<"in empty title"<<endl;
+      //cout <<"in empty title"<<endl;
       fPadTitles[i] = name;
       return i+1;
     }
   }
   
-  cout << "BALLE returning default 1"<< endl;
-
+  if(fPadTitles[GetMaxHistograms()].CompareTo("")) {
+    cout << "AliHLTEveCalo::GetPadNumber:  We have more histograms than we have room for"<< endl;
+  }
   return 1;
 
 }
@@ -198,6 +203,7 @@ Int_t AliHLTEveCalo::GetPadNumber(TString name) {
 void AliHLTEveCalo::AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas * canvas, Int_t &cdCount ) {
   //See header file for documentation
 
+
   if ( ! block->GetClassName().CompareTo("TObjArray")) {
     TIter next((TObjArray*)(block->GetTObject()));
     TObject *object;
@@ -207,40 +213,18 @@ void AliHLTEveCalo::AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas
       Int_t iPad = GetPadNumber((static_cast<TH1*>(object))->GetName());
       canvas->cd(iPad);
 
+  
+
       //Check if histo is 2D histo
       TH2F* histo = dynamic_cast<TH2F*>(object);
       if(histo){
-       
-       TString name = histo->GetName();
-       if(name.Contains("ClusterEnergy")) {
-         cout << "BALLE CE"<< endl;
 
-         Int_t lb = histo->FindLastBinAbove(0,1);
-         Int_t fb = histo->FindFirstBinAbove(0,1);
-
-         if(lb > -1) {
-           histo->SetAxisRange(0, histo->GetXaxis()->GetBinUpEdge(histo->FindLastBinAbove(0, 1) + 3), "X");
-           histo->SetAxisRange(0, histo->GetYaxis()->GetBinUpEdge(histo->FindLastBinAbove(0, 2) + 3), "Y");
-         }
-       } 
+       Int_t lb = histo->FindLastBinAbove(0,1);
+       if(lb > -1) {
+         histo->SetAxisRange(0, histo->GetXaxis()->GetBinUpEdge(histo->FindLastBinAbove(0, 1) + 3), "X");
+         histo->SetAxisRange(0, histo->GetYaxis()->GetBinUpEdge(histo->FindLastBinAbove(0, 2) + 3), "Y");
+       }
        
-       else if (name.Contains("MatchDistance")) {
-         cout << "BALLE MD"<< endl;
-         Float_t min = histo->GetXaxis()->GetBinLowEdge( histo->FindFirstBinAbove(0, 1) -3 );
-         Float_t max = histo->GetXaxis()->GetBinUpEdge( histo->FindLastBinAbove(0, 1) + 3);
-         min = TMath::Abs(min);
-         if(min > max) 
-           max = min;
-         histo->SetAxisRange(-max, max, "X");
-
-         min = histo->GetYaxis()->GetBinLowEdge( histo->FindFirstBinAbove(0, 2) -3 );
-         max = histo->GetYaxis()->GetBinUpEdge( histo->FindLastBinAbove(0, 2) + 3 );
-         min = TMath::Abs(min);
-         if(min > max) 
-           max = min;
-         histo->SetAxisRange(-max, max, "Y");
-       } 
-
        histo->Draw("COLZ");
       }
       
@@ -251,8 +235,6 @@ void AliHLTEveCalo::AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas
        if (histo) {
 
          TString name = histo->GetName();
-       
-         //canvas->cd(++cdCount);
          
          if(name.Contains("Energy")) {
            histo->SetAxisRange(0, histo->GetXaxis()->GetBinUpEdge(histo->FindLastBinAbove(0, 1) + 3), "X");
@@ -268,26 +250,32 @@ void AliHLTEveCalo::AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas
        }
       }
     }
-  }
-    
-  else if ( ! block->GetClassName().CompareTo("TH1F")) {
+  
+
+  } else if ( ! block->GetClassName().CompareTo("TH1F")) {
 
     TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
-    ++cdCount;
-    canvas->cd(cdCount);
-    histo->Draw();
-    
-  } 
+    if(histo) {
+      
+      Int_t iPad = GetPadNumber(histo->GetName());
+      canvas->cd(iPad);
+      histo->Draw();
+    }
   
-  else if ( ! block->GetClassName().CompareTo("TH2F")) {
+  
+  } else if ( ! block->GetClassName().CompareTo("TH2F")) {
+    
     TH2F *histo = reinterpret_cast<TH2F*>(block->GetTObject());
-    if (histo) {
-      ++cdCount;
-      canvas->cd(cdCount);
-      histo->Draw("COLZ");
+    if(histo) {
+      
+      Int_t iPad = GetPadNumber(histo->GetName());
+      canvas->cd(iPad);
+      histo->Draw();
     }
-  }
 
+
+  }
+  
   canvas->cd();
 }
 
index 19fa283..65938df 100644 (file)
@@ -80,8 +80,8 @@ private:
   AliHLTEveCalo& operator = (const AliHLTEveCalo &);
 
   TString fName;  //PHOS or EMCAL
-  
-  TString fPadTitles[9];
+  TString * fPadTitles;
 
   ClassDef(AliHLTEveCalo, 0);
 };
index 0f6ef65..00b1203 100644 (file)
@@ -38,6 +38,8 @@ AliHLTEveBase(),
   fPointSet(NULL)
 {
   // Constructor.
+
+  SetDetector(fName);
 }
 
 AliHLTEveITS::~AliHLTEveITS()
@@ -54,7 +56,8 @@ void AliHLTEveITS::ProcessBlock(AliHLTHOMERBlockDesc * block) {
   if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) {
     if(!fCanvas) {  
       fCanvas = CreateCanvas(Form("%s QA",fName.Data()), Form("%s QA", fName.Data()));
-      fCanvas->Divide(3, 2);
+      fCanvas->Divide(3, 3);
+      SetMaxHistograms(9);
     }
     AddHistogramsToCanvas( block , fCanvas, fHistoCount);
   } 
index 8b70a27..9eddc74 100644 (file)
@@ -61,7 +61,6 @@ private :
   /** assignment operator prohibited */
   AliHLTEveITS& operator = (const AliHLTEveITS );
 
-  
   ClassDef(AliHLTEveITS, 0);
 };