X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSBaseGeometry.h;h=c6c6b0ac0e03ac2f82c12aff663ed58bf86b6cc7;hb=32d432960540cc2372ebcf8fc674bd398e1cd26c;hp=9d14f3223e59ead8e9f574af9ebb2cd067b61b15;hpb=97874584bb12911d3c239490ad3c982dbb754f4f;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSBaseGeometry.h b/ITS/AliITSBaseGeometry.h index 9d14f3223e5..c6c6b0ac0e0 100644 --- a/ITS/AliITSBaseGeometry.h +++ b/ITS/AliITSBaseGeometry.h @@ -1,964 +1,60 @@ -// -#ifndef ALIITSBASEVOLPARAMS_H -#define ALIITSBASEVOLPARAMS_H +#ifndef ALIITSMIXTURE_H +#define ALIITSMIXTURE_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id$ */ +#include -///////////////////////////////////////////////////////////////////////// -// Geant 3 base class for volume parameters -///////////////////////////////////////////////////////////////////////// -#include -class TString; - -class AliITSBaseVolParams : public TObject { - public: - AliITSBaseVolParams(){fVol=-1;fCpn=-1;} // Default constructor - virtual ~AliITSBaseVolParams(){} // Destructor - virtual void SetVid(Int_t i){fVol = i;}// Sets the volume id from the next - // available one - virtual Int_t GetVid(){return fVol;} // Returns volume id - virtual void SetName(const char *c){fName=c;}//Sets name of this volume - virtual TString* GetName(){return &fName;} // Returns volume name - virtual void Print(ostream *os); // Prints output content of this class - virtual void Read(istream *is); // Reads output created by Print above. - virtual Int_t GetCopyNumber(){return fCpn;}//Returns existing max copy no. - // incoment and return copy number. - virtual Int_t GetNextcpn(){fCpn++;return fCpn;} - // Same as above, but add's 1 for FORTRAN/Geant3 compliance. - virtual Int_t GetG3cpn(){return GetNextcpn()+1;} - /* - Int_t ITSIndexToITSG3name(const Int_t i) - {return AliITSBaseGeometry::ITSIndexToITSG3name(i);}; - Int_t ITSG3VnameToIndex(const char *name)const - {return AliITSBaseGeometry::ITSG3VnameToIndex(name);}; - */ - private: - Int_t fVol; // Volume index number - Int_t fCpn; // max Copy number - TString fName; // Volume name - - ClassDef(AliITSBaseVolParams,1) // Basic ITS volume parameters class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSBaseVolParams &source); -istream &operator>>(istream &os,AliITSBaseVolParams &source); -#endif - -#ifndef ALIITSBOXDATA_H -#define ALIITSBOXDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Box data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSBoxData : public AliITSBaseVolParams { - public: - AliITSBoxData() : AliITSBaseVolParams() // Default constructor - {fDx=0.0;fDy=0.0;fDz=0;} - virtual ~AliITSBoxData(){} // Standard destructor - // Getters - Double_t DxAt() {return fDx;} // Returm arrau of rmin values - Double_t DyAt() {return fDy;} // Returm arrau of rmax values - Double_t DzAt() {return fDz;} // Return fDz coordiante - Double_t& Dx(){return fDx;}// Returns address of fRmax - Double_t& Dy(){return fDy;}// Returns address of fRmin - Double_t& Dz(){return fDz;}// Returns address of fDz - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fDx; // X half length - Double_t fDy; // Y half length - Double_t fDz; // Z half length. - - ClassDef(AliITSBoxData,1) // Box data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSBoxData &source); -istream &operator>>(istream &os,AliITSBoxData &source); -#endif - -#ifndef ALIITSTRAPEZOID1DATA_H -#define ALIITSTRAPEZOID1DATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Trapezoid 1 data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSTrapezoid1Data : public AliITSBaseVolParams { - public: - AliITSTrapezoid1Data() : AliITSBaseVolParams() // Default constructor - {fDx[0]=0.0;fDx[1]=0.0;fDy=0.0;fDz=0;} - virtual ~AliITSTrapezoid1Data(){} // Standard destructor - // Getters - Double_t DxAt(Int_t i) {return fDx[i];} // Returm arrau of rmin values - Double_t DyAt() {return fDy;} // Returm arrau of rmax values - Double_t DzAt() {return fDz;} // Return fDz coordiante - Double_t& Dx(Int_t i){return fDx[i];}// Returns address of fRmax - Double_t& Dy(){return fDy;}// Returns address of fRmin - Double_t& Dz(){return fDz;}// Returns address of fDz - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fDx[2]; // X half length - Double_t fDy; // Y half length - Double_t fDz; // Z half length. - - ClassDef(AliITSTrapezoid1Data,1) // Trapezoid 1 data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTrapezoid1Data &source); -istream &operator>>(istream &os,AliITSTrapezoid1Data &source); -#endif - -#ifndef ALIITSTRAPEZOID2DATA_H -#define ALIITSTRAPEZOID2DATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Trapezoid 2 data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSTrapezoid2Data : public AliITSBaseVolParams { - public: - AliITSTrapezoid2Data() : AliITSBaseVolParams() // Default constructor - {fDx[0]=0.0;fDx[1]=0.0;fDy[0]=0.0;fDy[1]=0.0;fDz=0.0;} - virtual ~AliITSTrapezoid2Data(){} // Standard destructor - // Getters - Double_t DxAt(Int_t i) {return fDx[i];} // Returm arrau of rmin values - Double_t DyAt(Int_t i) {return fDy[i];} // Returm arrau of rmax values - Double_t DzAt() {return fDz;} // Return fDz coordiante - Double_t& Dx(Int_t i){return fDx[i];}// Returns address of fRmax - Double_t& Dy(Int_t i){return fDy[i];}// Returns address of fRmin - Double_t& Dz(){return fDz;}// Returns address of fDz - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fDx[2]; // X half length - Double_t fDy[2]; // Y half length - Double_t fDz; // Z half length. - - ClassDef(AliITSTrapezoid2Data,1) // Trapezoid 2 data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTrapezoid2Data &source); -istream &operator>>(istream &os,AliITSTrapezoid2Data &source); -#endif - -#ifndef ALIITSTRAPEZOIDDATA_H -#define ALIITSTRAPEZOIDDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Trapezoid General data structure. -/////////////////////////////////////////////////////////////////////////; - -class AliITSTrapezoidData : public AliITSBaseVolParams { - public: - AliITSTrapezoidData() : AliITSBaseVolParams() // Default constructor - {fDz=0.0;fTheta=0.0;fPhi=0.0;fH[0]=0.0;fH[1]=0.0;fBl[0]=0.0; - fBl[1]=0.0;fTl[0]=0.0;fTl[1]=0.0;fAlp[0]=0.0;fAlp[1]=0.0;} - virtual ~AliITSTrapezoidData(){} // Standard destructor - // Getters - Double_t DzAt() {return fDz;} // Returm arrau of dZ values - Double_t Theta() {return fTheta;} // Returm arrau of Theta values - Double_t Phi() {return fPhi;} // Return Phi coordiante - Double_t HAt(Int_t i){return fH[i];} // Return fH[] - Double_t Bl(Int_t i){return fBl[i];} // Return fBl[] - Double_t Tl(Int_t i){return fTl[i];} // Return fTl[] - Double_t Alpha(Int_t i){return fAlp[i];} // Return fAlpha[] - Double_t& Dz(){return fDz;}// Returns address of fDz - Double_t& Th(){return fTheta;}// Returns address of fTheta - Double_t& Ph(){return fPhi;}// Returns address of fPhi - Double_t& H(Int_t i){return fH[i];}// Returns address of fH - Double_t& B(Int_t i){return fBl[i];}// Returns address of fBl - Double_t& T(Int_t i){return fTl[i];}// Returns address of fTl - Double_t& A(Int_t i){return fAlp[i];}// Returns address of fAlp - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fTheta; // Polar angle of the line joing the center of the - // face at -dz to the center of the one at dz [degree]. - Double_t fPhi; // aximuthal angle of the line joing the center of the - // face at -dz to the center of the one at +dz [degree]. - Double_t fDz; // Half-length along the z-asix - Double_t fH[2]; // half-length along y of the face at -dz & _dz. - Double_t fBl[2]; // half-length along x of the side at -h1 in y of - // the face at -dz & +dz in z. - Double_t fTl[2]; // half-length along x of teh side at +h1 in y of - // the face at -dz & +dz in z. - Double_t fAlp[2];// angle with respect to the y axis from the center of - // the side at -fH[0] & +fH[1] in y to the cetner of the - // side at +h1 in y of the face at -dz in z [degree]. - - ClassDef(AliITSTrapezoidData,1) // General Trapezoid data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTrapezoidData &source); -istream &operator>>(istream &os,AliITSTrapezoidData &source); -#endif - -#ifndef ALIITSTRAPEZOIDTWISTEDDATA_H -#define ALIITSTRAPEZOIDTWISTEDDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Trapezoid General data structure. -/////////////////////////////////////////////////////////////////////////; - -class AliITSTrapezoidTwistedData : public AliITSBaseVolParams { - public: - AliITSTrapezoidTwistedData() : AliITSBaseVolParams() //Default constructor - {fTwist=0.0;fDz=0.0;fTheta=0.0;fPhi=0.0;fH[0]=0.0;fH[1]=0.0; - fBl[0]=0.0;fBl[1]=0.0;fTl[0]=0.0;fTl[1]=0.0;fAlp[0]=0.0;fAlp[1]=0.0;} - virtual ~AliITSTrapezoidTwistedData(){} // Standard destructor - // Getters - Double_t DzAt() {return fDz;} // Returm arrau of dZ values - Double_t Theta() {return fTheta;} // Returm arrau of Theta values - Double_t Phi() {return fPhi;} // Return Phi angle - Double_t Twist(){return fTwist;} // Returns Twist angle - Double_t HAt(Int_t i){return fH[i];} // Return fH[] - Double_t Bl(Int_t i){return fBl[i];} // Return fBl[] - Double_t Tl(Int_t i){return fTl[i];} // Return fTl[] - Double_t Alpha(Int_t i){return fAlp[i];} // Return fAlpha[] - Double_t& Dz(){return fDz;}// Returns address of fDz - Double_t& Th(){return fTheta;}// Returns address of fTheta - Double_t& Ph(){return fPhi;}// Returns address of fPhi - Double_t& Tw(){return fTwist;}// Returns address of fTwist - Double_t& H(Int_t i){return fH[i];}// Returns address of fH - Double_t& B(Int_t i){return fBl[i];}// Returns address of fBl - Double_t& T(Int_t i){return fTl[i];}// Returns address of fTl - Double_t& A(Int_t i){return fAlp[i];}// Returns address of fAlp - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fTwist; // Twist angle of the faces parallel to the x-y - // plane at z=+-dz around an axis parallel to z - Double_t fTheta; // Polar angle of the line joing the center of the - // face at -dz to the center of the one at dz [degree]. - Double_t fPhi; // aximuthal angle of the line joing the center of the - // face at -dz to the center of the one at +dz [degree]. - Double_t fDz; // Half-length along the z-asix - Double_t fH[2]; // half-length along y of the face at -dz & _dz. - Double_t fBl[2]; // half-length along x of the side at -h1 in y of - // the face at -dz & +dz in z. - Double_t fTl[2]; // half-length along x of teh side at +h1 in y of - // the face at -dz & +dz in z. - Double_t fAlp[2];// angle with respect to the y axis from the center of - // the side at -fH[0] & +fH[1] in y to the cetner of the - // side at +h1 in y of the face at -dz in z [degree]. - - ClassDef(AliITSTrapezoidTwistedData,1) // Twisted Trapezoid data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTrapezoidTwistedData &source); -istream &operator>>(istream &os,AliITSTrapezoidTwistedData &source); -#endif - -#ifndef ALIITSTUBEDATA_H -#define ALIITSTUBEDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Tube data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSTubeData : public AliITSBaseVolParams { - public: - AliITSTubeData() : AliITSBaseVolParams() // Default constructor - {fDz=0;fRmin=0;fRmax=0;} - virtual ~AliITSTubeData(){} // Standard destructor - // Getters - Double_t DzAt(){return fDz;} // Return fDz coordiante - Double_t Rmin() {return fRmin;} // Returm arrau of rmin values - Double_t Rmax() {return fRmax;} // Returm arrau of rmax values - Double_t& Z(){return fDz;}// Returns address of fDz - Double_t& Rn(){return fRmin;}// Returns address of fRmin - Double_t& Rx(){return fRmax;}// Returns address of fRmax - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fRmin; // Inner Radius - Double_t fRmax; // Outer Radius - Double_t fDz; // Z half length. - - ClassDef(AliITSTubeData,1) // Simple Tube data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTubeData &source); -istream &operator>>(istream &os,AliITSTubeData &source); -#endif - -#ifndef ALIITSTUBESEGDATA_H -#define ALIITSTUBESEGDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Tube Segment data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSTubeSegData : public AliITSBaseVolParams { - public: - AliITSTubeSegData() : AliITSBaseVolParams() // Default constructor - {fDz=0;fRmin=0;fRmax=0;} - virtual ~AliITSTubeSegData(){} // Standard destructor - // Getters - Double_t Phi0() {return fPhi0;} // Returns starting Phi value - Double_t Phi1() {return fPhi1;} // Returns endinging Phi value - Double_t DzAt(){return fDz;} // Return fDz coordiante - Double_t Rmin() {return fRmin;} // Returm arrau of rmin values - Double_t Rmax() {return fRmax;} // Returm arrau of rmax values - Double_t& P0(){return fPhi0;}// Returns addres of fPhi0 - Double_t& P1(){return fPhi1;}// Returns addres of fPhi1 - Double_t& Z(){return fDz;}// Returns address of fDz - Double_t& Rn(){return fRmin;}// Returns address of fRmin - Double_t& Rx(){return fRmax;}// Returns address of fRmax - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fPhi0,fPhi1; // Starting and ending phi angles [degrees] - Double_t fRmin; // Inner Radius - Double_t fRmax; // Outer Radius - Double_t fDz; // Z half length. - - ClassDef(AliITSTubeSegData,1) // Segment of a Tube data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTubeSegData &source); -istream &operator>>(istream &os,AliITSTubeSegData &source); -#endif - -#ifndef ALIITSTUBECUTDATA_H -#define ALIITSTUBECUTDATA_H - -#include - -///////////////////////////////////////////////////////////////////////// -// Geant 3 Tube Cut data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSTubeCutData : public AliITSBaseVolParams { - public: - AliITSTubeCutData() : AliITSBaseVolParams() // Default constructor - {fDz=0;fRmin=0;fRmax=0;fPhi0=0.0,fPhi1=0.0;} - virtual ~AliITSTubeCutData(){} // Standard destructor - // Getters - Double_t Phi0() {return fPhi0;} // Returns starting Phi value - Double_t Phi1() {return fPhi1;} // Returns endinging Phi value - Double_t DzAt(){return fDz;} // Return fDz coordiante - Double_t Rmin() {return fRmin;} // Returm arrau of rmin values - Double_t Rmax() {return fRmax;} // Returm arrau of rmax values - TVector3 Normal(Int_t i){return (fNorm[i]).Unit();}// Returns unit normal - //at z serface -dz & +dz. - // Returns jth unit normal at z serface -dz & +dz. - Double_t Normal(Int_t i,Int_t j){return ((fNorm[i]).Unit())[j];} - Double_t& P0(){return fPhi0;}// Returns addres of fPhi0 - Double_t& P1(){return fPhi1;}// Returns addres of fPhi1 - Double_t& Z(){return fDz;}// Returns address of fDz - Double_t& Rn(){return fRmin;}// Returns address of fRmin - Double_t& Rx(){return fRmax;}// Returns address of fRmax - // Returns address of normal at z serface -dz & +dz. - TVector3& Nv(Int_t i){return fNorm[i];} - Double_t& Nx(Int_t i){return (fNorm[i])[0];}// return address of x - //component of the nomal vect. - Double_t& Ny(Int_t i){return (fNorm[i])[1];}// return address of y - //component of the nomal vect. - Double_t& Nz(Int_t i){return (fNorm[i])[2];}// return address of z - //component of the nomal vect. - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fPhi0,fPhi1; // Starting and ending phi angles [degrees] - Double_t fRmin; // Inner Radius - Double_t fRmax; // Outer Radius - Double_t fDz; // Z half length. - TVector3 fNorm[2]; // unit vector normal to -dz and +dz surfaces. - - ClassDef(AliITSTubeCutData,1) // A tube segment with cut ends data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTubeCutData &source); -istream &operator>>(istream &os,AliITSTubeCutData &source); -#endif - -#ifndef ALIITSTUBEELLIPTICALDATA_H -#define ALIITSTUBEELLIPTICALDATA_H - -///////////////////////////////////////////////////////////////////////// -// Geant 3 Tube Elliptical data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSTubeEllipticalData : public AliITSBaseVolParams { - public: - AliITSTubeEllipticalData() : AliITSBaseVolParams() // Default constructor - {fDz=0;fP0=0;fP1=0;} - virtual ~AliITSTubeEllipticalData(){} // Standard destructor - // Getters - Double_t DzAt(){return fDz;} // Return fDz coordiante - Double_t P0At() {return fP0;} // Returm fP0 values - Double_t P1At() {return fP1;} // Returm fP1 values - Double_t& Z(){return fDz;}// Returns address of fDz - Double_t& P0(){return fP0;}// Returns address of fP0 - Double_t& P1(){return fP1;}// Returns address of fP1 - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fP0; // semi-axis of the elipse along x - Double_t fP1; // semi-asis of the elipse along y - Double_t fDz; // Z half length. - - ClassDef(AliITSTubeEllipticalData,1) // Tube with an elliptical cross - // section data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTubeEllipticalData &source); -istream &operator>>(istream &os,AliITSTubeEllipticalData &source); -#endif - -#ifndef ALIITSTUBEHYPERBOLICDATA_H -#define ALIITSTUBEHYPERBOLICDATA_H - -///////////////////////////////////////////////////////////////////////// -// Geant 3 Tube Hyperbolic data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSTubeHyperbolicData : public AliITSBaseVolParams { - public: - AliITSTubeHyperbolicData() : AliITSBaseVolParams() // Default constructor - {fTheta=0.0;fDz=0;fRmin=0;fRmax=0;} - virtual ~AliITSTubeHyperbolicData(){} // Standard destructor - // Getters - Double_t ThetaAt() {return fTheta;} // Returns starting Theta value - Double_t DzAt(){return fDz;} // Return fDz coordiante - Double_t Rmin() {return fRmin;} // Returm arrau of rmin values - Double_t Rmax() {return fRmax;} // Returm arrau of rmax values - Double_t& Theta(){return fTheta;}// Returns addres of fTheta - Double_t& Z(){return fDz;}// Returns address of fDz - Double_t& Rn(){return fRmin;}// Returns address of fRmin - Double_t& Rx(){return fRmax;}// Returns address of fRmax - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fTheta; // stero angle of rotation of the tetwo faces [degrees] - Double_t fRmin; // Inner Radius - Double_t fRmax; // Outer Radius - Double_t fDz; // Z half length. - - ClassDef(AliITSTubeHyperbolicData,1) // Hyperbolic Tube data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSTubeHyperbolicData &source); -istream &operator>>(istream &os,AliITSTubeHyperbolicData &source); -#endif - -#ifndef ALIITSCONEDATA_H -#define ALIITSCONEDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Cone data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSConeData : public AliITSBaseVolParams { - public: - AliITSConeData() : AliITSBaseVolParams() // Default constructor - {fDz=0;fRmin0=0;fRmax0=0;fRmin1=0;fRmax1=0;} - virtual ~AliITSConeData(){} // Standard destructor - // Getters - Double_t DzAt(){return fDz;} // Return fDz coordiante - Double_t Rmin0() {return fRmin0;} // Returm arrau of rmin0 values - Double_t Rmax0() {return fRmax0;} // Returm arrau of rmax0 values - Double_t Rmin1() {return fRmin1;} // Returm arrau of rmin1 values - Double_t Rmax1() {return fRmax1;} // Returm arrau of rmax1 values - Double_t& Z(){return fDz;}// Returns address of fDz - Double_t& Rn0(){return fRmin0;}// Returns address of fRmin0 - Double_t& Rx0(){return fRmax0;}// Returns address of fRmax0 - Double_t& Rn1(){return fRmin1;}// Returns address of fRmin1 - Double_t& Rx1(){return fRmax1;}// Returns address of fRmax1 - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fRmin0,fRmin1; // Inner Radius - Double_t fRmax0,fRmax1; // Outer Radius - Double_t fDz; // Z half length. - - ClassDef(AliITSConeData,1) // Simple Cone data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSConeData &source); -istream &operator>>(istream &os,AliITSConeData &source); -#endif - -#ifndef ALIITSCONESEGDATA_H -#define ALIITSCONESEGDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Cone Segment data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSConeSegData : public AliITSBaseVolParams { - public: - AliITSConeSegData() : AliITSBaseVolParams() // Default constructor - {fPhi0=0.0;fPhi1=360.0;fDz=0;fRmin0=0;fRmax0=0;fRmin1=0;fRmax1=0;} - virtual ~AliITSConeSegData(){} // Standard destructor - // Getters - Double_t Phi0() {return fPhi0;} // Returns starting Phi value - Double_t Phi1() {return fPhi1;} // Returns endinging Phi value - Double_t DzAt() {return fDz;} // Return fDz coordiante - Double_t Rmin0() {return fRmin0;} // Returm arrau of rmin0 values - Double_t Rmax0() {return fRmax0;} // Returm arrau of rmax0 values - Double_t Rmin1() {return fRmin1;} // Returm arrau of rmin1 values - Double_t Rmax1() {return fRmax1;} // Returm arrau of rmax1 values - Double_t& P0(){return fPhi0;}// Returns addres of fPhi0 - Double_t& P1(){return fPhi1;}// Returns addres of fPhi1 - Double_t& Z(){return fDz;}// Returns address of fDz - Double_t& Rn0(){return fRmin0;}// Returns address of fRmin0 - Double_t& Rx0(){return fRmax0;}// Returns address of fRmax0 - Double_t& Rn1(){return fRmin1;}// Returns address of fRmin1 - Double_t& Rx1(){return fRmax1;}// Returns address of fRmax1 - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fPhi0,fPhi1; // Starting and ending phi angles [degrees] - Double_t fRmin0,fRmin1; // Inner Radius - Double_t fRmax0,fRmax1; // Outer Radius - Double_t fDz; // Z half length. - - ClassDef(AliITSConeSegData,1) // Cone segment data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSConeSegData &source); -istream &operator>>(istream &os,AliITSConeSegData &source); -#endif - -#ifndef ALIITSPCONEDATA_H -#define ALIITSPCONEDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Poly-Cone data structure. -///////////////////////////////////////////////////////////////////////// -#include // for the definision of NAN. - -class AliITSPConeData : public AliITSBaseVolParams { - public: - AliITSPConeData() : AliITSBaseVolParams() // Default constructor - {fNz=0;fPhi0=0.0;fDphi=0.0;fZ=0;fRmin=0;fRmax=0;} - AliITSPConeData(Int_t n) : AliITSBaseVolParams() // Standard constructor - {fNz=n;fPhi0=0.0;fDphi=360.0;fZ=new Double_t[n]; - fRmin=new Double_t[n];fRmax=new Double_t[n];} - AliITSPConeData(AliITSPConeData &source) // Copy constructor - { *this = source;} - virtual ~AliITSPConeData() // Standard destructor - {delete[] fZ;delete[] fRmin;delete[] fRmax;fNz=0;} - AliITSPConeData& operator=(AliITSPConeData &source) // Equals operator - {this->SetVid(source.GetVid()); - this->SetName((source.GetName())->Data()); - this->fNz = source.fNz;this->fPhi0=source.fPhi0; - this->fDphi=source.fDphi; - if(this->fZ!=0) delete[] this->fZ; - if(this->fRmin!=0) delete[] this->fRmin; - if(this->fRmax!=0) delete[] this->fRmax; - this->fZ=0;this->fRmin=0;this->fRmax=0;if(this->fNz<=0) return *this; - this->fZ=new Double_t[this->fNz];this->fRmin=new Double_t[this->fNz]; - this->fRmax=new Double_t[this->fNz];for(Int_t i=0;ifNz;i++){ - this->fZ[i]=source.fZ[i];this->fRmin[i]=source.fRmin[i]; - fRmax[i]=source.fRmax[i];}return *this;} - void Size(Int_t n)// Sets the number of Z,Rmin,Rmax parameters - {if(fZ!=0) delete fZ;if(fRmin!=0) delete fRmin; - if(fRmax!=0) delete fRmax; fNz=n;fPhi0=0.0;fDphi=360.0; - fZ=new Double_t[n];fRmin=new Double_t[n];fRmax=new Double_t[n];} - void Size(Int_t n,const char *c){//Sets the number of Z,Rmin, and Rmax - // parameters as well as the volume name. - Size(n);SetName(c);} - // Getters - Int_t Nz() {return fNz;} // Returns fNz - Double_t Phi0(){return fPhi0;}// Return starting phi value - Double_t DPhi(){return fDphi;}// Return delta phi value - Double_t ZAt(Int_t i) // Return Z coordiante - {/*if(i<0||i>=fNz) return NAN;else*/ return fZ[i];} - Double_t *Z(){return fZ;} // Returns array of z values - Double_t *Rmin() {return fRmin;} // Returm arrau of rmin values - Double_t *Rmax() {return fRmax;} // Returm arrau of rmax values - Double_t Rmin(Int_t i) // Return Inner radius value - {/*if(i<0||i>=fNz) return NAN;else*/ return fRmin[i];} - Double_t Rmax(Int_t i) // Return Outer radius value - {/*if(i<0||i>=fNz) return NAN;else*/ return fRmax[i];} - // Setters - Double_t& P0() // Returns the address of fPhi0 - {return fPhi0;} - Double_t& dP() // Returns the address of fDphi - {return fDphi;} - Double_t& Z(Int_t i)// Returns address of fZ - {/*if(i<0||i>=fNz) return 0;*/return fZ[i];} - Double_t& Rn(Int_t i)// Returns address of fRmin - {/*if(i<0||i>=fNz) return 0;*/return fRmin[i];} - Double_t& Rx(Int_t i)// Returns address of fRmax - {/*if(i<0||i>=fNz) return 0;*/return fRmax[i];} - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Int_t fNz; // Number of z sections - Double_t fPhi0,fDphi; // Starting phi angle and delta phi [degrees] - Double_t *fZ; //[n] Z coordiantes - Double_t *fRmin; //[n] Inner radius - Double_t *fRmax; //[n] Outer radius - - ClassDef(AliITSPConeData,1) // Poly Cone data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSPConeData &source); -istream &operator>>(istream &os,AliITSPConeData &source); -#endif - -#ifndef ALIITSSPHEREDATA_H -#define ALIITSSPHEREDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Tube Segment data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSSphereData : public AliITSBaseVolParams { +class AliITSMixture : public TGeoMixture{ public: - AliITSSphereData() : AliITSBaseVolParams() // Default constructor - {fTheta[0]=0.0,fTheta[1]=0.0;fPhi[0]=0.0,fPhi[1]=0.0;fRmin=0;fRmax=0;} - virtual ~AliITSSphereData(){} // Standard destructor - // Getters - Double_t Theta0() {return fTheta[0];} // Returns starting Phi value - Double_t Theta1() {return fTheta[1];} // Returns endinging Phi value - Double_t Phi0() {return fPhi[0];} // Returns starting Phi value - Double_t Phi1() {return fPhi[1];} // Returns endinging Phi value - Double_t Rmin() {return fRmin;} // Returm arrau of rmin values - Double_t Rmax() {return fRmax;} // Returm arrau of rmax values - Double_t& T0(){return fTheta[0];}// Returns addres of fTheta[0] - Double_t& T1(){return fTheta[1];}// Returns addres of fTheta[1] - Double_t& P0(){return fPhi[0];}// Returns addres of fPhi[0] - Double_t& P1(){return fPhi[1];}// Returns addres of fPhi[1] - Double_t& Rn(){return fRmin;}// Returns address of fRmin - Double_t& Rx(){return fRmax;}// Returns address of fRmax - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. + AliITSMixture(){}; + AliITSMixture(const char *name,Int_t N,Double_t *w,TObjArray *m, + Double_t rho=-1.,Double_t radlen=0.,Double_t intleng=0.); + virtual ~AliITSMixture(){}; private: - Double_t fTheta[2]; // Starting and ending theta angles [degree] - Double_t fPhi[2]; // Starting and ending phi angles [degrees] - Double_t fRmin; // Inner Radius - Double_t fRmax; // Outer Radius - - ClassDef(AliITSSphereData,1) // sphere data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSSphereData &source); -istream &operator>>(istream &os,AliITSSphereData &source); + ClassDef(AliITSMixture,1) // Extension of TGeoMixture class +} +; #endif -#ifndef ALIITSPARALLELEPIPEDDATA_H -#define ALIITSPARALLELEPIPEDDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Box data structure. -///////////////////////////////////////////////////////////////////////// - -class AliITSParallelpipedData : public AliITSBaseVolParams { - public: - AliITSParallelpipedData() : AliITSBaseVolParams() // Default constructor - {fDx=0.0;fDy=0.0;fDz=0;} - virtual ~AliITSParallelpipedData(){} // Standard destructor - // Getters - Double_t DxAt() {return fDx;} // Returm arrau of rmin values - Double_t DyAt() {return fDy;} // Returm arrau of rmax values - Double_t DzAt() {return fDz;} // Return fDz coordiante - Double_t Theta() {return fTheta;} // Returm arrau of Theta values - Double_t Phi() {return fPhi;} // Return Phi coordiante - Double_t Alpha(){return fAlpha;} // Return fAlph - Double_t& Dx(){return fDx;}// Returns address of fRmax - Double_t& Dy(){return fDy;}// Returns address of fRmin - Double_t& Dz(){return fDz;}// Returns address of fDz - Double_t& Th(){return fTheta;}// Returns address of fTheta - Double_t& Ph(){return fPhi;}// Returns address of fPhi - Double_t& A(){return fAlpha;}// Returns address of fAlpha - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Double_t fDx; // X half length - Double_t fDy; // Y half length - Double_t fDz; // Z half length. - Double_t fAlpha; // angle formed by the y axis and by the plane - // joining the center of teh faces parallel to the - // z-x plane at -dY and +dy [degree]. - Double_t fTheta; //polar angle of the line joining the centers of - // the faces at -dz and +dz in z [degree]. - Double_t fPhi; // azimuthal angle of teh line joing the centers - // of the faaces at -dz and +dz in z [degree]. - - ClassDef(AliITSParallelpipedData,1) // Parallel piped data class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSParallelpipedData &source); -istream &operator>>(istream &os,AliITSParallelpipedData &source); -#endif - -#ifndef ALIITSPGONDATA_H -#define ALIITSPGONDATA_H -///////////////////////////////////////////////////////////////////////// -// Geant 3 Poly-Gon data structure. -///////////////////////////////////////////////////////////////////////// -#include // for the definision of NAN. +#ifndef ALIITSGEOCABLE_H +#define ALIITSGEOCABLE_H -class AliITSPGonData : public AliITSBaseVolParams { - public: - AliITSPGonData() : AliITSBaseVolParams() // Default constructor - {fNz=0;fNphi=0;fPhi0=0.0;fDphi=0.0;fZ=0;fRmin=0;fRmax=0;} - AliITSPGonData(Int_t n) : AliITSBaseVolParams() // Standard constructor - {fNz=n;fNphi=0;fPhi0=0.0;fDphi=360.0;fZ=new Double_t[n]; - fRmin=new Double_t[n];fRmax=new Double_t[n];} - AliITSPGonData(AliITSPGonData &source) // Copy constructor - { *this = source;} - virtual ~AliITSPGonData() // Standard destructor - {delete[] fZ;delete[] fRmin;delete[] fRmax;fNz=0;} - AliITSPGonData& operator=(AliITSPGonData &source) // Equals operator - {this->SetVid(source.GetVid()); - this->SetName((source.GetName())->Data()); - this->fNz = source.fNz;this->fNphi=source.fNphi; - this->fPhi0=source.fPhi0;this->fDphi=source.fDphi; - if(this->fZ!=0) delete[] this->fZ; - if(this->fRmin!=0) delete[] this->fRmin; - if(this->fRmax!=0) delete[] this->fRmax; - this->fZ=0;this->fRmin=0;this->fRmax=0;if(this->fNz<=0) return *this; - this->fZ=new Double_t[this->fNz];this->fRmin=new Double_t[this->fNz]; - this->fRmax=new Double_t[this->fNz];for(Int_t i=0;ifNz;i++){ - this->fZ[i]=source.fZ[i];this->fRmin[i]=source.fRmin[i]; - fRmax[i]=source.fRmax[i];}return *this;} - void Size(Int_t n)// Sets the number of Z,Rmin,Rmax parameters - {if(fZ!=0) delete fZ;if(fRmin!=0) delete fRmin; - if(fRmax!=0) delete fRmax; fNz=n;fPhi0=0.0;fDphi=360.0; - fZ=new Double_t[n];fRmin=new Double_t[n];fRmax=new Double_t[n];} - void Size(Int_t n,const char *c){//Sets the number of Z,Rmin, and Rmax - // parameters as well as the volume name. - Size(n);SetName(c);} - // Getters - Int_t NPhi() {return fNz;} // Returns fNphi - Int_t Nz() {return fNz;} // Returns fNz - Double_t Phi0(){return fPhi0;}// Return starting phi value - Double_t DPhi(){return fDphi;}// Return delta phi value - Double_t *Z(){return fZ;} // Returns array of z values - Double_t *Rmin() {return fRmin;} // Returm arrau of rmin values - Double_t *Rmax() {return fRmax;} // Returm arrau of rmax values - Double_t ZAt(Int_t i) // Return Z coordiante - {/*if(i<0||i>=fNz) return NAN;else*/ return fZ[i];} - Double_t Rmin(Int_t i) // Return Inner radius value - {/*if(i<0||i>=fNz) return NAN;else*/ return fRmin[i];} - Double_t Rmax(Int_t i) // Return Outer radius value - {/*if(i<0||i>=fNz) return NAN;else*/ return fRmax[i];} - // Setters - void Nphi(Int_t i) {fNphi = i;} // Sets fNphi - Double_t& P0() // Returns the address of fPhi0 - {return fPhi0;} - Double_t& dP() // Returns the address of fDphi - {return fDphi;} - Double_t& Z(Int_t i)// Returns address of fZ - {/*if(i<0||i>=fNz) return 0;*/return fZ[i];} - Double_t& Rn(Int_t i)// Returns address of fRmin - {/*if(i<0||i>=fNz) return 0;*/return fRmin[i];} - Double_t& Rx(Int_t i)// Returns address of fRmax - {/*if(i<0||i>=fNz) return 0;*/return fRmax[i];} - void Print(ostream *os); // Prints output content of this class - void Read(istream *is); // Reads output created by Print above. - private: - Int_t fNphi; // Number of sections in phi. - Int_t fNz; // Number of Z sections - Double_t fPhi0,fDphi; // Starting phi angle and delta phi [degrees] - Double_t *fZ; //[n] Z coordiantes - Double_t *fRmin; //[n] Inner radius - Double_t *fRmax; //[n] Outer radius - - ClassDef(AliITSPGonData,1) // Poly Gon Data Class -}; -// Input and output function for standard C++ input/output. -ostream &operator<<(ostream &os,AliITSPGonData &source); -istream &operator>>(istream &os,AliITSPGonData &source); -#endif +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ -#ifndef ALIITSBASEGEOMETRY_H -#define ALIITSBASEGEOMETRY_H -///////////////////////////////////////////////////////////////////////// -// A basic geometry class for the ITS simulation geometry stucture -///////////////////////////////////////////////////////////////////////// +/* + $Id$ + */ +#include +#include #include +#include -class AliModule; -class TString; -class TVector3; - -class AliITSBaseGeometry : public TObject { - public: - AliITSBaseGeometry(); // Default constructor - AliITSBaseGeometry(AliModule *its,Int_t iflag); // Standard Constructor - virtual ~AliITSBaseGeometry(); // Destructor - virtual void BuildDisplayGeometry(){}; // Calls ROOT geometry interface - // to AliRoot display - // Calls Geant3 interface geometry routines - virtual void CreateG3Geometry(){}; - virtual void CreateG3Materials(){};//Calls Geant3 interface for materials - virtual Int_t IsVersion() const{return 11;}// return version of geometry. - // Get Index for Geant3 v name - static Int_t ITSG3VnameToIndex(const char name[3]); - static Int_t ITSIndexToITSG3name(const Int_t i); // Get Geant3 volume name - Int_t AddVolName(const TString name); // Add volumen name to list - TString GetVolName(const Int_t i)const; // Return volume name at index - Int_t GetVolumeIndex(const TString &a); - void SetScalecm(){fScale = 1.0;}// Sets scale factor for centemeters - void SetScalemm(){fScale = 0.10;}// Sets scale factor for milimeters - void SetScalemicrons(){fScale = 1.0E-04;}// Sets scale factor for microns - void SetScale(Double_t s=1.0){fScale = s;}// Sets scale factor - Double_t GetScale()const{return fScale;}// Returns the scale factor - Bool_t IsScalecm()const{// Returens kTRUE if scale factor is set of [cm] - if(fScale==1.0) return kTRUE; return kFALSE;} - // Create a Box - virtual void Box(const char *gnam,const TString &dis, - Double_t dx,Double_t dy,Double_t dz,Int_t med); - virtual void Box(AliITSBoxData &d,Int_t med); - // Greate A Trapizoid with the x dimension varing along z. - virtual void Trapezoid1(const char *gnam,const TString &dis,Double_t dxn, - Double_t dxp,Double_t dy,Double_t dz,Int_t med); - virtual void Trapezoid1(AliITSTrapezoid1Data &d,Int_t med); - // Greate A Trapizoid with the x and y dimension varing along z. - virtual void Trapezoid2(const char *gnam,const TString &dis,Double_t dxn, - Double_t dxp,Double_t dyn,Double_t dyp,Double_t dz, - Int_t med); - virtual void Trapezoid2(AliITSTrapezoid2Data &d,Int_t med); - // General trapazoid. - virtual void Trapezoid(const char *gnam,const TString &dis,Double_t dz, - Double_t thet,Double_t phi,Double_t h1,Double_t bl1, - Double_t tl1,Double_t alp1,Double_t h2,Double_t bl2, - Double_t tl2,Double_t alp2,Int_t med); - virtual void Trapezoid(AliITSTrapezoidData &d,Int_t med); - // Twisted genral trapezoid. - virtual void TwistedTrapezoid(const char *gnam,const TString &dis, - Double_t dz, - Double_t thet,Double_t phi,Double_t twist, - Double_t h1,Double_t bl1,Double_t tl1, - Double_t apl1,Double_t h2,Double_t bl2, - Double_t tl2,Double_t apl2,Int_t med); - virtual void TwistedTrapezoid(AliITSTrapezoidTwistedData &d,Int_t med); - // Simple Tube. - virtual void Tube(const char *gnam,const TString &dis,Double_t rmin, - Double_t rmax,Double_t dz,Int_t med); - virtual void Tube(AliITSTubeData &d,Int_t med); - // Tube segment. - virtual void TubeSegment(const char *gnam,const TString &dis, - Double_t rmin,Double_t rmax,Double_t dz, - Double_t phi1,Double_t phi2,Int_t med); - virtual void TubeSegment(AliITSTubeSegData &v,Int_t med); - // Cut tube. - virtual void CutTube(const char *gnam,const TString &dis,Double_t rmin, - Double_t rmax,Double_t dz,Double_t phi1,Double_t phi2, - Double_t lx,Double_t ly,Double_t lz,Double_t hx,Double_t hy, - Double_t hz,Int_t med); - virtual void CutTube(AliITSTubeCutData &d,Int_t med); - // Ellliptical cross-sectino tube - virtual void TubeElliptical(const char *gnam,const TString &dis, - Double_t p1,Double_t p2,Double_t dz, - Int_t med); - virtual void TubeElliptical(AliITSTubeEllipticalData &v,Int_t med); - // Hyperbolic tube - virtual void HyperbolicTube(const char *gnam,const TString &dis, - Double_t rmin,Double_t rmax,Double_t dz, - Double_t thet,Int_t med); - virtual void HyperbolicTube(AliITSTubeHyperbolicData &d,Int_t med); - // Simple Cone. - virtual void Cone(const char *gnam,const TString &dis,Double_t dz, - Double_t rmin1,Double_t rmax1,Double_t rmin2,Double_t rmax2, - Int_t med); - virtual void Cone(AliITSConeData &d,Int_t med); - // Segment of a Cone. - virtual void ConeSegment(const char *gnam,const TString &dis,Double_t dz, - Double_t rmin1,Double_t rmax1,Double_t rmin2, - Double_t rmax2,Double_t phi1,Double_t phi2,Int_t med); - virtual void ConeSegment(AliITSConeSegData &d,Int_t med); - //Poly-Cone - virtual void PolyCone(const char *gnam,const TString &dis,Double_t phi1, - Double_t dphi,Int_t nz,Double_t *z,Double_t *rmin, - Double_t *rmax,Int_t med); - virtual void PolyCone(AliITSPConeData &d,Int_t med); - // Spherical shell segment. - virtual void Sphere(const char *gnam,const TString &dis,Double_t rmin, - Double_t rmax,Double_t the1,Double_t the2,Double_t phi1, - Double_t phi2,Int_t med); - virtual void Sphere(AliITSSphereData &d,Int_t med); - // Parallelepiped. - virtual void Parallelepiped(const char *gnam,const TString &dis, - Double_t dx,Double_t dy,Double_t dz, - Double_t alph,Double_t thet, - Double_t phi,Int_t med); - virtual void Parallelepiped(AliITSParallelpipedData &d,Int_t med); - // Polygon. - virtual void PolyGon(const char *gnam,const TString &dis,Double_t phi1, - Double_t dphi,Int_t npdv,Int_t nz,Double_t *z,Double_t *rmin, - Double_t *rmax,Int_t med); - virtual void PolyGon(AliITSPGonData &d,Int_t med); - // Position one volume inside another - virtual void Pos(const char *vol,Int_t cn,const char *moth,Double_t x, - Double_t y,Double_t z,Int_t irot); - // Position one volume inside another - virtual void Pos(AliITSBaseVolParams &v,Int_t cn, - AliITSBaseVolParams &m,TVector3 &t,Int_t irot); - // Position one volume inside another - virtual void Pos(AliITSBaseVolParams &v,AliITSBaseVolParams &m, - TVector3 &t,Int_t irot){Pos(v,m.GetG3cpn(),m,t,irot);}; - Int_t GetMed(Int_t med){return (fits->GetIdtmed())->At(med);} - // Define rotation matrix - void Matrix(Int_t irot,Double_t thet1,Double_t phi1,Double_t thet2, - Double_t phi2,Double_t thet3,Double_t phi3); - // Defube ritatuib matrix - void Matrix(Int_t irot,Double_t rot[3][3]); - // Rotation matrix about axis i (i=0=>x, i=1=>y, i=2=>z). - void Matrix(Int_t irot,Int_t axis,Double_t thet); - // Rotation matrix about x axis - void XMatrix(Int_t irot,Double_t thet){Matrix(irot,0,thet);} - // Rotation matrix about y axis - void YMatrix(Int_t irot,Double_t thet){Matrix(irot,1,thet);} - // Rotation matrix about z axis - void ZMatrix(Int_t irot,Double_t thet){Matrix(irot,2,thet);} - // Define Element material and medium - void Element(Int_t imat,const char *name,Int_t z,Double_t den,Int_t istd); - // Define Material by constituant weights - void MixtureByWeight(Int_t imat,const char *name,Int_t *z,Double_t *w, - Double_t dens,Int_t nelments,Int_t istd); - // Define Material by constituant relative number - void MixtureByNumber(Int_t imat,const char *name,Int_t *z,Int_t *i, - Double_t dens,Int_t nelments,Int_t istd); - // Returns standard radiation lenghts of elements. - Float_t GetRadLength(Int_t z){return RadLength(z,(Double_t)GetA(z));} - // Returns natrual abundance atomic mass numbers for a given element - Float_t GetA(Int_t z); - // Returns ITS standard Theata Max transport cut values - Float_t GetStandardThetaMax(Int_t istd); - // Returns ITS standard Max step size transport cut values - Float_t GetStandardMaxStepSize(Int_t istd); - // Returns ITS standard frational energy transport cut values - Float_t GetStandardEfraction(Int_t istd); - // Returns ITS standard epsilon transport cut values - Float_t GetStandardEpsilon(Int_t istd); - // Degree Versions of TMath functions (as needed) - Double_t Sind(Double_t t){return TMath::Sin(TMath::Pi()*t/180.);} - Double_t Cosd(Double_t t){return TMath::Cos(TMath::Pi()*t/180.);} - Double_t Tand(Double_t t){return TMath::Tan(TMath::Pi()*t/180.);} - Double_t ASind(Double_t t){return 180.0*TMath::ASin(t)/TMath::Pi();} - Double_t ACosd(Double_t t){return 180.0*TMath::ACos(t)/TMath::Pi();} - Double_t ATand(Double_t t){return 180.0*TMath::ATan(t)/TMath::Pi();} - Double_t ATand2(Double_t y,Double_t x){return 180.0*TMath::ATan2(y,x)/ - TMath::Pi();} - // gives angles in degree between 0.<=t<360. - Double_t Mod360(Double_t t){if(t>=360.) return Mod360(t-360.); - if(t<0.0) return Mod360(t+360.);return t;} - Double_t RadLength(Int_t iz,Double_t a); // Computes radiation length - // for an element - private: - void G3name(const char *gname,char *name)//Add's I to name and ending null - {for(Int_t i=0;i<3;i++) name[i+1] = gname[i]; - name[0]='I';name[4]='\0';} - // - protected: - static Int_t fNCreates; //! Counts the number of time this class has - // been created. - static const Double_t fAlpha; //! find structure constant - static const Double_t fRe; //![cm]classical elect. radius - static const Double_t fNa; //! [#/mole] Avogadro's number - static Int_t *fidrot; - static Int_t fidrotsize; - static Int_t fidrotlast; - static TString *fVolName; // Array of ITS Volumen names. - static Int_t fVolNameSize; // Size of Array fVolName - static Int_t fVolNameLast; // Last filled element of fVolName - Double_t fScale; // Scale factor (=1=>[cm]). - AliModule *fits; // local pointer to ITS module needed for AliMixture... - - ClassDef(AliITSBaseGeometry,1) // Basic ITS Geometry class +class AliITSGeoCable : public TObject{ + public: + AliITSGeoCable(); + AliITSGeoCable(const char *name,const TObjArray *vect,const Double_t Rmin, + const Double_t Rmax,const TVector3 ns = TVector3(0.,0.,1.), + const TVector3 ne = TVector3(0.,0.,1.)); + virtual ~AliITSGeoCable(); + virtual Double_t GetRmin(){return fRmin;} + virtual Double_t GetRmax(){return fRmax;} + virtual TVector3& GetNormStart(){return fNs;} + virtual TVector3& GetNormEnd(){return fNe;} + virtual TObjArray* GetArrayOfTubes(){return fTubes;} + virtual TObjArray* GetArrayOfCombiTrans(){return fTranRot;} + private: + Double_t fRmin; // Minimum radius + Double_t fRmax; // Maximum radius + TVector3 fNs; // Starting normal vector + TVector3 fNe; // Ending normal vector + TObjArray *fTubes; // Array of Ctub objects + TObjArray *fTranRot; // Array of Rotations + ClassDef(AliITSGeoCable,1) // Extension of TGeoMixture class + ; }; - #endif -