]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Add support for creation/display of quad-value histograms.
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 18 Apr 2007 13:48:41 +0000 (13:48 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 18 Apr 2007 13:48:41 +0000 (13:48 +0000)
EVE/Reve/QuadSet.cxx
EVE/Reve/QuadSet.h
EVE/Reve/QuadSetEditor.cxx
EVE/Reve/QuadSetEditor.h

index 818b1beaf29b448c8de4f62ba78047e129683643..7f2fe30d415401f1e6569218a4f4c1657d957aee 100644 (file)
@@ -198,6 +198,7 @@ QuadSet::QuadSet(const Text_t* n, const Text_t* t) :
   fRenderMode(RM_Fill),
   fDisableLigting(kTRUE),
   fEmitSignals(kFALSE),
+  fHistoButtons(kTRUE),
   fHMTrans()
 {}
 
@@ -220,6 +221,7 @@ QuadSet::QuadSet(QuadType_e quadType, Bool_t valIsCol, Int_t chunkSize,
   fRenderMode(RM_Fill),
   fDisableLigting(kTRUE),
   fEmitSignals(kFALSE),
+  fHistoButtons(kTRUE),
   fHMTrans()
 {}
 
index 21090d96c766252f5071bb22da6570eaf7dccbb1..ee1d64afccabf666cd5db3d6dbdfe383b3a9e328 100644 (file)
@@ -162,6 +162,7 @@ protected:
   RenderMode_e      fRenderMode;
   Bool_t            fDisableLigting;
   Bool_t            fEmitSignals;
+  Bool_t            fHistoButtons;
   ZTrans            fHMTrans;
 
   static Int_t SizeofAtom(QuadType_e qt);
@@ -208,6 +209,9 @@ public:
   Bool_t GetEmitSignals() const   { return fEmitSignals; }
   void   SetEmitSignals(Bool_t f) { fEmitSignals = f; }
 
+  Bool_t GetHistoButtons() const   { return fHistoButtons; }
+  void   SetHistoButtons(Bool_t f) { fHistoButtons = f; }
+
   ZTrans& RefHMTrans() { return fHMTrans; }
   void SetTransMatrix(Double_t* carr)        { fHMTrans.SetFrom(carr); }
   void SetTransMatrix(const TGeoMatrix& mat) { fHMTrans.SetFrom(mat);  }
index 9adc3862cf7a503bc91ddfd4fd3da20797f6b2c5..f8700862bd8e9b5e98a3184e9a90e2d338df266f 100644 (file)
@@ -9,6 +9,8 @@
 
 #include <TVirtualPad.h>
 #include <TColor.h>
+#include <TH1F.h>
+#include <TStyle.h>
 
 #include <TGLabel.h>
 #include <TGButton.h>
@@ -39,18 +41,31 @@ QuadSetEditor::QuadSetEditor(const TGWindow *p, Int_t width, Int_t height,
   fHMTrans->Connect("TransChanged()", "Reve::QuadSetEditor", this, "Update()");
   AddFrame(fHMTrans, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 0, 0));
 
+
   MakeTitle("Palette controls");
 
   fPalette = new RGBAPaletteSubEditor(this);
   fPalette->Connect("Changed", "Reve::QuadSetEditor", this, "Update()");
   AddFrame(fPalette, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 0, 0));
 
-  // MakeTitle("QuadSet");
 
-  // Create widgets
-  // fXYZZ = new TGSomeWidget(this, ...);
-  // AddFrame(fXYZZ, new TGLayoutHints(...));
-  // fXYZZ->Connect("SignalName()", "Reve::QuadSetEditor", this, "DoXYZZ()");
+  MakeTitle("QuadSet");
+
+  fHistoButtFrame = new TGHorizontalFrame(this);
+  {
+    TGTextButton* b = 0;
+
+    b = new TGTextButton(fHistoButtFrame, "Histo");
+    b->SetToolTipText("Show histogram over full range.");
+    fHistoButtFrame->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
+    b->Connect("Clicked()", "Reve::QuadSetEditor", this, "DoHisto()");
+
+    b = new TGTextButton(fHistoButtFrame, "Range Histo");
+    b->SetToolTipText("Show histogram over selected range.");
+    fHistoButtFrame->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
+    b->Connect("Clicked()", "Reve::QuadSetEditor", this, "DoRangeHisto()");
+  }
+  AddFrame(fHistoButtFrame, new TGLayoutHints(kLHintsExpandX, 2, 0, 0, 0));
 }
 
 QuadSetEditor::~QuadSetEditor()
@@ -71,16 +86,54 @@ void QuadSetEditor::SetModel(TObject* obj)
     fPalette->MapWindow();
   }
 
+
   // Set values of widgets
   // fXYZZ->SetValue(fM->GetXYZZ());
+
+  if (fM->fHistoButtons)
+    fHistoButtFrame->MapWindow();
+  else
+    fHistoButtFrame->UnmapWindow();
 }
 
 /**************************************************************************/
 
-// Implements callback/slot methods
+void QuadSetEditor::DoHisto()
+{
+  printf("beep\n");
+  Int_t min, max;
+  if (fM->fPalette) {
+    min = fM->fPalette->GetLowLimit();
+    max = fM->fPalette->GetHighLimit();
+  } else {
+    fM->ScanMinMaxValues(min, max);
+  }
+  PlotHisto(min, max);
+}
+
+void QuadSetEditor::DoRangeHisto()
+{
+  printf("boop\n");
+  Int_t min, max;
+  if (fM->fPalette) {
+    min = fM->fPalette->GetMinVal();
+    max = fM->fPalette->GetMaxVal();
+  } else {
+    fM->ScanMinMaxValues(min, max);
+  }
+  PlotHisto(min, max);
+}
 
-// void QuadSetEditor::DoXYZZ()
-// {
-//   fM->SetXYZZ(fXYZZ->GetValue());
-//   Update();
-// }
+void QuadSetEditor::PlotHisto(Int_t min, Int_t max)
+{
+  TH1F* h = new TH1F(fM->GetName(), fM->GetTitle(), max-min+1, min-0.5, max+0.5);
+  h->SetDirectory(0);
+  h->SetBit(kCanDelete);
+  VoidCPlex::iterator qi(fM->fPlex);
+  while (qi.next())
+    h->Fill(((QuadSet::QuadBase*)qi())->fValue);
+  gStyle->SetOptStat(1111111);
+  h->Draw();
+  gPad->Modified();
+  gPad->Update();
+}
index 9a6ed46ab106788d5f47913fecfc90e3cf116b7a..1c157a0f47c85aa20a6ebc33938b982c8e6def50 100644 (file)
@@ -35,7 +35,7 @@ protected:
   RGBAPaletteSubEditor* fPalette;
 
   // Declare widgets
-  // TGSomeWidget*   fXYZZ;
+  TGHorizontalFrame*    fHistoButtFrame;
 
 public:
   QuadSetEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30, UInt_t options = kChildFrame, Pixel_t back=GetDefaultFrameBackground());
@@ -44,7 +44,9 @@ public:
   virtual void SetModel(TObject* obj);
 
   // Declare callback/slot methods
-  // void DoXYZZ();
+  void DoHisto();
+  void DoRangeHisto();
+  void PlotHisto(Int_t min, Int_t max);
 
   ClassDef(QuadSetEditor, 1); // Editor for QuadSet
 }; // endclass QuadSetEditor