![]() |
|
|||
File indexing completed on 2025-04-02 08:47:07
0001 /** 0002 \file 0003 Declaration of class Smear::Tracker. 0004 0005 \author Will Foreman 0006 \date 2011-08-19 0007 \copyright 2011 Brookhaven National Lab 0008 */ 0009 0010 #ifndef INCLUDE_EICSMEAR_SMEAR_TRACKER_H_ 0011 #define INCLUDE_EICSMEAR_SMEAR_TRACKER_H_ 0012 0013 #include <Rtypes.h> // For ClassDef 0014 0015 #include "eicsmear/smear/Distributor.h" 0016 #include "eicsmear/smear/Smear.h" // KinType 0017 #include "eicsmear/smear/Smearer.h" 0018 0019 namespace erhic { 0020 0021 class VirtualParticle; 0022 0023 } // namespace erhic 0024 0025 namespace Smear { 0026 0027 class ParticleMCS; 0028 0029 /** 0030 A cylindrical tracking detector. 0031 Implements both intrinsic and multiple-scattering resolution. 0032 Abstract base class: inheriting classes must implement L(), LPrime(), 0033 NPoints() and Accepts(). 0034 */ 0035 class Tracker : public Smearer { 0036 public: 0037 /** 0038 Constructor. 0039 */ 0040 Tracker(double magneticField = 2., double nRadiationLengths = 0.01, 0041 double resolution = 0.001); 0042 0043 /** 0044 Destructor. 0045 */ 0046 virtual ~Tracker(); 0047 0048 /** 0049 Returns the resolution at the kinematics of this particle. 0050 */ 0051 virtual double Resolution(const erhic::VirtualParticle&) const; 0052 0053 /** 0054 Smear the properties of the input particle and store the 0055 smeared values in the ParticleMCS. 0056 */ 0057 void Smear(const erhic::VirtualParticle&, ParticleMCS&); 0058 0059 /** 0060 Returns the path length of the particle through the tracker in metres. 0061 */ 0062 virtual double L(const erhic::VirtualParticle&) const = 0; 0063 0064 /** 0065 Returns the transverse path length of the particle through the 0066 tracker in metres. 0067 */ 0068 virtual double LPrime(const erhic::VirtualParticle&) const = 0; 0069 0070 /** 0071 Returns the number of measurement points for the particle. 0072 */ 0073 virtual int NPoints(const erhic::VirtualParticle&) const = 0; 0074 0075 /** 0076 Returns true if the particle falls within the angular acceptance 0077 of the detector. 0078 */ 0079 virtual bool Accepts(const erhic::VirtualParticle&) const = 0; 0080 0081 /** 0082 Returns the minimum theta of particles accepted by the tracker (radians). 0083 */ 0084 virtual double GetThetaMin() const = 0; 0085 0086 /** 0087 Returns the maximum theta of particles accepted by the tracker (radians). 0088 */ 0089 virtual double GetThetaMax() const = 0; 0090 0091 /** 0092 Set whether a vertex constraint should be used when calculating the 0093 intrinsic resolution. Without it a factor of sqrt(720) is included in 0094 the resolution; with it the factor is sqrt(320). By defuault no 0095 constraint is assumed. 0096 */ 0097 void SetVertexConstraint(bool constrain); 0098 0099 protected: 0100 /** 0101 Multiple scattering contribution, given by 0102 delta(p)/p = 0.0136 * z * sqrt(NRL) / (0.3 * B * L * beta) 0103 z = charge, NRL = # radiation lengths, B = mag field, L = track length, 0104 beta = particle velocity. 0105 */ 0106 virtual double MultipleScatteringContribution( 0107 const erhic::VirtualParticle&) const; 0108 0109 /** 0110 The intrinsic resolution of the detector, depending on momentum, 0111 magnetic field, the detector dimensions, the number of fit points 0112 and the point resolution. 0113 */ 0114 virtual double IntrinsicContribution(const erhic::VirtualParticle&) const; 0115 0116 Int_t mFactor; ///< Factor in intrinsic resolution calculation 0117 ///< dependent on vertex constraint. 0118 double mMagField; ///< Magnetic field strength in Tesla 0119 double mNRadLengths; ///< Number of radiation lengths (dimensionless) 0120 double mSigmaRPhi; ///< Point resolution 0121 Distributor Distribution; ///< Random distribution 0122 0123 ClassDef(Smear::Tracker, 1) 0124 }; 0125 0126 } // namespace Smear 0127 0128 #endif // INCLUDE_EICSMEAR_SMEAR_TRACKER_H_
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |