CMS 3D CMS Logo

TrackDer.cc
Go to the documentation of this file.
2 
3 using namespace std;
4 using namespace trklet;
5 
6 TrackDer::TrackDer() {
7  for (unsigned int i = 0; i < N_FITSTUB; i++) {
8  irinvdphi_[i] = 9999999;
9  irinvdzordr_[i] = 9999999;
10  iphi0dphi_[i] = 9999999;
11  iphi0dzordr_[i] = 9999999;
12  itdphi_[i] = 9999999;
13  itdzordr_[i] = 9999999;
14  iz0dphi_[i] = 9999999;
15  iz0dzordr_[i] = 9999999;
16 
17  rinvdphi_[i] = 0.0;
18  rinvdzordr_[i] = 0.0;
19  phi0dphi_[i] = 0.0;
20  phi0dzordr_[i] = 0.0;
21  tdphi_[i] = 0.0;
22  tdzordr_[i] = 0.0;
23  z0dphi_[i] = 0.0;
24  z0dzordr_[i] = 0.0;
25  }
26 
27  for (unsigned int i = 0; i < N_PSLAYER; i++) {
28  for (unsigned int j = 0; j < N_PSLAYER; j++) {
29  tdzcorr_[i][j] = 0.0;
30  z0dzcorr_[i][j] = 0.0;
31  }
32  }
33 }
34 
35 void TrackDer::setIndex(int layermask, int diskmask, int alphamask, int irinv) {
36  layermask_ = layermask;
37  diskmask_ = diskmask;
38  alphamask_ = alphamask;
39  irinv_ = irinv;
40 }
41 
42 void TrackDer::fill(int t, double MinvDt[N_FITPARAM][N_FITSTUB * 2], int iMinvDt[N_FITPARAM][N_FITSTUB * 2]) const {
43  unsigned int nlayer = 0;
44  if (layermask_ & 1)
45  nlayer++;
46  if (layermask_ & 2)
47  nlayer++;
48  if (layermask_ & 4)
49  nlayer++;
50  if (layermask_ & 8)
51  nlayer++;
52  if (layermask_ & 16)
53  nlayer++;
54  if (layermask_ & 32)
55  nlayer++;
56  int sign = 1;
57  if (t < 0)
58  sign = -1;
59  for (unsigned int i = 0; i < N_FITSTUB; i++) {
60  MinvDt[0][2 * i] = rinvdphi_[i];
61  MinvDt[1][2 * i] = phi0dphi_[i];
62  MinvDt[2][2 * i] = sign * tdphi_[i];
63  MinvDt[3][2 * i] = sign * z0dphi_[i];
64  MinvDt[0][2 * i + 1] = rinvdzordr_[i];
65  MinvDt[1][2 * i + 1] = phi0dzordr_[i];
66  MinvDt[2][2 * i + 1] = tdzordr_[i];
67  MinvDt[3][2 * i + 1] = z0dzordr_[i];
68  iMinvDt[0][2 * i] = irinvdphi_[i];
69  iMinvDt[1][2 * i] = iphi0dphi_[i];
70  iMinvDt[2][2 * i] = sign * itdphi_[i];
71  iMinvDt[3][2 * i] = sign * iz0dphi_[i];
72  iMinvDt[0][2 * i + 1] = irinvdzordr_[i];
73  iMinvDt[1][2 * i + 1] = iphi0dzordr_[i];
74  iMinvDt[2][2 * i + 1] = itdzordr_[i];
75  iMinvDt[3][2 * i + 1] = iz0dzordr_[i];
76  if (i < nlayer) {
77  MinvDt[0][2 * i + 1] *= sign;
78  MinvDt[1][2 * i + 1] *= sign;
79  iMinvDt[0][2 * i + 1] *= sign;
80  iMinvDt[1][2 * i + 1] *= sign;
81  } else {
82  MinvDt[2][2 * i + 1] *= sign;
83  MinvDt[3][2 * i + 1] *= sign;
84  iMinvDt[2][2 * i + 1] *= sign;
85  iMinvDt[3][2 * i + 1] *= sign;
86  }
87  }
88 }
constexpr unsigned int N_PSLAYER
Definition: Settings.h:27
constexpr unsigned int N_FITPARAM
Definition: Settings.h:1072
constexpr unsigned int N_FITSTUB
Definition: Settings.h:1073