#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