]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSv11GeomCableRound.h
- Protection added for null or empty input chains
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeomCableRound.h
1 #ifndef ALIITSV11GEOMCABLEROUND_H
2 #define ALIITSV11GEOMCABLEROUND_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7
8 //*************************************************************************
9 //   Class for round cables
10 //
11 // Ludovic Gaudichet                                   gaudichet@to.infn.it
12 //*************************************************************************
13
14 class TGeoVolume;
15 class TGeoMedium;
16
17 #include "AliITSv11GeomCable.h"
18
19 class AliITSv11GeomCableRound : public AliITSv11GeomCable {
20
21  public:
22   AliITSv11GeomCableRound(const char* name, Double_t radius);
23   AliITSv11GeomCableRound(const AliITSv11GeomCableRound &source);
24   AliITSv11GeomCableRound& operator=(const AliITSv11GeomCableRound &source);
25   virtual ~AliITSv11GeomCableRound() {};
26
27   virtual Int_t GetPoint(Int_t iCheckPt, Double_t *coord) const;
28   virtual Int_t GetVect(Int_t iCheckPt, Double_t *coord) const;
29
30   void          AddCheckPoint( TGeoVolume *vol, Int_t iCheckPt,
31                                Double_t *coord, Double_t *orthVect);
32   TGeoVolume*   CreateAndInsertCableSegment(Int_t p2, TGeoCombiTrans** ct=0);
33   TGeoVolume*   CreateAndInsertTubeSegment(Int_t p2, TGeoCombiTrans** ct=0);
34   TGeoVolume*   CreateAndInsertTorusSegment(Int_t p2, Double_t rotation=0,
35                                             TGeoCombiTrans** ct=0);
36   void          PrintCheckPoints() const;
37
38   void          SetNLayers(Int_t nLayers);
39   Int_t         SetLayer(Int_t nLayer,Double_t thick,TGeoMedium *medium,
40                          Int_t color=0);
41   void          SetPhi(Double_t phi1, Double_t phi2)
42                       {fPhiMin=phi1; fPhiMax=phi2;};
43
44  protected:
45   TGeoVolume*   CreateSegment( Double_t *coord1,Double_t *coord2,
46                                Double_t *localVect1, Double_t *localVect2, Int_t p);
47   TGeoVolume*   CreateTubeSegment( Double_t *coord1,Double_t *coord2, Int_t p);
48   TGeoVolume*   CreateTorus(  Double_t &phi, Double_t &r, Int_t p);
49
50   Double_t   fRadius;                         // total radius
51   Int_t      fNlayer;                         // number of layers
52   Double_t   fPhiMin;                         // minimum phi
53   Double_t   fPhiMax;                         // maximum phi
54   Double_t   fLayThickness[fgkCableMaxLayer]; // layer thicknesses
55   Int_t      fLayColor[fgkCableMaxLayer];     // layer colors
56   TGeoMedium *fLayMedia[fgkCableMaxLayer];    // layer media
57
58   ClassDef(AliITSv11GeomCableRound,1)
59 };
60
61
62 #endif