1 | #ifndef _CAL_TOWER_HH_
|
---|
2 | #define _CAL_TOWER_HH_
|
---|
3 |
|
---|
4 | // Modified by X. Rouby for integration in Delphes
|
---|
5 |
|
---|
6 | #include <cmath>
|
---|
7 |
|
---|
8 | #ifndef M_PI
|
---|
9 | #define M_PI 3.141592653589793238462643383279502884197
|
---|
10 | #endif
|
---|
11 |
|
---|
12 | const double pi = acos(-1);
|
---|
13 |
|
---|
14 | // CDF data : 23 towers. step=2.7° at the beginning, and after, it changes
|
---|
15 | //const unsigned int ntower = 23;
|
---|
16 | //const double TOWER_THETA[ntower] = { 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°
|
---|
17 | // 33.524, 36.822, 40.261, 43.614, 47.436, 51.790, 56.735, 62.310, 68.516, 75.297, 82.526, 90.000 };
|
---|
18 |
|
---|
19 | // CMS HB: 0.087 x 0.087 = 0.087 x 5°
|
---|
20 | // CMS HF: 0.175 x 0.175 = 0.175 x 10°
|
---|
21 | // CMS data
|
---|
22 | const unsigned int ntower = 40;
|
---|
23 | //const double TOWER_ETA[ntower] = {
|
---|
24 | // 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,
|
---|
25 | // 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,
|
---|
26 | // 4.350, 4.525, 4.700}
|
---|
27 | const double TOWER_THETA[ntower] = {
|
---|
28 | 1.04221324479 , 1.24151823936 , 1.4789296564 , 1.76172836867 , 2.09858297042 , 2.49981191976 , 2.97769357253 , 3.54683172517 ,
|
---|
29 | 4.22458468545 , 5.03156565222 , 5.99222070913 , 6.50323511476 , 8.08260215014 , 9.38520669791 , 11.2029938559 , 13.0015703243 ,
|
---|
30 | 14.7731659079 , 16.5174067026 , 18.2267592981 , 19.9103474053 , 21.6789816306 , 23.5965023504 , 25.6731077732 , 27.9190341722 ,
|
---|
31 | 30.3443463769 , 32.9586699802 , 35.7708584993 , 38.7885912317 , 42.017901925 , 45.4626450521 , 49.1239157061 , 52.9994507062 ,
|
---|
32 | 57.0830516071 , 61.3640831827 , 65.8271109013 , 70.4517445074 , 75.2127486134 , 80.0804628398 , 85.02154355, 90
|
---|
33 | };
|
---|
34 |
|
---|
35 | class CalTower
|
---|
36 | {
|
---|
37 | public:
|
---|
38 | double Et,eta,phi;
|
---|
39 | int iEta,iPhi;
|
---|
40 |
|
---|
41 | CalTower(): Et(0), eta(0), phi(0), iEta(-1), iPhi(-1) {}
|
---|
42 | CalTower(const double Et0, const double eta0, const double phi0): Et(Et0), eta(eta0), phi(phi0)
|
---|
43 | {
|
---|
44 | if(fabs(eta) < pseudorapidity(TOWER_THETA[0])) { // |eta| < 3.64
|
---|
45 | if(eta <= 0){ // central particle, but negative eta
|
---|
46 | for(unsigned int i = 0; i < ntower-1; i++)
|
---|
47 | if(eta < pseudorapidity(180 - TOWER_THETA[i + 1])){ // eta < -3 ; -2.61 ; ... ; 0
|
---|
48 | iEta = 4 + i;
|
---|
49 | break;
|
---|
50 | }
|
---|
51 | } // central particle but negative eta
|
---|
52 | else{ // central particle but positive eta
|
---|
53 | for(unsigned int i = 0; i < ntower-1; i++)
|
---|
54 | if(-eta < pseudorapidity(180 - TOWER_THETA[i + 1])){ // eta > 3 ; 2.61 ; ... ; 0
|
---|
55 | iEta = 47 - i;
|
---|
56 | break;
|
---|
57 | }
|
---|
58 | } // central particle but positive eta
|
---|
59 | if( (iEta >= 8 && iEta < 14) || (iEta >= 38 && iEta < 44) )
|
---|
60 | iPhi = int(phi/(2*pi)*48)%48;
|
---|
61 | else
|
---|
62 | iPhi = int(phi/(2*pi)*24)%24;
|
---|
63 | }
|
---|
64 | else{ // particle beyond detector reach :
|
---|
65 | iEta = -1;
|
---|
66 | iPhi = -1;
|
---|
67 | }
|
---|
68 | }
|
---|
69 | 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) {}
|
---|
70 | CalTower(const CalTower& c): Et(c.Et), eta(c.eta), phi(c.phi), iEta(c.iEta), iPhi(c.iPhi) {}
|
---|
71 | bool isEqual(const CalTower& c)
|
---|
72 | {
|
---|
73 | return Et == c.Et && eta == c.eta && phi == c.phi && iEta == c.iEta && iPhi == c.iPhi;
|
---|
74 | }
|
---|
75 |
|
---|
76 | // converts theta angle [degrees] into pseudorapidity
|
---|
77 | double pseudorapidity(const double theta) {
|
---|
78 | return -log(tan( (theta/2.) * (pi/180.) ));
|
---|
79 | }
|
---|
80 |
|
---|
81 | };
|
---|
82 |
|
---|
83 | /*****
|
---|
84 | e.g.
|
---|
85 | iEta==4 si -3.642 < eta < -3.000
|
---|
86 | iEta==47 si 3.000 < eta < 3.642
|
---|
87 | iEta==-1 si eta < -3.642 ou si eta > 3.642
|
---|
88 |
|
---|
89 | i theta pseudorapidity iEta
|
---|
90 | --------------------------------------
|
---|
91 | 0 3.0 -3.00008274261 4
|
---|
92 | 1 5.7 -2.61134904017 5
|
---|
93 | 2 8.4 -2.33129451223 6
|
---|
94 | 3 11.1 -2.1118548488 7
|
---|
95 | 4 13.8 -1.93106912741 8
|
---|
96 | 5 16.5 -1.77704423284 9
|
---|
97 | 6 19.2 -1.64260787639 10
|
---|
98 | 7 21.9 -1.52309848418 11
|
---|
99 | 8 24.6 -1.41531379676 12
|
---|
100 | 9 27.3 -1.31695789692 13
|
---|
101 | 10 30.0 -1.19999982651 14
|
---|
102 | 11 33.524 -1.10000635195 15
|
---|
103 | 12 36.822 -1.00361552815 16
|
---|
104 | 13 40.261 -0.916007799535 17
|
---|
105 | 14 43.614 -0.822472442947 18
|
---|
106 | 15 47.436 -0.72264587494 19
|
---|
107 | 16 51.79 -0.616250691646 20
|
---|
108 | 17 56.735 -0.503273260393 21
|
---|
109 | 18 62.31 -0.384075299436 22
|
---|
110 | 19 68.516 -0.259479460739 23
|
---|
111 | 20 75.297 -0.130817437415 24
|
---|
112 | 21 82.526 1.11022302463e-16 25
|
---|
113 |
|
---|
114 |
|
---|
115 | i theta pseudorapidity iEta
|
---|
116 | --------------------------------------
|
---|
117 | 0 3.0 -3.00008274261 47
|
---|
118 | 1 5.7 -2.61134904017 46
|
---|
119 | 2 8.4 -2.33129451223 45
|
---|
120 | 3 11.1 -2.1118548488 44
|
---|
121 | 4 13.8 -1.93106912741 43
|
---|
122 | 5 16.5 -1.77704423284 42
|
---|
123 | 6 19.2 -1.64260787639 41
|
---|
124 | 7 21.9 -1.52309848418 40
|
---|
125 | 8 24.6 -1.41531379676 39
|
---|
126 | 9 27.3 -1.31695789692 38
|
---|
127 | 10 30.0 -1.19999982651 37
|
---|
128 | 11 33.524 -1.10000635195 36
|
---|
129 | 12 36.822 -1.00361552815 35
|
---|
130 | 13 40.261 -0.916007799535 34
|
---|
131 | 14 43.614 -0.822472442947 33
|
---|
132 | 15 47.436 -0.72264587494 32
|
---|
133 | 16 51.79 -0.616250691646 31
|
---|
134 | 17 56.735 -0.503273260393 30
|
---|
135 | 18 62.31 -0.384075299436 29
|
---|
136 | 19 68.516 -0.259479460739 28
|
---|
137 | 20 75.297 -0.130817437415 27
|
---|
138 | 21 82.526 1.11022302463e-16 26
|
---|
139 | *****/
|
---|
140 |
|
---|
141 | #endif
|
---|
142 |
|
---|