FEDRA emulsion software from the OPERA Collaboration
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
AcqOdyssey.h
Go to the documentation of this file.
1#ifndef ROOT_AcqOdyssey
2#define ROOT_AcqOdyssey
4// //
5// AcqOdyssey //
6// //
7// Interface to MATROX ODYSSEY framegrabber //
8//
9// Cable connecting DB25 "Digital IO" connector of MICOS amplifyer block
10// with DB9 auxiliary digital connector of Odyssey Xpro must be present
11// to provide syncronous stage-framegrabber operation.
12// The pinout is as follows:
13//
14// DB9 Male DB25 Female
15// Pin Signal Pin Signal
16// 1 "Trig0" 5 "Breakpoint3"
17// 6 "GND" 16 "GND"
18// //
20//#endif
21
22#include <cstdio>
23#include <cstdlib>
24#include <string>
25#include <ctime>
26
27#include "TH1.h"
28#include "TObject.h"
29#ifndef __CINT__
30# include "Mil.h"
31# include "imapi.h"
32//# include "mconvol.h"
33#endif
34
35#include "EdbView.h"
36#include "EdbImage.h"
37#include "EdbFrame.h"
38#include "EdbCluster.h"
39#include "TClonesArray.h"
40#include "EdbIP.h"
41
42
43/* Max Number of buffers in the sequence. */
44#define MAX_NB_GRAB 50
45typedef long MIL_ID;
46
47
48//______________________________________________________________________________
49class AcqOdyssey : public TObject {
50
51private:
66// MIL_ID MilKernel ;
70
71 // ONL variables
72 long System;
73 long Device;
74 long Camera;
76 long Control;
77 long BufferN;
78 long Overlay;
82 long Kernel;
83 long BGImage;
84 long GCImage;
87#ifndef __CINT__
89#endif
96 long GrabOSB;
97 long CopyOSB;
99 char bNorm;
100
101
102
103 public:
104
105// Genetive functions
106 AcqOdyssey();
107 virtual ~AcqOdyssey();
108 bool Initialize(char * DCF, int N);
109 void FreeResources();
110
111// Image in-out functions
112 void GetImage(int N, char* buf);
113 void GetImageFast(int N, unsigned char** buf, long *Pitch, long* Lines);
114 EdbImage* GetEdbImage(int N);
115 EdbFrame* GetEdbFrame(int N);
116 EdbClustersBox* GetEdbClustersBox(int N1, int N2);
117 void PutImage(int N, char* buf);
118 void CopyImageToBG(int N);
119 void CopyImageToGC(int N, long ConstBG=0);
120 void PutBGImage(short* buf);
121 void GetBGImage(short* buf);
122 void PutGCImage(short* buf);
123 void GetGCImage(short* buf);
124
125// Image and overlay display finctions
126 void ShowImage(int N);
127 void ShowBGImage();
128 void ShowGCImage();
129 void PlotImage1D(int N, TH1F* hist=NULL);
130 void PlotImage2D(int N);
131 void PlotBGImage();
132 void PlotGCImage();
133 void ShowImages(int N1, int N2, int TimeInterval, int Times);
134 void DrawTrack(int N, float X, float Y, float TX, float TY);
135 void DrawClusters(TClonesArray * Clusters=NULL);
136 void DrawText(int Layer, int X, int Y, char *text);
137 void DrawGrid(float MajorPitch=100., float MinorPitch=10.); //pitches are in microns!
138 void DrawCircles(float RadPitch=100.); //pitches are in microns!
139 void DrawClear();
140
141
142 // Grab control functions
143 void SetFIRFKernel(char *Kern, int W, int H);
144 void SetFIRFNorm(int Norm);
145 int GrabImagesONL(int N, float *Zs=NULL, double Timeout=0);
146 int GrabRawImagesONL(int N, float *Zs=NULL, double Timeout=0);
147 long GrabAndFillView(int N, float *Zs=NULL, double Timeout=0, int Side=0, EdbView * View=NULL, bool FillImages=false);
148 bool IsGrabComplete();
149 int GrabOneImage(float Z, double Timeout=0);
150 void StartLiveGrab();
151 void StopLiveGrab();
152
153// Image analisys functions
154 void XProjectImage(int N, long *buf);
155 void YProjectImage(int N, long *buf);
156 int VFindEdge(int N, int Thresh, int MinWidth, int MaxWidth);
157 int HFindEdge(int N, int Thresh, int MinWidth, int MaxWidth);
158 void TracksFromNImages(int N, int DX, int DY, float TX, float TY, int Dest);
159 long FindClusters(int N, TClonesArray * Clusters=NULL, int Side=0); //clusterisation is made onboard of Odyssey
160 long Clusterize(int N, TClonesArray * Clusters=NULL, int Side=0); //clusterisation is made by host processor
161 long Clusterize(int N, unsigned char *buf, int nc,int nr, TClonesArray * Clusters=NULL, int Side=0); //clusterisation is made by host processor
162 long FillView(int N, int Side=0, EdbView * View=NULL, bool FillImages=false);
163
164// Auxiliary functions
165 void UARTSendString(const char *s, int N);
166 // int BurnPix( unsigned char *buf, int ic, int ir, int xSize, int ySize, EdbClustP *cl );
167
168 int SizeX, SizeY; //Image size, aquired from digitizer settings
169 bool BGImageValid; // Flag set when BG is taken
170 bool GCImageValid; // Flag set when Gain Correction image is taken
171 bool SubtractBG; // Flag to be set by user, controls BG subtraction
172 bool ApplyFIRF; // Flag to be set by user, controls FIR filtering
173 bool ApplyGainCorr; // Flag to be set by user, controls gain correction
174 int Threshold; // Parameter to be set by user, controls threshold cut on the image
175 float ZBuffer[MAX_NB_GRAB]; //Contains Z coordinates of images after scan
176 TClonesArray * eEdbClusters; //Contains clusters when FindClusters() or Clusterise() executed
177 EdbView * eEdbView; // contains EdbView when FillView() is executed
181 int MaxNbGrab; // set to MAX_NB_GRAB, don't modify!!!!
182
183 ClassDef(AcqOdyssey,1)
184};
185
186
187
188#endif /* ROOT_AcqOdyssey */
long MIL_ID
Definition: AcqOdyssey.h:45
#define MAX_NB_GRAB
Definition: AcqOdyssey.h:44
TText * text
Definition: Canv_SYSTEMATICS_ALLCOMBINED__RMSEnergy__vs__Energy__ELECTRON.C:164
Definition: AcqOdyssey.h:49
long ConvImage
Definition: AcqOdyssey.h:79
void CopyImageToBG(int N)
Definition: AcqOdyssey.cxx:370
void StartLiveGrab()
Definition: AcqOdyssey.cxx:1100
long FillView(int N, int Side=0, EdbView *View=NULL, bool FillImages=false)
Definition: AcqOdyssey.cxx:866
long ConvImage2
Definition: AcqOdyssey.h:80
void GetGCImage(short *buf)
Definition: AcqOdyssey.cxx:442
long Clusterize(int N, TClonesArray *Clusters=NULL, int Side=0)
Definition: AcqOdyssey.cxx:933
int GrabOneImage(float Z, double Timeout=0)
Definition: AcqOdyssey.cxx:1084
long Digitizer
Definition: AcqOdyssey.h:75
void PlotImage2D(int N)
Definition: AcqOdyssey.cxx:304
int SizeX
Definition: AcqOdyssey.h:168
long Camera
Definition: AcqOdyssey.h:74
void UARTSendString(const char *s, int N)
Definition: AcqOdyssey.cxx:1217
long ShiftList
Definition: AcqOdyssey.h:93
long ConvImage32
Definition: AcqOdyssey.h:81
void SetFIRFNorm(int Norm)
Definition: AcqOdyssey.cxx:237
bool GCImageValid
Definition: AcqOdyssey.h:170
float PixelToMicronY
Definition: AcqOdyssey.h:179
MIL_ID MilProjResY
Definition: AcqOdyssey.h:69
long GrabAndFillView(int N, float *Zs=NULL, double Timeout=0, int Side=0, EdbView *View=NULL, bool FillImages=false)
Definition: AcqOdyssey.cxx:604
MIL_ID MilOverlayImage
Definition: AcqOdyssey.h:56
long GrabOSB
Definition: AcqOdyssey.h:96
void GetImage(int N, char *buf)
Definition: AcqOdyssey.cxx:349
void PutBGImage(short *buf)
Definition: AcqOdyssey.cxx:425
long CopyOSB1
Definition: AcqOdyssey.h:98
long ShiftBuffer[MAX_NB_GRAB]
Definition: AcqOdyssey.h:92
long GCImage
Definition: AcqOdyssey.h:84
void DrawText(int Layer, int X, int Y, char *text)
Definition: AcqOdyssey.cxx:778
long FindClusters(int N, TClonesArray *Clusters=NULL, int Side=0)
Definition: AcqOdyssey.cxx:991
void FreeResources()
Definition: AcqOdyssey.cxx:52
void ShowBGImage()
Definition: AcqOdyssey.cxx:272
long HostBufferPitch
Definition: AcqOdyssey.h:90
MIL_ID MilDisplay
Definition: AcqOdyssey.h:55
void TracksFromNImages(int N, int DX, int DY, float TX, float TY, int Dest)
Definition: AcqOdyssey.cxx:727
MIL_ID MilSystem
Definition: AcqOdyssey.h:53
EdbFrame * GetEdbFrame(int N)
Definition: AcqOdyssey.cxx:330
int MaxNbGrab
Definition: AcqOdyssey.h:181
MIL_ID MilProjResX
Definition: AcqOdyssey.h:68
EdbClustersBox * GetEdbClustersBox(int N1, int N2)
Definition: AcqOdyssey.cxx:1078
MIL_ID MilImageN
Definition: AcqOdyssey.h:59
void DrawGrid(float MajorPitch=100., float MinorPitch=10.)
Definition: AcqOdyssey.cxx:800
void DrawClusters(TClonesArray *Clusters=NULL)
Definition: AcqOdyssey.cxx:839
EdbImage * GetEdbImage(int N)
Definition: AcqOdyssey.cxx:337
void YProjectImage(int N, long *buf)
Definition: AcqOdyssey.cxx:1133
long HostBufferLines
Definition: AcqOdyssey.h:91
void * pHostBuffer[MAX_NB_GRAB]
Definition: AcqOdyssey.h:88
long CopyOSB
Definition: AcqOdyssey.h:97
void SetFIRFKernel(char *Kern, int W, int H)
Definition: AcqOdyssey.cxx:243
MIL_ID MilImageDisp
Definition: AcqOdyssey.h:65
MIL_ID MilConvImage
Definition: AcqOdyssey.h:62
int Threshold
Definition: AcqOdyssey.h:174
void PlotBGImage()
Definition: AcqOdyssey.cxx:314
void GetImageFast(int N, unsigned char **buf, long *Pitch, long *Lines)
Definition: AcqOdyssey.cxx:356
int GrabImagesONL(int N, float *Zs=NULL, double Timeout=0)
Definition: AcqOdyssey.cxx:472
bool ApplyFIRF
Definition: AcqOdyssey.h:172
TClonesArray * eEdbClusters
Definition: AcqOdyssey.h:176
bool SubtractBG
Definition: AcqOdyssey.h:171
long BufferN
Definition: AcqOdyssey.h:77
void ShowImages(int N1, int N2, int TimeInterval, int Times)
Definition: AcqOdyssey.cxx:447
long Overlay
Definition: AcqOdyssey.h:78
int HFindEdge(int N, int Thresh, int MinWidth, int MaxWidth)
Definition: AcqOdyssey.cxx:1179
void PutGCImage(short *buf)
Definition: AcqOdyssey.cxx:436
long SeqThread
Definition: AcqOdyssey.h:94
long Buffer[MAX_NB_GRAB]
Definition: AcqOdyssey.h:85
long Device
Definition: AcqOdyssey.h:73
EdbView * eEdbView
Definition: AcqOdyssey.h:177
bool ApplyGainCorr
Definition: AcqOdyssey.h:173
void ShowImage(int N)
Definition: AcqOdyssey.cxx:263
long ControlBuf
Definition: AcqOdyssey.h:95
long BGImage
Definition: AcqOdyssey.h:83
void PlotImage1D(int N, TH1F *hist=NULL)
Definition: AcqOdyssey.cxx:284
long TransparentColor
Definition: AcqOdyssey.h:57
long Thread
Definition: AcqOdyssey.h:94
MIL_ID MilConvImage2
Definition: AcqOdyssey.h:63
virtual ~AcqOdyssey()
Definition: AcqOdyssey.cxx:99
void CopyImageToGC(int N, long ConstBG=0)
Definition: AcqOdyssey.cxx:377
MIL_ID MilImage[MAX_NB_GRAB]
Definition: AcqOdyssey.h:58
long Kernel
Definition: AcqOdyssey.h:82
MIL_ID MilGCImage
Definition: AcqOdyssey.h:61
MIL_ID MilDigitizer
Definition: AcqOdyssey.h:54
MIL_ID MilConvImage32
Definition: AcqOdyssey.h:64
int SizeY
Definition: AcqOdyssey.h:168
MIL_ID MilApplication
Definition: AcqOdyssey.h:52
float PixelToMicronX
Definition: AcqOdyssey.h:178
void PutImage(int N, char *buf)
Definition: AcqOdyssey.cxx:420
char bNorm
Definition: AcqOdyssey.h:99
void PlotGCImage()
Definition: AcqOdyssey.cxx:319
bool BGImageValid
Definition: AcqOdyssey.h:169
MIL_ID MilBGImage
Definition: AcqOdyssey.h:60
MIL_ID MilGCKernel
Definition: AcqOdyssey.h:67
long Control
Definition: AcqOdyssey.h:76
long System
Definition: AcqOdyssey.h:72
void GetBGImage(short *buf)
Definition: AcqOdyssey.cxx:431
void StopLiveGrab()
Definition: AcqOdyssey.cxx:1110
int VFindEdge(int N, int Thresh, int MinWidth, int MaxWidth)
Definition: AcqOdyssey.cxx:1141
long HostBuffer[MAX_NB_GRAB]
Definition: AcqOdyssey.h:86
bool Initialize(char *DCF, int N)
Definition: AcqOdyssey.cxx:109
void DrawClear()
Definition: AcqOdyssey.cxx:859
bool IsGrabComplete()
Definition: AcqOdyssey.cxx:232
float ZBuffer[MAX_NB_GRAB]
Definition: AcqOdyssey.h:175
int GrabRawImagesONL(int N, float *Zs=NULL, double Timeout=0)
Definition: AcqOdyssey.cxx:549
void DrawTrack(int N, float X, float Y, float TX, float TY)
Definition: AcqOdyssey.cxx:765
long GrabThread
Definition: AcqOdyssey.h:94
void ShowGCImage()
Definition: AcqOdyssey.cxx:277
AcqOdyssey()
Definition: AcqOdyssey.cxx:35
void XProjectImage(int N, long *buf)
Definition: AcqOdyssey.cxx:1126
void DrawCircles(float RadPitch=100.)
Definition: AcqOdyssey.cxx:784
float OpticalShrinkage
Definition: AcqOdyssey.h:180
Definition: EdbCluster.h:118
Definition: EdbFrame.h:20
Definition: EdbImage.h:23
Base scanning data object: entry into Run tree.
Definition: EdbView.h:134
Definition: Side.h:11
int Norm
int Norm=3;
Definition: hwinit.C:21
void hist()
Definition: init.C:23
s
Definition: check_shower.C:55
Double_t X
Definition: tlg2couples.C:76
Double_t Y
Definition: tlg2couples.C:76
Double_t TY
Definition: tlg2couples.C:78
Double_t TX
Definition: tlg2couples.C:78
Double_t Z
Definition: tlg2couples.C:104
Definition: tlg2couples.C:89
#define NULL
Definition: nidaqmx.h:84
Definition: Struct.h:27
Int_t W
Definition: testBGReduction_By_ANN.C:15