[ff9fb2d9] | 1 | #ifndef G__SOLGEOM_H
|
---|
| 2 | #define G__SOLGEOM_H
|
---|
| 3 |
|
---|
| 4 | #include <RtypesCore.h>
|
---|
| 5 | #include <TString.h>
|
---|
| 6 |
|
---|
| 7 | // Class to create geometry for solenoid geometry
|
---|
| 8 |
|
---|
| 9 | class SolGeom{
|
---|
| 10 | //
|
---|
| 11 | // Units are m
|
---|
| 12 | //
|
---|
| 13 | private:
|
---|
| 14 | const Int_t fNlMax = 200; // Maximum number of layers
|
---|
| 15 |
|
---|
| 16 | // B field
|
---|
| 17 | Double_t fB; // B field in Tesla
|
---|
| 18 |
|
---|
| 19 | // Barrel layer properties
|
---|
| 20 | Int_t fNlay; // Total number of layers
|
---|
| 21 | Int_t fBlay; // Number of barrel layers
|
---|
| 22 | Int_t fFlay; // Number of forward/backward layers
|
---|
| 23 | Int_t fNm; // Nr. measurement layers
|
---|
| 24 | Int_t *ftyLay; // Layer type 1 = R (barrel) or 2 = z (forward/backward)
|
---|
| 25 | TString *fLyLabl; // Layer label
|
---|
| 26 | // Barrel: PIPE, VTXLOW, VTXHIGH, DCHCANI, DCH, DCHCANO, BSILWRP, MAG, BPRESH
|
---|
| 27 | // Fw/Bw: VTXDSK, DCHWALL, FSILWRP, FRAD, FPRESH
|
---|
| 28 | Double_t *fxMin; // Minimum dimension z for barrel or R for forward
|
---|
| 29 | Double_t *fxMax; // Maximum dimension z for barrel or R for forward
|
---|
| 30 | Double_t *frPos; // R/z location of layer
|
---|
| 31 | Double_t *fthLay; // Thickness (meters)
|
---|
| 32 | Double_t *frlLay; // Radiation length (meters)
|
---|
| 33 | Int_t *fnmLay; // Number of measurements in layers (1D or 2D)
|
---|
| 34 | Double_t *fstLayU; // Stereo angle (rad) - 0(pi/2) = axial(z) layer - Upper side
|
---|
| 35 | Double_t *fstLayL; // Stereo angle (rad) - 0(pi/2) = axial(z) layer - Lower side
|
---|
| 36 | Double_t *fsgLayU; // Resolution Upper side (meters) - 0 = no measurement
|
---|
| 37 | Double_t *fsgLayL; // Resolution Lower side (meters) - 0 = no measurement
|
---|
| 38 | Bool_t *fflLay; // measurement flag = T, scattering only = F
|
---|
| 39 |
|
---|
| 40 | public:
|
---|
| 41 | SolGeom();
|
---|
| 42 | ~SolGeom();
|
---|
| 43 |
|
---|
| 44 | void Read(const char *data);
|
---|
| 45 |
|
---|
| 46 | Double_t B() { return fB; }
|
---|
| 47 | Int_t Nl() { return fNlay; }
|
---|
| 48 | Int_t Nm() { return fNm; }
|
---|
| 49 | Int_t NBl() { return fBlay; }
|
---|
| 50 | TString lLabl(Int_t nlayer) { return fLyLabl[nlayer]; }
|
---|
| 51 | Int_t lTyp(Int_t nlayer) { return ftyLay[nlayer]; }
|
---|
| 52 | Double_t lxMin(Int_t nlayer) { return fxMin[nlayer]; }
|
---|
| 53 | Double_t lxMax(Int_t nlayer) { return fxMax[nlayer]; }
|
---|
| 54 | Double_t lPos(Int_t nlayer) { return frPos[nlayer]; }
|
---|
| 55 | Double_t lTh(Int_t nlayer) { return fthLay[nlayer]; }
|
---|
| 56 | Double_t lX0(Int_t nlayer) { return frlLay[nlayer]; }
|
---|
| 57 | Int_t lND(Int_t nlayer) { return fnmLay[nlayer]; }
|
---|
| 58 | Double_t lStU(Int_t nlayer) { return fstLayU[nlayer]; }
|
---|
| 59 | Double_t lStL(Int_t nlayer) { return fstLayL[nlayer]; }
|
---|
| 60 | Double_t lSgU(Int_t nlayer) { return fsgLayU[nlayer]; }
|
---|
| 61 | Double_t lSgL(Int_t nlayer) { return fsgLayL[nlayer]; }
|
---|
| 62 | Bool_t isMeasure(Int_t nlayer) { return fflLay[nlayer]; }
|
---|
| 63 | };
|
---|
| 64 |
|
---|
| 65 | #endif
|
---|