ATLAS Offline Software
Public Types | Public Member Functions | Private Attributes | List of all members
ForwardTracker::BenderQuadrupole Class Reference

#include <BenderQuadrupole.h>

Inheritance diagram for ForwardTracker::BenderQuadrupole:
Collaboration diagram for ForwardTracker::BenderQuadrupole:

Public Types

typedef std::shared_ptr< IBenderConstPtr_t
 

Public Member Functions

 BenderQuadrupole (Side side, double length, double strength, double beamEnergy, Bendplane bendplane)
 
void bend (IParticle &) const
 

Private Attributes

Side m_side
 
double m_length
 
double m_strength
 
double m_beamEnergy
 
Bendplane m_bendplane
 

Detailed Description

Definition at line 15 of file BenderQuadrupole.h.

Member Typedef Documentation

◆ ConstPtr_t

typedef std::shared_ptr<IBender> ForwardTracker::IBender::ConstPtr_t
inherited

Definition at line 21 of file ForwardTracker/ForwardTracker/IBender.h.

Constructor & Destructor Documentation

◆ BenderQuadrupole()

ForwardTracker::BenderQuadrupole::BenderQuadrupole ( Side  side,
double  length,
double  strength,
double  beamEnergy,
Bendplane  bendplane 
)

Definition at line 12 of file BenderQuadrupole.cxx.

12  :
13  m_side (side),
14  m_length (length),
15  m_strength (strength),
17  m_bendplane (bendplane)
18  {}

Member Function Documentation

◆ bend()

void ForwardTracker::BenderQuadrupole::bend ( IParticle particle) const
virtual

Implements ForwardTracker::IBender.

Definition at line 20 of file BenderQuadrupole.cxx.

20  {
21 
22  // Calculates (x, y) position and direction after deflection (charge dependent).
23  // Particle is at magnet front face and is moved to the rear face.
24 
25  double aside = ForwardTrackerConstants::aside[m_side];
26  Point& direction = particle.direction_nc();
27  TransversePoint displacement = particle.displacement();
28 
29  if (!particle.charged()) displacement += m_length*aside/direction[2]*direction.transverse(); // Linear drift
30  else {
31 
32  double exitPos[2];
33  double exitDir[2];
34 
35  double qk = std::sqrt(m_beamEnergy*std::fabs(m_strength)/m_length/particle.momentum());
36  double qkl = aside*qk*m_length;
37 
38  exitPos[ m_bendplane] = std::cos (qkl)*displacement[ m_bendplane] + std::sin (qkl)*direction[ m_bendplane]/direction[2]/qk;
39  exitDir[ m_bendplane] = -qk*std::sin (qkl)*displacement[ m_bendplane] + std::cos (qkl)*direction[ m_bendplane]/direction[2];
40 
41  exitPos[!m_bendplane] = std::cosh(qkl)*displacement[!m_bendplane] + std::sinh(qkl)*direction[!m_bendplane]/direction[2]/qk;
42  exitDir[!m_bendplane] = +qk*std::sinh(qkl)*displacement[!m_bendplane] + std::cosh(qkl)*direction[!m_bendplane]/direction[2];
43 
44  displacement[ m_bendplane] = exitPos[ m_bendplane];
45  displacement[!m_bendplane] = exitPos[!m_bendplane];
46 
47  direction[ m_bendplane] = exitDir[ m_bendplane];
48  direction[!m_bendplane] = exitDir[!m_bendplane];
49 
50  direction[2] = aside/std::sqrt(1 + direction[0]*direction[0] + direction[1]*direction[1]);
51 
52  direction[0] *= direction[2];
53  direction[1] *= direction[2];
54  }
55 
56  particle.updatePositionFromDisplacement(displacement);
57  }

Member Data Documentation

◆ m_beamEnergy

double ForwardTracker::BenderQuadrupole::m_beamEnergy
private

Definition at line 28 of file BenderQuadrupole.h.

◆ m_bendplane

Bendplane ForwardTracker::BenderQuadrupole::m_bendplane
private

Definition at line 29 of file BenderQuadrupole.h.

◆ m_length

double ForwardTracker::BenderQuadrupole::m_length
private

Definition at line 26 of file BenderQuadrupole.h.

◆ m_side

Side ForwardTracker::BenderQuadrupole::m_side
private

Definition at line 25 of file BenderQuadrupole.h.

◆ m_strength

double ForwardTracker::BenderQuadrupole::m_strength
private

Definition at line 27 of file BenderQuadrupole.h.


The documentation for this class was generated from the following files:
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
ForwardTracker::BenderQuadrupole::m_length
double m_length
Definition: BenderQuadrupole.h:26
ForwardTracker::ForwardTrackerConstants::aside
static const double aside[2]
Definition: ForwardTrackerConstants.h:20
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
TRT::Hit::side
@ side
Definition: HitInfo.h:83
ForwardTracker::BenderQuadrupole::m_side
Side m_side
Definition: BenderQuadrupole.h:25
ForwardTracker::BenderQuadrupole::m_bendplane
Bendplane m_bendplane
Definition: BenderQuadrupole.h:29
ForwardTracker::BenderQuadrupole::m_beamEnergy
double m_beamEnergy
Definition: BenderQuadrupole.h:28
ChargedTracksWeightFilter::Spline::Point
Linear spline representation of a function used to calculate weights.
Definition: ChargedTracksWeightFilter.h:28
RunTileTBMonitoring.beamEnergy
beamEnergy
Definition: RunTileTBMonitoring.py:248
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
ForwardTracker::BenderQuadrupole::m_strength
double m_strength
Definition: BenderQuadrupole.h:27