CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/KalFitAlg/KalFitAlg-00-15-08/KalFitAlg/KalFitCylinder.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------
2// File from KalFit module
3//
4// Filename : KalFitCylinder.h
5//------------------------------------------------------------------------
6// Description :
7// Cylinder is an Element whose shape is a cylinder.
8//------------------------------------------------------------------------
9// Modif :
10//------------------------------------------------------------------------
11
12#ifndef _DEFINE_CYLINDER_H_
13#define _DEFINE_CYLINDER_H_
14#include "KalFitAlg/KalFitElement.h"
15#include "CLHEP/Geometry/Point3D.h"
16#ifndef ENABLE_BACKWARDS_COMPATIBILITY
17typedef HepGeom::Point3D <double > HepPoint3D;
18#endif
19
20/// Cylinder is an Element whose shape is a cylinder.
21class KalFitCylinder : public KalFitElement {
22protected:
23 double ro_;
24 double ri_;
25 double zf_;
26 double zb_;
27
28public:
29 /// Constructor
31 double radius, double thick,
32 double length, double z0)
33 : KalFitElement(material), myIsSensitive(false)
34 {
35 ri_ = radius;
36 ro_ = radius + thick;
37 zf_ = z0 + length * .5;
38 zb_ = z0 - length * .5;
39 }
40
41 /// Find intersection with Helix
42 virtual double intersect(const KalFitTrack& track,
43 HepPoint3D& x) const;
44
45 virtual double intersect(const KalFitTrack& track,
46 HepPoint3D& x, const HepPoint3D& point) const;
47
48 //Attention!!! [ri,ro] must be within [ri_,ro_]
49 virtual double intersect(const KalFitTrack& track,HepPoint3D& x, const double ri, const double ro) const; //added hy Huang Zhen
50
51 /// Check if the position x is inside the current cylinder
52 bool isInside(const HepPoint3D& x) const;
53 bool isInside(const HepPoint3D& x, const double ri, const double ro) const; //added hy Huang Zhen
54 bool isInside2(const HepPoint3D& x) const;
55
56 /// Extract radius of the cylinder
57 virtual double radius(void) const { return ro_; }
58
59 double rmin() const {return ri_;}
60 void setSensitive() {myIsSensitive=true;}
61 bool isSensitive() const {return myIsSensitive;}
62
63private:
64 bool myIsSensitive;
65};
66#endif
67
Cylinder is an Element whose shape is a cylinder.
bool isInside(const HepPoint3D &x) const
Check if the position x is inside the current cylinder.
bool isInside2(const HepPoint3D &x) const
bool isInside(const HepPoint3D &x, const double ri, const double ro) const
KalFitCylinder(const KalFitMaterial *material, double radius, double thick, double length, double z0)
Constructor.
virtual double intersect(const KalFitTrack &track, HepPoint3D &x, const double ri, const double ro) const
virtual double intersect(const KalFitTrack &track, HepPoint3D &x) const
Find intersection with Helix.
virtual double intersect(const KalFitTrack &track, HepPoint3D &x, const HepPoint3D &point) const
virtual double radius(void) const
Extract radius of the cylinder.
const KalFitMaterial & material(void) const
Return Material of which Element is made.
Description of a track class (<- Helix.cc)