FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndEmcXtal Class Reference

represents coordinates of one crystal More...

#include <PndEmcXtal.h>

Inheritance diagram for PndEmcXtal:

Public Member Functions

 PndEmcXtal ()
 
 PndEmcXtal (const PndEmcTwoCoordIndex *id, const TGeoTrap &trap, const TVector3 &pos, const TGeoRotation &rot)
 
virtual ~PndEmcXtal ()
 
virtual bool operator== (const PndEmcXtal &compare) const
 
virtual bool operator< (const PndEmcXtal &compare) const
 
const PndEmcTwoCoordIndexmyIndex () const
 
const TVector3 & centre () const
 
const TVector3 & frontCentre () const
 
const TVector3 & normalToFrontFace () const
 
const TVector3 & axisVector () const
 
const TGeoTrap & geometry () const
 
const TGeoRotation & rotation () const
 
double npAngle () const
 

Private Member Functions

 PndEmcXtal (const PndEmcXtal &L)
 
PndEmcXtaloperator= (const PndEmcXtal &)
 

Private Attributes

const PndEmcTwoCoordIndexfTCIIndex
 
double fLength
 
const TGeoTrap fTrap
 
const TGeoRotation fRotation
 
TVector3 fCentre
 
TVector3 fFrontCentre
 
TVector3 fNormalToFrontFace
 
TVector3 fAxis
 

Detailed Description

represents coordinates of one crystal

Definition at line 36 of file PndEmcXtal.h.

Constructor & Destructor Documentation

PndEmcXtal::PndEmcXtal ( )

Definition at line 40 of file PndEmcXtal.cxx.

40  :
42  fLength(0),
43  fTrap(TGeoTrap()),
44  fRotation(TGeoRotation()),
45  fCentre(0,0,0),
46  fFrontCentre(0,0,0),
47  fNormalToFrontFace(0,0,0),
48  fAxis(0,0,0)
49 {
50 }
TVector3 fAxis
Definition: PndEmcXtal.h:71
TVector3 fCentre
Definition: PndEmcXtal.h:68
stores crystal index coordinates (x,y) or (theta,phi)
const PndEmcTwoCoordIndex * fTCIIndex
Definition: PndEmcXtal.h:64
double fLength
Definition: PndEmcXtal.h:65
const TGeoTrap fTrap
Definition: PndEmcXtal.h:66
TVector3 fNormalToFrontFace
Definition: PndEmcXtal.h:70
TVector3 fFrontCentre
Definition: PndEmcXtal.h:69
const TGeoRotation fRotation
Definition: PndEmcXtal.h:67
PndEmcXtal::PndEmcXtal ( const PndEmcTwoCoordIndex id,
const TGeoTrap &  trap,
const TVector3 &  pos,
const TGeoRotation &  rot 
)

Definition at line 51 of file PndEmcXtal.cxx.

References CAMath::Cos(), Double_t, fAxis, fFrontCentre, fLength, fNormalToFrontFace, CAMath::Sin(), and CAMath::Tan().

51  :
52  fTCIIndex(id),
53  fLength(0),
54  fTrap(trap),
55  fRotation(rot),
56  fCentre(pos),
57  fFrontCentre(0,0,0),
58  fNormalToFrontFace(0,0,0),
59  fAxis(0,0,0)
60 {
61  // calculate length of the crystal
62  fLength=trap.GetDz()*2;
63 
64  // Obtain vector to trapezoid front face center.
65 
66  Double_t tx = TMath::Tan(trap.GetTheta() * TMath::DegToRad())
67  * TMath::Cos(trap.GetPhi() * TMath::DegToRad());
68  Double_t ty = TMath::Tan(trap.GetTheta() * TMath::DegToRad())
69  * TMath::Sin(trap.GetPhi() * TMath::DegToRad());
70 
71  Double_t axis[3] = { trap.GetDz() * tx, trap.GetDz() * ty, trap.GetDz() };
72  Double_t axis_rotated[3]; rot.LocalToMaster(axis, axis_rotated);
73  TVector3 axis_vector(axis_rotated);
74 
75  // Obtain unitary vector normal to trapezoid front face.
76 
77  Double_t normal[3] = { 0.0, 0.0, 1.0 };
78  Double_t normal_rotated[3]; rot.LocalToMaster(normal, normal_rotated);
79  TVector3 normal_vector(normal_rotated);
80 
81  if (pos.Dot(axis_vector) < 0.0) {
82  //cout << "Crystal orientation in module " << id->Index() / 100000000
83  // << " +dz" << endl;
84 
85  fFrontCentre = pos + axis_vector;
86  fNormalToFrontFace = -1.0 * normal_vector;
87  fAxis = -1.0 * axis_vector.Unit();
88  } else {
89  //cout << "Crystal orientation in module " << id->Index() / 100000000
90  // << " -dz" << endl;
91 
92  fFrontCentre = pos - axis_vector;
93  fNormalToFrontFace = +1.0 * normal_vector;
94  fAxis = +1.0 * axis_vector.Unit();
95  }
96 }
TVector3 pos
TVector3 fAxis
Definition: PndEmcXtal.h:71
TVector3 fCentre
Definition: PndEmcXtal.h:68
static T Sin(const T &x)
Definition: PndCAMath.h:42
float Tan(float x)
Definition: PndCAMath.h:165
const PndEmcTwoCoordIndex * fTCIIndex
Definition: PndEmcXtal.h:64
double fLength
Definition: PndEmcXtal.h:65
static T Cos(const T &x)
Definition: PndCAMath.h:43
const TGeoTrap fTrap
Definition: PndEmcXtal.h:66
Double_t
axis
Definition: PndRadMapPlane.h:9
TVector3 fNormalToFrontFace
Definition: PndEmcXtal.h:70
TGeoRotation rot
TVector3 fFrontCentre
Definition: PndEmcXtal.h:69
const TGeoRotation fRotation
Definition: PndEmcXtal.h:67
PndEmcXtal::~PndEmcXtal ( )
virtual

Definition at line 102 of file PndEmcXtal.cxx.

103 {
104 }
PndEmcXtal::PndEmcXtal ( const PndEmcXtal L)
private

Member Function Documentation

const TVector3 & PndEmcXtal::axisVector ( ) const

Definition at line 157 of file PndEmcXtal.cxx.

References fAxis.

Referenced by PndEmcDigi::depthPosition().

158 {
159  return fAxis;
160 }
TVector3 fAxis
Definition: PndEmcXtal.h:71
const TVector3 & PndEmcXtal::centre ( ) const

Definition at line 139 of file PndEmcXtal.cxx.

References fCentre.

140 {
141  return fCentre;
142 }
TVector3 fCentre
Definition: PndEmcXtal.h:68
const TVector3 & PndEmcXtal::frontCentre ( ) const
const TGeoTrap & PndEmcXtal::geometry ( ) const

Definition at line 163 of file PndEmcXtal.cxx.

References fTrap.

164 {
165  return fTrap;
166 }
const TGeoTrap fTrap
Definition: PndEmcXtal.h:66
const PndEmcTwoCoordIndex * PndEmcXtal::myIndex ( ) const

Definition at line 133 of file PndEmcXtal.cxx.

References fTCIIndex.

Referenced by PndEmcDigi::depthPosition().

134 {
135  return fTCIIndex;
136 }
const PndEmcTwoCoordIndex * fTCIIndex
Definition: PndEmcXtal.h:64
const TVector3 & PndEmcXtal::normalToFrontFace ( ) const
double PndEmcXtal::npAngle ( ) const

Definition at line 175 of file PndEmcXtal.cxx.

References fCentre, and fNormalToFrontFace.

176 {
177  return fNormalToFrontFace.Theta()-fCentre.Theta();
178 }
TVector3 fCentre
Definition: PndEmcXtal.h:68
TVector3 fNormalToFrontFace
Definition: PndEmcXtal.h:70
bool PndEmcXtal::operator< ( const PndEmcXtal compare) const
virtual

Definition at line 122 of file PndEmcXtal.cxx.

References fLength, and fTCIIndex.

123 {
124  bool answer = false;
125 
126  if ( *fTCIIndex < *compare.fTCIIndex ) answer=true;
127  else if ( *fTCIIndex == *compare.fTCIIndex && fLength < compare.fLength) answer=true;
128 
129  return answer;
130 }
const PndEmcTwoCoordIndex * fTCIIndex
Definition: PndEmcXtal.h:64
double fLength
Definition: PndEmcXtal.h:65
PndEmcXtal& PndEmcXtal::operator= ( const PndEmcXtal )
inlineprivate

Definition at line 74 of file PndEmcXtal.h.

74 {return *this;}
bool PndEmcXtal::operator== ( const PndEmcXtal compare) const
virtual

Definition at line 112 of file PndEmcXtal.cxx.

References fTCIIndex.

113 {
114  bool answer = false;
115 
116  if ( *fTCIIndex == *compare.fTCIIndex ) answer=true;
117 
118  return answer;
119 }
const PndEmcTwoCoordIndex * fTCIIndex
Definition: PndEmcXtal.h:64
const TGeoRotation & PndEmcXtal::rotation ( ) const

Definition at line 169 of file PndEmcXtal.cxx.

References fRotation.

170 {
171  return fRotation;
172 }
const TGeoRotation fRotation
Definition: PndEmcXtal.h:67

Member Data Documentation

TVector3 PndEmcXtal::fAxis
private

Definition at line 71 of file PndEmcXtal.h.

Referenced by axisVector(), and PndEmcXtal().

TVector3 PndEmcXtal::fCentre
private

Definition at line 68 of file PndEmcXtal.h.

Referenced by centre(), and npAngle().

TVector3 PndEmcXtal::fFrontCentre
private

Definition at line 69 of file PndEmcXtal.h.

Referenced by frontCentre(), and PndEmcXtal().

double PndEmcXtal::fLength
private

Definition at line 65 of file PndEmcXtal.h.

Referenced by operator<(), and PndEmcXtal().

TVector3 PndEmcXtal::fNormalToFrontFace
private

Definition at line 70 of file PndEmcXtal.h.

Referenced by normalToFrontFace(), npAngle(), and PndEmcXtal().

const TGeoRotation PndEmcXtal::fRotation
private

Definition at line 67 of file PndEmcXtal.h.

Referenced by rotation().

const PndEmcTwoCoordIndex* PndEmcXtal::fTCIIndex
private

Definition at line 64 of file PndEmcXtal.h.

Referenced by myIndex(), operator<(), and operator==().

const TGeoTrap PndEmcXtal::fTrap
private

Definition at line 66 of file PndEmcXtal.h.

Referenced by geometry().


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