Fork me on GitHub

source: svn/trunk/Utilities/Fastjet/plugins/CDFCones/interface/CalTower.hh@ 35

Last change on this file since 35 was 35, checked in by Xavier Rouby, 16 years ago

first attemp towers CMS

File size: 5.2 KB
Line 
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
12const 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
22const 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}
27const double TOWER_THETA[ntower] = {
281.04221324479 , 1.24151823936 , 1.4789296564 , 1.76172836867 , 2.09858297042 , 2.49981191976 , 2.97769357253 , 3.54683172517 ,
294.22458468545 , 5.03156565222 , 5.99222070913 , 6.50323511476 , 8.08260215014 , 9.38520669791 , 11.2029938559 , 13.0015703243 ,
3014.7731659079 , 16.5174067026 , 18.2267592981 , 19.9103474053 , 21.6789816306 , 23.5965023504 , 25.6731077732 , 27.9190341722 ,
3130.3443463769 , 32.9586699802 , 35.7708584993 , 38.7885912317 , 42.017901925 , 45.4626450521 , 49.1239157061 , 52.9994507062 ,
3257.0830516071 , 61.3640831827 , 65.8271109013 , 70.4517445074 , 75.2127486134 , 80.0804628398 , 85.02154355, 90
33};
34
35class 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
10110 30.0 -1.19999982651 14
10211 33.524 -1.10000635195 15
10312 36.822 -1.00361552815 16
10413 40.261 -0.916007799535 17
10514 43.614 -0.822472442947 18
10615 47.436 -0.72264587494 19
10716 51.79 -0.616250691646 20
10817 56.735 -0.503273260393 21
10918 62.31 -0.384075299436 22
11019 68.516 -0.259479460739 23
11120 75.297 -0.130817437415 24
11221 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
12710 30.0 -1.19999982651 37
12811 33.524 -1.10000635195 36
12912 36.822 -1.00361552815 35
13013 40.261 -0.916007799535 34
13114 43.614 -0.822472442947 33
13215 47.436 -0.72264587494 32
13316 51.79 -0.616250691646 31
13417 56.735 -0.503273260393 30
13518 62.31 -0.384075299436 29
13619 68.516 -0.259479460739 28
13720 75.297 -0.130817437415 27
13821 82.526 1.11022302463e-16 26
139*****/
140
141#endif
142
Note: See TracBrowser for help on using the repository browser.