ATLAS Offline Software
Loading...
Searching...
No Matches
SolenoidElement.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5UNFINISHED
6UNFINISHED
7UNFINISHED
8
9#ifndef FPTACKER_SOLENOIDELEMENT_H
10#define FPTACKER_SOLENOIDELEMENT_H
11
12#include "IBeamElement.h"
13#include "FPTrackerConstants.h"
14#include "Point.h"
15#include <ostream>
16
17/*
18 * simumation of the efect of the solenoid for FPTracker. PS 13/07/2011
19 * using inputfrom Daniel Pelikan
20 *
21 * Daniel gives the transfer matrix as:
22 *
23 * x | | C^2 S.C/k SC S^2/k 0 0 | |x_0 |
24 * x' | |-kSC C^2 -kS^2 SC 0 0 | |x'_0 |
25 * y | = | -SC -S^2/k C^2 SC/k 0 0 | |y_0 |
26 * y' | |kS^2 -SC -kSC C^2 0 0 | |y_0' |
27 * delta_l | | 0 0 0 0 1 l/g^2 | |delta_l0 |
28 * Delp/p | | 0 0 0 0 0 1 | |Delp_0/p_0 |
29 *
30 * FPTracker calculates x, x', y, y' from x_0, x_0', y_0, y_0'
31 * so needs the numbers C, S, k calculate the matrix elements
32 * which will be stored as t_ij.
33 */
34
35namespace FPTracker{
36 class IParticle;
37 class IBender;
38 class Point;
39 class TransversePoint;
41
42 public:
43
44 SolenoidElement(double front,
45 double back,
46 const TransversePoint& beamAxis,
47 Side side,
48 double C,
49 double S,
50 double k);
54 );
55
57
59 double frontFace() const;
60 double rearFace() const;
61 double zabspos() const;
62 double zsignedpos() const;
63 Point position() const;
64 Side side() const;
65
66 bool isEndElement() const;
67 std::string str() const;
68
69 std::string label() const;
70
71 void track(IParticle&) const;
73
74 typedef std::shared_ptr< const SolenoidElement > ConstPtr_t;
75
76 private:
77
79 double m_rearFace;
83 std::string m_label;
85
86 double t_00;
87 double t_01;
88 double t_02;
89 double t_03;
90
91 double t_10;
92 double t_11;
93 double t_12;
94 double t_13;
95
96 double t_20;
97 double t_21;
98 double t_22;
99 double t_23;
100
101 double t_30;
102 double t_31;
103 double t_32;
104 double t_33;
105
106 };
107}
108#endif
std::shared_ptr< const IBeamElement > ConstPtr_t
IBeamElement::ConstPtr_t clone() const
std::string label() const
void track(IParticle &) const
void calibrate(IParticle &)
SolenoidElement(double front, double back, const TransversePoint &beamAxis, Side side, double C, double S, double k)
std::string str() const
std::shared_ptr< const SolenoidElement > ConstPtr_t
SolenoidElement(const IBeamElement::ConstPtr_t &, const IBeamElement::ConstPtr_t &)
struct color C