Fork me on GitHub

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

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

iPhi not anymore always zero

File size: 5.4 KB
Line 
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
14const double pi = acos(-1);
15
16/*
17 // CDF data : 22 towers. step=2.7° at the beginning, and after, it changes
18const unsigned int ntower = 22;
19const 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 };
21const 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 };
25const 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
32const unsigned int ntower = 40;
33const 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
41const 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
46class 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
10610 30.0 -1.19999982651 14
10711 33.524 -1.10000635195 15
10812 36.822 -1.00361552815 16
10913 40.261 -0.916007799535 17
11014 43.614 -0.822472442947 18
11115 47.436 -0.72264587494 19
11216 51.79 -0.616250691646 20
11317 56.735 -0.503273260393 21
11418 62.31 -0.384075299436 22
11519 68.516 -0.259479460739 23
11620 75.297 -0.130817437415 24
11721 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
13210 30.0 1.19999982651 37
13311 33.524 1.10000635195 36
13412 36.822 1.00361552815 35
13513 40.261 0.916007799535 34
13614 43.614 0.822472442947 33
13715 47.436 0.72264587494 32
13816 51.79 0.616250691646 31
13917 56.735 0.503273260393 30
14018 62.31 0.384075299436 29
14119 68.516 0.259479460739 28
14220 75.297 0.130817437415 27
14321 82.526 1.1102230246e-16 26
144*****/
145
146#endif
147
Note: See TracBrowser for help on using the repository browser.