store also difference in local Y
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeomCableFlat.h
1 #ifndef ALIITSV11GEOMCABLEFLAT_H
2 #define ALIITSV11GEOMCABLEFLAT_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 //   Class for flat cables
9 //
10 // Ludovic Gaudichet                                   gaudichet@to.infn.it
11 //*************************************************************************
12
13 class TGeoVolume;
14 class TGeoTranslation;
15 class TGeoCombiTrans;
16 class TGeoMedium;
17
18 #include "AliITSv11GeomCable.h"
19
20 class AliITSv11GeomCableFlat : public AliITSv11GeomCable {
21
22  public:
23   AliITSv11GeomCableFlat();
24   AliITSv11GeomCableFlat(const char* name, Double_t width, Double_t thick);
25   virtual ~AliITSv11GeomCableFlat() {};
26
27   void        SetNLayers(Int_t nLayers);
28   Int_t       SetLayer(Int_t nLayer,Double_t thick,TGeoMedium *medium,Int_t color=0);
29   void        AddCheckPoint( TGeoVolume *vol, Int_t iCheckPt,
30                              Double_t *coord, Double_t *orthVect);
31   TGeoVolume* CreateAndInsertCableSegment(Int_t p2, Double_t rotation=0,
32                                           TGeoCombiTrans** ct=0);
33   TGeoVolume* CreateAndInsertBoxCableSegment(Int_t p2, Double_t rotation=0,
34                                              TGeoCombiTrans** ct=0);
35   TGeoVolume* CreateAndInsertCableCylSegment(Int_t p2, Double_t rotation=0,
36                                              TGeoCombiTrans** ct=0);
37
38   void        SetWidth(Double_t width) { fWidth = width;};
39   void        SetThickness(Double_t thick) {fThick = thick;};
40   Double_t    GetWidth() const {return fWidth;};
41   Double_t    GetThickness() const {return fThick;};
42
43   virtual void  PrintCheckPoints() const;
44   virtual Int_t GetPoint(Int_t iCheckPt, Double_t *coord) const;
45   virtual Int_t GetVect(Int_t iCheckPt, Double_t *coord) const;
46
47  protected:
48   TGeoVolume *CreateSegment( const Double_t *coord1,const Double_t *coord2,
49                              const Double_t *localVect1,
50                              const Double_t *localVect2 );
51
52   TGeoVolume *CreateBoxSegment( const Double_t *coord1,const Double_t *coord2);
53
54   TGeoVolume *CreateCylSegment( const Double_t &phi, const Double_t &r);
55
56   Double_t  fWidth;                                 // width
57   Double_t  fThick;                                 // total thickness
58   Int_t     fNlayer;                                // number of layers
59   Double_t  fPreviousX[3];                          // used internally
60   Double_t         fLayThickness[fgkCableMaxLayer]; // layer thicknesses
61   TGeoTranslation *fTranslation[fgkCableMaxLayer];  // layer translations
62   TGeoMedium      *fLayMedia[fgkCableMaxLayer];     // layer media
63   Int_t            fLayColor[fgkCableMaxLayer];     // layer colors
64
65  private:
66   AliITSv11GeomCableFlat(const AliITSv11GeomCableFlat &source);
67   AliITSv11GeomCableFlat& operator=(const AliITSv11GeomCableFlat &source);
68
69   ClassDef(AliITSv11GeomCableFlat,1)
70 };
71
72
73 #endif