EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FairVTrack.cxx
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file FairVTrack.cxx
1 #include "FairVTrack.h"
2 
3 #include "TPad.h"
4 #include "TParticle.h"
5 #include "TView.h"
6 #include "TGeoTrack.h"
7 
8 #include <iostream>
9 
10 using std::cout;
11 using std::endl;
12 
14 
15 //_______________________________________________________________________
17  fTrack(0),
18  fIndex(0),
19  fParticle(0)
20 
21 {
22  //
23  // Default constructor
24  //
25 }
26 
27 //_______________________________________________________________________
29  TPolyLine3D(pts),
30  fTrack(0),
31  fIndex(0),
32  fParticle(0)
33 {
34  //
35  // Copy constructor
36  //
37  pts.Copy(*this);
38 }
39 
40 //_______________________________________________________________________
42  TPolyLine3D(nhits),
43  fTrack(0),
44  fIndex(0),
45  fParticle(0)
46 
47 {
48  //
49  // Standard constructor
50  //
51  ResetBit(kCanDelete);
52 }
53 
54 //_______________________________________________________________________
56 {
57  //
58  // Default destructor
59  //
60 }
61 
62 //_______________________________________________________________________
63 void FairVTrack::Copy(TObject& pts) const
64 {
65  //
66  // Copy *this onto pts
67  //
68  if((TObject*)this != &pts) {
69  ((TPolyLine3D*)this)->Copy(dynamic_cast<TPolyLine3D&>(pts));
70  (dynamic_cast<FairVTrack&>(pts)).fGLList = fGLList;
71  (dynamic_cast<FairVTrack&>(pts)).fLastPoint = fLastPoint;
72  (dynamic_cast<FairVTrack&>(pts)).fIndex = fIndex;
73  (dynamic_cast<FairVTrack&>(pts)).fParticle = fParticle;
74  }
75 }
76 
77 //_______________________________________________________________________
78 Int_t FairVTrack::DistancetoPrimitive(Int_t px, Int_t py)
79 {
80  //
81  //*-*-*-*-*-*-*Compute distance from point px,py to a 3-D polymarker*-*-*-*-*
82  //*-* =====================================================
83  //*-*
84  //*-* Compute the closest distance of approach from point
85  //*-* px,py to each segment
86  //*-* of the polyline.
87  //*-* Returns when the distance found is below DistanceMaximum.
88  //*-* The distance is computed in pixels units.
89  //*-*
90  //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
91 
92  //const Int_t inaxis = 7;
93  //Int_t dist = 9999;
94  return TPolyLine3D::DistancetoPrimitive(px,py);
95 }
96 
97 //_______________________________________________________________________
99 {
100  //
101  // Dump particle corresponding to this point
102 
103  if (fParticle) { fParticle->Dump(); }
104 
105 }
106 
107 //_______________________________________________________________________
108 void FairVTrack::ExecuteEvent(Int_t event, Int_t px, Int_t py)
109 {
110  //
111  //*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*-*-*-*-*
112  //*-* =========================================
113  //*-*
114  //*-* This member function must be implemented to realize the action
115  //*-* corresponding to the mouse click on the object in the window
116  //*-*
117  //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
118 
119  gPad->SetCursor(kCross);
120  /*
121  if (gPad->GetView())
122  gPad->GetView()->ExecuteRotateView(event, px, py);
123  */
124  // cout << "FairVTrack::ExecuteEvent" << event <<" " <<px <<" " << py<< endl;
125  fParticle->ExecuteEvent(event, px, py);
126 
127 
128 }
129 
130 //_______________________________________________________________________
131 const Text_t* FairVTrack::GetName() const
132 {
133  //
134  // Return name of the Geant3 particle corresponding to this point
135  //
136 
137  if (!fParticle) { return "Particle"; }
138  return fParticle->GetName();
139 }
140 
141 //_______________________________________________________________________
142 Text_t* FairVTrack::GetObjectInfo(Int_t px, Int_t py) const
143 {
144  //
145  // Redefines TObject::GetObjectInfo.
146  // Displays the info (particle,etc
147  // corresponding to cursor position px,py
148  //
149 // static char info[64];
150 // sprintf(info,"%s %d",GetName(),fIndex);
151  return fParticle->GetObjectInfo(px,py);
152 }
153 
154 //_______________________________________________________________________
155 TParticle* FairVTrack::GetParticle() const
156 {
157  //
158  // Returns pointer to particle
159  return fParticle;
160 }
161 
162 //_______________________________________________________________________
164 {
165  // Inspect particle corresponding to this track
166 
167  if (fParticle) { fParticle->Inspect(); }
168 
169 }
170 //_______________________________________________________________________
171 
172 void FairVTrack::SetParticle(TParticle* p)
173 {
174  fParticle = p;
175  SetLineColor(Color(p->GetPdgCode()));
176 }
177 //_______________________________________________________________________
178 
179 void FairVTrack::SetTrack(TGeoTrack* Tr)
180 {
181  fTrack=Tr;
182  SetLineColor(Color(Tr->GetPDG()));
183 }
184 //_______________________________________________________________________
185 
186 Int_t FairVTrack::Color(Int_t pdg)
187 {
188  switch(pdg) {
189 
190  case 22 :
191  return 1; // photon
192  case -2112 :
193  return 2 ; // anti-neutron
194  case -11 :
195  return 3; // e+
196  case -3122 :
197  return 4; // anti-Lambda
198  case 11 :
199  return 5; // e-
200  case -3222 :
201  return 6; // Sigma-
202  case 12 :
203  return 7; // e-neutrino (NB: flavour undefined by Geant)
204  case -3212 :
205  return 8; // Sigma0
206  case -13 :
207  return 9; // mu+
208  case -3112 :
209  return 10; // Sigma+ (PB)*/
210  case 13 :
211  return 11; // mu-
212  case -3322 :
213  return 12; // Xi0
214  case 111 :
215  return 13; // pi0
216  case -3312 :
217  return 14; // Xi+
218  case 211 :
219  return 15; // pi+
220  case -3334 :
221  return 16; // Omega+ (PB)
222  case -211 :
223  return 17; // pi-
224  case -15 :
225  return 18; // tau+
226  case 130 :
227  return 19; // K long
228  case 15 :
229  return 20; // tau-
230  case 321 :
231  return 21; // K+
232  case 411 :
233  return 22; // D+
234  case -321 :
235  return 23; // K-
236  case -411 :
237  return 24; // D-
238  case 2112 :
239  return 25; // n
240  case 421 :
241  return 26; // D0
242  case 2212 :
243  return 27; // p
244  case -421 :
245  return 28; // D0
246  case -2212 :
247  return 29; // anti-proton
248  case 431 :
249  return 30; // Ds+
250  case 310 :
251  return 31; // K short
252  case -431 :
253  return 32; // anti Ds-
254  case 221 :
255  return 33; // eta
256  case 4122 :
257  return 34; // Lamba_c+
258  case 3122 :
259  return 35; // Lambda
260  case 24 :
261  return 36; // W+
262  case 3222 :
263  return 37; // Sigma+
264  case -24 :
265  return 38; // W-
266  case 3212 :
267  return 39; // Sigma0
268  case 23 :
269  return 40; // Z
270  case 3112 :
271  return 41; // Sigma-
272  case 3322 :
273  return 42; // Xi0
274  case 3312 :
275  return 43; // Xi-
276  case 3334 :
277  return 44; // Omega- (PB)
278  case 50000050 :
279  return 801; // Cerenkov
280  default :
281  return 0;
282 
283  }
284 
285 }
286 
287 
288 
289 
290 
291 
292 
293 
294 
295 
296