#ifndef COMMON_HPP #define COMMON_HPP #include template float displacement(const A& a, const B& b){ return std::sqrt(pow(a.x-b.x, 2) + pow(a.y-b.y, 2) + pow(a.z-b.z, 2)); } template float rho(const T& t){ return std::sqrt(pow(t.x,2)+pow(t.y,2)); } float pseudorapidity(float z, float r){ float theta = atan2(r, z); return -log(tan(theta/2.0)); } float pseudorapidity(float x, float y, float z){ float r = sqrt(x*x + y*y); return pseudorapidity(z, r); } template float pseudorapidity(const T &t){ return pseudorapidity(t.x, t.y, t.z); } float pseudorapidityP(float px, float py, float pz){ float p_mag = sqrt(px*px + py*py + pz*pz); return 0.5*log((p_mag+pz)/(p_mag-pz)); } template float pseudorapidityP(const T &t){ return pseudorapidityP(t.px, t.py, t.pz); } #endif // COMMON_HPP