-/////////////////////////////////////////////////////////////////////////
-// Geant 3 base class for volume parameters
-/////////////////////////////////////////////////////////////////////////
-#include <TObject.h>
-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 <TVector3.h>
-
-/////////////////////////////////////////////////////////////////////////
-// 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 <math.h> // 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;i<this->fNz;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 {