Integrating the Cooked Matrix tracker into the commom reconstruction framework
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv0.h
CommitLineData
4e0b9a43 1#ifndef ALIITSUV0_H
2#define ALIITSUV0_H
7302d0f8 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// Chinorat Kobdaj (kobdaj@g.sut.ac.th)
12//
13//========================================================================
14
15
16// $Id: AliITSUv0.h
17
18#include "AliITSU.h"
19
7302d0f8 20class AliITSUv0Layer;
21//class AliITSv11GeomBeamPipe;
22class TGeoVolume;
23class TGeoVolumeAssembly;
24
25class AliITSUv0 : public AliITSU {
26
27 public:
6343b737 28
29
30 typedef enum {
31 kModelDummy=0,
32 kModel0=1,
33 kModel1=2,
34 kModel21=3,
35 kModel22=4,
36 kModel3=5
37 } AliITSUModel_t;
38
39
7302d0f8 40 AliITSUv0();
34e8fe1d 41 AliITSUv0(const char *title, Int_t nlay);
7302d0f8 42 virtual ~AliITSUv0() ;
43361342 43 virtual void SetNWrapVolumes(Int_t n);
7302d0f8 44 virtual void AddAlignableVolumes() const;
45 virtual void CreateGeometry();
46 virtual void CreateMaterials();
852af72e 47 virtual void DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
7302d0f8 48 Int_t nmod, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0);
852af72e 49 virtual void DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
7302d0f8 50 Int_t nmod,Double_t width,Double_t tilt,
51 Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0);
52 virtual void GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen,
852af72e 53 Int_t &nstav, Int_t &nmod,
7302d0f8 54 Double_t &width, Double_t &tilt,
55 Double_t &lthick, Double_t &mthick,
56 UInt_t &dettype) const;
43361342 57 virtual void DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan);
7302d0f8 58 virtual void Init();
59 virtual Bool_t IsLayerTurbo(Int_t nlay);
60 virtual Int_t IsVersion() const { return 20;} // vUpgrade ? do we need this
61 virtual void SetDefaults();
62 virtual void StepManager();
852af72e 63 virtual void SetLayerChipTypeID(Int_t lr, UInt_t id);
64 virtual Int_t GetLayerChipTypeID(Int_t lr);
7302d0f8 65 virtual void SetStaveModel(AliITSUModel_t model) {fStaveModel=model;}
66 virtual AliITSUModel_t GetStaveModel() const {return fStaveModel;}
67 //
68 private:
69 AliITSUv0(const AliITSUv0 &source); // copy constructor
70 AliITSUv0& operator=(const AliITSUv0 &source); // assignment operator
5e0a1821 71
34e8fe1d 72 TGeoVolume* CreateWrapperVolume(Int_t nLay);
5e0a1821 73
7302d0f8 74 //
43361342 75 Int_t fNWrapVol; // number of wrapper volumes
76 Double_t* fWrapRMin; // min radius of wrapper volume
77 Double_t* fWrapRMax; // max radius of wrapper volume
78 Double_t* fWrapZSpan; // Z span of wrapper volume
c55b10c2 79 Int_t* fLay2WrapV; // id of wrapper layer to which layer belongs (-1 if not wrapped)
7302d0f8 80 Bool_t *fLayTurbo; // True for "turbo" layers
852af72e 81 Double_t *fLayPhi0; // Vector of layer's 1st stave phi in lab
7302d0f8 82 Double_t *fLayRadii; // Vector of layer radii
83 Double_t *fLayZLength; // Vector of layer length along Z
852af72e 84 Int_t *fStavPerLay; // Vector of number of staves per layer
85 Int_t *fModPerStav; // Vector of number of chips per stave
86 Double_t *fStaThick; // Vector of stave thicknesses
87 Double_t *fStaWidth; // Vector of stave width (only used for turbo)
88 Double_t *fStaTilt; // Vector of stave tilt (only used for turbo)
7302d0f8 89 Double_t *fDetThick; // Vector of detector thicknesses
852af72e 90 UInt_t *fChipTypeID; // Vector of detector type id
7302d0f8 91 Int_t *fBuildLevel; // Vector of Material Budget Studies
92 //
93 AliITSUv0Layer **fUpGeom; //! Geometry
94 AliITSUModel_t fStaveModel; // The stave model
95
96 // Parameters for the Upgrade geometry
97
98 ClassDef(AliITSUv0,0)
99};
100
101#endif