Fork me on GitHub

source: git/external/TrackCovariance/SolGeom.h@ ebf40fd

Last change on this file since ebf40fd was ebf40fd, checked in by Franco BEDESCHI <bed@…>, 3 years ago

Major update to handle highly displaced tracks

  • Property mode set to 100644
File size: 3.1 KB
Line 
1#ifndef G__SOLGEOM_H
2#define G__SOLGEOM_H
3
4#include <Rtypes.h>
5#include <TString.h>
6
7// Class to create geometry for solenoid geometry
8// Simplified implementations with cylindrical and disk layers
9//
10// Author: F. Bedeschi, INFN - Pisa
11
12class SolGeom{
13 //
14 // Units are m
15 //
16private:
17 const Int_t fNlMax = 200; // Maximum number of layers
18
19 // B field
20 Double_t fB; // B field in Tesla
21
22 // Barrel layer properties
23 Int_t fNlay; // Total number of layers
24 Int_t fBlay; // Number of barrel layers
25 Int_t fFlay; // Number of forward/backward layers
26 Int_t fNm; // Nr. measurement layers
27 Int_t *ftyLay; // Layer type 1 = R (barrel) or 2 = z (forward/backward)
28 TString *fLyLabl; // Layer label
29 // Barrel: PIPE, VTXLOW, VTXHIGH, DCHCANI, DCH, DCHCANO, BSILWRP, MAG, BPRESH
30 // Fw/Bw: VTXDSK, DCHWALL, FSILWRP, FRAD, FPRESH
31 Double_t *fxMin; // Minimum dimension z for barrel or R for forward
32 Double_t *fxMax; // Maximum dimension z for barrel or R for forward
33 Double_t *frPos; // R/z location of layer
34 Double_t *fthLay; // Thickness (meters)
35 Double_t *frlLay; // Radiation length (meters)
36 Int_t *fnmLay; // Number of measurements in layers (1D or 2D)
37 Double_t *fstLayU; // Stereo angle (rad) - 0(pi/2) = axial(z) layer - Upper side
38 Double_t *fstLayL; // Stereo angle (rad) - 0(pi/2) = axial(z) layer - Lower side
39 Double_t *fsgLayU; // Resolution Upper side (meters) - 0 = no measurement
40 Double_t *fsgLayL; // Resolution Lower side (meters) - 0 = no measurement
41 Bool_t *fflLay; // measurement flag = T, scattering only = F
42//
43//
44 Double_t fRmin; // Radius of first barrel layer
45 Double_t fZminPos; // Z of first disk in positive direction
46 Double_t fZminNeg; // Z of first disk in negative direction
47 void SetMinBoundaries(); // define inner box for fast simulation
48
49public:
50 SolGeom();
51 ~SolGeom();
52
53 void Read(const char *data);
54
55 Double_t B() { return fB; }
56 Int_t Nl() { return fNlay; }
57 Int_t Nm() { return fNm; }
58 Int_t NBl() { return fBlay; }
59 TString lLabl(Int_t nlayer) { return fLyLabl[nlayer]; }
60 Int_t lTyp(Int_t nlayer) { return ftyLay[nlayer]; }
61 Double_t lxMin(Int_t nlayer) { return fxMin[nlayer]; }
62 Double_t lxMax(Int_t nlayer) { return fxMax[nlayer]; }
63 Double_t lPos(Int_t nlayer) { return frPos[nlayer]; }
64 Double_t lTh(Int_t nlayer) { return fthLay[nlayer]; }
65 Double_t lX0(Int_t nlayer) { return frlLay[nlayer]; }
66 Int_t lND(Int_t nlayer) { return fnmLay[nlayer]; }
67 Double_t lStU(Int_t nlayer) { return fstLayU[nlayer]; }
68 Double_t lStL(Int_t nlayer) { return fstLayL[nlayer]; }
69 Double_t lSgU(Int_t nlayer) { return fsgLayU[nlayer]; }
70 Double_t lSgL(Int_t nlayer) { return fsgLayL[nlayer]; }
71 Bool_t isMeasure(Int_t nlayer) { return fflLay[nlayer]; }
72 //
73 // Define cylindrical box to use for fast simulation
74 //
75 Double_t GetRmin() { return fRmin; }
76 Double_t GetZminPos() { return fZminPos; }
77 Double_t GetZminNeg() { return fZminNeg; }
78};
79
80#endif
Note: See TracBrowser for help on using the repository browser.