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

#include <BenderDipole.h>

Inheritance diagram for ForwardTracker::BenderDipole:
Collaboration diagram for ForwardTracker::BenderDipole:

Public Types

typedef std::shared_ptr< IBenderConstPtr_t
 

Public Member Functions

 BenderDipole (Side side, double length, double strength, double beamEnergy, Bendplane bendplane)
 
IBender::ConstPtr_t clone () const
 
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 BenderDipole.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

◆ BenderDipole()

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

Definition at line 13 of file BenderDipole.cxx.

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

Member Function Documentation

◆ bend()

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

Implements ForwardTracker::IBender.

Definition at line 21 of file BenderDipole.cxx.

21  {
22 
23  // Calculate (x, y) position and direction after deflection (charge dependent).
24  // Particle is at magnet front face and is moved to the rear face.
25 
26  // -----------------------------------------------------------------------------------------
27  // m_strength = k0 = L/R = L*B*speedoflight/momentum = deflection angle[rad]
28  //
29  // Separation dipoles bring beams to collision from nominal separation (194mm = 2*0.097m)
30  // Main bending dipoles guide beams along the LHC arc (first @ ~270 m)
31  // MBXW separation dipoles (D1): 6 normal conducting (3.40m long, from 59.622m to 84.352m)
32  // MBRC separation dipoles (D2): 1 super conducting (9.45m long, from 153.175m to 162.625m)
33  // MB bending dipoles: 1232 super conducting (14.30m long, first @ ~270m)
34  //
35  // Special case: MB dipoles
36  // k0 = L/radiusLHC/fLHCfilled = (14.3 m)/(4300 m)/(0.8*22km/27km) = 0.0033/0.65 = 0.0051
37  // = L*B*speedoflight/momentum = (14.3 m)*(8.33 Tesla)*(3e8 m/s)/(7e12eV) = 0.0051
38  // = 2*pi/(number of dipoles) = 6.28/1232 = 0.0051
39  //
40  // Position and direction are in the LHC arc frame (relative to on-momentum particles)
41  // -> for on-momentum particles: direction=(0,0,0) and position=(0.097m,0,0) for z>155m
42  // -----------------------------------------------------------------------------------------
43 
44  double aside = ForwardTrackerConstants::aside[m_side];
45  Point& direction = particle.direction_nc();
46  TransversePoint displacement = particle.displacement();
47 
48  displacement += m_length*aside/direction[2]*direction.transverse(); // Linear drift
49 
50  if (particle.charged()) { // Add effect of bending
51 
52  double angleB_on = -m_strength; // Deflection of on-momentum particles (strength<0 => bend in)
53  double angleB_off = angleB_on*m_beamEnergy/particle.momentum(); // Deflection of off-momentum particles (momentum rescaling)
54  bool isMBdipole = (m_length > 10.); // MB dipoles are identified by their length (14.3 m)
55 
56  displacement[m_bendplane] -= m_length*tan(aside*angleB_off/2);
57  displacement[m_bendplane] += m_length*tan(aside*angleB_on/2)*isMBdipole;
58 
59  direction.rotat(angleB_off - angleB_on*isMBdipole, m_bendplane);
60  }
61 
62  particle.updatePositionFromDisplacement(displacement);
63  }

◆ clone()

IBender::ConstPtr_t ForwardTracker::BenderDipole::clone ( ) const
inline

Definition at line 21 of file BenderDipole.h.

21 { IBender::ConstPtr_t ib(new BenderDipole(*this)); return ib; }

Member Data Documentation

◆ m_beamEnergy

double ForwardTracker::BenderDipole::m_beamEnergy
private

Definition at line 30 of file BenderDipole.h.

◆ m_bendplane

Bendplane ForwardTracker::BenderDipole::m_bendplane
private

Definition at line 31 of file BenderDipole.h.

◆ m_length

double ForwardTracker::BenderDipole::m_length
private

Definition at line 28 of file BenderDipole.h.

◆ m_side

Side ForwardTracker::BenderDipole::m_side
private

Definition at line 27 of file BenderDipole.h.

◆ m_strength

double ForwardTracker::BenderDipole::m_strength
private

Definition at line 29 of file BenderDipole.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::BenderDipole::m_bendplane
Bendplane m_bendplane
Definition: BenderDipole.h:31
ForwardTracker::BenderDipole::m_side
Side m_side
Definition: BenderDipole.h:27
ForwardTracker::BenderDipole::BenderDipole
BenderDipole(Side side, double length, double strength, double beamEnergy, Bendplane bendplane)
Definition: BenderDipole.cxx:13
PlotCalibFromCool.ib
ib
Definition: PlotCalibFromCool.py:419
ForwardTracker::ForwardTrackerConstants::aside
static const double aside[2]
Definition: ForwardTrackerConstants.h:20
TRT::Hit::side
@ side
Definition: HitInfo.h:83
ForwardTracker::BenderDipole::m_length
double m_length
Definition: BenderDipole.h:28
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
ForwardTracker::BenderDipole::m_strength
double m_strength
Definition: BenderDipole.h:29
ChargedTracksWeightFilter::Spline::Point
Linear spline representation of a function used to calculate weights.
Definition: ChargedTracksWeightFilter.h:28
RunTileTBMonitoring.beamEnergy
beamEnergy
Definition: RunTileTBMonitoring.py:248
ForwardTracker::BenderDipole::m_beamEnergy
double m_beamEnergy
Definition: BenderDipole.h:30
ForwardTracker::IBender::ConstPtr_t
std::shared_ptr< IBender > ConstPtr_t
Definition: ForwardTracker/ForwardTracker/IBender.h:21
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26