|
|
[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] |
||||
|   | ||||||
|
||||||
001 #ifndef SIMPLEEXTRAPOLATEDTRACK_HH_ 002 #define SIMPLEEXTRAPOLATEDTRACK_HH_ 003 /****************************************************************************** 004 * SimpleExtrapolatedTrack class header file * 005 * * 006 * Author: Bob Wagner, Argonne CDF Group * 007 * Phone 630-252-6321 (Argonne) 630-840-8436 (Fermilab) * 008 * * 009 * Description: Simple extrapolated track class. * 010 * Assumes constant solenoidal magnetic field along the * 011 * colliding beam axis which is taken as the z-axis. * 012 * Y axis is vertical and X axis defined to make righthanded * 013 * coordinate system. * 014 * N.B.: For CDF the definition of z axis and magnetic field is * 015 * z axis points along the proton beam direction and * 016 * magnetic field is along the negative z axis. * 017 * Charged tracks are extrapolated through constant magnetic * 018 * field until the field abruptly ends (at midpoint of solenoid * 019 * coil). Further extrapolation is done by simple straight line* 020 * No effects of multiple scattering, energy loss, or * 021 * non-uniform magnetic field are included. * 022 * Like the name says, it's a simple track extrapolator * 023 * CLASS IMPLEMENTED FOR EDM2 ONLY! * 024 * * 025 * Revision History: * 026 * 13-Dec-1999 Bob Wagner Initial creation of class interface * 027 * 30-May-2000 Bob Wagner Move class to ElectronObjects from Electron * 028 * 26-Jul-2000 Bob Wagner Add accessor for Xi which is the azimuthal * 029 * angle of the space point of extrapolated trk.* 030 * * 031 *****************************************************************************/ 032 033 //--------------- 034 // C++ Headers -- 035 //--------------- 036 #include "CLHEP/Matrix/Vector.h" 037 038 //---------------------------------- 039 // Forward Declaration of Classes -- 040 //---------------------------------- 041 042 //***************************************************************************** 043 // Class Declaration 044 //***************************************************************************** 045 // namespace electron { 046 047 class SimpleExtrapolatedTrack { 048 049 050 //============================================================================= 051 // Public section 052 //============================================================================= 053 public: 054 055 // Provide parameter identifiers 056 enum TrackParameter { COT_THETA, CURVATURE, Z0, D0, PHI0 }; 057 058 /*=============================*\ 059 * Creation * 060 \*=============================*/ 061 SimpleExtrapolatedTrack( void ); 062 063 /*==============================*\ 064 * Copy and assignment * 065 \*==============================*/ 066 SimpleExtrapolatedTrack(const SimpleExtrapolatedTrack&); 067 SimpleExtrapolatedTrack& operator= (const SimpleExtrapolatedTrack&); 068 069 /*==============================*\ 070 * Full initialized constructor * 071 \*==============================*/ 072 SimpleExtrapolatedTrack(const HepVector&, double fieldStrength = 0, 073 double fieldRadius = 0, double fieldHalfLength = 0); 074 075 076 /*=============================*\ 077 * Destructor * 078 \*=============================*/ 079 ~SimpleExtrapolatedTrack() { }; 080 081 082 /*================================*\ 083 * Track parameter initialization * 084 \*================================*/ 085 void loadTrack( const HepVector& ); 086 087 /*================================*\ 088 * Magnetic field initialization * 089 \*================================*/ 090 void loadField( double strength, double radius, double halfLength ); 091 092 093 /*================================*\ 094 * Extrapolation functions * 095 \*================================*/ 096 bool extrapolateR( double radius ); 097 bool extrapolateZ( double zCoord ); 098 099 /*=============================*\ 100 * Access track information * 101 \*=============================*/ 102 // Parameters are in order: cot(theta), curvature, z0, d0, phi0 103 HepVector parameters( void ) const; // at z0 104 105 // Track information at extrapolated point 106 double currentR( void ) const; 107 double currentZ( void ) const; 108 double currentPhi( void ) const; 109 double currentAzimuthSpacePt( void ) const; 110 Hep3Vector currentSpacePoint( void ) const; 111 112 // Provide input track information for user convenience 113 double cotTheta( void ) const; 114 double curvature( void ) const; 115 double z0( void ) const; 116 double d0( void ) const; 117 double phi0( void ) const; 118 119 // Derived quantities 120 Hep3Vector momentum( void ) const; // at z0 121 Hep3Vector currentMomentum( void ) const; // at extrapolation pt. 122 double pMag( void ) const; // total momentum 123 double pt( void ) const; 124 double pseudoRapidity( void ) const; 125 double theta( void ) const; 126 double charge( void ) const; 127 128 /*=============================*\ 129 * Print methods * 130 \*=============================*/ 131 void print( std::ostream& os = std::cout ) const; 132 133 134 //============================================================================= 135 // Private section 136 //============================================================================= 137 private: 138 139 /*=============================*\ 140 * Set _xi value * 141 \*=============================*/ 142 void initXi( void ); 143 144 /*=============================*\ 145 * Helix extrapolation * 146 \*=============================*/ 147 bool helixR( double radius ); 148 bool helixZ( double Z ); 149 150 /*=============================*\ 151 * Straight line extrapolation * 152 \*=============================*/ 153 void straightR( double radius ); 154 void straightZ( double Z ); 155 156 /*=========================================*\ 157 * Data members of SimpleExtrapolatedTrack * 158 \*=========================================*/ 159 HepVector _parameters; 160 HepDouble _z; // Z coord(cm) of extrap. track 161 double _radius; // radius(cm) of extrap. track 162 double _phi; // azimuthal angle of extrap. track 163 double _xi; // azimuthal angle of radius to 164 // extrapolated track 165 double _fieldStrength; // units are kiloGauss 166 double _fieldRadius; // units are centimeters 167 double _fieldHalfLength; // units are centimeters 168 169 // Provide multiplier that translates field(kG) and curvature(1/cm) 170 // to momentum(GeV/c) 171 static const double _momentumMultiplier; 172 }; 173 174 175 /*===========================================================================*\ 176 * Inline functions * 177 \*===========================================================================*/ 178 179 #include "ElectronObjects/SimpleExtrapolatedTrack.icc" 180 181 /****************************************************************************** 182 * ALL DONE * 183 *****************************************************************************/ 184 // } // namespace electron 185 186 #endif /* SIMPLEEXTRAPOLATEDTRACK_HH_ */
| [ source navigation ] | [ diff markup ] | [ identifier search ] | [ freetext search ] | [ file search ] |
| This page was automatically generated by the LXR engine. The LXR team |
|