Added charge to the clusters tree
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv11Layer.h
1 #ifndef ALIITSV11GEOMETRYUPGRADE_H
2 #define ALIITSV11GEOMETRYUPGRADE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6
7 //*************************************************************************
8 // This class Defines the Geometry for the ITS Upgrade using TGeo
9 // This is a work class used to study different configurations
10 // during the development of the new ITS structure.
11 //
12 //  Mario Sitta <sitta@to.infn.it>
13 //*************************************************************************
14
15
16 /*
17   $Id: AliITSUv11Layer.h
18  */
19
20 #include "AliITSv11Geometry.h"
21 #include <TGeoManager.h>
22 #include <TGeoCompositeShape.h>
23 #include <TGeoXtru.h>
24
25 class TGeoVolume;
26
27 class AliITSUv11Layer : public AliITSv11Geometry {
28   public:
29     AliITSUv11Layer();
30     AliITSUv11Layer(Int_t debug);
31     AliITSUv11Layer(Int_t lay, Int_t debug);
32     AliITSUv11Layer(Int_t lay, Bool_t turbo, Int_t debug);
33     AliITSUv11Layer(const AliITSUv11Layer &source);
34     AliITSUv11Layer& operator=(const AliITSUv11Layer &source);
35     virtual ~AliITSUv11Layer();
36     //
37     Bool_t    IsTurbo() {return fIsTurbo;};
38
39     Double_t  GetLadderThick() const {return fLadderThick;};
40     Double_t  GetLadderTilt()  const {return fLadderTilt;};
41     Double_t  GetLadderWidth() const {return fLadderWidth;};
42     Double_t  GetSensorThick() const {return fSensorThick;};
43     Double_t  GetNLadders()    const {return fNLadders;};
44     Double_t  GetNModules()    const {return fNModules;};
45     Double_t  GetRadius()      const {return fLayRadius;};
46     Double_t  GetPhi0()        const {return fPhi0;};
47     Double_t  GetZLength()     const {return fZLength;};
48     Int_t     GetDetType()     const {return fDetTypeID;}
49     //
50     void      SetLadderThick(Double_t t)    {fLadderThick = t;};
51     void      SetLadderTilt(Double_t t);
52     void      SetLadderWidth(Double_t w);
53     void      SetSensorThick(Double_t t)    {fSensorThick = t;};
54     void      SetNLadders(Int_t n)          {fNLadders = n;};
55     void      SetNModules(Int_t m)          {fNModules = m;};
56     void      SetRadius(Double_t r)         {fLayRadius = r;};
57     void      SetPhi0(Double_t phi)         {fPhi0 = phi;}
58     void      SetZLength(Double_t z)        {fZLength   = z;};
59     void      SetDetType(Int_t tp)          {fDetTypeID = tp;}
60     virtual void CreateLayer(TGeoVolume *moth,const TGeoManager *mgr=gGeoManager);
61
62   private:
63     void CreateLayerTurbo(TGeoVolume *moth,const TGeoManager *mgr=gGeoManager);
64
65     Double_t RadiusOfTurboContainer();
66
67     TGeoVolume* CreateLadder(const TGeoManager *mgr=gGeoManager);
68     TGeoVolume* CreateModule(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
69
70     Int_t     fLayerNumber; // Current layer number
71     Double_t  fPhi0;        // lab phi of 1st ladder, in degrees!!!
72     Double_t  fLayRadius;   // Inner radius of this layer
73     Double_t  fZLength;     // Z length of this layer
74     Double_t  fSensorThick; // Sensor thickness
75     Double_t  fLadderThick; // Ladder thickness
76     Double_t  fLadderWidth; // Ladder width (for turbo layers only)
77     Double_t  fLadderTilt;  // Ladder tilt angle (for turbo layers only) in degrees
78     Int_t     fNLadders;    // Number of ladders in this layer
79     Int_t     fNModules;    // Number of modules per ladder in this layer
80     UInt_t    fDetTypeID;   // detector type id
81     Bool_t    fIsTurbo;     // True if this layer is a "turbo" layer
82   // Parameters for the Upgrade geometry
83
84     static const Double_t fgkDefaultSensorThick; // Default sensor thickness
85     static const Double_t fgkDefaultLadderThick; // Default ladder thickness
86
87   ClassDef(AliITSUv11Layer,0) // ITS v11 Upgrade geometry
88 };
89
90 #endif