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