CMS 3D CMS Logo

CylindricalState.h
Go to the documentation of this file.
1 #ifndef CylindricalState_H
2 #define CylindricalState_H
3 
7 #include "RKSmallVector.h"
8 
9 #include <iostream>
10 
24 public:
25  typedef double Scalar;
27 
29 
30  CylindricalState(const LocalPoint& pos, const LocalVector& mom, Scalar ch) {
31  rho_ = pos.perp();
32  Scalar cosphi = pos.x() / rho_;
33  Scalar sinphi = pos.y() / rho_;
34  Scalar p_rho = mom.x() * cosphi + mom.y() * sinphi;
35  Scalar p_phi = -mom.x() * sinphi + mom.y() * cosphi;
36 
37  par_(0) = pos.phi();
38  par_(1) = pos.z();
39  par_(2) = p_phi / (p_rho * rho_);
40  par_(3) = mom.z() / p_rho;
41  par_(4) = ch / mom.mag();
42 
43  prSign_ = p_rho > 0 ? 1.0 : -1.0;
44 
45  std::cout << "CylindricalState built from pos " << pos << " mom " << mom << " charge " << ch << std::endl;
46  std::cout << "p_rho " << p_rho << " p_phi " << p_phi << " dphi_drho " << par_(2) << std::endl;
47  std::cout << "Which results in " << position() << " mom " << momentum() << " charge " << charge()
48  << std::endl;
49  }
50 
51  CylindricalState(Scalar rho, const Vector& par, Scalar prSign) : par_(par), rho_(rho), prSign_(prSign) {}
52 
53  const LocalPoint position() const { return LocalPoint(LocalPoint::Cylindrical(rho_, par_(0), par_(1))); }
54 
55  const LocalVector momentum() const {
56  Scalar cosphi = cos(par_(0));
57  Scalar sinphi = sin(par_(0));
58  Scalar Q = sqrt(1 + rho_ * rho_ * par_(2) * par_(2) + par_(3) * par_(3));
59  Scalar P = std::abs(1. / par_(4));
60  Scalar p_rho = prSign_ * P / Q;
61  Scalar p_phi = rho_ * par_(2) * p_rho;
62  Scalar p_z = par_(3) * p_rho;
63  LocalVector result(p_rho * cosphi - p_phi * sinphi, p_rho * sinphi + p_phi * cosphi, p_z);
64  return result;
65  }
66 
67  const Vector& parameters() const { return par_; }
68 
69  Scalar charge() const { return par_(4) > 0 ? 1 : -1; }
70 
71  Scalar rho() const { return rho_; }
72 
73  double prSign() const { return prSign_; }
74 
75 private:
79 };
80 
81 #endif
Vector3DBase< float, LocalTag >
CylindricalState::rho
Scalar rho() const
Definition: CylindricalState.h:71
CylindricalState::Scalar
double Scalar
Definition: CylindricalState.h:25
Visibility.h
CylindricalState::rho_
Scalar rho_
Definition: CylindricalState.h:77
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
gather_cfg.cout
cout
Definition: gather_cfg.py:144
pos
Definition: PixelAliasList.h:18
align::LocalPoint
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
CylindricalState::charge
Scalar charge() const
Definition: CylindricalState.h:69
class-composition.Q
Q
Definition: class-composition.py:82
CylindricalState::par_
Vector par_
Definition: CylindricalState.h:76
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
CylindricalState::momentum
const LocalVector momentum() const
Definition: CylindricalState.h:55
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
CylindricalState::parameters
const Vector & parameters() const
Definition: CylindricalState.h:67
RKSmallVector
ROOT::Math::SVector< T, N > RKSmallVector
Definition: RKSmallVector.h:13
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Geom::Cylindrical2Cartesian
Definition: CoordinateSets.h:34
CylindricalState
Definition: CylindricalState.h:23
Point3DBase< float, LocalTag >
DDAxes::rho
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
CylindricalState::CylindricalState
CylindricalState()
Definition: CylindricalState.h:28
dso_internal
#define dso_internal
Definition: Visibility.h:13
CylindricalState::Vector
RKSmallVector< Scalar, 5 > Vector
Definition: CylindricalState.h:26
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
LocalPoint.h
CylindricalState::prSign_
Scalar prSign_
sign of local p_r
Definition: CylindricalState.h:78
CylindricalState::prSign
double prSign() const
Definition: CylindricalState.h:73
CylindricalState::CylindricalState
CylindricalState(Scalar rho, const Vector &par, Scalar prSign)
Definition: CylindricalState.h:51
CylindricalState::position
const LocalPoint position() const
Definition: CylindricalState.h:53
mps_fire.result
result
Definition: mps_fire.py:303
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
RKSmallVector.h
P
std::pair< OmniClusterRef, TrackingParticleRef > P
Definition: BDHadronTrackMonitoringAnalyzer.cc:202
LocalVector.h
CylindricalState::CylindricalState
CylindricalState(const LocalPoint &pos, const LocalVector &mom, Scalar ch)
Definition: CylindricalState.h:30