]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDGeometry.cxx
changes to include AliPerformanceMach component (Michael Knichel)
[u/mrichter/AliRoot.git] / FMD / AliFMDGeometry.cxx
index b1106658e1873176bc38ff3114c3fa623d357b3f..d7a2e62ce8fa177e5a8ce49e9ac5c6c1bb9b630f 100644 (file)
@@ -76,6 +76,7 @@
 #include <TGeoManager.h>
 #include <TGeoVolume.h>
 #include <TGeoNode.h>
+#include <TMath.h>
 static Int_t FindNodeDepth(const char* name, const char* volname);
 
 
@@ -359,6 +360,41 @@ AliFMDGeometry::XYZ2Detector(Double_t  x,
   return kFALSE;
 }
 
+//____________________________________________________________________
+Bool_t
+AliFMDGeometry::XYZ2REtaPhiTheta(Double_t  x,   Double_t y, 
+                                Double_t  z, 
+                                Double_t& r,   Double_t& eta, 
+                                Double_t& phi, Double_t& theta)
+{
+  
+  // Service function to convert Cartisean XYZ to r, eta, phi, and theta.   
+  // 
+  // Note, that the z input should be corrected for the vertex location 
+  // if needed.
+  //
+  //     x      Cartisean X coordinate
+  //     y      Cartisean Y coordinate 
+  //     z      Cartisean Z coordinate 
+  //     r      On return, the radius
+  //     eta    On return, the pseudo-rapidity
+  //     phi    On return, the azimuthal angle
+  //     theta  On return, the polar angle;
+  // 
+  // Return:
+  //     kFALSE in case of problems. 
+
+  if (x == 0 && y == 0 && z == 0) return kFALSE;
+  
+  // Correct for vertex offset. 
+  phi   =  TMath::ATan2(y, x);
+  r     =  TMath::Sqrt(y * y + x * x);
+  theta =  TMath::ATan2(r, z);
+  eta   = -TMath::Log(TMath::Tan(theta / 2));
+
+  return kTRUE;
+}
+
 
 //____________________________________________________________________
 void
@@ -527,10 +563,9 @@ FindNodeDepth(const char* name, const char* volname)
   TGeoNode*    node = 0;
   TString      sName(name);
   while ((node = next())) { 
-    // std::cout << "Checking node " << node->GetName() << std::endl;
     if (sName == node->GetName()) { 
-      std::cout << "Found node " << node->GetName() << " at level " 
-               << next.GetLevel() << std::endl;
+      //std::cout << "Found node " << node->GetName() << " at level " 
+      //               << next.GetLevel() << std::endl;
       return next.GetLevel();
     }
   }