FEDRA emulsion software from the OPERA Collaboration
EdbLayer Class Reference

#include <EdbLayer.h>

Inheritance diagram for EdbLayer:
Collaboration diagram for EdbLayer:

Public Member Functions

const EdbAffine2DAffineTXTY () const
 
const EdbAffine2DAffineXY () const
 
void ApplyCorrections (EdbLayer &la)
 
void ApplyCorrections (float shr, float zcorr, const EdbAffine2D &affxy, const EdbAffine2D &afftxty)
 
void ApplyCorrectionsLocal (EdbCorrectionMap &map)
 
void Copy (const EdbLayer &l, bool nomap=false)
 
void CopyCorr (const EdbLayer &l)
 
void CorrectSeg (EdbSegP &s)
 
void CorrectSegLocal (EdbSegP &s)
 
float DX () const
 
float DY () const
 
float DZ () const
 
 EdbLayer ()
 ============================================================================== More...
 
 EdbLayer (const EdbLayer &l)
 ============================================================================== More...
 
EdbAffine2DGetAffineTXTY ()
 
EdbAffine2DGetAffineXY ()
 
int ID () const
 
void Invert ()
 
bool IsInside (float x, float y)
 
bool IsInside (float x, float y, float z)
 
EdbCorrectionMapMap ()
 
int Ncp () const
 
void Print ()
 
void PrintLocal ()
 
void ResetAffTXTY ()
 
void ResetAffXY ()
 
void ResetCorr ()
 
void Set0 ()
 ============================================================================== More...
 
void SetAffTXTY (float a11, float a12, float a21, float a22, float b1, float b2)
 
void SetAffXY (float a11, float a12, float a21, float a22, float b1, float b2)
 
void SetDXDY (float dx, float dy)
 
void SetID (int id)
 
void SetNcp (int n)
 
void SetShrinkage (float shr)
 
void SetTXTY (float tx, float ty)
 
void SetXY (float x, float y)
 
void SetZ (float z)
 
void SetZcorr (float zcorr)
 
void SetZlayer (float z, float zmin, float zmax)
 
void ShiftZ (float dz)
 
float Shr () const
 
void SubstructCorrections (EdbLayer &la)
 
float TX () const
 
float TX (EdbSegP &s)
 
float TXp (EdbSegP &s)
 
float TY () const
 
float TY (EdbSegP &s)
 
float TYp (EdbSegP &s)
 
float X () const
 
float X (EdbSegP &s)
 
float Xmax () const
 
float Xmin () const
 
float Xp (EdbSegP &s)
 
float Y () const
 
float Y (EdbSegP &s)
 
float Ymax () const
 
float Ymin () const
 
float Yp (EdbSegP &s)
 
float Z () const
 
float Zcorr () const
 
float Zmax () const
 
float Zmin () const
 
float Zxy ()
 
virtual ~EdbLayer ()
 

Private Attributes

EdbAffine2D eAffTXTY
 
EdbAffine2D eAffXY
 
Float_t eDX
 
Float_t eDY
 
Int_t eID
 
EdbCorrectionMap eMap
 
Int_t eNcp
 
Float_t eShr
 
Float_t eTX
 
Float_t eTY
 
Float_t eX
 
Float_t eY
 
Float_t eZ
 
Float_t eZcorr
 
Float_t eZmax
 
Float_t eZmin
 

Constructor & Destructor Documentation

◆ EdbLayer() [1/2]

EdbLayer::EdbLayer ( )

==============================================================================

12 {
13  Set0();
14 }
void Set0()
==============================================================================
Definition: EdbLayer.cxx:24

◆ EdbLayer() [2/2]

EdbLayer::EdbLayer ( const EdbLayer l)

==============================================================================

18 {
19  Set0();
20  Copy(l);
21 }
void Copy(const EdbLayer &l, bool nomap=false)
Definition: EdbLayer.cxx:36

◆ ~EdbLayer()

virtual EdbLayer::~EdbLayer ( )
inlinevirtual
68 {}

Member Function Documentation

◆ AffineTXTY()

const EdbAffine2D* EdbLayer::AffineTXTY ( ) const
inline
119 {return &eAffTXTY;}
EdbAffine2D eAffTXTY
Definition: EdbLayer.h:58

◆ AffineXY()

const EdbAffine2D* EdbLayer::AffineXY ( ) const
inline
118 {return &eAffXY;}
EdbAffine2D eAffXY
Definition: EdbLayer.h:57

◆ ApplyCorrections() [1/2]

void EdbLayer::ApplyCorrections ( EdbLayer la)

83 {
84  ApplyCorrections( la.Shr(), la.Zcorr(), *(la.GetAffineXY()), *(la.GetAffineTXTY()) );
85  SetNcp(la.Ncp());
86 }
int Ncp() const
Definition: EdbLayer.h:75
float Zcorr() const
Definition: EdbLayer.h:91
EdbAffine2D * GetAffineXY()
Definition: EdbLayer.h:120
float Shr() const
Definition: EdbLayer.h:90
void ApplyCorrections(EdbLayer &la)
Definition: EdbLayer.cxx:82
EdbAffine2D * GetAffineTXTY()
Definition: EdbLayer.h:121
void SetNcp(int n)
Definition: EdbLayer.h:96

◆ ApplyCorrections() [2/2]

void EdbLayer::ApplyCorrections ( float  shr,
float  zcorr,
const EdbAffine2D affxy,
const EdbAffine2D afftxty 
)

90 {
91  eShr *= shr;
92  eZcorr += zcorr;
93  Log(3,"EdbLayer::ApplyCorrections","eShr: %f eZcorr: %f ", eShr, eZcorr );
94  Log(3,"EdbLayer::ApplyCorrections","aff before: %s", eAffXY.AsString());
95  Log(3,"EdbLayer::ApplyCorrections","corr : %s", affxy.AsString());
96  eAffXY.Transform(affxy);
97  Log(3,"EdbLayer::ApplyCorrections","aff after: %s", eAffXY.AsString());
98  Log(3,"EdbLayer::ApplyCorrections","afftxty : %s", afftxty.AsString());
99  eAffTXTY.Transform(afftxty);
100 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
const char * AsString() const
Definition: EdbAffine.cxx:57
void Transform(const EdbAffine2D *a)
Definition: EdbAffine.cxx:93
Float_t eZcorr
Definition: EdbLayer.h:59
Float_t eShr
Definition: EdbLayer.h:56

◆ ApplyCorrectionsLocal()

void EdbLayer::ApplyCorrectionsLocal ( EdbCorrectionMap map)
inline
112 { eMap.ApplyCorrections(map); }
void ApplyCorrections(EdbCorrectionMap &map)
Definition: EdbLayer.cxx:206
EdbCorrectionMap eMap
Definition: EdbLayer.h:63

◆ Copy()

void EdbLayer::Copy ( const EdbLayer l,
bool  nomap = false 
)

37 {
38  eID = l.ID();
39  eZ = l.Z();
40  eZmin=l.Zmin();
41  eZmax=l.Zmax();
42  eX=l.X();
43  eY=l.Y();
44  eTX=l.TX();
45  eTY=l.TY();
46  eDX=l.DX();
47  eDY=l.DY();
48  CopyCorr(l);
49  eNcp = l.eNcp;
50  if(nomap) eMap.Copy(l.eMap);
51 }
void Copy(const EdbCell2 &cell)
Definition: EdbCell2.cpp:665
float DY() const
Definition: EdbLayer.h:84
Int_t eID
Definition: EdbLayer.h:43
Float_t eTX
Definition: EdbLayer.h:51
Float_t eZmax
Definition: EdbLayer.h:45
float Y() const
Definition: EdbLayer.h:77
int ID() const
Definition: EdbLayer.h:74
float X() const
Definition: EdbLayer.h:76
Float_t eDX
Definition: EdbLayer.h:49
Float_t eY
Definition: EdbLayer.h:48
Float_t eZ
Definition: EdbLayer.h:44
Float_t eZmin
Definition: EdbLayer.h:45
Int_t eNcp
Definition: EdbLayer.h:61
float Zmin() const
Definition: EdbLayer.h:81
float TY() const
Definition: EdbLayer.h:80
float TX() const
Definition: EdbLayer.h:79
float DX() const
Definition: EdbLayer.h:83
float Zmax() const
Definition: EdbLayer.h:82
Float_t eX
Definition: EdbLayer.h:47
void CopyCorr(const EdbLayer &l)
Definition: EdbLayer.cxx:54
Float_t eTY
Definition: EdbLayer.h:52
Float_t eDY
Definition: EdbLayer.h:50
float Z() const
Definition: EdbLayer.h:78

◆ CopyCorr()

void EdbLayer::CopyCorr ( const EdbLayer l)

55 {
56  ResetCorr();
57  ApplyCorrections( l.Shr(), l.Zcorr(), *(l.AffineXY()), *(l.AffineTXTY()));
58 }
const EdbAffine2D * AffineXY() const
Definition: EdbLayer.h:118
const EdbAffine2D * AffineTXTY() const
Definition: EdbLayer.h:119
void ResetCorr()
Definition: EdbLayer.cxx:113

◆ CorrectSeg()

void EdbLayer::CorrectSeg ( EdbSegP s)

71 {
72  s.Set( s.ID(), X(s), Y(s), TX(s), TY(s), s.W(), s.Flag() );
73 }
Int_t ID() const
Definition: EdbSegP.h:144
Float_t W() const
Definition: EdbSegP.h:148
Int_t Flag() const
Definition: EdbSegP.h:146
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:86
EdbSegP * s
Definition: tlg2pattern.C:32

◆ CorrectSegLocal()

void EdbLayer::CorrectSegLocal ( EdbSegP s)

77 {
78  eMap.CorrectSeg(s);
79 }
void CorrectSeg(EdbSegP &s)
Definition: EdbLayer.cxx:181

◆ DX()

float EdbLayer::DX ( ) const
inline
83 {return eDX;}

◆ DY()

float EdbLayer::DY ( ) const
inline
84 {return eDY;}

◆ DZ()

float EdbLayer::DZ ( ) const
inline
85 {return eZmax-eZmin;}

◆ GetAffineTXTY()

EdbAffine2D* EdbLayer::GetAffineTXTY ( )
inline
121 {return &eAffTXTY;}

◆ GetAffineXY()

EdbAffine2D* EdbLayer::GetAffineXY ( )
inline
120 {return &eAffXY;}

◆ ID()

int EdbLayer::ID ( ) const
inline
74 {return eID;}

◆ Invert()

void EdbLayer::Invert ( )

62 {
63  eAffXY.Invert();
64  eAffTXTY.Invert();
65  eShr = 1./eShr;
66  //TODO: invert also zcorr?
67 }
void Invert()
Definition: EdbAffine.cxx:103

◆ IsInside() [1/2]

bool EdbLayer::IsInside ( float  x,
float  y 
)

141 {
142  if( x<Xmin() ) return false;
143  if( x>Xmax() ) return false;
144  if( y<Ymin() ) return false;
145  if( y>Ymax() ) return false;
146  return true;
147 }
float Ymin() const
Definition: EdbLayer.h:88
float Ymax() const
Definition: EdbLayer.h:89
float Xmax() const
Definition: EdbLayer.h:87
float Xmin() const
Definition: EdbLayer.h:86

◆ IsInside() [2/2]

bool EdbLayer::IsInside ( float  x,
float  y,
float  z 
)

129 {
130  if( x<Xmin() ) return false;
131  if( x>Xmax() ) return false;
132  if( y<Ymin() ) return false;
133  if( y>Ymax() ) return false;
134  if( z<Zmin() ) return false;
135  if( z>Zmax() ) return false;
136  return true;
137 }

◆ Map()

EdbCorrectionMap& EdbLayer::Map ( )
inline
73 { return eMap; }

◆ Ncp()

int EdbLayer::Ncp ( ) const
inline
75 {return eNcp;}

◆ Print()

void EdbLayer::Print ( )

151 {
152  printf("Layer:\t%d \t%f %f\n",eID,eX,eY);
153  printf("Ncp:\t%d\n", eNcp );
154  printf("ZLAYER\t%f %f %f\n",eZ,eZmin,eZmax);
155  printf("SHR\t%f\n",eShr);
156  printf("Zcorr\t%f\n",eZcorr);
157  printf("AFFXY\t"); eAffXY.Print();
158  printf("AFFTXTY\t"); eAffTXTY.Print();
159  printf("Local Corrections Table: %d x %d \n", eMap.NX(), eMap.NY() );
160 }
void Print(Option_t *opt="") const
Definition: EdbAffine.cxx:52
int NX() const
Definition: EdbCell2.h:50
int NY() const
Definition: EdbCell2.h:51

◆ PrintLocal()

void EdbLayer::PrintLocal ( )
inline
140 { eMap.Print(); }
void Print()
Definition: EdbLayer.cxx:195

◆ ResetAffTXTY()

void EdbLayer::ResetAffTXTY ( )
inline
115 { eAffTXTY.Reset(); }
void Reset()
Definition: EdbAffine.cxx:72

◆ ResetAffXY()

void EdbLayer::ResetAffXY ( )
inline
114 { eAffXY.Reset(); }

◆ ResetCorr()

void EdbLayer::ResetCorr ( )

114 {
115  eShr = 1.;
116  eZcorr=0;
117  eAffXY.Reset();
118  eAffTXTY.Reset();
119 }

◆ Set0()

void EdbLayer::Set0 ( )

==============================================================================

25 {
26  eID=0;
27  eZ=0; eZmin=0; eZmax=0;
28  eX=0; eY=0; eTX=0; eTY=0;
29  eDX=eDY=kMaxInt;
30  eShr = 1.;
31  eZcorr=0;
32  eNcp=0;
33 }

◆ SetAffTXTY()

void EdbLayer::SetAffTXTY ( float  a11,
float  a12,
float  a21,
float  a22,
float  b1,
float  b2 
)
inline
106  {eAffTXTY.Set(a11,a12,a21,a22,b1,b2);}
void Set(EdbAffine2D &a)
Definition: EdbAffine.h:36

◆ SetAffXY()

void EdbLayer::SetAffXY ( float  a11,
float  a12,
float  a21,
float  a22,
float  b1,
float  b2 
)
inline
104  {eAffXY.Set(a11,a12,a21,a22,b1,b2);}

◆ SetDXDY()

void EdbLayer::SetDXDY ( float  dx,
float  dy 
)
inline
98 {eDX=dx; eDY=dy;}

◆ SetID()

void EdbLayer::SetID ( int  id)
inline
95 {eID=id;}
UInt_t id
Definition: tlg2pattern.C:118

◆ SetNcp()

void EdbLayer::SetNcp ( int  n)
inline
96 {eNcp=n;}

◆ SetShrinkage()

void EdbLayer::SetShrinkage ( float  shr)
inline
100 {eShr=shr;}

◆ SetTXTY()

void EdbLayer::SetTXTY ( float  tx,
float  ty 
)
inline
99 {eTX=tx; eTY=ty;}

◆ SetXY()

void EdbLayer::SetXY ( float  x,
float  y 
)
inline
97 {eX=x; eY=y;}

◆ SetZ()

void EdbLayer::SetZ ( float  z)
inline
101 {eZ=z;}

◆ SetZcorr()

void EdbLayer::SetZcorr ( float  zcorr)
inline
107 {eZcorr = zcorr;}

◆ SetZlayer()

void EdbLayer::SetZlayer ( float  z,
float  zmin,
float  zmax 
)
inline
102 { eZ=z;eZmin=zmin;eZmax=zmax; }

◆ ShiftZ()

void EdbLayer::ShiftZ ( float  dz)

123 {
124  eZ += dz; eZmin +=dz; eZmax +=dz;
125 }
brick dz
Definition: RecDispMC.C:107

◆ Shr()

float EdbLayer::Shr ( ) const
inline
90 {return eShr;}

◆ SubstructCorrections()

void EdbLayer::SubstructCorrections ( EdbLayer l)

104 {
105  // apply inverse corrections of layer l
106  EdbAffine2D aff( *(l.GetAffineXY()) ), afftxty( *(l.GetAffineTXTY()) );
107  aff.Invert();
108  afftxty.Invert();
109  ApplyCorrections( 1./l.Shr(), -l.Zcorr() , aff, afftxty );
110 }
Definition: EdbAffine.h:17

◆ TX() [1/2]

float EdbLayer::TX ( ) const
inline
79 {return eTX;}

◆ TX() [2/2]

float EdbLayer::TX ( EdbSegP s)
inline
125 { return eAffTXTY.A11()*TXp(s) + eAffTXTY.A12()*TYp(s) + eAffTXTY.B1(); }
Float_t A12() const
Definition: EdbAffine.h:44
Float_t B1() const
Definition: EdbAffine.h:47
Float_t A11() const
Definition: EdbAffine.h:43
float TYp(EdbSegP &s)
Definition: EdbLayer.h:124
float TXp(EdbSegP &s)
Definition: EdbLayer.h:123

◆ TXp()

float EdbLayer::TXp ( EdbSegP s)
inline
123 { return (eAffXY.A11()*s.eTX + eAffXY.A12()*s.eTY) / eShr; } // apply shrinkage and rotation
Float_t eTX
Definition: EdbSegP.h:29
Float_t eTY
Definition: EdbSegP.h:29

◆ TY() [1/2]

float EdbLayer::TY ( ) const
inline
80 {return eTY;}

◆ TY() [2/2]

float EdbLayer::TY ( EdbSegP s)
inline
126 { return eAffTXTY.A21()*TXp(s) + eAffTXTY.A22()*TYp(s) + eAffTXTY.B2(); }
Float_t B2() const
Definition: EdbAffine.h:48
Float_t A22() const
Definition: EdbAffine.h:46
Float_t A21() const
Definition: EdbAffine.h:45

◆ TYp()

float EdbLayer::TYp ( EdbSegP s)
inline
124 { return (eAffXY.A21()*s.eTX + eAffXY.A22()*s.eTY) / eShr; } // of the main transform: eAffXY

◆ X() [1/2]

float EdbLayer::X ( ) const
inline
76 {return eX;}

◆ X() [2/2]

float EdbLayer::X ( EdbSegP s)
inline
130 { return Xp(s) + TX(s)*eZcorr; } // apply propagation
float Xp(EdbSegP &s)
Definition: EdbLayer.h:128

◆ Xmax()

float EdbLayer::Xmax ( ) const
inline
87 {return X()+DX();}

◆ Xmin()

float EdbLayer::Xmin ( ) const
inline
86 {return X()-DX();}

◆ Xp()

float EdbLayer::Xp ( EdbSegP s)
inline
128 { return eAffXY.A11()*s.eX + eAffXY.A12()*s.eY + eAffXY.B1(); } // only position transform
Float_t eX
Definition: EdbSegP.h:28
Float_t eY
Definition: EdbSegP.h:28

◆ Y() [1/2]

float EdbLayer::Y ( ) const
inline
77 {return eY;}

◆ Y() [2/2]

float EdbLayer::Y ( EdbSegP s)
inline
131 { return Yp(s) + TY(s)*eZcorr; }
float Yp(EdbSegP &s)
Definition: EdbLayer.h:129

◆ Ymax()

float EdbLayer::Ymax ( ) const
inline
89 {return Y()+DY();}

◆ Ymin()

float EdbLayer::Ymin ( ) const
inline
88 {return Y()-DY();}

◆ Yp()

float EdbLayer::Yp ( EdbSegP s)
inline
129 { return eAffXY.A21()*s.eX + eAffXY.A22()*s.eY + eAffXY.B2(); }

◆ Z()

float EdbLayer::Z ( ) const
inline
78 {return eZ;}

◆ Zcorr()

float EdbLayer::Zcorr ( ) const
inline
91 {return eZcorr;}

◆ Zmax()

float EdbLayer::Zmax ( ) const
inline
82 {return eZmax;}

◆ Zmin()

float EdbLayer::Zmin ( ) const
inline
81 {return eZmin;}

◆ Zxy()

float EdbLayer::Zxy ( )
inline
132 { return eZ+eZcorr; }

Member Data Documentation

◆ eAffTXTY

EdbAffine2D EdbLayer::eAffTXTY
private

◆ eAffXY

EdbAffine2D EdbLayer::eAffXY
private

◆ eDX

Float_t EdbLayer::eDX
private

◆ eDY

Float_t EdbLayer::eDY
private

◆ eID

Int_t EdbLayer::eID
private

◆ eMap

EdbCorrectionMap EdbLayer::eMap
private

◆ eNcp

Int_t EdbLayer::eNcp
private

◆ eShr

Float_t EdbLayer::eShr
private

◆ eTX

Float_t EdbLayer::eTX
private

◆ eTY

Float_t EdbLayer::eTY
private

◆ eX

Float_t EdbLayer::eX
private

◆ eY

Float_t EdbLayer::eY
private

◆ eZ

Float_t EdbLayer::eZ
private

◆ eZcorr

Float_t EdbLayer::eZcorr
private

◆ eZmax

Float_t EdbLayer::eZmax
private

◆ eZmin

Float_t EdbLayer::eZmin
private

The documentation for this class was generated from the following files: