FEDRA emulsion software from the OPERA Collaboration
EdbStage.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbStage
2 #define ROOT_EdbStage
3 
5 // //
6 // EdbStage //
7 // //
8 // Stage and microscop parameters //
9 // //
11 
12 #ifndef ROOT_TNamed
13 #include "TNamed.h"
14 #endif
15 
16 #ifndef ROOT_EdbAffine
17 #include "EdbAffine.h"
18 #endif
19 
20 //______________________________________________________________________________
21 class EdbCCD : public TNamed {
22 
23 private:
24  Int_t eNx; // number of pixels along X (number of columns)
25  Int_t eNy; // number of pixels along Y (number of rows)
26  Float_t ePixX; // physical pixel size in microns along X
27  Float_t ePixY; // physical pixel size in microns along Y
28 
29 public:
30  EdbCCD( float px=0, float py=0, int nx=0, int ny=0 ): TNamed(),
31  eNx(nx), eNy(ny), ePixX(px), ePixY(py) {}
32  virtual ~EdbCCD() {}
33 
34  void Set(int nx=0, int ny=0, float px=0, float py=0)
35  { eNx=nx; eNy=ny; ePixX=px; ePixY=py; }
36 
37  Int_t GetNx() const { return eNx; }
38  Int_t GetNy() const { return eNy; }
39  Float_t GetPixX() const { return ePixX; }
40  Float_t GetPixY() const { return ePixY; }
41 
42  int ReadParameters( const char *str );
43 
44  void Print(Option_t *opt="") const;
45 
46  ClassDef(EdbCCD,2) // CCD camera specification
47 };
48 
49 //______________________________________________________________________________
50 class EdbObjective : public TNamed {
51 
52  private:
53  Float_t eMagnification;
54 
55  EdbAffine2D *eCCD2Stage; // from CCD pixels to stage microns
56 
57  public:
58  EdbObjective( float mag=0 );
59  virtual ~EdbObjective();
60 
61  void Set( float mag,
62  float a, float b, float c, float d, float p, float q )
64  eCCD2Stage->Set(a,b,c,d,p,q); }
65 
67 
68  void SetCCD2Stage( float a, float b, float c, float d, float p, float q )
69  { eCCD2Stage->Set(a,b,c,d,p,q); }
70 
71  Float_t GetMagnification() const { return eMagnification; }
72  EdbAffine2D *GetCCD2Stage() const { return eCCD2Stage; }
73 
74  Float_t PixelX() const { return TMath::Abs(eCCD2Stage->A11()); }
75  Float_t PixelY() const { return TMath::Abs(eCCD2Stage->A22()); }
76 
77  int ReadParameters( const char *str );
78  void Print(Option_t *opt="") const;
79 
80  ClassDef(EdbObjective,2) // objective affine parameters
81 };
82 
83 
84 //______________________________________________________________________________
85 class EdbStage : public TNamed {
86 
87  private:
88 
89  EdbCCD *eCCD; // CDD matrix physical parameters
90  EdbObjective *eObjective; // Objective parameters
91 
92  EdbAffine3D *eEncoders2Stage; // XYZ encoders to Stage affine transformation parameters
93 
94  public:
96  virtual ~EdbStage();
97 
98  EdbAffine2D *CCD2Stage() const; // create new object with copied affine parameters
99  EdbAffine3D *Encoders2Stage() const; // create new object with copied affine parameters
100 
101  Float_t PixelX() const { return eObjective->PixelX(); }
102  Float_t PixelY() const { return eObjective->PixelY(); }
103 
104  EdbCCD *GetCCD() const { return eCCD; }
105  EdbObjective *GetObjective() const { return eObjective; }
107 
108  void Print(Option_t *opt="") const;
109 
110  ClassDef(EdbStage,2) // stage parameters
111 };
112 
113 #endif /* ROOT_EdbStage */
T mag(const SVector< T, D > &rhs)
Definition: Functions.hh:216
void d()
Definition: RecDispEX.C:381
void a()
Definition: check_aligned.C:59
Definition: EdbAffine.h:17
Float_t A22() const
Definition: EdbAffine.h:46
void Set(EdbAffine2D &a)
Definition: EdbAffine.h:36
Float_t A11() const
Definition: EdbAffine.h:43
Definition: EdbAffine.h:87
Definition: EdbStage.h:21
EdbCCD(float px=0, float py=0, int nx=0, int ny=0)
Definition: EdbStage.h:30
Int_t GetNx() const
Definition: EdbStage.h:37
int ReadParameters(const char *str)
Definition: EdbStage.cxx:93
void Set(int nx=0, int ny=0, float px=0, float py=0)
Definition: EdbStage.h:34
Float_t ePixY
Definition: EdbStage.h:27
void Print(Option_t *opt="") const
Definition: EdbStage.cxx:108
Float_t GetPixX() const
Definition: EdbStage.h:39
Float_t GetPixY() const
Definition: EdbStage.h:40
virtual ~EdbCCD()
Definition: EdbStage.h:32
Float_t ePixX
Definition: EdbStage.h:26
Int_t GetNy() const
Definition: EdbStage.h:38
Int_t eNy
Definition: EdbStage.h:25
Int_t eNx
Definition: EdbStage.h:24
Definition: EdbStage.h:50
void SetCCD2Stage(float a, float b, float c, float d, float p, float q)
Definition: EdbStage.h:68
EdbAffine2D * GetCCD2Stage() const
Definition: EdbStage.h:72
Float_t eMagnification
Definition: EdbStage.h:53
int ReadParameters(const char *str)
Definition: EdbStage.cxx:152
void Print(Option_t *opt="") const
Definition: EdbStage.cxx:170
virtual ~EdbObjective()
Definition: EdbStage.cxx:146
EdbAffine2D * eCCD2Stage
Definition: EdbStage.h:55
EdbObjective(float mag=0)
Definition: EdbStage.cxx:139
void SetMagnification(float mag)
Definition: EdbStage.h:66
Float_t GetMagnification() const
Definition: EdbStage.h:71
void Set(float mag, float a, float b, float c, float d, float p, float q)
Definition: EdbStage.h:61
Float_t PixelX() const
Definition: EdbStage.h:74
Float_t PixelY() const
Definition: EdbStage.h:75
Definition: EdbStage.h:85
Float_t PixelX() const
Definition: EdbStage.h:101
EdbObjective * GetObjective() const
Definition: EdbStage.h:105
void Print(Option_t *opt="") const
Definition: EdbStage.cxx:59
EdbAffine3D * eEncoders2Stage
Definition: EdbStage.h:92
EdbObjective * eObjective
Definition: EdbStage.h:90
EdbCCD * eCCD
Definition: EdbStage.h:89
virtual ~EdbStage()
Definition: EdbStage.cxx:27
EdbAffine3D * Encoders2Stage() const
Definition: EdbStage.cxx:186
EdbAffine2D * CCD2Stage() const
Definition: EdbStage.cxx:179
Float_t PixelY() const
Definition: EdbStage.h:102
EdbCCD * GetCCD() const
Definition: EdbStage.h:104
EdbAffine3D * GetEncoders2Stage() const
Definition: EdbStage.h:106
int nx
Definition: emthickness.cpp:60
int ny
Definition: emthickness.cpp:62
const char * opt
Definition: mc2raw.cxx:42
q
Definition: testBGReduction_AllMethods.C:55
p
Definition: testBGReduction_AllMethods.C:8