]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSv11GeometrySPD.h
new SPD geometry (A.Pulvirenti)
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySPD.h
1 #ifndef ALIITSV11GEOMETRYSPD_H
2 #define ALIITSV11GEOMETRYSPD_H
3
4 /* 
5  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.
6  * See cxx source for full Copyright notice.
7  */
8
9 /*
10  * Implementation of the SPD v11 central geometry.
11  * Contains also:
12  *  - the materials/media used for its volumes;
13  *  - settings for the related transport parameters (GEANT3 types for the moment).
14  */
15
16 /*
17  * $Id$
18  */
19
20 #include <TGeoManager.h>
21 #include <TVirtualMC.h>
22 #include <AliITSv11Geometry.h>
23
24 class TGeoVolume;
25
26 class AliITSv11GeometrySPD : public AliITSv11Geometry
27 {
28 public:
29         AliITSv11GeometrySPD() : AliITSv11Geometry() {};
30         AliITSv11GeometrySPD(Int_t debug) : AliITSv11Geometry(debug) {}; // set explicitly debug level
31         virtual ~AliITSv11GeometrySPD() {};
32         
33         /* Settings */
34         
35         // define/create materials
36         virtual Int_t CreateSPDCenteralMaterials(Int_t &medOffset, Int_t &matOffset);
37         // set SPD Centeral, GEANT3 type, tracking parameters
38         virtual void InitSPDCenteral(Int_t offset,TVirtualMC *mc=gMC);
39         
40         /* Monitoring */
41         
42         // creates standard figures for the documentation of this class
43         virtual void CreateFigure0(const Char_t *filepath = "", const Char_t *type = "gif", TGeoManager *mgr=gGeoManager);
44         
45         /* Member functions which create pieces of the geometry */
46         
47         // a single ladder (= 1 detector + 5 chips)
48         TGeoVolume* CreateLadder(Int_t layer, Double_t &width, Double_t &height, Double_t &thickness, TGeoManager *mgr = gGeoManager);
49         // the grounding foil (splitted in two components)
50         TGeoVolume* CreateGroundingFoilSingle(Bool_t kapLayer, Double_t &len, Double_t &wid, Double_t &thick, TGeoManager *mgr = gGeoManager);
51         TGeoVolume* CreateGroundingFoil(Double_t &thickness, TGeoManager *mgr = gGeoManager);
52         // the MCM (incomplete: missing the internal chips)
53         TGeoVolume* CreateMCMBase(TGeoManager *mgr = gGeoManager);
54         TGeoVolume* CreateMCMCoverBorder(TGeoManager *mgr = gGeoManager);
55         TGeoVolume* CreateMCMCoverTop(TGeoManager *mgr = gGeoManager);
56         // the Pixel Bus & extenders
57         TGeoVolumeAssembly* CreatePixelBusAndExtensions(Bool_t zpos = kTRUE, TGeoManager *mgr = gGeoManager);
58         // the thin part of a stave (grounding + ladders)
59         TGeoVolume *CreateStaveBase(Int_t layer, Double_t &width, Double_t &height, Double_t &thickness, TGeoManager *mgr=gGeoManager);
60         // the whole stave, including the thick parts (MCM cover, pixel bus & extensions)
61         TGeoVolumeAssembly* CreateStave(Int_t layer, Double_t &thickness, TGeoManager *mgr);
62         // displacement of staves on the carbon fiber sector
63         virtual void StavesInSector(TGeoVolume *moth, TGeoManager *mgr=gGeoManager);
64         // the complete Carbon Fiber sector (support + staves)
65         virtual void CarbonFiberSector(TGeoVolume *moth, Double_t &xAAtubeCenter0, Double_t &yAAtubeCenter0, TGeoManager *mgr=gGeoManager);
66         // the whole SPD barrel
67         virtual void SPDSector(TGeoVolume *moth, TGeoManager *mgr=gGeoManager);
68
69 private:
70         
71         // NOTE:
72         // all of the member functions which define a component of the final SPD
73         // will need to be defined as private once the design is fixed and does not
74         // need any longer to be checked and debugged.
75         
76         // Computes shape of the SPD Sector given specific inputs (internal use only)
77         void SPDsectorShape(Int_t n, const Double_t *xc, const Double_t *yc, const Double_t *r,
78                             const Double_t *ths, const Double_t *the, Int_t npr,
79                             Int_t &m, Double_t **xp, Double_t **yp);
80         
81         // computes a point o a line parallel to a given direction
82         // and with a fixed distance from it (internal use only)
83         void ParallelPosition(Double_t dist1, Double_t dist2, Double_t phi, Double_t &x, Double_t &y);
84         
85         ClassDef(AliITSv11GeometrySPD,1) // ITS v11 Centeral SPD geometry
86 };
87
88 #endif