common.hpp 969 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef COMMON_HPP
  2. #define COMMON_HPP
  3. #include <cmath>
  4. template<typename A, typename B>
  5. float displacement(const A& a, const B& b){
  6. return std::sqrt(pow(a.x()-b.x(), 2) +
  7. pow(a.y()-b.y(), 2) +
  8. pow(a.z()-b.z(), 2));
  9. }
  10. template<typename T>
  11. float rho(const T& t){
  12. return std::sqrt(pow(t.x(),2)+pow(t.y(),2));
  13. }
  14. float pseudorapidity(float z, float r){
  15. float theta = atan2(r, z);
  16. return -log(tan(theta/2.0));
  17. }
  18. float pseudorapidity(float x, float y, float z){
  19. float r = sqrt(x*x + y*y);
  20. return pseudorapidity(z, r);
  21. }
  22. template<typename T>
  23. float pseudorapidity(const T &t){
  24. return pseudorapidity(t.x(), t.y(), t.z());
  25. }
  26. float pseudorapidityP(float px, float py, float pz){
  27. float p_mag = sqrt(px*px + py*py + pz*pz);
  28. return 0.5*log((p_mag+pz)/(p_mag-pz));
  29. }
  30. template<typename T>
  31. float pseudorapidityP(const T &t){
  32. return pseudorapidityP(t.px(), t.py(), t.pz());
  33. }
  34. #endif // COMMON_HPP