GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Hits.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2004 by Olivier Stezowski *
3  * stezow(AT)ipnl.in2p3.fr *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ***************************************************************************/
20 
23 #ifndef ADF_Hits
24 #define ADF_Hits
25 
26 #include "StackOfObjects.h"
27 
28 namespace ADF
29 {
30 
32 
35 class Hit
36 {
37 public:
39  Hit()
40  {;}
42  virtual ~Hit()
43  {;}
44 
46  virtual void SetHit(const Hit &);
47 
48  virtual void SetX(Double_t)
49  {;}
50  virtual void SetY(Double_t)
51  {;}
52  virtual void SetZ(Double_t)
53  {;}
54 
55  virtual Double_t GetX() const
56  {return 0.0;}
57  virtual Double_t GetY() const
58  {return 0.0;}
59  virtual Double_t GetZ() const
60  {return 0.0;}
61 
62  virtual void SetXYZ(Double_t, Double_t, Double_t)
63  {;}
64  virtual void GetXYZ(Double_t &x, Double_t &y, Double_t &z) const
65  { x = y = z = 0.0; }
66 
67  virtual Double_t GetE() const
68  {return 0.0;}
69  virtual void SetE(Double_t)
70  {;}
71 
72  virtual Double_t GetT() const
73  {return 0.0;}
74  virtual void SetT(Double_t)
75  {;}
76 
77  virtual void SetDX(Double_t)
78  {;}
79  virtual void SetDY(Double_t)
80  {;}
81  virtual void SetDZ(Double_t)
82  {;}
83 
84  virtual Double_t GetDX() const
85  {return 0.0;}
86  virtual Double_t GetDY() const
87  {return 0.0;}
88  virtual Double_t GetDZ() const
89  {return 0.0;}
90 
91  virtual void SetDXYZ(Double_t, Double_t, Double_t)
92  {;}
93  virtual void GetDXYZ(Double_t &dx, Double_t &dy, Double_t &dz) const
94  {dx = dy = dz = 0.0;}
95 
96  virtual Double_t GetDE() const
97  {return 0.0;}
98  virtual void SetDE(Double_t)
99  {;}
100 
101  virtual Double_t GetDT() const
102  {return 0.0;}
103  virtual void SetDT(Double_t)
104  {;}
105 
106  virtual UShort_t GetStatus() const
107  {return 0u;}
108  virtual void SetStatus(UShort_t)
109  {;}
110 
111  virtual Int_t GetID(Int_t = 0) const
112  {return 0;}
113  virtual void SetID(Int_t, Int_t = 0)
114  {;}
115 
116  virtual void Reset() = 0;
117 };
118 
120 
123 class EHit : public Hit
124 {
125 private:
126  Double32_t fX; // X position
127  Double32_t fY; // Y position
128  Double32_t fZ; // Z position
129 
130  Double32_t fE; // Energy
131 
132 public:
134  EHit() :
135  fX(0.0), fY(0.0), fZ(0.0), fE(0.0) {;}
136  virtual ~EHit()
137  {;}
138 
139  virtual void SetX(Double_t x)
140  {fX=x;}
141  virtual void SetY(Double_t y)
142  {fY=y;}
143  virtual void SetZ(Double_t z)
144  {fZ=z;}
145 
146  virtual Double_t GetX() const
147  {return fX;}
148  virtual Double_t GetY() const
149  {return fY;}
150  virtual Double_t GetZ() const
151  {return fZ;}
152 
153  virtual void SetXYZ(Double_t x, Double_t y, Double_t z)
154  { fX=x; fY=y; fZ=z; }
155  virtual void GetXYZ(Double_t &x, Double_t &y, Double_t &z) const
156  { x=fX; y=fY; z = fZ; }
157 
158  virtual Double_t GetE() const
159  {return fE;}
160  virtual void SetE(Double_t e)
161  {fE = e;}
162 
163  virtual void Reset()
164  { fX = fY = fZ = fE = 0.0 ;}
165 };
166 
168 
171 class ETHit : public EHit
172 {
173 private:
174  Double32_t fT; // Time
175 
176 public:
178  ETHit() :
179  EHit(), fT(0.0) {;}
180  virtual ~ETHit()
181  {;}
182 
183  virtual Double_t GetT() const
184  {return fT;}
185  virtual void SetT(Double_t t)
186  { fT = t; }
187 
188  virtual void Reset()
189  { EHit::Reset(); fT = 0.0; }
190 };
191 
193 
196 class FullHit : public ETHit
197 {
198 private:
199  Double32_t fDX; // Error on X
200  Double32_t fDY; // Error on Y
201  Double32_t fDZ; // Error on Z
202 
203  Double32_t fDE; // Error on E
204  Double32_t fDT; // Error on T
205 
206 public:
208  FullHit() : ETHit(), fDX(0.0), fDY(0.0), fDZ(0.0), fDE(0.0), fDT(0.0)
209  {;}
210  virtual ~FullHit()
211  {;}
212 
213  virtual void SetDX(Double_t dx)
214  { fDX=dx; }
215  virtual void SetDY(Double_t dy)
216  { fDY=dy; }
217  virtual void SetDZ(Double_t dz)
218  { fDZ=dz; }
219 
220  virtual Double_t GetDX() const
221  {return fDX;}
222  virtual Double_t GetDY() const
223  {return fDY;}
224  virtual Double_t GetDZ() const
225  {return fDZ;}
226 
227  virtual void SetDXYZ(Double_t dx, Double_t dy, Double_t dz)
228  { fDX=dx; fDY=dy; fDZ=dz; }
229  virtual void GetDXYZ(Double_t &dx, Double_t &dy, Double_t &dz) const
230  { dx=fDX; dy=fDY; dz = fDZ; }
231 
232  virtual Double_t GetDE() const
233  {return fDE;}
234  virtual void SetDE(Double_t de)
235  { fDE = de;}
236 
237  virtual Double_t GetDT() const
238  {return fDT;}
239  virtual void SetDT(Double_t dt)
240  { fDT = dt; }
241 
242  virtual void Reset()
243  { ETHit::Reset(); fDX = fDY = fDZ = fDE = fDT = 0.0; }
244 };
245 
247 
256 class TrackedHit : public Hit
257 {
258 public:
260  {;}
261  virtual ~TrackedHit()
262  {;}
263 
265  virtual UShort_t GetNbHits() const = 0;
266 
268  virtual Hit *NewHit() = 0;
269 
271  virtual Hit *GetHit(UInt_t i = 0) const = 0;
272 };
273 
275 
278 template <typename Hit_T, typename HitTrack_T>
279 class TrackedHitImp : public TrackedHit
280 {
281 private:
282  Hit_T fTrackedHit; // Tracked particle
283  StackOfObjects<HitTrack_T> fTrack; // Keep the full track of the particle
284 
285 public:
287  : fTrackedHit(), fTrack(100u) {;}
288  virtual ~TrackedHitImp()
289  {;}
290 
291  virtual UShort_t GetNbHits() const
292  { return fTrack.GetSize(); }
293 
294  virtual Hit *NewHit()
295  { return fTrack.New(); }
296 
297  virtual Hit *GetHit(UInt_t i = 0) const
298  { return fTrack.At(i); }
299 
300  virtual void SetX(Double_t x)
301  {fTrackedHit.SetX(x);}
302  virtual void SetY(Double_t y)
303  {fTrackedHit.SetY(y);}
304  virtual void SetZ(Double_t z)
305  {fTrackedHit.SetZ(z);}
306 
307  virtual Double_t GetX() const
308  {return fTrackedHit.GetX();}
309  virtual Double_t GetY() const
310  {return fTrackedHit.GetY();}
311  virtual Double_t GetZ() const
312  {return fTrackedHit.GetZ();}
313 
314  virtual void SetXYZ(Double_t x, Double_t y, Double_t z)
315  {fTrackedHit.SetXYZ(x,y,z);}
316  virtual void GetXYZ(Double_t &x, Double_t &y, Double_t &z) const
317  { fTrackedHit.GetXYZ(x,y,z); }
318 
319  virtual Double_t GetE() const
320  {return fTrackedHit.GetE();}
321  virtual void SetE(Double_t e)
322  {fTrackedHit.SetE(e);}
323 
324  virtual Double_t GetT() const
325  {return fTrackedHit.GetT();}
326  virtual void SetT(Double_t t)
327  {fTrackedHit.SetT(t);}
328 
329  virtual void SetDX(Double_t dx)
330  {fTrackedHit.SetDX(dx);}
331  virtual void SetDY(Double_t dy)
332  {fTrackedHit.SetDY(dy);}
333  virtual void SetDZ(Double_t dz)
334  {fTrackedHit.SetDZ(dz);}
335 
336  virtual Double_t GetDX() const
337  {return fTrackedHit.GetDX();}
338  virtual Double_t GetDY() const
339  {return fTrackedHit.GetDY();}
340  virtual Double_t GetDZ() const
341  {return fTrackedHit.GetDZ();}
342 
343  virtual void SetDXYZ(Double_t dx, Double_t dy, Double_t dz)
344  {fTrackedHit.SetDXYZ(dx,dy,dz);}
345  virtual void GetDXYZ(Double_t &dx, Double_t &dy, Double_t &dz) const
346  {fTrackedHit.GetDXYZ(dx,dy,dz);}
347 
348  virtual Double_t GetDE() const
349  {return fTrackedHit.GetDE();}
350  virtual void SetDE(Double_t de)
351  {fTrackedHit.SetDE(de);}
352 
353  virtual Double_t GetDT() const
354  {return fTrackedHit.GetDT();}
355  virtual void SetDT(Double_t dt)
356  {fTrackedHit.SetDT(dt);}
357 
358  virtual Int_t GetID(Int_t which = 0) const
359  {return fTrackedHit.GetID(which);}
360  virtual void SetID(Int_t id, Int_t which = 0)
361  {fTrackedHit.SetID(id,which);}
362 
363  virtual UShort_t GetStatus() const
364  {return fTrackedHit.GetStatus();}
365  virtual void SetStatus(UShort_t s)
366  {fTrackedHit.SetStatus(s);}
367 
368  virtual void Reset()
369  { fTrackedHit.Reset(); fTrack.Reset(); }
370 };
371 
372 
373 } // namespace ADF
374 #endif
375 
376 
377 
378 
379 
virtual Double_t GetY() const
Definition: Hits.h:57
virtual void SetDZ(Double_t dz)
Definition: Hits.h:333
ETHit.
Definition: Hits.h:171
virtual Hit * GetHit(UInt_t i=0) const
Get Hit number i of the track (already added with NewHit !!)
Definition: Hits.h:297
virtual void SetX(Double_t)
Definition: Hits.h:48
virtual void SetY(Double_t)
Definition: Hits.h:50
virtual Double_t GetDY() const
Definition: Hits.h:86
virtual Hit * NewHit()
Add a new hit to the track (filling mode). The Stack is emptied by calling Reset. ...
Definition: Hits.h:294
virtual Double_t GetDE() const
Definition: Hits.h:348
virtual void GetXYZ(Double_t &x, Double_t &y, Double_t &z) const
Definition: Hits.h:316
Hit()
Definition: Hits.h:39
virtual void SetDY(Double_t)
Definition: Hits.h:79
virtual Double_t GetE() const
Definition: Hits.h:67
virtual Double_t GetDY() const
Definition: Hits.h:222
virtual Double_t GetZ() const
Definition: Hits.h:311
virtual void SetE(Double_t)
Definition: Hits.h:69
virtual ~TrackedHitImp()
Definition: Hits.h:288
virtual void SetDX(Double_t dx)
Definition: Hits.h:213
virtual void SetDX(Double_t)
Definition: Hits.h:77
virtual Int_t GetID(Int_t which=0) const
Definition: Hits.h:358
T * At(UShort_t i) const
To get the object at slot #i.
virtual void SetID(Int_t id, Int_t which=0)
Definition: Hits.h:360
virtual void SetY(Double_t y)
Definition: Hits.h:302
virtual Double_t GetX() const
Definition: Hits.h:146
virtual UShort_t GetNbHits() const
It returns the number of hits for this tracked particle.
Definition: Hits.h:291
virtual void SetStatus(UShort_t s)
Definition: Hits.h:365
virtual void SetStatus(UShort_t)
Definition: Hits.h:108
UShort_t GetSize() const
To know the current size of the stack.
virtual Double_t GetE() const
Definition: Hits.h:158
virtual Double_t GetDT() const
Definition: Hits.h:353
virtual Double_t GetDY() const
Definition: Hits.h:338
virtual void SetDY(Double_t dy)
Definition: Hits.h:215
virtual Hit * NewHit()=0
Add a new hit to the track (filling mode). The Stack is emptied by calling Reset. ...
virtual Double_t GetDT() const
Definition: Hits.h:101
virtual void SetDZ(Double_t)
Definition: Hits.h:81
virtual Double_t GetDX() const
Definition: Hits.h:336
virtual void SetDE(Double_t)
Definition: Hits.h:98
virtual Int_t GetID(Int_t=0) const
Definition: Hits.h:111
virtual Double_t GetDZ() const
Definition: Hits.h:88
virtual UShort_t GetStatus() const
Definition: Hits.h:363
virtual void SetT(Double_t)
Definition: Hits.h:74
void Reset()
Reset the stack.
virtual Double_t GetY() const
Definition: Hits.h:309
virtual void GetDXYZ(Double_t &dx, Double_t &dy, Double_t &dz) const
Definition: Hits.h:345
virtual Double_t GetT() const
Definition: Hits.h:72
virtual void SetDXYZ(Double_t, Double_t, Double_t)
Definition: Hits.h:91
Base class for a Hit.
Definition: Hits.h:35
virtual void Reset()
Definition: Hits.h:242
virtual void Reset()
Definition: Hits.h:368
header file for StackOfObjects.cpp
virtual ~TrackedHit()
Definition: Hits.h:261
virtual UShort_t GetStatus() const
Definition: Hits.h:106
virtual void SetE(Double_t e)
Definition: Hits.h:160
virtual void SetDE(Double_t de)
Definition: Hits.h:350
virtual void SetX(Double_t x)
Definition: Hits.h:300
virtual void Reset()=0
virtual Double_t GetZ() const
Definition: Hits.h:150
virtual Double_t GetDX() const
Definition: Hits.h:220
FullHit()
Definition: Hits.h:208
virtual void SetID(Int_t, Int_t=0)
Definition: Hits.h:113
virtual Double_t GetDX() const
Definition: Hits.h:84
virtual ~ETHit()
Definition: Hits.h:180
virtual ~EHit()
Definition: Hits.h:136
virtual Double_t GetT() const
Definition: Hits.h:183
virtual ~Hit()
Definition: Hits.h:42
virtual void SetDT(Double_t dt)
Definition: Hits.h:355
virtual void SetXYZ(Double_t x, Double_t y, Double_t z)
Definition: Hits.h:314
virtual void SetE(Double_t e)
Definition: Hits.h:321
virtual void SetY(Double_t y)
Definition: Hits.h:141
It is a hit associated to a list of Hits.
Definition: Hits.h:256
virtual void SetXYZ(Double_t x, Double_t y, Double_t z)
Definition: Hits.h:153
virtual Double_t GetX() const
Definition: Hits.h:55
virtual UShort_t GetNbHits() const =0
It returns the number of hits for this tracked particle.
virtual void SetDXYZ(Double_t dx, Double_t dy, Double_t dz)
Definition: Hits.h:343
virtual void SetDXYZ(Double_t dx, Double_t dy, Double_t dz)
Definition: Hits.h:227
EHit()
Definition: Hits.h:134
virtual void SetDX(Double_t dx)
Definition: Hits.h:329
virtual Double_t GetDZ() const
Definition: Hits.h:340
ETHit()
Definition: Hits.h:178
virtual void SetT(Double_t t)
Definition: Hits.h:185
virtual void SetDT(Double_t dt)
Definition: Hits.h:239
virtual void Reset()
Definition: Hits.h:188
virtual Double_t GetX() const
Definition: Hits.h:307
virtual Double_t GetDT() const
Definition: Hits.h:237
virtual void GetXYZ(Double_t &x, Double_t &y, Double_t &z) const
Definition: Hits.h:64
virtual void SetDT(Double_t)
Definition: Hits.h:103
virtual Double_t GetZ() const
Definition: Hits.h:59
virtual Double_t GetDE() const
Definition: Hits.h:96
virtual void SetDY(Double_t dy)
Definition: Hits.h:331
virtual ~FullHit()
Definition: Hits.h:210
Concrete implementation of a tracked Hit.
Definition: Hits.h:279
virtual void SetHit(const Hit &)
to fully copy a Hit into another one. In principle, no need to overwritte it as soon as the interface...
Definition: Hits.cpp:27
T * New(Bool_t do_reset=true)
It pops up a new object on the top of the stack.
virtual void SetX(Double_t x)
Definition: Hits.h:139
virtual void SetDZ(Double_t dz)
Definition: Hits.h:217
virtual Double_t GetY() const
Definition: Hits.h:148
virtual Double_t GetT() const
Definition: Hits.h:324
virtual void SetDE(Double_t de)
Definition: Hits.h:234
virtual Double_t GetDZ() const
Definition: Hits.h:224
virtual Double_t GetE() const
Definition: Hits.h:319
virtual void SetZ(Double_t z)
Definition: Hits.h:143
virtual void SetT(Double_t t)
Definition: Hits.h:326
virtual void GetDXYZ(Double_t &dx, Double_t &dy, Double_t &dz) const
Definition: Hits.h:93
virtual Hit * GetHit(UInt_t i=0) const =0
Get Hit number i of the track (already added with NewHit !!)
virtual void GetXYZ(Double_t &x, Double_t &y, Double_t &z) const
Definition: Hits.h:155
virtual void SetZ(Double_t)
Definition: Hits.h:52
virtual void GetDXYZ(Double_t &dx, Double_t &dy, Double_t &dz) const
Definition: Hits.h:229
virtual void Reset()
Definition: Hits.h:163
virtual void SetXYZ(Double_t, Double_t, Double_t)
Definition: Hits.h:62
virtual Double_t GetDE() const
Definition: Hits.h:232
virtual void SetZ(Double_t z)
Definition: Hits.h:304