Integrating the Cooked Matrix tracker into the commom reconstruction framework
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv0Layer.h
CommitLineData
7302d0f8 1#ifndef ALIITSUV0LAYER_H
2#define ALIITSUV0LAYER_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// Chinorat Kobdaj (kobdaj@g.sut.ac.th)
14//*************************************************************************
15
16
17/*
18 $Id: AliITSUv0Layer.h
19 */
20
21#include "AliITSv11Geometry.h"
22#include "AliITSUv0.h"
23#include <TGeoManager.h>
24#include <TGeoCompositeShape.h>
25#include <TGeoXtru.h>
26
27class TGeoVolume;
28
29class AliITSUv0Layer : public AliITSv11Geometry {
30 public:
31 AliITSUv0Layer();
32 AliITSUv0Layer(Int_t debug);
33 AliITSUv0Layer(Int_t lay, Int_t debug);
34 AliITSUv0Layer(Int_t lay, Bool_t turbo, Int_t debug);
35 AliITSUv0Layer(const AliITSUv0Layer &source);
36 AliITSUv0Layer& operator=(const AliITSUv0Layer &source);
37 virtual ~AliITSUv0Layer();
38 //
4e0b9a43 39 Bool_t IsTurbo() const {return fIsTurbo;};
7302d0f8 40
852af72e 41 Double_t GetStaveThick() const {return fStaveThick;};
42 Double_t GetStaveTilt() const {return fStaveTilt;};
43 Double_t GetStaveWidth() const {return fStaveWidth;};
7302d0f8 44 Double_t GetSensorThick() const {return fSensorThick;};
852af72e 45 Double_t GetNStaves() const {return fNStaves;};
46 Double_t GetNChips() const {return fNChips;};
7302d0f8 47 Double_t GetRadius() const {return fLayRadius;};
48 Double_t GetPhi0() const {return fPhi0;};
49 Double_t GetZLength() const {return fZLength;};
852af72e 50 Int_t GetChipType() const {return fChipTypeID;}
6343b737 51 AliITSUv0::AliITSUModel_t GetStaveModel() const {return fStaveModel;}
7302d0f8 52 //
852af72e 53 void SetStaveThick(Double_t t) {fStaveThick = t;};
54 void SetStaveTilt(Double_t t);
55 void SetStaveWidth(Double_t w);
7302d0f8 56 void SetSensorThick(Double_t t) {fSensorThick = t;};
852af72e 57 void SetNStaves(Int_t n) {fNStaves = n;};
58 void SetNChips(Int_t m) {fNChips = m;};
7302d0f8 59 void SetRadius(Double_t r) {fLayRadius = r;};
60 void SetPhi0(Double_t phi) {fPhi0 = phi;}
61 void SetZLength(Double_t z) {fZLength = z;};
852af72e 62 void SetChipType(Int_t tp) {fChipTypeID = tp;}
7302d0f8 63 void SetBuildLevel(Int_t buildLevel){fBuildLevel=buildLevel;}
6343b737 64 void SetStaveModel(AliITSUv0::AliITSUModel_t model) {fStaveModel=model;}
7302d0f8 65 virtual void CreateLayer(TGeoVolume *moth);
66
67 private:
68 void CreateLayerTurbo(TGeoVolume *moth);
69
70 Double_t RadiusOfTurboContainer();
71
852af72e 72 TGeoVolume* CreateStave(const TGeoManager *mgr=gGeoManager);
73 //TGeoVolume* CreateChip(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager);
74 TGeoVolume* CreateChip(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
7302d0f8 75
76
77 TGeoVolume* CreateStaveStruct(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
4e0b9a43 78 TGeoVolume* CreateStaveModelDummy(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager) const;
7302d0f8 79 TGeoVolume* CreateStaveModel0(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
80 TGeoVolume* CreateStaveModel1(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
81 TGeoVolume* CreateStaveModel21(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
82 TGeoVolume* CreateStaveModel22(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
83 TGeoVolume* CreateStaveModel3(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
84
85
86 Int_t fLayerNumber; // Current layer number
852af72e 87 Double_t fPhi0; // lab phi of 1st stave, in degrees!!!
7302d0f8 88 Double_t fLayRadius; // Inner radius of this layer
89 Double_t fZLength; // Z length of this layer
90 Double_t fSensorThick; // Sensor thickness
852af72e 91 Double_t fStaveThick; // Stave thickness
92 Double_t fStaveWidth; // Stave width (for turbo layers only)
93 Double_t fStaveTilt; // Stave tilt angle (for turbo layers only) in degrees
94 Int_t fNStaves; // Number of staves in this layer
95 Int_t fNChips; // Number of chips per stave in this layer
96 UInt_t fChipTypeID; // detector type id
7302d0f8 97 Bool_t fIsTurbo; // True if this layer is a "turbo" layer
98 Int_t fBuildLevel; // Used for material studies
99
6343b737 100 AliITSUv0::AliITSUModel_t fStaveModel; // The stave model
7302d0f8 101
102 // Parameters for the Upgrade geometry
103
104 static const Double_t fgkDefaultSensorThick; // Default sensor thickness
852af72e 105 static const Double_t fgkDefaultStaveThick; // Default stave thickness
7302d0f8 106
107 ClassDef(AliITSUv0Layer,0) // ITS Upgrade v0 geometry
108};
109
110#endif