Changing once more (hopefully we get it correct this time...) the logic to trig the...
[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   AliITSv11GeomCableFlat(const AliITSv11GeomCableFlat &source);
26   AliITSv11GeomCableFlat& operator=(const AliITSv11GeomCableFlat &source);
27   virtual ~AliITSv11GeomCableFlat() {};
28
29   void        SetNLayers(Int_t nLayers);
30   Int_t       SetLayer(Int_t nLayer,Double_t thick,TGeoMedium *medium,Int_t color=0);
31   void        AddCheckPoint( TGeoVolume *vol, Int_t iCheckPt,
32                              Double_t *coord, Double_t *orthVect);
33   TGeoVolume* CreateAndInsertCableSegment(Int_t p2, Double_t rotation=0,
34                                           TGeoCombiTrans** ct=0);
35   TGeoVolume* CreateAndInsertBoxCableSegment(Int_t p2, Double_t rotation=0,
36                                              TGeoCombiTrans** ct=0);
37   TGeoVolume* CreateAndInsertCableCylSegment(Int_t p2, Double_t rotation=0,
38                                              TGeoCombiTrans** ct=0);
39
40   void        SetWidth(Double_t width) { fWidth = width;};
41   void        SetThickness(Double_t thick) {fThick = thick;};
42   Double_t    GetWidth() const {return fWidth;};
43   Double_t    GetThickness() const {return fThick;};
44
45   virtual void  PrintCheckPoints() const;
46   virtual Int_t GetPoint(Int_t iCheckPt, Double_t *coord) const;
47   virtual Int_t GetVect(Int_t iCheckPt, Double_t *coord) const;
48
49  protected:
50   TGeoVolume *CreateSegment( Double_t *coord1,Double_t *coord2,
51                              Double_t *localVect1, Double_t *localVect2 );
52
53   TGeoVolume *CreateBoxSegment( Double_t *coord1,Double_t *coord2);
54
55   TGeoVolume *CreateCylSegment( Double_t &phi, Double_t &r);
56
57   Double_t  fWidth;                                 // width
58   Double_t  fThick;                                 // total thickness
59   Int_t     fNlayer;                                // number of layers
60   Double_t  fPreviousX[3];                          // used internally
61   Double_t         fLayThickness[fgkCableMaxLayer]; // layer thicknesses
62   TGeoTranslation *fTranslation[fgkCableMaxLayer];  // layer translations
63   TGeoMedium      *fLayMedia[fgkCableMaxLayer];     // layer media
64   Int_t            fLayColor[fgkCableMaxLayer];     // layer colors
65
66   ClassDef(AliITSv11GeomCableFlat,1)
67 };
68
69
70 #endif