001 #include "AbstractDisplayFrame.h"
002
003 #include <TApplication.h>
004 #include <TCanvas.h>
005 #include <TGFileDialog.h>
006 #include "TGLabel.h"
007 #include "TGButtonGroup.h"
008
009 #ifdef WIN32
010 #include <Riostream.h>
011 #else
012 #include <iostream.h>
013 #endif
014
015 #include <sstream>
016 #include <string>
017 #include <map>
018
019 using std::cout;
020 using std::cerr;
021 using std::endl;
022
023 #include "PedestalsDisplayFrame.h"
024 #include "StandardDetectorView.h"
025 #include "Scale.h"
026
027 #include "TTreeReader.h"
028 #include "FMStatusBar.h"
029
030 AbstractDisplayFrame::AbstractDisplayFrame( const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h, UInt_t options):
031 m_fMainWindow(main)
032 {
033 m_fMain = new TGTransientFrame(p, main, w, h, options | kVerticalFrame);
034
035
036 m_fMain->SetCleanup(kDeepCleanup);
037
038
039
040
041
042
043 m_fMainArea = new TGHorizontalFrame(m_fMain,0,0, kHorizontalFrame | kSunkenFrame);
044 m_fMain->AddFrame(m_fMainArea, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandY| kLHintsExpandX));
045
046
047 m_fModulesFrame = new TGVerticalFrame(m_fMainArea,410,410, kVerticalFrame | kSunkenFrame);
048 m_fMainArea->AddFrame(m_fModulesFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandY));
049
050
051 m_fDisplayFrame = new TGVerticalFrame(m_fMainArea,0,0, kVerticalFrame | kFitWidth);
052 m_fMainArea->AddFrame(m_fDisplayFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop| kLHintsExpandX | kLHintsExpandY));
053
054
055 int parts[] = {60,15,10,15};
056 m_pStatusBar = new TGStatusBar(m_fMain,50,10,kHorizontalFrame);
057 m_pStatusBar->SetParts(parts,4);
058 m_fMain->AddFrame(m_pStatusBar,new TGLayoutHints(kLHintsBottom | kLHintsExpandX,0,0,2,0));
059
060 m_pExitButton = new FMExitButton(m_fMain, m_fModulesFrame);
061
062 m_pEventSelector =0;
063 m_pDetectorSelector =0;
064 m_pDisplayControl =0;
065 m_pDataSelector =0;
066 m_pScaleSelector =0;
067 m_pExportButton =0;
068 m_pExitButton =0;
069 }
070
071 AbstractDisplayFrame::~AbstractDisplayFrame(void)
072 {
073 m_fMain->Cleanup();
074 delete m_fMain;
075 delete m_pTTreeReader;
076 delete m_pEventSelector;
077 delete m_pDetectorSelector;
078 delete m_pDisplayControl;
079 delete m_pDataSelector;
080 delete m_pScaleSelector;
081 delete m_pExportButton;
082 delete m_pExitButton;
083 }
084
085 void AbstractDisplayFrame::mapFrames(std::string strName) {
086 m_fMain->MapSubwindows();
087 m_fMain->Resize();
088
089
090 m_fMain->CenterOnParent();
091
092 m_fMain->SetWindowName(strName.c_str());
093 m_fMain->MapWindow();
094 }
095
096 std::vector<TTPosition::eDetectorType> AbstractDisplayFrame::getSelectedDetectors() {
097
098 FMDetectorSelector* pDetectorSelector = this->detectorSelector();
099
100 if(!pDetectorSelector) {
101 cerr<<"AbstractDisplayFrame::getSelectedDetectors() - no FMDetectorSelector found !"<<endl;
102 exit(EXIT_FAILURE);
103 } else {
104 std::vector<TTPosition::eDetectorType> vDetectors;
105 FMDetectorSelector::eDetectorId detId = pDetectorSelector->getSelectedDetectors();
106 switch(detId) {
107 case FMDetectorSelector::BT_RADIO_DET_EM:
108 vDetectors.push_back(TTPosition::EM);
109 break;
110 case FMDetectorSelector::BT_RADIO_DET_HAD:
111 vDetectors.push_back(TTPosition::HAD);
112 break;
113 case FMDetectorSelector::BT_RADIO_DET_BOTH:
114 vDetectors.push_back(TTPosition::EM);
115 vDetectors.push_back(TTPosition::HAD);
116 break;
117 }
118 return vDetectors;
119 }
120 }
121
122 TriggerTowerContainer* AbstractDisplayFrame::getTriggerTowerContainer() {
123
124 INtupleReader* treeReader = this->ntupleReader();
125 if(!treeReader) {
126 cerr<<"AbstractDisplayFrame::getTriggerTowerContainer() - no INtupleReader found !"<<endl;
127 exit(EXIT_FAILURE);
128 } else {
129 return treeReader->getTTContainer();
130 }
131 }
132
133 std::map<TTPosition::eDetectorType, Scale> AbstractDisplayFrame::getDataScale() {
134 FMScaleSelector* pScaleSelector = this->scaleSelector();
135 if(!pScaleSelector) {
136 cerr<<"AbstractDisplayFrame::getDataScale() - no FMScaleSelector found !"<<endl;
137 exit(EXIT_FAILURE);
138 } else {
139 return pScaleSelector->dataScale();
140 }
141 }
142
143 void AbstractDisplayFrame::Draw() {
144 IDetectorView* pDetectorView = this->detectorView();
145 if(!pDetectorView) {
146 cerr<<"AbstractDisplayFrame::Draw() - no IDetectorView found !"<<endl;
147
148 } else {
149 pDetectorView->draw();
150 }
151 }
152
153 void AbstractDisplayFrame::onDetectorChangeDraw() {
154 IDetectorView* pDetectorView = this->detectorView();
155 FMScaleSelector* pScaleSelector = this->scaleSelector();
156 if(pScaleSelector&&pDetectorView) {
157
158 m_pScaleSelector->updateFrames();
159 pDetectorView->onDetectorChangeDraw();
160 } else {
161 cerr<<"AbstractDisplayFrame::onDetectorChangeDraw() - no IDetectorView or FMScaleSelector found !"<<endl;
162
163 }
164 }
165
166 void AbstractDisplayFrame::onDataChangeDraw() {
167 IDetectorView* pDetectorView = this->detectorView();
168 FMScaleSelector* pScaleSelector = this->scaleSelector();
169 if(pScaleSelector&&pDetectorView) {
170 pScaleSelector->newData();
171 pDetectorView->onDataChangeDraw();
172 } else {
173 cerr<<"AbstractDisplayFrame::onDataChangeDraw() - no IDetectorView or FMScaleSelector found !"<<endl;
174
175 }
176 }
177
178 void AbstractDisplayFrame::onEventChangeDraw() {
179 IDetectorView* pDetectorView = this->detectorView();
180 FMScaleSelector* pScaleSelector = this->scaleSelector();
181 if(pScaleSelector&&pDetectorView) {
182 pScaleSelector->newData();
183 pDetectorView->onEventChangeDraw();
184 } else {
185 cerr<<"AbstractDisplayFrame::onEventChangeDraw() - no IDetectorView or FMScaleSelector found !"<<endl;
186
187 }
188 }
189
190 TGStatusBar* AbstractDisplayFrame::statusBar() {
191 return m_pStatusBar;
192 }
193
194 void AbstractDisplayFrame::onDisplayBackground(EButtonState state) {
195 IDetectorView* pDetectorView = this->detectorView();
196 if(pDetectorView) {
197 if(state==kButtonDown) {
198 pDetectorView->onDisplayBackground(true);
199 } else {
200 pDetectorView->onDisplayBackground(false);
201 }
202 pDetectorView->updateDisplay();
203 } else {
204 cerr<<"AbstractDisplayFrame::onDisplayBackground() - no IDetectorView found !"<<endl;
205
206 }
207 }
208
209 void AbstractDisplayFrame::onDisplayGrid(EButtonState state) {
210 IDetectorView* pDetectorView = this->detectorView();
211 if(pDetectorView) {
212 if(state==kButtonDown) {
213 pDetectorView->onDisplayGrid(true);
214 } else {
215 pDetectorView->onDisplayGrid(false);
216 }
217 pDetectorView->updateDisplay();
218 } else {
219 cerr<<"AbstractDisplayFrame::onDisplayGrid() - no IDetectorView found !"<<endl;
220
221 }
222 }
223
224 bool AbstractDisplayFrame::getGridState() {
225 FMDisplayControl* pDisplayControl = this->displayControl();
226 if(pDisplayControl) {
227 return pDisplayControl->getGridState();
228 } else {
229 cerr<<"AbstractDisplayFrame::getGridState() - no FMDisplayControl found !"<<endl;
230 exit(EXIT_FAILURE);
231 }
232 }
233
234 bool AbstractDisplayFrame::getBackgroundState() {
235 FMDisplayControl* pDisplayControl = this->displayControl();
236 if(pDisplayControl) {
237 return pDisplayControl->getBackgroundState();
238 } else {
239 cerr<<"AbstractDisplayFrame::getBackgroundState() - no FMDisplayControl found !"<<endl;
240 exit(EXIT_FAILURE);
241 }
242 }
243
244 void AbstractDisplayFrame::onScaleValueChange(void) {
245 IDetectorView* pDetectorView = this->detectorView();
246 if(pDetectorView) {
247 pDetectorView->onScaleChangeDraw();
248 } else {
249 cerr<<"AbstractDisplayFrame::onScaleValueChange() - no IDetectorView found !"<<endl;
250
251 }
252 }
253
254
255 void AbstractDisplayFrame::onTTDumpPanel(int ttIndex) {
256 cout<<"AbstractDisplayFrame::onTTDumpPanel(int ttIndex)"<<endl;
257
258 TGTransientFrame* pDumpPanel = new TGTransientFrame(gClient->GetRoot(), m_fMain ,200, 200);
259
260 m_pTTreeReader->dumpTT2Frame(pDumpPanel, ttIndex);
261
262 pDumpPanel->MapSubwindows();
263 pDumpPanel->Resize();
264
265
266 pDumpPanel->CenterOnParent();
267
268 pDumpPanel->SetWindowName("Dump Panel");
269 pDumpPanel->MapWindow();
270 }
| Due to the LXR bug, the updates fail sometimes to remove references to deleted files. The Saturday's full rebuilds fix these problems |
|
This page was automatically generated by the
LXR engine.
|
|