1 | #ifndef _CAL_TOWER_HH_
|
---|
2 | #define _CAL_TOWER_HH_
|
---|
3 |
|
---|
4 | // Modified by X. Rouby for integration in Delphes
|
---|
5 | // !!! the numbering of the towers (iEta, iPhi) is **NOT** following any convention of the corresponding experiment
|
---|
6 |
|
---|
7 |
|
---|
8 | #include <cmath>
|
---|
9 |
|
---|
10 | #ifndef M_PI
|
---|
11 | #define M_PI 3.141592653589793238462643383279502884197
|
---|
12 | #endif
|
---|
13 |
|
---|
14 | const double pi = acos(-1);
|
---|
15 |
|
---|
16 | /*
|
---|
17 | // CDF data : 22 towers. step=2.7° at the beginning, and after, it changes
|
---|
18 | const unsigned int ntower = 22;
|
---|
19 | const double TOWER_THETA[ntower+1] = {3.000, 5.700, 8.400, 11.100, 13.800, 16.500, 19.200, 21.900, 24.600, 27.300, 30.000,// step=2.7°
|
---|
20 | 33.524, 36.822, 40.261, 43.614, 47.436, 51.790, 56.735, 62.310, 68.516, 75.297, 82.526, 90.000 };
|
---|
21 | const double tower_eta_edges[ntower+1] = {
|
---|
22 | 0.0, 0.130817437415, 0.259479460739, 0.384075299436, 0.503273260393, 0.616250691646, 0.72264587494, 0.822472442947,
|
---|
23 | 0.916007799535, 1.00361552815, 1.10000635195, 1.19999982651, 1.31695789692, 1.41531379676, 1.52309848418, 1.64260787639,
|
---|
24 | 1.77704423284, 1.93106912741, 2.1118548488, 2.33129451223, 2.61134904017, 3.00008274261, 3.64253335732 };
|
---|
25 | const double tower_dphi[ntower] = { // list of the tower size in phi (in degrees)
|
---|
26 | 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 15.,
|
---|
27 | 15., 15., 15., 15., 15., 7.5, 7.5, 7.5,
|
---|
28 | 7.5, 7.5, 7.5, 7.5, 7.5, 7.5 };
|
---|
29 | */
|
---|
30 |
|
---|
31 | // CMS data
|
---|
32 | const unsigned int ntower = 40;
|
---|
33 | const double tower_eta_edges[ntower+1] = { // list of the edges of each tower, in eta, for eta>0, assuming a symmetric detector in eta<0
|
---|
34 | 0., // lower limit of the most central tower
|
---|
35 | 0.087, 0.174, 0.261, 0.348, 0.435, 0.522, 0.609, 0.696, 0.783, 0.870, 0.957, 1.044, 1.131, 1.218, 1.305, 1.392, 1.479, 1.566,
|
---|
36 | 1.653, 1.740, 1.830, 1.930, 2.043, 2.172, 2.322, 2.500, 2.650, 2.868, 2.950, 3.125, 3.300, 3.475, 3.650, 3.825, 4.000, 4.175,
|
---|
37 | 4.350, 4.525,
|
---|
38 | 4.700, // lower limit of the most forward tower
|
---|
39 | 5.000}; // higher limit of the most forward tower
|
---|
40 |
|
---|
41 | const double tower_dphi[ntower] = { // list of the tower size in phi (in degrees)
|
---|
42 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10,
|
---|
43 | 10,10,10,10,10, 10,10,10,10,10, 10,10,10,10,10, 10,10,10,20, 20 };
|
---|
44 |
|
---|
45 |
|
---|
46 | class CalTower
|
---|
47 | {
|
---|
48 | public:
|
---|
49 | double Et,eta,phi;
|
---|
50 | int iEta,iPhi;
|
---|
51 |
|
---|
52 | CalTower(): Et(0), eta(0), phi(0), iEta(-1), iPhi(-1) {}
|
---|
53 |
|
---|
54 | CalTower(const double Et0, const double eta0, const double phi0): Et(Et0), eta(eta0), phi(phi0)
|
---|
55 | {
|
---|
56 |
|
---|
57 | if (fabs(eta) > tower_eta_edges[ntower]) {iEta = -1; iPhi = -1; } // outside the detector
|
---|
58 | else {
|
---|
59 | const unsigned int nn = ntower*2;
|
---|
60 | double all_towers[nn];
|
---|
61 | unsigned int i =0;
|
---|
62 | for(unsigned int j= ntower-1; i<ntower; j--,i++) { all_towers[i] = -tower_eta_edges[j];}
|
---|
63 | for(unsigned int j= 1; j <ntower+1; j++, i++) { all_towers[i] = tower_eta_edges[j]; }
|
---|
64 | for(i = 0; i< nn; i++) { if(eta < all_towers[i]) {iEta=i; break;} }
|
---|
65 |
|
---|
66 | for(unsigned int j=0; j<ntower; j++) {
|
---|
67 | int wedge = int(360./tower_dphi[j]);
|
---|
68 | iPhi = int(phi/(2.*pi)* wedge)%wedge;
|
---|
69 | }
|
---|
70 | }
|
---|
71 | }
|
---|
72 |
|
---|
73 | CalTower(const double Et0, const double eta0, const double phi0, const int iEta0, const int iPhi0): Et(Et0), eta(eta0), phi(phi0), iEta(iEta0), iPhi(iPhi0) {}
|
---|
74 |
|
---|
75 | CalTower(const CalTower& c): Et(c.Et), eta(c.eta), phi(c.phi), iEta(c.iEta), iPhi(c.iPhi) {}
|
---|
76 |
|
---|
77 | bool isEqual(const CalTower& c) {
|
---|
78 | return Et == c.Et && eta == c.eta && phi == c.phi && iEta == c.iEta && iPhi == c.iPhi;
|
---|
79 | }
|
---|
80 |
|
---|
81 | // converts theta angle [degrees] into pseudorapidity
|
---|
82 | double pseudorapidity(const double theta) {
|
---|
83 | return -log(tan( (theta/2.) * (pi/180.) ));
|
---|
84 | }
|
---|
85 |
|
---|
86 | };
|
---|
87 |
|
---|
88 | /*****
|
---|
89 | e.g. CDF
|
---|
90 | iEta==4 si -3.642 < eta < -3.000
|
---|
91 | iEta==47 si 3.000 < eta < 3.642
|
---|
92 | iEta==-1 si eta < -3.642 ou si eta > 3.642
|
---|
93 |
|
---|
94 | i theta pseudorapidity iEta
|
---|
95 | --------------------------------------
|
---|
96 | 0 3.0 -3.00008274261 4
|
---|
97 | 1 5.7 -2.61134904017 5
|
---|
98 | 2 8.4 -2.33129451223 6
|
---|
99 | 3 11.1 -2.1118548488 7
|
---|
100 | 4 13.8 -1.93106912741 8
|
---|
101 | 5 16.5 -1.77704423284 9
|
---|
102 | 6 19.2 -1.64260787639 10
|
---|
103 | 7 21.9 -1.52309848418 11
|
---|
104 | 8 24.6 -1.41531379676 12
|
---|
105 | 9 27.3 -1.31695789692 13
|
---|
106 | 10 30.0 -1.19999982651 14
|
---|
107 | 11 33.524 -1.10000635195 15
|
---|
108 | 12 36.822 -1.00361552815 16
|
---|
109 | 13 40.261 -0.916007799535 17
|
---|
110 | 14 43.614 -0.822472442947 18
|
---|
111 | 15 47.436 -0.72264587494 19
|
---|
112 | 16 51.79 -0.616250691646 20
|
---|
113 | 17 56.735 -0.503273260393 21
|
---|
114 | 18 62.31 -0.384075299436 22
|
---|
115 | 19 68.516 -0.259479460739 23
|
---|
116 | 20 75.297 -0.130817437415 24
|
---|
117 | 21 82.526 1.11022302463e-16 25
|
---|
118 |
|
---|
119 |
|
---|
120 | i theta pseudorapidity iEta
|
---|
121 | --------------------------------------
|
---|
122 | 0 3.0 3.00008274261 47
|
---|
123 | 1 5.7 2.61134904017 46
|
---|
124 | 2 8.4 2.33129451223 45
|
---|
125 | 3 11.1 2.1118548488 44
|
---|
126 | 4 13.8 1.93106912741 43
|
---|
127 | 5 16.5 1.77704423284 42
|
---|
128 | 6 19.2 1.64260787639 41
|
---|
129 | 7 21.9 1.52309848418 40
|
---|
130 | 8 24.6 1.41531379676 39
|
---|
131 | 9 27.3 1.31695789692 38
|
---|
132 | 10 30.0 1.19999982651 37
|
---|
133 | 11 33.524 1.10000635195 36
|
---|
134 | 12 36.822 1.00361552815 35
|
---|
135 | 13 40.261 0.916007799535 34
|
---|
136 | 14 43.614 0.822472442947 33
|
---|
137 | 15 47.436 0.72264587494 32
|
---|
138 | 16 51.79 0.616250691646 31
|
---|
139 | 17 56.735 0.503273260393 30
|
---|
140 | 18 62.31 0.384075299436 29
|
---|
141 | 19 68.516 0.259479460739 28
|
---|
142 | 20 75.297 0.130817437415 27
|
---|
143 | 21 82.526 1.1102230246e-16 26
|
---|
144 | *****/
|
---|
145 |
|
---|
146 | #endif
|
---|
147 |
|
---|