]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSgeomMatrix.h
Read digits via TBranch::GetEntry() instead of TTree::GetEntry() as SPD/SDD/SSD entri...
[u/mrichter/AliRoot.git] / ITS / AliITSgeomMatrix.h
index 9286baa5f2c9ec352271c4cd17eafcbcf16ada20..29ee980019b0debb5ace5d3318966c44c1d2c9d7 100644 (file)
@@ -2,16 +2,19 @@
 #define ALIITSGEOMMATRIX_H
 /* Copyright(c) 2000, ALICE Experiment at CERN, All rights reserved. *
  * see cxx source for full Copyright notice.                         */
-/* $Id: */
-////////////////////////////////////////////////////////////////////////
-// ITS geometry manipulation routines on the module level. This class is
-// to replace the structure ITS_geom in the class AliITSgeom.
-// Created May 30 2000.
-// version 0.0.0
-// By Bjorn S. Nilsen
-////////////////////////////////////////////////////////////////////////
 
+//////////////////////////////////////////////////////////////////////////
+//  ITS geometry manipulation routines on the module level. This class is
+//  to replace the structure ITS_geom in the class AliITSgeom.
+//  Created May 30 2000.
+//   version 0.0.0
+// By Bjorn S. Nilsen
+////////////////////////////////////////////////////////////////////////////
 #include <TObject.h>
+#include <TString.h>
+class TPolyLine3D;
+class TNode;
+class TShape;
 
 class AliITSgeomMatrix : public TObject {
  public:
@@ -26,21 +29,29 @@ class AliITSgeomMatrix : public TObject {
         AliITSgeomMatrix(const Double_t rotd[6]/*degrees GEANT angles*/,
                          Int_t idt,const Int_t id[3],
                          const Double_t tran[3]);
-       // Copy operator
+       // Copy constructor
        AliITSgeomMatrix(const AliITSgeomMatrix &source);
-       // Alignment operator
-       void operator=(const AliITSgeomMatrix &sourse); // copy
+       // Assignment operator
+       AliITSgeomMatrix& operator=(const AliITSgeomMatrix &source); 
        virtual ~AliITSgeomMatrix(){}; // default constructor.
        // Prints a line describing the output format of the function Print.
        void PrintComment(ostream *os) const;
        // Prints out the content of this class in ASCII format.
-       void Print(ostream *os);
+       void Print(ostream *os)const;
        // Prints out the content of this class in ASCII format but includes
        // formating and strings that make it more humanly readable.
        void PrintTitles(ostream *os) const;
        // Reads in the content of this class in the format of Print
        void Read(istream *is);
+     virtual void Print(Option_t *option="") const {
+                       TObject::Print(option);}
+     virtual Int_t Read(const char *name) {return TObject::Read(name);}
 
+     // Returns the geometry path corresponding to this transformation
+     TString& GetPath(){return fPath;}
+     // Sets the geometry path
+     void SetPath(const Char_t *p){fPath = p;}
+     void SetPath(const TString &p){fPath = p;}
        // Given the rotation angles [radians] it fills frot and computes
        // the rotation matrix fm.
        void SetAngles(const Double_t rot[3]){// [radians]
@@ -48,7 +59,7 @@ class AliITSgeomMatrix : public TObject {
        // Sets the translation vector and computes fCylR and fCylPhi.
        void SetTranslation(const Double_t tran[3]);
        // sets the rotation matrix and computes the rotation angles [radians]
-       void SetMatrix(Double_t matrix[3][3]){ for(Int_t i=0;i<3;i++)
+       void SetMatrix(const Double_t matrix[3][3]){ for(Int_t i=0;i<3;i++)
         for(Int_t j=0;j<3;j++) fm[i][j]=matrix[i][j];this->AngleFromMatrix();}
        // Sets the detector index value
        void SetDetectorIndex(Int_t idt) {fDetectorIndex = idt;}
@@ -79,7 +90,7 @@ class AliITSgeomMatrix : public TObject {
        void  MatrixFromSixAngles(const Double_t *ang);
        // Returns the 6 GEANT rotation angles [radians] from the
        // existing rotation matrix.
-       void  SixAnglesFromMatrix(Double_t *ang);
+       void  SixAnglesFromMatrix(Double_t *ang)const;
 
        // Given a position in Cartesian ALICE global coordinates [cm]
        // returns the position in Cartesian detector/module local
@@ -99,11 +110,11 @@ class AliITSgeomMatrix : public TObject {
        // given a position error matrix in ALICE Cartesian global
        // coordinates [cm] returns a position error matrix in detector/
        // module local Cartesian local coordinates [cm]
-       void GtoLPositionError(Double_t g[3][3],Double_t l[3][3]) const;
+       void GtoLPositionError(const Double_t g[3][3],Double_t l[3][3]) const;
        // given a position error matrix in detector/module Cartesian local
        // coordinates [cm] returns a position error matrix in ALICE
        // Cartesian global coordinates [cm]
-       void LtoGPositionError(Double_t l[3][3],Double_t g[3][3]) const;
+       void LtoGPositionError(const Double_t l[3][3],Double_t g[3][3]) const;
        // Tracking Related Routines
        void GtoLPositionTracking(const Double_t g[3],Double_t l[3]) const;
        // Given a position in Cartesian Tracking global coordinates [cm]
@@ -120,18 +131,26 @@ class AliITSgeomMatrix : public TObject {
        // given a position error matrix in Tracking Cartesian global
        // coordinates [cm] returns a position error matrix in detector/
        // module local Cartesian local coordinates [cm]
-       void GtoLPositionErrorTracking(Double_t g[3][3],
+       void GtoLPositionErrorTracking(const Double_t g[3][3],
                                       Double_t l[3][3]) const;
        // given a position error matrix in detector/module Cartesian local
        // coordinates [cm] returns a position error matrix in Tracking
        // Cartesian global coordinates [cm]
-       void LtoGPositionErrorTracking(Double_t l[3][3],
+       void LtoGPositionErrorTracking(const Double_t l[3][3],
                                       Double_t g[3][3]) const;
        // Computes the distance squared [cm^2] between a point t[3] and
        // this module/detector
        Double_t Distance2(const Double_t t[3]) const {Double_t d=0.0,q;
                  for(Int_t i=0;i<3;i++){q = t[i]-ftran[i]; d += q*q;}
                  return d;}
+     //
+     // Documentation related Class
+     TPolyLine3D* CreateLocalAxis() const;
+     TPolyLine3D* CreateLocalAxisTracking() const;
+     TNode* CreateNode(const Char_t *nodeName,const Char_t *nodeTitle,
+                       TNode *mother,TShape *shape,Bool_t axis=kTRUE) const;
+     void MakeFigures() const;
+     //
  private: // private functions
        // Given the rotation matrix fm it fills the rotation angles frot
        void MatrixFromAngle();
@@ -144,13 +163,14 @@ class AliITSgeomMatrix : public TObject {
        Double_t ftran[3];       // Translation vector of module x,y,z.
        Double_t fCylR,fCylPhi;  //! Translation vector in Cylindrical coord.
        Double_t fm[3][3];       // Rotation matrix based on frot.
+       TString  fPath;          // Path within Geometry to this volume
 
        // Note, fCylR and fCylPhi are added as data members because it costs
        // about a factor of 10 to compute them over looking them up. Since
        // they are used in some tracking algorithms this can be a large cost
        // in computing time. They are not written out but computed.
 
-       ClassDef(AliITSgeomMatrix,1) // Matrix class used by AliITSgeom.
+       ClassDef(AliITSgeomMatrix,2) // Matrix class used by AliITSgeom.
 };
 // Input and output function for standard C++ input/output.
 ostream &operator<<(ostream &os,AliITSgeomMatrix &source);