FairRoot/PandaRoot
Public Member Functions | Protected Attributes | List of all members
PndRichPhoton Class Reference

#include <PndRichPhoton.h>

Public Member Functions

 PndRichPhoton ()
 
 PndRichPhoton (Double_t theta, Double_t phi, UInt_t tmask)
 
 PndRichPhoton (const PndRichPhoton &photon)
 
PndRichPhotonoperator= (const PndRichPhoton &photon)
 
virtual ~PndRichPhoton ()
 
virtual void Print (const Option_t *opt="") const
 
virtual bool TrackCalc ()
 
virtual Double_t GetLength ()
 
virtual Double_t GetTime ()
 
virtual Double_t GetTheta ()
 
virtual Double_t GetPhi ()
 
virtual UInt_t GetTMask ()
 
virtual std::vector
< PndRichMirrorSegment * > 
GetMirror ()
 
virtual TVector3 GetHitPos ()
 
virtual std::vector< TVector3 > GetMirrRefPos ()
 
virtual PndRichBarPointGetTrack ()
 
void SetLength (Double_t length)
 
void SetDTime (Double_t time)
 
void SetTime (Double_t time)
 
void SetTheta (Double_t theta)
 
void SetPhi (Double_t phi)
 
void SetPDHit (PndRichPDHit *hit)
 
void SetHitTime (Double_t hitTime)
 
void SetHitPos (TVector3 hit)
 
void SetTrackPos (TVector3 pos)
 
void SetTrackDir (TVector3 dir)
 
void SetTrack (PndRichBarPoint *track)
 
void SetMirrRefPos (std::vector< TVector3 > pos)
 
void SetMirror (std::vector< PndRichMirrorSegment * > mirrors)
 

Protected Attributes

PndRichPDHitfPDHit
 
Double_t fDTime
 
Double_t fTime
 
Double_t fHitTime
 
Double_t fTheta
 
Double_t fPhi
 
UInt_t fTMask
 
std::vector
< PndRichMirrorSegment * > 
fMirrors
 
TVector3 fHitPosition
 
TVector3 fTrackPosition
 
TVector3 fTrackDirection
 
TVector3 fTrackPositionOld
 
TVector3 fTrackDirectionOld
 
std::vector< TVector3 > fMirrRefPosition
 
Double_t fLength
 
PndRichBarPointfTrack
 

Detailed Description

Definition at line 20 of file PndRichPhoton.h.

Constructor & Destructor Documentation

PndRichPhoton::PndRichPhoton ( )

Default constructor

Definition at line 15 of file PndRichPhoton.cxx.

15  :
16  fPDHit(NULL),
17  fDTime(0.),
18  fTime(0.),
19  fHitTime(0.),
20  fTheta(0.),
21  fPhi(0.),
22  fTMask(0),
23  fMirrors(),
24  fHitPosition(0,0,0),
25  fTrackPosition(0,0,0),
26  fTrackDirection(0,0,0),
27  fTrackPositionOld(0,0,0),
28  fTrackDirectionOld(0,0,0),
30  fLength(0.),
31  fTrack(NULL)
32 {
33 }
PndRichBarPoint * fTrack
std::vector< PndRichMirrorSegment * > fMirrors
TVector3 fTrackDirection
Double_t fTime
Double_t fTheta
Double_t fHitTime
Double_t fDTime
TVector3 fTrackPosition
std::vector< TVector3 > fMirrRefPosition
TVector3 fTrackDirectionOld
Double_t fLength
TVector3 fTrackPositionOld
TVector3 fHitPosition
PndRichPDHit * fPDHit
PndRichPhoton::PndRichPhoton ( Double_t  theta,
Double_t  phi,
UInt_t  tmask 
)

Definition at line 39 of file PndRichPhoton.cxx.

41  :
42  fPDHit(NULL),
43  fDTime(0.),
44  fTime(0.),
45  fHitTime(0.),
46  fTheta(theta),
47  fPhi(phi),
48  fTMask(tmask),
49  fMirrors(),
50  fHitPosition(0,0,0),
51  fTrackPosition(0,0,0),
52  fTrackDirection(0,0,0),
53  fTrackPositionOld(0,0,0),
54  fTrackDirectionOld(0,0,0),
56  fLength(0.),
57  fTrack(NULL)
58 {
59 }
PndRichBarPoint * fTrack
std::vector< PndRichMirrorSegment * > fMirrors
TVector3 fTrackDirection
Double_t fTime
Double_t fTheta
Double_t fHitTime
Double_t fDTime
TVector3 fTrackPosition
std::vector< TVector3 > fMirrRefPosition
TVector3 fTrackDirectionOld
Double_t fLength
TVector3 fTrackPositionOld
TVector3 fHitPosition
PndRichPDHit * fPDHit
PndRichPhoton::PndRichPhoton ( const PndRichPhoton photon)
inline

Copy constructor

Definition at line 33 of file PndRichPhoton.h.

33  :
34  fPDHit(photon.fPDHit),
35  fDTime(photon.fDTime),
36  fTime(photon.fTime),
37  fHitTime(photon.fHitTime),
38  fTheta(photon.fTheta),
39  fPhi(photon.fPhi),
40  fTMask(photon.fTMask),
41  fMirrors(photon.fMirrors),
42  fHitPosition(photon.fHitPosition),
48  fLength(photon.fLength),
49  fTrack(photon.fTrack)
50  { };
PndRichBarPoint * fTrack
std::vector< PndRichMirrorSegment * > fMirrors
TVector3 fTrackDirection
Double_t fTime
Double_t fTheta
Double_t fHitTime
Double_t fDTime
TVector3 fTrackPosition
std::vector< TVector3 > fMirrRefPosition
TVector3 fTrackDirectionOld
Double_t fLength
TVector3 fTrackPositionOld
TVector3 fHitPosition
PndRichPDHit * fPDHit
PndRichPhoton::~PndRichPhoton ( )
virtual

Destructor

Definition at line 62 of file PndRichPhoton.cxx.

62 {}

Member Function Documentation

virtual TVector3 PndRichPhoton::GetHitPos ( )
inlinevirtual

Definition at line 94 of file PndRichPhoton.h.

References fHitPosition.

94 {return fHitPosition;}
TVector3 fHitPosition
Double_t PndRichPhoton::GetLength ( )
virtual

Definition at line 143 of file PndRichPhoton.cxx.

References fLength, fTrack, fTrackDirection, fTrackDirectionOld, fTrackPosition, fTrackPositionOld, PndRichBarPoint::GetAxisZ(), PndRichBarPoint::GetPosition0(), and TrackCalc().

144 {
148  TrackCalc();
149  return fLength;
150 }
PndRichBarPoint * fTrack
TVector3 fTrackDirection
TVector3 GetAxisZ() const
TVector3 fTrackPosition
TVector3 fTrackDirectionOld
TVector3 GetPosition0() const
Double_t fLength
virtual bool TrackCalc()
TVector3 fTrackPositionOld
virtual std::vector<PndRichMirrorSegment*> PndRichPhoton::GetMirror ( )
inlinevirtual

Definition at line 93 of file PndRichPhoton.h.

References fMirrors.

93 {return fMirrors;}
std::vector< PndRichMirrorSegment * > fMirrors
virtual std::vector<TVector3> PndRichPhoton::GetMirrRefPos ( )
inlinevirtual

Definition at line 95 of file PndRichPhoton.h.

References fMirrRefPosition.

95 {return fMirrRefPosition;}
std::vector< TVector3 > fMirrRefPosition
Double_t PndRichPhoton::GetPhi ( )
virtual

Definition at line 170 of file PndRichPhoton.cxx.

References fPhi, fTrack, fTrackDirection, fTrackDirectionOld, fTrackPosition, fTrackPositionOld, PndRichBarPoint::GetAxisZ(), PndRichBarPoint::GetPosition0(), and TrackCalc().

171 {
175  TrackCalc();
176  return fPhi;
177 }
PndRichBarPoint * fTrack
TVector3 fTrackDirection
TVector3 GetAxisZ() const
TVector3 fTrackPosition
TVector3 fTrackDirectionOld
TVector3 GetPosition0() const
virtual bool TrackCalc()
TVector3 fTrackPositionOld
Double_t PndRichPhoton::GetTheta ( )
virtual

Definition at line 161 of file PndRichPhoton.cxx.

References fTheta, fTrack, fTrackDirection, fTrackDirectionOld, fTrackPosition, fTrackPositionOld, PndRichBarPoint::GetAxisZ(), PndRichBarPoint::GetPosition0(), and TrackCalc().

162 {
166  TrackCalc();
167  return fTheta;
168 }
PndRichBarPoint * fTrack
TVector3 fTrackDirection
TVector3 GetAxisZ() const
Double_t fTheta
TVector3 fTrackPosition
TVector3 fTrackDirectionOld
TVector3 GetPosition0() const
virtual bool TrackCalc()
TVector3 fTrackPositionOld
Double_t PndRichPhoton::GetTime ( )
virtual

Definition at line 152 of file PndRichPhoton.cxx.

References fTime, fTrack, fTrackDirection, fTrackDirectionOld, fTrackPosition, fTrackPositionOld, PndRichBarPoint::GetAxisZ(), PndRichBarPoint::GetPosition0(), and TrackCalc().

153 {
157  TrackCalc();
158  return fTime;
159 }
PndRichBarPoint * fTrack
TVector3 fTrackDirection
Double_t fTime
TVector3 GetAxisZ() const
TVector3 fTrackPosition
TVector3 fTrackDirectionOld
TVector3 GetPosition0() const
virtual bool TrackCalc()
TVector3 fTrackPositionOld
virtual UInt_t PndRichPhoton::GetTMask ( )
inlinevirtual

Definition at line 92 of file PndRichPhoton.h.

References fTMask.

92 {return fTMask;}
virtual PndRichBarPoint* PndRichPhoton::GetTrack ( )
inlinevirtual

Definition at line 96 of file PndRichPhoton.h.

References fTrack.

96 {return fTrack;}
PndRichBarPoint * fTrack
PndRichPhoton& PndRichPhoton::operator= ( const PndRichPhoton photon)
inline

Definition at line 53 of file PndRichPhoton.h.

References fDTime, fHitPosition, fHitTime, fLength, fMirrors, fMirrRefPosition, fPDHit, fPhi, fTheta, fTime, fTMask, fTrack, fTrackDirection, fTrackDirectionOld, fTrackPosition, and fTrackPositionOld.

54  {
55  if (this != &photon)
56  {
57  fPDHit = photon.fPDHit;
58  fDTime = photon.fDTime;
59  fTime = photon.fTime;
60  fHitTime = photon.fHitTime;
61  fTheta = photon.fTheta;
62  fPhi = photon.fPhi;
63  fTMask = photon.fTMask;
64  fMirrors = photon.fMirrors;
65  fHitPosition = photon.fHitPosition;
71  fLength = photon.fLength;
72  fTrack = photon.fTrack;
73  }
74  return *this;
75  };
PndRichBarPoint * fTrack
std::vector< PndRichMirrorSegment * > fMirrors
TVector3 fTrackDirection
Double_t fTime
Double_t fTheta
Double_t fHitTime
Double_t fDTime
TVector3 fTrackPosition
std::vector< TVector3 > fMirrRefPosition
TVector3 fTrackDirectionOld
Double_t fLength
TVector3 fTrackPositionOld
TVector3 fHitPosition
PndRichPDHit * fPDHit
void PndRichPhoton::Print ( const Option_t *  opt = "") const
virtual

Output to screen

Definition at line 180 of file PndRichPhoton.cxx.

References fTime.

180  {
181  cout << "RICH Photon hit: Time = " << fTime << " opt="<<opt<<endl;
182 }
Double_t fTime
void PndRichPhoton::SetDTime ( Double_t  time)
inline

Definition at line 99 of file PndRichPhoton.h.

References fDTime.

99 { fDTime = time; }
Double_t fDTime
void PndRichPhoton::SetHitPos ( TVector3  hit)
inline

Definition at line 105 of file PndRichPhoton.h.

References fHitPosition, and hit.

Referenced by PndRichReco::AppendFlatMirrorReflections().

105 { fHitPosition = hit; }
PndSdsMCPoint * hit
Definition: anasim.C:70
TVector3 fHitPosition
void PndRichPhoton::SetHitTime ( Double_t  hitTime)
inline

Definition at line 104 of file PndRichPhoton.h.

References fHitTime.

Referenced by PndRichReco::AppendFlatMirrorReflections().

104 { fHitTime = hitTime; }
Double_t fHitTime
void PndRichPhoton::SetLength ( Double_t  length)
inline

Definition at line 98 of file PndRichPhoton.h.

References fLength.

98 { fLength = length; }
Double_t fLength
void PndRichPhoton::SetMirror ( std::vector< PndRichMirrorSegment * >  mirrors)
inline

Definition at line 110 of file PndRichPhoton.h.

References fMirrors.

Referenced by PndRichReco::AppendFlatMirrorReflections().

110 { fMirrors = mirrors; }
std::vector< PndRichMirrorSegment * > fMirrors
void PndRichPhoton::SetMirrRefPos ( std::vector< TVector3 >  pos)
inline

Definition at line 109 of file PndRichPhoton.h.

References fMirrRefPosition, and pos.

109 { fMirrRefPosition = pos; }
TVector3 pos
std::vector< TVector3 > fMirrRefPosition
void PndRichPhoton::SetPDHit ( PndRichPDHit hit)
inline

Definition at line 103 of file PndRichPhoton.h.

References fPDHit, and hit.

103 { fPDHit = hit; }
PndSdsMCPoint * hit
Definition: anasim.C:70
PndRichPDHit * fPDHit
void PndRichPhoton::SetPhi ( Double_t  phi)
inline

Definition at line 102 of file PndRichPhoton.h.

References fPhi, and phi.

102 { fPhi = phi; }
void PndRichPhoton::SetTheta ( Double_t  theta)
inline

Definition at line 101 of file PndRichPhoton.h.

References fTheta, and theta.

101 { fTheta = theta; }
Double_t fTheta
void PndRichPhoton::SetTime ( Double_t  time)
inline

Definition at line 100 of file PndRichPhoton.h.

References fTime.

100 { fTime = time; }
Double_t fTime
void PndRichPhoton::SetTrack ( PndRichBarPoint track)
inline

Definition at line 108 of file PndRichPhoton.h.

References fTrack, and track.

Referenced by PndRichReco::AppendFlatMirrorReflections().

108 { fTrack = track; }
PndRichBarPoint * fTrack
PndMCTrack * track
Definition: anaLmdCluster.C:89
void PndRichPhoton::SetTrackDir ( TVector3  dir)
inline

Definition at line 107 of file PndRichPhoton.h.

References fTrackDirection.

107 { fTrackDirection = dir; }
TVector3 fTrackDirection
void PndRichPhoton::SetTrackPos ( TVector3  pos)
inline

Definition at line 106 of file PndRichPhoton.h.

References fTrackPosition, and pos.

106 { fTrackPosition = pos; }
TVector3 pos
TVector3 fTrackPosition
bool PndRichPhoton::TrackCalc ( )
virtual

Modifiers Accessors

Definition at line 65 of file PndRichPhoton.cxx.

References acos(), atan2(), Double_t, fabs(), fDTime, fHitPosition, fHitTime, fLength, fMirrors, fMirrRefPosition, fPhi, fTheta, fTime, fTrack, fTrackDirection, fTrackDirectionOld, fTrackPosition, fTrackPositionOld, PndRichBarPoint::GetAxisX(), PndRichBarPoint::GetAxisY(), PndRichBarPoint::GetAxisZ(), PndRichBarPoint::GetPosition0(), PndRichBarPoint::GetTime0(), p1, p2, t1, and t2.

Referenced by PndRichReco::AppendFlatMirrorReflections(), GetLength(), GetPhi(), GetTheta(), and GetTime().

66 {
67  // coordinate system calculation
68  TVector3 axisTx = fTrack->GetAxisX();
69  TVector3 axisTy = fTrack->GetAxisY();
72  fDTime = fTrack->GetTime0();
75  // single reflection
76  if (fMirrors.size()==0) {
77  //fHitPosition = fPDHit->GetPosition();
78  fMirrRefPosition.clear();
79  fMirrRefPosition.push_back(fHitPosition);
81  TVector3 nf = (fHitPosition-fTrackPosition).Unit();
82  TVector3 nfT = (nf-fTrackDirection*(fTrackDirection*nf)).Unit();
84  fPhi = std::atan2(axisTy*nfT,axisTx*nfT);
85  fTime = fHitTime - fLength/30 - fDTime;
86  return true;
87  }
88  // single reflection
89  if (fMirrors.size()==1) {
90  //fHitPosition = fPDHit->GetPosition();
91  Double_t t1 = (fTrackPosition-fMirrors[0]->GetPoint())*fMirrors[0]->GetNormal();
92  Double_t t2 = (fHitPosition-fMirrors[0]->GetPoint())*fMirrors[0]->GetNormal();
93  TVector3 p1 = fTrackPosition-t1*fMirrors[0]->GetNormal();
94  TVector3 p2 = fHitPosition-t2*fMirrors[0]->GetNormal();
95  TVector3 p0 = (t2*p1+t1*p2)*(1.0/(t1+t2)); // point of reflection
96  if ( std::fabs(p0.X()-fMirrors[0]->GetPoint().X())<fMirrors[0]->GetDims().X() &&
97  std::fabs(p0.Y()-fMirrors[0]->GetPoint().Y())<fMirrors[0]->GetDims().Y() &&
98  std::fabs(p0.Z()-fMirrors[0]->GetPoint().Z())<fMirrors[0]->GetDims().Z() ) {
99  fMirrRefPosition.clear();
100  fMirrRefPosition.push_back(p0);
101  fLength = (fTrackPosition-p0).Mag()+(fHitPosition-p0).Mag();
102  TVector3 nf = (p0-fTrackPosition).Unit();
103  TVector3 nfT = (nf-fTrackDirection*(fTrackDirection*nf)).Unit();
105  fPhi = std::atan2(axisTy*nfT,axisTx*nfT);
106  fTime = fHitTime - fLength/30 - fDTime;
107  return true;
108  } else return false;
109  }
110  // double reflections
111  if (fMirrors.size()==2) {
112  //fHitPosition = fPDHit->GetPosition();
113  Double_t t1 = (fTrackPosition-fMirrors[0]->GetPoint())*fMirrors[0]->GetNormal();
114  TVector3 p1 = fTrackPosition-2*fMirrors[0]->GetNormal()*t1;
115  Double_t t2 = (fHitPosition-fMirrors[1]->GetPoint())*fMirrors[1]->GetNormal();
116  TVector3 p2 = fHitPosition-2*fMirrors[1]->GetNormal()*t2;
117  TVector3 dir = (p2-p1).Unit();
118  t1 /= dir*fMirrors[0]->GetNormal();
119  TVector3 q1 = p1+dir*t1;
120  t2 /= dir*fMirrors[1]->GetNormal();
121  TVector3 q2 = p2+dir*t2;
122  if ( std::fabs(q1.X()-fMirrors[0]->GetPoint().X())<fMirrors[0]->GetDims().X() &&
123  std::fabs(q1.Y()-fMirrors[0]->GetPoint().Y())<fMirrors[0]->GetDims().Y() &&
124  std::fabs(q1.Z()-fMirrors[0]->GetPoint().Z())<fMirrors[0]->GetDims().Z() &&
125  std::fabs(q2.X()-fMirrors[1]->GetPoint().X())<fMirrors[1]->GetDims().X() &&
126  std::fabs(q2.Y()-fMirrors[1]->GetPoint().Y())<fMirrors[1]->GetDims().Y() &&
127  std::fabs(q2.Z()-fMirrors[1]->GetPoint().Z())<fMirrors[1]->GetDims().Z() ) {
128  fMirrRefPosition.clear();
129  fMirrRefPosition.push_back(q1);
130  fMirrRefPosition.push_back(q2);
131  fLength = (fTrackPosition-q1).Mag()+(q2-q1).Mag()+(fHitPosition-q2).Mag();
132  TVector3 nf = (q1-fTrackPosition).Unit();
133  TVector3 nfT = (nf-fTrackDirection*(fTrackDirection*nf)).Unit();
135  fPhi = std::atan2(axisTy*nfT,axisTx*nfT);
136  fTime = fHitTime - fLength/30 - fDTime;
137  return true;
138  }
139  }
140  return false;
141 }
friend F32vec4 acos(const F32vec4 &a)
Definition: P4_F32vec4.h:113
Int_t t2
Definition: hist-t7.C:106
PndRichBarPoint * fTrack
std::vector< PndRichMirrorSegment * > fMirrors
TVector3 fTrackDirection
Int_t t1
Definition: hist-t7.C:106
Double_t fTime
TVector3 GetAxisZ() const
Double_t
Double_t fTheta
Double_t fHitTime
Double_t fDTime
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
TVector3 fTrackPosition
std::vector< TVector3 > fMirrRefPosition
TPad * p2
Definition: hist-t7.C:117
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
Definition: P4_F32vec4.h:117
TVector3 fTrackDirectionOld
TVector3 GetAxisX() const
TVector3 GetPosition0() const
Double_t fLength
TPad * p1
Definition: hist-t7.C:116
Double_t GetTime0() const
TVector3 fTrackPositionOld
TVector3 fHitPosition
TVector3 GetAxisY() const

Member Data Documentation

Double_t PndRichPhoton::fDTime
protected

Definition at line 115 of file PndRichPhoton.h.

Referenced by operator=(), SetDTime(), and TrackCalc().

TVector3 PndRichPhoton::fHitPosition
protected

Definition at line 121 of file PndRichPhoton.h.

Referenced by GetHitPos(), operator=(), SetHitPos(), and TrackCalc().

Double_t PndRichPhoton::fHitTime
protected

Definition at line 117 of file PndRichPhoton.h.

Referenced by operator=(), SetHitTime(), and TrackCalc().

Double_t PndRichPhoton::fLength
protected

Definition at line 127 of file PndRichPhoton.h.

Referenced by GetLength(), operator=(), SetLength(), and TrackCalc().

std::vector<PndRichMirrorSegment*> PndRichPhoton::fMirrors
protected

Definition at line 120 of file PndRichPhoton.h.

Referenced by GetMirror(), operator=(), SetMirror(), and TrackCalc().

std::vector<TVector3> PndRichPhoton::fMirrRefPosition
protected

Definition at line 126 of file PndRichPhoton.h.

Referenced by GetMirrRefPos(), operator=(), SetMirrRefPos(), and TrackCalc().

PndRichPDHit* PndRichPhoton::fPDHit
protected

Definition at line 114 of file PndRichPhoton.h.

Referenced by operator=(), and SetPDHit().

Double_t PndRichPhoton::fPhi
protected

Definition at line 118 of file PndRichPhoton.h.

Referenced by GetPhi(), operator=(), SetPhi(), and TrackCalc().

Double_t PndRichPhoton::fTheta
protected

Definition at line 118 of file PndRichPhoton.h.

Referenced by GetTheta(), operator=(), SetTheta(), and TrackCalc().

Double_t PndRichPhoton::fTime
protected

Definition at line 116 of file PndRichPhoton.h.

Referenced by GetTime(), operator=(), Print(), SetTime(), and TrackCalc().

UInt_t PndRichPhoton::fTMask
protected

Definition at line 119 of file PndRichPhoton.h.

Referenced by GetTMask(), and operator=().

PndRichBarPoint* PndRichPhoton::fTrack
protected
TVector3 PndRichPhoton::fTrackDirection
protected

Definition at line 123 of file PndRichPhoton.h.

Referenced by GetLength(), GetPhi(), GetTheta(), GetTime(), operator=(), SetTrackDir(), and TrackCalc().

TVector3 PndRichPhoton::fTrackDirectionOld
protected

Definition at line 125 of file PndRichPhoton.h.

Referenced by GetLength(), GetPhi(), GetTheta(), GetTime(), operator=(), and TrackCalc().

TVector3 PndRichPhoton::fTrackPosition
protected

Definition at line 122 of file PndRichPhoton.h.

Referenced by GetLength(), GetPhi(), GetTheta(), GetTime(), operator=(), SetTrackPos(), and TrackCalc().

TVector3 PndRichPhoton::fTrackPositionOld
protected

Definition at line 124 of file PndRichPhoton.h.

Referenced by GetLength(), GetPhi(), GetTheta(), GetTime(), operator=(), and TrackCalc().


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