/////////////////////////////////////////////////////////////////////////
#include "AliITS.h"
+class AliITSGeometrySSDCone;
class AliITSv11 : public AliITS {
private:
void InitAliITSgeom();
- void SetScalecm(){// Sets scale factor for centemeters
- fScale = 1.0;}
- void SetScalemm(){// Sets scale factor for milimeters
- fScale = 0.10;}
- void SetScalemicrons(){// Sets scale factor for micronsmeters
- fScale = 1.0E-04;}
- void SetScale(Double_t s=1.0){// Sets scale factor
- fScale = s;}
- Double_t GetScale(){// Returns the scale factor
- return fScale;}
- Bool_t IsScalecm(){// Returens kTRUE if scale factor is set of [cm]
- if(fScale==1.0) return kTRUE; return kFALSE;}
- // Create a Box
- void Box(const char gnam[3],const TString &dis,
- Double_t dx,Double_t dy,Double_t dz,Int_t med);
- // Greate A Trapizoid with the x dimension varing along z.
- void Trapezoid1(const char gnam[3],const TString &dis,Double_t dxn,
- Double_t dxp,Double_t dy,Double_t dz,Int_t med);
- // Greate A Trapizoid with the x and y dimension varing along z.
- void Trapezoid2(const char gnam[3],const TString &dis,Double_t dxn,
- Double_t dxp,Double_t dyn,Double_t dyp,Double_t dz,
- Int_t med);
- // General trapazoid.
- void Trapezoid(const char gnam[3],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);
- // Simple Tube.
- void Tube(const char gnam[3],const TString &dis,Double_t rmin,
- Double_t rmax,Double_t dz,Int_t med);
- // Tube segment.
- void TubeSegment(const char gnam[3],const TString &dis,Double_t rmin,
- Double_t rmax,Double_t dz,Double_t phi1,Double_t phi2,
- Int_t med);
- // Simple Cone.
- void Cone(const char gnam[3],const TString &dis,Double_t dz,Double_t rmin1,
- Double_t rmax1,Double_t rmin2,Double_t rmax2,Int_t med);
- // Segment of a Cone.
- void ConeSegment(const char gnam[3],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);
- // Spherical shell segment.
- void Sphere(const char gnam[3],const TString &dis,Double_t rmin,
- Double_t rmax,Double_t the1,Double_t the2,Double_t phi1,
- Double_t phi2,Int_t med);
- // Parallelepiped.
- void Parallelepiped(const char gnam[3],const TString &dis,Double_t dx,
- Double_t dy,Double_t dz,Double_t alph,Double_t thet,
- Double_t phi,Int_t med);
- // Polygon.
- void Polygon(const char gnam[3],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);
- //Poly-Cone
- void PolyCone(const char gnam[3],const TString &dis,Double_t phi1,
- Double_t dphi,Int_t nz,Double_t *z,Double_t *rmin,
- Double_t *rmax,Int_t med);
- // Ellliptical cross-sectino tube
- void TubeElliptical(const char gnam[3],const TString &dis,Double_t p1,
- Double_t p2,Double_t dz,Int_t med);
- // Hyperbolic tube
- void TubeElliptical(const char gnam[3],const TString &dis,Double_t p1,
- Double_t p2,Double_t dz,Int_t med);
- // Twisted genral trapezoid.
- void TwistedTrapezoid(const char gnam[3],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);
- // Cut tube.
- void CutTube(const char gnam[3],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);
- // Position one volume inside another
- void Pos(const char vol[3],Int_t cn,const char moth[3],Double_t x,
- Double_t y,Double_t z,Int_t irot);
- void SetMedArray(){// Sets up the array of media
- fidmed = fIdtmed->GetArray()-199;}
- // 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 dens,Int_t istd);
- // Define Material by constituant weights
- void MixtureByWeight(Int_t imat,const char *name,Int_t *z,Doule_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,Imt_t *i,
- Double_t dens,Int_t nelments,Int_t istd);
- // Returns standard radiation lenghts of elements.
- Float_t GetRadLength(Int_t 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 Theata Max transport cut values
- Float_t GetStandardMaxStepSize(Int_t istd);
- // Returns ITS standard Theata Max transport cut values
- Float_t GetStandardEfraction(Int_t istd);
- // Returns ITS standard Theata Max 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();}
// TString fEuclidGeomtery,fEuclidMaterial defined in AliModule.
Bool_t fEuclidOut; // Flag to write geometry in euclid format
Float_t fChip1; // thickness of chip in SPD layer 1
Float_t fChip2; // thickness of chip in SPD layer 2
Int_t fRails; // flag to switch rails on (=1) and off (=0)
- Int_t fFluid; // flag to switch between water (=1) and freon (=0)
- Int_t fIDMother; //! ITS Mother Volume id.
- //
- Int_t *fidmed; //! array of media indexes.
- Int_t *fidrot; //! array of rotation matrixies indexes.
- Double_t fScale; //! scale factor (=1=>[cm])
+ Int_t fFluid; // flag to switch between water(=1) and freon(=0)
+ AliITSGeometrySSDCone *fc;//! ITS SSD Cone geometry. ONLY THING DEFINED.
ClassDef(AliITSv11,1) //Hits manager for set:ITS version 11
// PPR detailed Geometry asymmetric