![]() |
|
|||
File indexing completed on 2024-04-06 12:11:20
0001 #ifndef FASTSIM_STRAIGHTTRAJECTORY_H 0002 #define FASTSIM_STRAIGHTTRAJECTORY_H 0003 0004 #include "FastSimulation/SimplifiedGeometryPropagator/interface/Trajectory.h" 0005 0006 /////////////////////////////////////////////// 0007 // Author: L. Vanelderen, S. Kurz 0008 // Date: 29 May 2017 0009 ////////////////////////////////////////////////////////// 0010 0011 namespace fastsim { 0012 //! Mathematical representation of a straight trajectory. 0013 /*! 0014 Reflects trajectory of a uncharged particle. 0015 */ 0016 class StraightTrajectory : public Trajectory { 0017 public: 0018 //! Constructor. 0019 /* 0020 \param particle A (usually uncharged) particle (or charged particle with very high pT so that trajectory can be considered straight). 0021 */ 0022 StraightTrajectory(const Particle& particle) : Trajectory(particle) { ; } 0023 0024 //! Use Copy Constructor. 0025 /* 0026 \param trajectory StraightTrajectory does not have any special attribues so it can be copied right away 0027 */ 0028 StraightTrajectory(const Trajectory& trajectory) : Trajectory(trajectory) { ; } 0029 0030 //! Check if an intersection of the trajectory with a barrel layer exists. 0031 /*! 0032 There is always an intersection between a straight line and a barrel layer unless the trajectory is parallel to z axis. In this case, the particle is not propagated anyways since it will not hit any detector material. 0033 \param layer A barrel layer. 0034 \return true 0035 */ 0036 bool crosses(const BarrelSimplifiedGeometry& layer) const override { return true; } 0037 0038 //! Return delta time (t*c) of the next intersection of trajectory and barrel layer 0039 /*! 0040 This function solves the quadratic equation (basically intersection a circle with a given radius and a straight line) in order to calculate the moment in time when the particle's trajectory intersects with a given barrel layer. 0041 \param layer A barrel layer. 0042 \param onLayer Specify if the particle already is on the layer (in that case the second solution has to be picked). 0043 \return t*c [ns * cm/ns] of next intersection (-1 if there is none). 0044 */ 0045 double nextCrossingTimeC(const BarrelSimplifiedGeometry& layer, bool onLayer = false) const override; 0046 0047 //! Move the particle along the helix trajectory for a given time. 0048 /*! 0049 \param deltaTimeC Time in units of t*c.. 0050 */ 0051 void move(double deltaTimeC) override; 0052 }; 0053 } // namespace fastsim 0054 0055 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |