ROOT logo
/**
 * A script to dump the physical coordinates as given by the
 * geometry. 
 * 
 */
#include <iomanip>

/** 
 * Get the physical coordinates of a strip 
 * 
 * @param det Detector
 * @param rng Ring
 * @param sec Sector
 * @param str Strip
 */
void
PhysicalCoordinates(UShort_t det, Char_t rng, UShort_t sec, UShort_t str)
{
  Double_t x, y, z;
  AliFMDGeometry::Instance()->Detector2XYZ(det, rng, sec, str, x, y, z);
  Double_t phi   = TMath::ATan2(y, x);
  Double_t r     = TMath::Sqrt(x * x + y * y);
  Double_t theta = TMath::ATan2(r, z);
  if (theta < 0) theta += TMath::Pi();
  Double_t eta   = -TMath::Log(TMath::Tan(theta / 2));
  Double_t deg   = 180. / TMath::Pi();
  
  std::cout << det << rng << "[" 
	    << std::setw(2) << sec << "," 
	    << std::setw(3) << str << "] | "
	    << std::setw(9) << x << "," 
	    << std::setw(9) << y << "," 
	    << std::setw(9) << z << " | " 
	    << std::setw(9) << phi * deg << "," 
	    << std::setw(9) << theta * deg << "," 
	    << std::setw(9) << eta << std::endl;
}

/** 
 * Show coordinates of all strips 
 * 
 */
void
ShowCoordinates()
{
  AliFMDGeometry::Instance()->Init();
  AliFMDGeometry::Instance()->InitTransformations();
  std::cout << std::setw(1+1+1+2+1+3+1) << "Detector" << " | " 
	    << std::setw(9+1+9+1+9) << "Cartisian Coords" << " | " 
	    << std::setw(9+1+9+1+9) << "phi,theta,eta" << "\n"
	    << std::setfill('-') 
	    << std::setw(1+1+1+2+1+3+1+1+1)  << "+"
	    << std::setw(1+9+1+9+1+9+1+1)  << "+"
	    << std::setw(1+9+1+9+1+9+1+1)  << "+" 
	    << std::setfill(' ') << std::endl;
  for (UShort_t d = 1; d <= 3; d++) {
    UShort_t nrng = (d == 1 ? 1 : 2);
    for (UShort_t ir = 0; ir < nrng; ir++) { 
      Char_t r = (ir == 0 ? 'I' : 'O');
      UShort_t nsec = (r == 'I' ?  20 :  40);
      UShort_t nstr = 1; // (r == 'I' ? 512 : 256);
      for (UShort_t s = 0; s < nsec; s++) { 
	for (UShort_t t = 0; t < nstr; t++) {
	  PhysicalCoordinates(d, r, s, t);
	}
      }
    }
  }
}
//
// EOF
//
 ShowCoordinates.C:1
 ShowCoordinates.C:2
 ShowCoordinates.C:3
 ShowCoordinates.C:4
 ShowCoordinates.C:5
 ShowCoordinates.C:6
 ShowCoordinates.C:7
 ShowCoordinates.C:8
 ShowCoordinates.C:9
 ShowCoordinates.C:10
 ShowCoordinates.C:11
 ShowCoordinates.C:12
 ShowCoordinates.C:13
 ShowCoordinates.C:14
 ShowCoordinates.C:15
 ShowCoordinates.C:16
 ShowCoordinates.C:17
 ShowCoordinates.C:18
 ShowCoordinates.C:19
 ShowCoordinates.C:20
 ShowCoordinates.C:21
 ShowCoordinates.C:22
 ShowCoordinates.C:23
 ShowCoordinates.C:24
 ShowCoordinates.C:25
 ShowCoordinates.C:26
 ShowCoordinates.C:27
 ShowCoordinates.C:28
 ShowCoordinates.C:29
 ShowCoordinates.C:30
 ShowCoordinates.C:31
 ShowCoordinates.C:32
 ShowCoordinates.C:33
 ShowCoordinates.C:34
 ShowCoordinates.C:35
 ShowCoordinates.C:36
 ShowCoordinates.C:37
 ShowCoordinates.C:38
 ShowCoordinates.C:39
 ShowCoordinates.C:40
 ShowCoordinates.C:41
 ShowCoordinates.C:42
 ShowCoordinates.C:43
 ShowCoordinates.C:44
 ShowCoordinates.C:45
 ShowCoordinates.C:46
 ShowCoordinates.C:47
 ShowCoordinates.C:48
 ShowCoordinates.C:49
 ShowCoordinates.C:50
 ShowCoordinates.C:51
 ShowCoordinates.C:52
 ShowCoordinates.C:53
 ShowCoordinates.C:54
 ShowCoordinates.C:55
 ShowCoordinates.C:56
 ShowCoordinates.C:57
 ShowCoordinates.C:58
 ShowCoordinates.C:59
 ShowCoordinates.C:60
 ShowCoordinates.C:61
 ShowCoordinates.C:62
 ShowCoordinates.C:63
 ShowCoordinates.C:64
 ShowCoordinates.C:65
 ShowCoordinates.C:66
 ShowCoordinates.C:67
 ShowCoordinates.C:68
 ShowCoordinates.C:69
 ShowCoordinates.C:70
 ShowCoordinates.C:71
 ShowCoordinates.C:72
 ShowCoordinates.C:73