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