FEDRA emulsion software from the OPERA Collaboration
EdbLayer.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbLayer
2 #define ROOT_EdbLayer
3 
4 #include "EdbAffine.h"
5 #include "EdbCell2.h"
6 #include "EdbSegP.h"
7 #include "EdbSegCorr.h"
8 
9 class EdbLayer;
10 
11 //-------------------------------------------------------------------------------------------------
12 class EdbCorrectionMap : public EdbCell2
13 {
14  private:
15 
16  public:
19  virtual ~EdbCorrectionMap();
20 
21  void Init( EdbCell2 &c );
22  void Init( int nx, float minx, float maxx, int ny, float miny, float maxy );
23 
24  EdbLayer *GetLayer(float x, float y) { return (EdbLayer *)(GetObject(x, y, 0)); }
25  EdbLayer *GetLayer(int i) { return (EdbLayer *)(GetObject(i, 0)); }
26  void CorrectSeg( EdbSegP &s );
28  void Print();
29  void PrintDZ();
30  int Ncp();
31 
32  //EdbSegP *CorrLoc(int j);
33  EdbSegCorr CorrLoc(int j);
34  EdbSegCorr CorrLoc(float x, float y);
35 
36  ClassDef(EdbCorrectionMap,1) // to keep and apply correction map
37 };
38 
39 //______________________________________________________________________________
40 class EdbLayer : public TObject {
41 
42  private:
43  Int_t eID; // emulsion layer id (11,12 21,22, ...)
44  Float_t eZ; // the z-coord where X and Y are calculated
45  Float_t eZmin,eZmax; // begin and the end of layer
46 
47  Float_t eX; // the center (0) of the layer's data
48  Float_t eY; //
49  Float_t eDX; // acceptance in x:y
50  Float_t eDY; //
51  Float_t eTX; // direction
52  Float_t eTY; //
53 
54  // corrections to be applied for the segments of this layer:
55 
56  Float_t eShr; // shrinkage along axis z
57  EdbAffine2D eAffXY; // coordinate (XY) affine transformation
58  EdbAffine2D eAffTXTY; // tangents affine transformation
59  Float_t eZcorr; // z-correction
60 
61  Int_t eNcp; // number of coincidences used for corrections calculation
62 
63  EdbCorrectionMap eMap; // local corrections (if any)
64 
65  public:
66  EdbLayer();
67  EdbLayer(const EdbLayer &l);
68  virtual ~EdbLayer(){}
69 
70  void Set0();
71  void Copy(const EdbLayer &l, bool nomap=false );
72  void CopyCorr(const EdbLayer &l);
73  EdbCorrectionMap &Map() { return eMap; }
74  int ID() const {return eID;}
75  int Ncp() const {return eNcp;}
76  float X() const {return eX;}
77  float Y() const {return eY;}
78  float Z() const {return eZ;}
79  float TX() const {return eTX;}
80  float TY() const {return eTY;}
81  float Zmin() const {return eZmin;}
82  float Zmax() const {return eZmax;}
83  float DX() const {return eDX;}
84  float DY() const {return eDY;}
85  float DZ() const {return eZmax-eZmin;}
86  float Xmin() const {return X()-DX();}
87  float Xmax() const {return X()+DX();}
88  float Ymin() const {return Y()-DY();}
89  float Ymax() const {return Y()+DY();}
90  float Shr() const {return eShr;}
91  float Zcorr() const {return eZcorr;}
92  bool IsInside(float x, float y, float z);
93  bool IsInside(float x, float y);
94 
95  void SetID(int id ) {eID=id;}
96  void SetNcp(int n ) {eNcp=n;}
97  void SetXY(float x, float y ) {eX=x; eY=y;}
98  void SetDXDY(float dx, float dy) {eDX=dx; eDY=dy;}
99  void SetTXTY(float tx, float ty ) {eTX=tx; eTY=ty;}
100  void SetShrinkage(float shr) {eShr=shr;}
101  void SetZ(float z) {eZ=z;}
102  void SetZlayer(float z,float zmin,float zmax) { eZ=z;eZmin=zmin;eZmax=zmax; }
103  void SetAffXY(float a11,float a12,float a21,float a22,float b1,float b2)
104  {eAffXY.Set(a11,a12,a21,a22,b1,b2);}
105  void SetAffTXTY(float a11,float a12,float a21,float a22,float b1,float b2)
106  {eAffTXTY.Set(a11,a12,a21,a22,b1,b2);}
107  void SetZcorr(float zcorr) {eZcorr = zcorr;}
108  void ShiftZ(float dz);
109 
110  void SubstructCorrections(EdbLayer &la);
111  void ApplyCorrections(EdbLayer &la);
113  void ApplyCorrections(float shr, float zcorr, const EdbAffine2D &affxy, const EdbAffine2D &afftxty);
114  void ResetAffXY() { eAffXY.Reset(); }
116  void ResetCorr();
117 
118  const EdbAffine2D *AffineXY() const {return &eAffXY;}
119  const EdbAffine2D *AffineTXTY() const {return &eAffTXTY;}
122 
123  float TXp(EdbSegP &s) { return (eAffXY.A11()*s.eTX + eAffXY.A12()*s.eTY) / eShr; } // apply shrinkage and rotation
124  float TYp(EdbSegP &s) { return (eAffXY.A21()*s.eTX + eAffXY.A22()*s.eTY) / eShr; } // of the main transform: eAffXY
125  float TX(EdbSegP &s) { return eAffTXTY.A11()*TXp(s) + eAffTXTY.A12()*TYp(s) + eAffTXTY.B1(); }
126  float TY(EdbSegP &s) { return eAffTXTY.A21()*TXp(s) + eAffTXTY.A22()*TYp(s) + eAffTXTY.B2(); }
127 
128  float Xp(EdbSegP &s) { return eAffXY.A11()*s.eX + eAffXY.A12()*s.eY + eAffXY.B1(); } // only position transform
129  float Yp(EdbSegP &s) { return eAffXY.A21()*s.eX + eAffXY.A22()*s.eY + eAffXY.B2(); }
130  float X(EdbSegP &s) { return Xp(s) + TX(s)*eZcorr; } // apply propagation
131  float Y(EdbSegP &s) { return Yp(s) + TY(s)*eZcorr; }
132  float Zxy() { return eZ+eZcorr; }
133 
134  void CorrectSeg( EdbSegP &s );
135  void CorrectSegLocal( EdbSegP &s );
136 
137  void Invert();
138 
139  void Print();
140  void PrintLocal() { eMap.Print(); }
141 
142  ClassDef(EdbLayer,5) // shrinked layer
143 };
144 
145 #endif /* ROOT_EdbLayer */
brick dz
Definition: RecDispMC.C:107
Definition: EdbAffine.h:17
Float_t B2() const
Definition: EdbAffine.h:48
Float_t A22() const
Definition: EdbAffine.h:46
Float_t A21() const
Definition: EdbAffine.h:45
Float_t A12() const
Definition: EdbAffine.h:44
void Reset()
Definition: EdbAffine.cxx:72
Float_t B1() const
Definition: EdbAffine.h:47
void Set(EdbAffine2D &a)
Definition: EdbAffine.h:36
Float_t A11() const
Definition: EdbAffine.h:43
Definition: EdbCell2.h:151
TObject * GetObject(float x, float y, int ientr) const
Definition: EdbCell2.h:199
Definition: EdbLayer.h:13
EdbLayer * GetLayer(float x, float y)
Definition: EdbLayer.h:24
EdbCorrectionMap(const EdbCorrectionMap &map)
Definition: EdbLayer.h:18
EdbSegCorr CorrLoc(int j)
Definition: EdbLayer.cxx:264
int Ncp()
Definition: EdbLayer.cxx:239
virtual ~EdbCorrectionMap()
Definition: EdbLayer.cxx:163
EdbLayer * GetLayer(int i)
Definition: EdbLayer.h:25
void Print()
Definition: EdbLayer.cxx:195
void ApplyCorrections(EdbCorrectionMap &map)
Definition: EdbLayer.cxx:206
void PrintDZ()
Definition: EdbLayer.cxx:188
void CorrectSeg(EdbSegP &s)
Definition: EdbLayer.cxx:181
void Init(EdbCell2 &c)
Definition: EdbLayer.cxx:168
EdbCorrectionMap()
Definition: EdbLayer.h:17
Definition: EdbLayer.h:40
void Copy(const EdbLayer &l, bool nomap=false)
Definition: EdbLayer.cxx:36
float DY() const
Definition: EdbLayer.h:84
const EdbAffine2D * AffineXY() const
Definition: EdbLayer.h:118
float TYp(EdbSegP &s)
Definition: EdbLayer.h:124
Float_t eZcorr
Definition: EdbLayer.h:59
Int_t eID
Definition: EdbLayer.h:43
void SetAffTXTY(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbLayer.h:105
virtual ~EdbLayer()
Definition: EdbLayer.h:68
void CorrectSegLocal(EdbSegP &s)
Definition: EdbLayer.cxx:76
EdbAffine2D eAffTXTY
Definition: EdbLayer.h:58
float Y(EdbSegP &s)
Definition: EdbLayer.h:131
void SetZcorr(float zcorr)
Definition: EdbLayer.h:107
void Set0()
==============================================================================
Definition: EdbLayer.cxx:24
Float_t eTX
Definition: EdbLayer.h:51
EdbCorrectionMap eMap
Definition: EdbLayer.h:63
int Ncp() const
Definition: EdbLayer.h:75
float Ymin() const
Definition: EdbLayer.h:88
float Zcorr() const
Definition: EdbLayer.h:91
void ResetAffXY()
Definition: EdbLayer.h:114
Float_t eZmax
Definition: EdbLayer.h:45
float Y() const
Definition: EdbLayer.h:77
int ID() const
Definition: EdbLayer.h:74
void SetXY(float x, float y)
Definition: EdbLayer.h:97
float Zxy()
Definition: EdbLayer.h:132
void SetAffXY(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbLayer.h:103
void ShiftZ(float dz)
Definition: EdbLayer.cxx:122
float X() const
Definition: EdbLayer.h:76
float X(EdbSegP &s)
Definition: EdbLayer.h:130
float TY(EdbSegP &s)
Definition: EdbLayer.h:126
float Yp(EdbSegP &s)
Definition: EdbLayer.h:129
void SetTXTY(float tx, float ty)
Definition: EdbLayer.h:99
EdbCorrectionMap & Map()
Definition: EdbLayer.h:73
EdbAffine2D * GetAffineXY()
Definition: EdbLayer.h:120
Float_t eDX
Definition: EdbLayer.h:49
float DZ() const
Definition: EdbLayer.h:85
const EdbAffine2D * AffineTXTY() const
Definition: EdbLayer.h:119
void SetZlayer(float z, float zmin, float zmax)
Definition: EdbLayer.h:102
void ResetCorr()
Definition: EdbLayer.cxx:113
float Ymax() const
Definition: EdbLayer.h:89
void Invert()
Definition: EdbLayer.cxx:61
Float_t eY
Definition: EdbLayer.h:48
Float_t eZ
Definition: EdbLayer.h:44
void SubstructCorrections(EdbLayer &la)
Definition: EdbLayer.cxx:103
void SetID(int id)
Definition: EdbLayer.h:95
Float_t eZmin
Definition: EdbLayer.h:45
float Xmax() const
Definition: EdbLayer.h:87
void Print()
Definition: EdbLayer.cxx:150
void PrintLocal()
Definition: EdbLayer.h:140
Int_t eNcp
Definition: EdbLayer.h:61
float Shr() const
Definition: EdbLayer.h:90
float Zmin() const
Definition: EdbLayer.h:81
float TY() const
Definition: EdbLayer.h:80
float TX() const
Definition: EdbLayer.h:79
float Xp(EdbSegP &s)
Definition: EdbLayer.h:128
float DX() const
Definition: EdbLayer.h:83
void ApplyCorrectionsLocal(EdbCorrectionMap &map)
Definition: EdbLayer.h:112
float Xmin() const
Definition: EdbLayer.h:86
void ApplyCorrections(EdbLayer &la)
Definition: EdbLayer.cxx:82
float Zmax() const
Definition: EdbLayer.h:82
Float_t eShr
Definition: EdbLayer.h:56
EdbAffine2D * GetAffineTXTY()
Definition: EdbLayer.h:121
void ResetAffTXTY()
Definition: EdbLayer.h:115
float TXp(EdbSegP &s)
Definition: EdbLayer.h:123
Float_t eX
Definition: EdbLayer.h:47
float TX(EdbSegP &s)
Definition: EdbLayer.h:125
void SetZ(float z)
Definition: EdbLayer.h:101
void SetShrinkage(float shr)
Definition: EdbLayer.h:100
EdbAffine2D eAffXY
Definition: EdbLayer.h:57
bool IsInside(float x, float y, float z)
Definition: EdbLayer.cxx:128
void CopyCorr(const EdbLayer &l)
Definition: EdbLayer.cxx:54
Float_t eTY
Definition: EdbLayer.h:52
Float_t eDY
Definition: EdbLayer.h:50
EdbLayer()
==============================================================================
Definition: EdbLayer.cxx:11
float Z() const
Definition: EdbLayer.h:78
void CorrectSeg(EdbSegP &s)
Definition: EdbLayer.cxx:70
void SetNcp(int n)
Definition: EdbLayer.h:96
void SetDXDY(float dx, float dy)
Definition: EdbLayer.h:98
Definition: EdbSegCorr.h:8
Definition: EdbSegP.h:18
Float_t eX
Definition: EdbSegP.h:28
Float_t eTX
Definition: EdbSegP.h:29
Float_t eTY
Definition: EdbSegP.h:29
Float_t eY
Definition: EdbSegP.h:28
int nx
Definition: emthickness.cpp:60
int ny
Definition: emthickness.cpp:62
UInt_t id
Definition: tlg2pattern.C:118
EdbSegP * s
Definition: tlg2pattern.C:32