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)
 
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 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)
Definition: EdbLayer.cxx:35

◆ ~EdbLayer()

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

Member Function Documentation

◆ AffineTXTY()

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

◆ AffineXY()

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

◆ ApplyCorrections() [1/2]

void EdbLayer::ApplyCorrections ( EdbLayer la)

82{
83 ApplyCorrections( la.Shr(), la.Zcorr(), *(la.GetAffineXY()), *(la.GetAffineTXTY()) );
84 SetNcp(la.Ncp());
85}
int Ncp() const
Definition: EdbLayer.h:74
float Zcorr() const
Definition: EdbLayer.h:90
float Shr() const
Definition: EdbLayer.h:89
EdbAffine2D * GetAffineTXTY()
Definition: EdbLayer.h:120
EdbAffine2D * GetAffineXY()
Definition: EdbLayer.h:119
void ApplyCorrections(EdbLayer &la)
Definition: EdbLayer.cxx:81
void SetNcp(int n)
Definition: EdbLayer.h:95

◆ ApplyCorrections() [2/2]

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

89{
90 eShr *= shr;
91 eZcorr += zcorr;
92 Log(3,"EdbLayer::ApplyCorrections","eShr: %f eZcorr: %f ", eShr, eZcorr );
93 Log(3,"EdbLayer::ApplyCorrections","aff before: %s", eAffXY.AsString());
94 Log(3,"EdbLayer::ApplyCorrections","corr : %s", affxy.AsString());
95 eAffXY.Transform(affxy);
96 Log(3,"EdbLayer::ApplyCorrections","aff after: %s", eAffXY.AsString());
97 Log(3,"EdbLayer::ApplyCorrections","afftxty : %s", afftxty.AsString());
98 eAffTXTY.Transform(afftxty);
99}
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:58
Float_t eShr
Definition: EdbLayer.h:55

◆ ApplyCorrectionsLocal()

void EdbLayer::ApplyCorrectionsLocal ( EdbCorrectionMap map)
inline
111{ eMap.ApplyCorrections(map); }
void ApplyCorrections(EdbCorrectionMap &map)
Definition: EdbLayer.cxx:194
EdbCorrectionMap eMap
Definition: EdbLayer.h:62

◆ Copy()

void EdbLayer::Copy ( const EdbLayer l)

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

◆ CopyCorr()

void EdbLayer::CopyCorr ( const EdbLayer l)

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

◆ CorrectSeg()

void EdbLayer::CorrectSeg ( EdbSegP s)

70{
71 s.Set( s.ID(), X(s), Y(s), TX(s), TY(s), s.W(), s.Flag() );
72}
s
Definition: check_shower.C:55

◆ CorrectSegLocal()

void EdbLayer::CorrectSegLocal ( EdbSegP s)

76{
78}
void CorrectSeg(EdbSegP &s)
Definition: EdbLayer.cxx:180

◆ DX()

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

◆ DY()

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

◆ DZ()

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

◆ GetAffineTXTY()

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

◆ GetAffineXY()

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

◆ ID()

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

◆ Invert()

void EdbLayer::Invert ( )

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

◆ IsInside() [1/2]

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

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

◆ IsInside() [2/2]

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

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

◆ Map()

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

◆ Ncp()

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

◆ Print()

void EdbLayer::Print ( )

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

◆ ResetAffTXTY()

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

◆ ResetAffXY()

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

◆ ResetCorr()

void EdbLayer::ResetCorr ( )

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

◆ 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}

◆ SetAffTXTY()

void EdbLayer::SetAffTXTY ( float  a11,
float  a12,
float  a21,
float  a22,
float  b1,
float  b2 
)
inline
105 {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
103 {eAffXY.Set(a11,a12,a21,a22,b1,b2);}

◆ SetDXDY()

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

◆ SetID()

void EdbLayer::SetID ( int  id)
inline
94{eID=id;}
UInt_t id
Definition: tlg2couples.C:117

◆ SetNcp()

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

◆ SetShrinkage()

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

◆ SetTXTY()

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

◆ SetXY()

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

◆ SetZ()

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

◆ SetZcorr()

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

◆ SetZlayer()

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

◆ ShiftZ()

void EdbLayer::ShiftZ ( float  dz)

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

◆ Shr()

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

◆ SubstructCorrections()

void EdbLayer::SubstructCorrections ( EdbLayer l)

apply inverse corrections of layer l

103{
105 EdbAffine2D aff( *(l.GetAffineXY()) ), afftxty( *(l.GetAffineTXTY()) );
106 aff.Invert();
107 afftxty.Invert();
108 ApplyCorrections( 1./l.Shr(), -l.Zcorr() , aff, afftxty );
109}
Definition: EdbAffine.h:17

◆ TX() [1/2]

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

◆ TX() [2/2]

float EdbLayer::TX ( EdbSegP s)
inline
124{ 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:123
float TXp(EdbSegP &s)
Definition: EdbLayer.h:122

◆ TXp()

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

◆ TY() [1/2]

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

◆ TY() [2/2]

float EdbLayer::TY ( EdbSegP s)
inline
125{ 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
123{ return (eAffXY.A21()*s.eTX + eAffXY.A22()*s.eTY) / eShr; } // of the main transform: eAffXY

◆ X() [1/2]

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

◆ X() [2/2]

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

◆ Xmax()

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

◆ Xmin()

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

◆ Xp()

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

◆ Y() [1/2]

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

◆ Y() [2/2]

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

◆ Ymax()

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

◆ Ymin()

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

◆ Yp()

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

◆ Z()

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

◆ Zcorr()

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

◆ Zmax()

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

◆ Zmin()

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

◆ Zxy()

float EdbLayer::Zxy ( )
inline
131{ 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: