]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/AliITSUv1.h
Stupid bug fix in new superlight mode (from Zurich airport)
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv1.h
CommitLineData
b705c75b 1#ifndef ALIITSUV1_H
2#define ALIITSUV1_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// Geometry for the Upgrade of the Inner Tracking System
9//
10// Mario Sitta (sitta@to.infn.it)
11//
12//========================================================================
13
14
15// $Id: AliITSUv1.h
16
17#include "AliITSU.h"
18
19class AliITSUv1Layer;
20//class AliITSv11GeomBeamPipe;
21class TGeoVolume;
22class TGeoVolumeAssembly;
23
24class AliITSUv1 : public AliITSU {
25
26 public:
27
28
29 typedef enum {
30 kIBModelDummy=0,
31 kIBModel0=1,
32 kIBModel1=2,
33 kIBModel21=3,
34 kIBModel22=4,
35 kIBModel3=5,
36 kOBModelDummy=6,
37 kOBModel0=7,
1fc6eff6 38 kOBModel1=8,
39 kOBModel2=9
b705c75b 40 } AliITSUModel_t;
41
42
43 AliITSUv1();
34e8fe1d 44 AliITSUv1(const char *title, Int_t nlay);
b705c75b 45 virtual ~AliITSUv1() ;
46 virtual void SetNWrapVolumes(Int_t n);
47 virtual void AddAlignableVolumes() const;
c55b10c2 48 void AddAlignableVolumesLayer(int lr, TString& parent,Int_t &lastUID) const;
49 void AddAlignableVolumesStave(int lr, int st, TString& parent,Int_t &lastUID) const;
50 void AddAlignableVolumesHalfStave(int lr, int st, int sst, TString& parent,Int_t &lastUID) const;
51 void AddAlignableVolumesModule(int lr, int st, int sst, int md, TString& parent,Int_t &lastUID) const;
52 void AddAlignableVolumesChip(int lr, int st, int sst, int md, int ch, TString& parent,Int_t &lastUID) const;
53
b705c75b 54 virtual void CreateGeometry();
72953001 55 void CreateSuppCyl(const Bool_t innerBarrel,TGeoVolume *dest,const TGeoManager *mgr=gGeoManager);
b705c75b 56 virtual void CreateMaterials();
852af72e 57 virtual void DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
c55b10c2 58 Int_t nunit, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0, Int_t buildFlag=0);
852af72e 59 virtual void DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
c55b10c2 60 Int_t nunit,Double_t width,Double_t tilt,
b705c75b 61 Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0);
62 virtual void GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen,
852af72e 63 Int_t &nstav, Int_t &nmod,
b705c75b 64 Double_t &width, Double_t &tilt,
65 Double_t &lthick, Double_t &mthick,
66 UInt_t &dettype) const;
67 virtual void DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan);
68 virtual void Init();
69 virtual Bool_t IsLayerTurbo(Int_t nlay);
70 virtual Int_t IsVersion() const { return 20;} // vUpgrade ? do we need this
71 virtual void SetDefaults();
72 virtual void StepManager();
852af72e 73 virtual void SetLayerChipTypeID(Int_t lr, UInt_t id);
74 virtual Int_t GetLayerChipTypeID(Int_t lr);
b705c75b 75 virtual void SetStaveModelIB(AliITSUModel_t model) {fStaveModelIB=model;}
76 virtual void SetStaveModelOB(AliITSUModel_t model) {fStaveModelOB=model;}
77 virtual AliITSUModel_t GetStaveModelIB() const {return fStaveModelIB;}
78 virtual AliITSUModel_t GetStaveModelOB() const {return fStaveModelOB;}
79 //
80 private:
81 AliITSUv1(const AliITSUv1 &source); // copy constructor
82 AliITSUv1& operator=(const AliITSUv1 &source); // assignment operator
83
34e8fe1d 84 TGeoVolume* CreateWrapperVolume(Int_t nLay);
b705c75b 85
86 //
87 Int_t fNWrapVol; // number of wrapper volumes
88 Double_t* fWrapRMin; // min radius of wrapper volume
89 Double_t* fWrapRMax; // max radius of wrapper volume
90 Double_t* fWrapZSpan; // Z span of wrapper volume
c55b10c2 91 Int_t* fLay2WrapV; // id of wrapper layer to which layer belongs (-1 if not wrapped)
b705c75b 92 Bool_t *fLayTurbo; // True for "turbo" layers
852af72e 93 Double_t *fLayPhi0; // Vector of layer's 1st stave phi in lab
b705c75b 94 Double_t *fLayRadii; // Vector of layer radii
95 Double_t *fLayZLength; // Vector of layer length along Z
852af72e 96 Int_t *fStavPerLay; // Vector of number of staves per layer
c55b10c2 97 Int_t *fUnitPerStave; // Vector of number of "units" per stave
1fc6eff6 98 Double_t *fChipThick; // Vector of chip thicknesses
c55b10c2 99 Double_t *fStaveWidth; // Vector of stave width (only used for turbo)
100 Double_t *fStaveTilt; // Vector of stave tilt (only used for turbo)
1fc6eff6 101 Double_t *fSensThick; // Vector of sensor thicknesses
c55b10c2 102 UInt_t *fChipTypeID; // Vector of detector type id
b705c75b 103 Int_t *fBuildLevel; // Vector of Material Budget Studies
104 //
105 AliITSUv1Layer **fUpGeom; //! Geometry
106 AliITSUModel_t fStaveModelIB; // The stave model for the Inner Barrel
107 AliITSUModel_t fStaveModelOB; // The stave model for the Outer Barrel
108
109 // Parameters for the Upgrade geometry
110
1fc6eff6 111 ClassDef(AliITSUv1,0)
b705c75b 112};
113
114#endif