source: trunk/FACT++/gui/RawEventsViewer/RawEventsViewer.h@ 12185

Last change on this file since 12185 was 12185, checked in by tbretz, 13 years ago
Removed a lot of obsolete code; many simplifications; started to clean up all the mess.
File size: 7.7 KB
Line 
1/*
2 * QtGl.h
3 *
4 * Created on: Jul 20, 2011
5 * Author: lyard
6 */
7
8#ifndef QTGL_H_
9#define QTGL_H_
10
11#define NBOARDS 40 // max. number of boards
12#define NPIX 1440 // max. number of pixels
13#define NTMARK 160 // max. number of timeMarker signals
14
15//#define LOAD_RAW
16
17#include <QObject>
18#include <QTimer>
19#include <QLabel>
20#include <QListWidget>
21#include <QMainWindow>
22#include <QPushButton>
23
24//#include <QtOpenGL/QGLWidget>
25#include "../BasicGlCamera.h"
26
27#include <QMouseEvent>
28#include <QColorDialog>
29#include <QApplication>
30#include <QSpinBox>
31#include <QDoubleSpinBox>
32#include <QRadioButton>
33#include <QCheckBox>
34#include <iostream>
35#include <GL/gl.h>
36
37#include <qwt_plot.h>
38//#include "qwt_plot_histogram.h"
39#include <qwt_plot_curve.h>
40
41#include <qwt_plot_zoomer.h>
42
43#include <valarray>
44
45#include <string>
46
47#include "../../src/DataCalib.h"
48
49
50namespace std
51{
52 class fits;
53}
54
55/*************************************************
56 * Class Raw Data Viewer. FACT raw data diplayer
57 *************************************************/
58class RawDataViewer : public BasicGlCamera//QGLWidget
59{
60 Q_OBJECT
61
62 friend class UIConnector;
63public:
64 RawDataViewer(QWidget *parent = 0);
65 ~RawDataViewer();
66 void openFile(std::string& file);
67 void openCalibFile(std::string& file);
68
69
70
71public Q_SLOTS:
72 void plusEvent();
73 void minusEvent();
74 void setEventStep(int step);
75 void nextSlice();
76 void previousSlice();
77
78Q_SIGNALS:
79 void signalCurrentEvent(int event);
80 void signalCurrentSlice(int slice);
81 void newFileLoaded();
82 void signalCurrentPixel(int pixel);
83 void signalAutoScaleNeeded();
84
85protected:
86// void initializeGL();
87// void resizeGL(int width, int height);
88 void paintGL();
89 void mousePressEvent(QMouseEvent *event);
90 void mouseMoveEvent(QMouseEvent *event);
91 void mouseDoubleClickEvent(QMouseEvent *event);
92 void drawCamera(bool alsoWire);
93// void drawPatches();
94// int PixelAtPosition(const QPoint &pos);
95// void drawHexagon(int index, bool solid);
96 int selectedPixel;
97 float *eventData;
98 int16_t* rawEventData;
99 int16_t* waveLetArray;
100
101private:
102 void drawPixelCurve();
103// void updateNeighbors(int currentPixel);
104// void skipPixels(int start, int howMany);
105// void calculatePixelsCoords();
106 void setCorrectSlice(QMouseEvent* event);
107 void eventStepping(bool plus);
108// void buildVerticesList();
109// void buildPatchesIndices();
110 void calcBlurColor(int pixel, int vertex);
111 void drawBlurryHexagon(int index);
112 int whichSlice;
113 // float shownSizex;
114 // float shownSizey;
115 bool drawPatch;
116 bool drawImpulse;
117 bool drawBlur;
118 bool loopCurrentEvent;
119 //allocate the maximum size for one event
120 uint32_t boardTime[NBOARDS];
121 int16_t startPix[NPIX];
122 int16_t startTM[NTMARK];
123 int32_t pcTime[2];
124 uint32_t softTrig;
125 uint16_t triggerType;
126 int nRows;
127 int rowNum;
128 int eventNum;
129 int nRoi;
130 int nRoiTM;
131 int runNumber;
132 int nTM;
133 int runType;
134 int firstDataTime;
135 int lastDataTime;
136 int revision;
137 int builderVersion;
138 int nBoards;
139 int nPixels;
140 std::string timeSystem;
141 std::string creationDate;
142 int nightInt;
143 std::string camera;
144 std::string daq;
145 float adcCount;
146 int nbOk;
147 int nbRej;
148 int nbBad;
149
150 int eventStep;
151
152// int hardwareMapping[1440];
153// int softwareMapping[1440];
154//// int patches[160][9];
155 GLfloat patchesColor[160][3];
156// vector<edge> patchesIndices[160];
157 std::fits* inputFile;
158// std::fits* calibInputFile;
159// float baseLineMean[1440*1024];
160// float gainMean[1440*1024];
161// float triggerOffsetMean[1440*1024];
162// bool calibrationLoaded;
163 bool drawCalibrationLoaded;
164
165 QPoint lastPos;
166
167 void doMyWaveletTestPlease();
168 void doWaveLetOnCurrentEventPlease();
169 bool doWaveLetsPlease(int givenSpan, int16_t* orig, int16_t* wavelets, bool verifyResult);
170public:
171 void computePulsesStatistics();
172 double aMeas[1024];
173 double n1mean[1024];
174 double n2mean[1024];
175 double vCorr[1024];
176
177// GLfloat pixelsCoords[MAX_NUM_PIXELS][3];
178// PixelsNeighbors neighbors[MAX_NUM_PIXELS];
179 // GLfloat pixelsColor[ACTUAL_NUM_PIXELS][3];
180// GLfloat verticesList[ACTUAL_NUM_PIXELS*6][2];
181// int verticesIndices[ACTUAL_NUM_PIXELS][6];
182// int numVertices;
183};
184
185/*************************************************
186 * Class UIConnector. used to connect the interface to the raw data displayer
187 *************************************************/
188#include "viewer.h"
189
190class Configuration;
191
192class UIConnector : public QMainWindow, protected Ui::MainWindow
193{
194 Q_OBJECT
195private:
196 QTimer timer;
197 std::string currentFile;
198 std::string currentCalibFile;
199
200 QRectF scaleBoundingRectangle(QRectF rectangle, float scale);
201
202 bool updateSpinnerDisplay;
203 bool updating;
204
205 void initHistograms();
206
207public:
208 UIConnector(QWidget *parent = 0);
209
210public Q_SLOTS:
211 void fileSelected(QString file);
212 void calibFileSelected(QString file);
213
214 void newFileLoaded();
215 void playPauseClicked();
216 void slicesPerSecondChanged(double value);
217 void nextSlicePlease();
218 void currentSliceHasChanged(int slice);
219 void currentEventHasChanged(int event);
220
221 void on_loadNewFileButton_clicked();
222 void on_loadDRSCalibButton_clicked();
223
224 void on_drawPatchCheckBox_stateChanged(int);
225 void on_drawImpulseCheckBox_stateChanged(int);
226 void on_drawBlurCheckBox_stateChanged(int);
227 void on_loopOverCurrentEventBox_stateChanged(int);
228
229 void on_colorRange0_valueChanged(double);
230 void on_colorRange1_valueChanged(double);
231 void on_colorRange2_valueChanged(double);
232 void on_colorRange3_valueChanged(double);
233 void on_colorRange4_valueChanged(double);
234 void on_redValue0_valueChanged(double);
235 void on_redValue1_valueChanged(double);
236 void on_redValue2_valueChanged(double);
237 void on_redValue3_valueChanged(double);
238 void on_redValue4_valueChanged(double);
239 void on_greenValue0_valueChanged(double);
240 void on_greenValue1_valueChanged(double);
241 void on_greenValue2_valueChanged(double);
242 void on_greenValue3_valueChanged(double);
243 void on_greenValue4_valueChanged(double);
244 void on_blueValue0_valueChanged(double);
245 void on_blueValue1_valueChanged(double);
246 void on_blueValue2_valueChanged(double);
247 void on_blueValue3_valueChanged(double);
248 void on_blueValue4_valueChanged(double);
249
250 void pixelChanged(int pixel);
251
252 void cbpxChanged();
253
254 void on_HwIDBox_valueChanged(int = 0);
255 void on_SwIDBox_valueChanged(int);
256 void on_crateIDBox_valueChanged(int) { cbpxChanged(); }
257 void on_boardIDBox_valueChanged(int) { cbpxChanged(); }
258 void on_patchIDBox_valueChanged(int) { cbpxChanged(); }
259 void on_pixelIDBox_valueChanged(int) { cbpxChanged(); }
260
261 void on_autoScaleColor_clicked();
262 void on_entireCameraScale_toggled(bool) { on_autoScaleColor_clicked(); }
263 void on_currentPixelScale_toggled(bool) { on_autoScaleColor_clicked(); }
264
265 void slicesPlusPlus();
266 void slicesMinusMinus();
267
268 void on_calibratedCheckBox_stateChanged(int state);
269 void on_displayingSliceBox_valueChanged(int);
270 void on_displayingEventBox_valueChanged(int);
271
272 int SetupConfiguration(Configuration &conf);
273
274private:
275 QwtPlotCurve boardsTimeHistoItem;
276 QwtPlotCurve startCellHistoItem;
277 QwtPlotCurve startTimeMarkHistoItem;
278 QwtPlotCurve pixelValueCurveItem;
279 QwtPlotCurve aMeanCurveItem;
280 QwtPlotCurve vCorrCurveItem;
281 QwtPlotCurve meanCurveItem;
282 QwtPlotCurve triggerDelayHistoItem;
283
284 QwtPlotZoomer* curveZoom;
285 QwtPlotZoomer* boardsTimeHistoZoom;
286 QwtPlotZoomer* startCellHistoZoom;
287 QwtPlotZoomer* startTimeMarkHistoZoom;
288 QwtPlotZoomer* triggerDelayHistoZoom;
289};
290
291#endif /* QTGL_H_ */
Note: See TracBrowser for help on using the repository browser.