23 const double RfaceCalo = 1500;
24 const double ZfaceCalo = 3700;
26 double Rclus = RfaceCalo;
27 double Zclus = ZfaceCalo;
28 const double clusterEta = cluster.
eta();
29 if (clusterEta != 0) {
35 const double tanthetaclus = (1.0 / std::cosh(clusterEta)) / std::tanh(clusterEta);
37 Rclus = std::abs(ZfaceCalo * (tanthetaclus));
43 if (tanthetaclus != 0) {
44 Zclus = RfaceCalo / (tanthetaclus);
51 const double clusterPhi = cluster.
phi();
52 return { Rclus * std::cos(clusterPhi), Rclus * std::sin(clusterPhi), Zclus };
63 const double Rcalo = 1200;
69 const double ecFactor = 1.0 / (0.8 * std::atan(15.0 / 34.0));
70 const double sinTheta0 = 2.0 * std::atan(std::exp(-std::abs(Eta)));
71 ecCorr = sinTheta0 * std::sqrt(sinTheta0) * ecFactor;
74 const double Rscaled = (Rcalo - r_first) * (1. / Rcalo);
75 phiRot = Rscaled * ecCorr *
charge * 430. / (Et);
double charge(const T &p)
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
Eigen::Matrix< double, 3, 1 > Vector3D
double PhiROT(const double pt, const double eta, const int charge, const double r_start, const bool isEndCap)
Function to calculate the approximate rotation in phi/bending of a track until it reaches the calo.
Amg::Vector3D approxXYZwrtPoint(const xAOD::CaloCluster &cluster, const Amg::Vector3D &point, const bool isEndCap)
Function to get the (x,y,z) of the cluster wrt to a point (x0,y0,z0)
Amg::Vector3D approxXYZwrtATLAS(const xAOD::CaloCluster &clusterEta, const bool isEndCap)
Function to get the (x,y,z) of the cluster in the ATLAS frame origin (0,0,0)
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.