ATLAS Offline Software
Loading...
Searching...
No Matches
FPTracker::QuadrupoleBender Class Reference

#include <QuadrupoleBender.h>

Inheritance diagram for FPTracker::QuadrupoleBender:
Collaboration diagram for FPTracker::QuadrupoleBender:

Public Types

typedef std::shared_ptr< IBenderConstPtr_t

Public Member Functions

 QuadrupoleBender (IQuadFocuser::Ptr_t focuser, double magnetLength, double magnetStrength, int side)
void bend (IParticle &) const
std::string label () const

Private Member Functions

void swap (QuadrupoleBender &)

Private Attributes

IQuadFocuser::Ptr_t m_focuser
double m_length
double m_bendConstant
double m_dside

Static Private Attributes

static const std::string s_label = "QuadBender"

Detailed Description

Definition at line 16 of file QuadrupoleBender.h.

Member Typedef Documentation

◆ ConstPtr_t

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

Definition at line 18 of file FPTracker/FPTracker/IBender.h.

Constructor & Destructor Documentation

◆ QuadrupoleBender()

FPTracker::QuadrupoleBender::QuadrupoleBender ( IQuadFocuser::Ptr_t focuser,
double magnetLength,
double magnetStrength,
int side )

Definition at line 15 of file QuadrupoleBender.cxx.

18 :
19 m_focuser(std::move(focuser)),
20 m_length(magnetLength),
23 }
IQuadFocuser::Ptr_t m_focuser
double magnetStrength(int type, double length, double strength, double Brho)

Member Function Documentation

◆ bend()

void FPTracker::QuadrupoleBender::bend ( IParticle & particle) const
virtual

Implements FPTracker::IBender.

Definition at line 34 of file QuadrupoleBender.cxx.

34 {
35 // calculates new x, y coordinates and direction after deflection
36
37 //particle is at magnet front face. This method moves it to the rear face.
38
39
40 double qk = std::sqrt(m_bendConstant/particle.momentum()) ; // ---- basic formula is m Te GeV
41 //qk = 0.2997925* Magnet_strength[magnet][side]/p ;
42
43
44 Point& direction = particle.direction();
45 //
46 double qkl = qk * m_length*m_dside ;
47 double qkc = qk *direction[2] ;
48
49 m_focuser->focus(qk, qkl, qkc, particle.displacement(), direction);
50
51 particle.updatePositionFromDisplacement(TransversePoint(m_focuser->xe(), m_focuser->ye()));
52
53 direction[0] = m_focuser->xae();
54 direction[1] = m_focuser->yae();
55
56 direction[2] = std::sqrt(1. - (direction[0]*direction[0]) - (direction[1]*direction[1]))*m_dside;
57 direction[0] = direction[0]*direction[2] ;
58 direction[1] = direction[1]*direction[2] ;
59
60 }
ChargedTracksWeightFilter::Spline::Point Point
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses

◆ label()

std::string FPTracker::QuadrupoleBender::label ( ) const
virtual

Implements FPTracker::IBender.

Definition at line 64 of file QuadrupoleBender.cxx.

64 {
65 return s_label+":"+m_focuser->label();
66 }
static const std::string s_label

◆ swap()

void FPTracker::QuadrupoleBender::swap ( QuadrupoleBender & other)
private

Definition at line 26 of file QuadrupoleBender.cxx.

26 {
27 std::swap(m_focuser, other.m_focuser);
28 std::swap(m_length, other.m_length);
29 std::swap(m_bendConstant, other.m_bendConstant);
30 std::swap(m_dside, other.m_dside);
31 }
void swap(ElementLinkVector< DOBJ > &lhs, ElementLinkVector< DOBJ > &rhs)

Member Data Documentation

◆ m_bendConstant

double FPTracker::QuadrupoleBender::m_bendConstant
private

Definition at line 33 of file QuadrupoleBender.h.

◆ m_dside

double FPTracker::QuadrupoleBender::m_dside
private

Definition at line 34 of file QuadrupoleBender.h.

◆ m_focuser

IQuadFocuser::Ptr_t FPTracker::QuadrupoleBender::m_focuser
private

Definition at line 31 of file QuadrupoleBender.h.

◆ m_length

double FPTracker::QuadrupoleBender::m_length
private

Definition at line 32 of file QuadrupoleBender.h.

◆ s_label

const std::string FPTracker::QuadrupoleBender::s_label = "QuadBender"
staticprivate

Definition at line 29 of file QuadrupoleBender.h.


The documentation for this class was generated from the following files: