00001 00014 #ifndef EVD_H 00015 #define EVD_H 00016 00017 #include "ViewState.h" 00018 #include <Midad/Base/CanvasPage.h> 00019 #include <Midad/Base/GfxButton.h> 00020 #include <Midad/Base/MCText.h> 00021 #include <Midad/Base/MCTree.h> 00022 #include <Midad/Base/DigitText.h> 00023 00024 #include <Midad/Util/Range.h> 00025 #include <Midad/Util/Undoable.h> 00026 #include <Midad/Util/RangeControl.h> 00027 #include <Midad/Util/CompositeRange.h> 00028 #include <Midad/Gui/GuiMenu.h> 00029 #include <Midad/Gui/GuiButton.h> 00030 #include <Midad/Gui/GuiScrolled.h> 00031 #include <Midad/Base/SteelOutline.h> 00032 #include <RecoBase/CandSliceHandle.h> 00033 #include <RecoBase/CandEventHandle.h> 00034 #include "AltTimeHist.h" 00035 #include "RecoText.h" 00036 #include "DisplayOptions.h" 00037 #include <TPolyLine.h> 00038 #include <TText.h> 00039 #include <TGraph.h> 00040 #include <THStack.h> 00041 #include <Conventions/PlaneView.h> 00042 #include "GraphicsView.h" 00043 #include <Midad/Base/TimeHist.h> 00044 #include <sigc++/sigc++.h> 00045 #include "UserHist.h" 00046 00047 #include <vector> 00048 00049 class PageDisplay; 00050 class ColorAxis; 00051 class RangeAxis; 00052 class GfxStrip; 00053 class ZoomPad; 00054 class GfxBase; 00055 class TObject; 00056 class GuiBox; 00057 class Mint; 00058 00059 namespace DisplaySetup 00060 { 00061 static const double kZviewXmin=0.05; 00062 static const double kZviewXmax=0.95; 00063 static const double kZviewYmin=0.45; 00064 static const double kUZviewYmin=0.72; 00065 static const double kVZviewYmax=0.68; 00066 static const double kZviewYmax=0.95; 00067 static const double kZviewSeparation=0.02; 00068 static const double kZviewCenterline=0.7; 00069 static const double kZviewXRUV=0.04; 00070 static const double kZviewYRZ=0.7; 00071 00072 static const double kXYviewXmin=0.05; 00073 static const double kXYviewXmax=0.4; 00074 static const double kXYviewYmin=0.05; 00075 static const double kXYviewYmax=0.4; 00076 static const double kXYviewYR=0.04; 00077 static const double kXYviewXR=0.04; 00078 static const int kGhostColor=16; 00079 00080 static const double kZviewColorFrameYmin=0.25; 00081 static const double kZviewColorFrameYmax=0.40; 00082 static const double kZviewColorFrameXmax=0.95; 00083 } 00084 00085 class EVD : public CanvasPage 00086 { 00087 private: 00088 00089 void SelectionZoom(ZoomPad* zp); 00090 void UpdateView(GraphicsView::GraphicsView_t view); 00091 void InitView(GraphicsView::GraphicsView_t view); 00092 void BuildMenus(void); 00093 void BuildButtons(); 00094 void BuildGfxMenu(); 00095 void ToggleRealCoords(GuiMenu* menu, GuiMenu::GuiMenuList::iterator mit); 00096 void ToggleTimeZoom(GuiMenu* menu, GuiMenu::GuiMenuList::iterator mit); 00097 void ColorSemanticHandler(int which); 00098 void SetChargeRange(); 00099 void DrawVS(); 00100 void UpdateColorButtonTitle(); 00101 void PrintCanvas(); 00102 void RefreshUserHist(); 00103 void FillTimevsY(); 00104 PageDisplay* fPageDisplay; 00105 Mint* fMint; 00106 RecoText* fRecoText; 00107 MCText * fMCText; 00108 MCTree * fMCTree; 00109 DigitText * fDigitText; 00110 GuiTextView * fMCtextbox; 00111 GuiTextView * fRecotextbox; 00112 GuiTextView * fMCTreetextbox; 00113 GuiTextView * fDigittextbox; 00114 GuiScrolled * fMCTreescroll; 00115 GuiBox * fTextBox; 00116 GuiTextButton* fMCbut; 00117 GuiTextButton* fRecobut; 00118 GuiTextButton* fMCTreebut; 00119 GuiTextButton* fDigitbut; 00120 GuiTextButton* fNextSlicebut; 00121 GuiTextButton* fPrevSlicebut; 00122 GuiTextButton* fNextEventbut; 00123 GuiTextButton* fPrevEventbut; 00124 00125 TText * tline[100]; 00126 UserHist * fUserHist; 00127 RangeDouble* fChargeRange; 00128 00129 SigC::Ptr<ViewState> fViewState[3]; 00130 SigC::Ptr<GfxButton> fColorButton[2]; 00131 00132 struct GfxInfo { 00133 GraphicsView::GraphicsView_t graphicsview_type; 00134 GfxInfo(GraphicsView::GraphicsView_t vt) : graphicsview_type(vt) {} 00135 GfxInfo() : graphicsview_type(GraphicsView::kUnknown) {} 00136 }; 00137 00138 typedef std::map<GfxBase*,GfxInfo> GfxList; 00139 GfxList fGfxList; 00140 00141 ZoomPad *fPad[3]; 00142 TPad *TimePad; 00143 TPad *TimevsYPad; 00144 00145 TPad *TextPad; 00146 TimeHist *TimeHst; 00147 AltTimeHist *AltTImeHst; 00148 TGraph *TimevsY; 00149 TPad * chargepad[3]; 00150 TH1F *fChargeHist[3]; 00151 00152 THStack *fRecoChargeHist[3]; 00153 TH1F *fShwRecoChargeHist[3]; 00154 TH1F *fTrkRecoChargeHist[3]; 00155 ColorAxis *fColorAxis[2]; 00156 RangeAxis* fRangeAxis[5]; 00157 00158 RangeControl<double> *fColorControl[2], *fSpatialControl[5]; 00159 00160 SigC::Ptr<UndoHistory> fZoomHistory; 00161 SigC::Ptr<CompositeRange<double> > fCompositeRange; 00162 std::vector<SigC::Connection> fRClist; 00163 00164 TPolyLine* SM1[2]; 00165 TPolyLine* SM2[2]; 00166 TPolyLine* Det[2]; 00167 SteelOutline* Outline; 00168 TList * VS; 00169 00170 DisplayOptions* fDisplayOptions; 00171 00172 Int_t fSlice; 00173 Int_t fNumSlices; 00174 Int_t fEvent; 00175 Int_t fNumEvents; 00176 Int_t fSnarl; 00177 Int_t fGhostColor; 00178 CandEventHandle * fCandEvent; 00179 CandSliceHandle * fCandSlice; 00180 Bool_t fClear; 00181 Bool_t fDrawAll; 00182 Bool_t fDrawGhosts; 00183 Int_t fLastButtonType; 00184 Bool_t fTimeZoom; 00185 00186 public: 00187 00188 EVD(); 00189 ~EVD(); 00190 00191 void AddGfx(const char* gfx_name); 00192 00193 TObject* Init(Mint* mint, PageDisplay* pd, GuiBox& box); 00194 void BlockRanges(bool tf = true); 00195 void Clear(void); 00196 void Update(); 00197 void Unzoom(void); 00198 void Rezoom(void); 00199 void FullZoom(void); 00200 void redo(void); 00201 00202 RangeControl<double> GetColorRangeControl(PlaneView::PlaneView_t view); 00203 ViewState* GetViewState(PlaneView::PlaneView_t view); 00204 void InitChargeHists(TCanvas & canvas); 00205 void UpdateCanvas(); 00206 void UpdateChargeHists(GraphicsView::GraphicsView_t view); 00207 void UpdateTime(); 00208 void NextSlice(); 00209 void PrevSlice(); 00210 void NextEvent(); 00211 void PrevEvent(); 00212 void ZoomTimetoSlice(); 00213 Int_t GetNumSlices(); 00214 Int_t GetNumEvents(); 00215 Int_t GetGhostColor(){return fGhostColor;} 00216 Bool_t GetDrawAll(){return fDrawAll;} 00217 Bool_t GetDrawGhosts(){return fDrawGhosts;} 00218 CandSliceHandle * ReadCandSlice(); 00219 CandSliceHandle * GetCandSlice(){return fCandSlice;} 00220 CandEventHandle * ReadCandEvent(); 00221 CandEventHandle * GetCandEvent(){return fCandEvent;} 00222 void MCtext(); 00223 void Recotext(); 00224 void Digittext(); 00225 void MCTreetext(); 00226 void UpdateSummary(); 00227 int ViewIndex(GraphicsView::GraphicsView_t view); 00228 void UpdateGfxObjects(GraphicsView::GraphicsView_t view); 00229 00230 DisplayOptions * GetDisplayOptions(){return fDisplayOptions;} 00231 PageDisplay * GetPageDisplay(){return fPageDisplay;} 00232 DigitText * GetDigitText(){return fDigitText;} 00233 00234 ClassDef(EVD,0) 00235 00236 }; // end of class EVD 00237 00238 00239 #endif // EVD_H
1.3.9.1