CDF II
CDF KITS
source navigation ]
diff markup ]
identifier search ]
freetext search ]
file search ]
 
Architecture: i386 ]
Version: 4.10.4 ] [ 4.10.5 ] [ 4.8.4 ] [ 4.8.4l3s ] [ 4.8.5 ] [ 4.9.0 ] [ 4.9.1 ] [ 4.9.1.hpt3 ] [ 4.9.1hpt3 ] [ 4.9.1top1 ] [ 5.0.0 ] [ 5.1.0 ] [ 5.1.0beamonly ] [ 5.1.1 ] [ 5.2.0 ] [ 5.3.0 ] [ 5.3.1 ] [ 5.3.1dsp ] [ 5.3.3 ] [ 5.3.3_nt ] [ 5.3.4 ] [ 6.1.1 ] [ 6.1.1b ] [ 6.1.2 ] [ 6.1.3 ] [ 6.1.4 ] [ 6.1.4int3 ] [ 6.1.4mc ] [ 6.1.4mc_a ] [ 6.1.6 ] [ development ]

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
Valid HTML 4.01!

Send problems or questions to cdfcode@fnal.gov