Fork me on GitHub

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

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

from PI to pi

File size: 5.6 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#include <iostream>
10
11/* // CDF data : 22 towers. step=2.7° at the beginning, and after, it changes
12const unsigned int ntower = 0;
13const double TOWER_THETA[ntower+1] = {0},// step=2.7°
14//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°
15// 33.524, 36.822, 40.261, 43.614, 47.436, 51.790, 56.735, 62.310, 68.516, 75.297, 82.526, 90.000 };
16const double tower_eta_edges[ntower+1] = {
17 0.0, 0.130817437415, 0.259479460739, 0.384075299436, 0.503273260393, 0.616250691646, 0.72264587494, 0.822472442947,
18 0.916007799535, 1.00361552815, 1.10000635195, 1.19999982651, 1.31695789692, 1.41531379676, 1.52309848418, 1.64260787639,
19 1.77704423284, 1.93106912741, 2.1118548488, 2.33129451223, 2.61134904017, 3.00008274261, 3.64253335732 };
20const double tower_dphi[ntower] = { // list of the tower size in phi (in degrees)
21 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 15.,
22 15., 15., 15., 15., 15., 7.5, 7.5, 7.5,
23 7.5, 7.5, 7.5, 7.5, 7.5, 7.5 };
24*/
25
26
27// CMS data
28const unsigned int ntower = 40;
29//const double tower_eta_edges[ntower+1] = {0}; // list of the edges of each tower, in eta, for eta>0, assuming a symmetric detector in eta<0
30const 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
31 0., // lower limit of the most central tower
32 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,
33 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,
34 4.350, 4.525,
35 4.700, // lower limit of the most forward tower
36 5.000}; // higher limit of the most forward tower
37
38//const double tower_dphi[ntower] = {}; // list of the tower size in phi (in degrees)
39const double tower_dphi[ntower] = { // list of the tower size in phi (in degrees)
40 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10,
41 10,10,10,10,10, 10,10,10,10,10, 10,10,10,10,10, 10,10,10,20, 20 };
42
43
44#ifndef __PI__
45#define __PI__
46const float pi = 3.14159265358979312;
47#endif
48
49class CalTower
50{
51 public:
52 double Et,eta,phi;
53 int iEta,iPhi;
54
55 CalTower(): Et(0), eta(0), phi(0), iEta(-1), iPhi(-1) {}
56
57 CalTower(const double Et0, const double eta0, const double phi0): Et(Et0), eta(eta0), phi(phi0)
58 {
59
60 if (fabs(eta) > tower_eta_edges[ntower]) {iEta = -1; iPhi = -1; } // outside the detector
61 else {
62 const unsigned int nn = ntower*2;
63 double all_towers[nn];
64 unsigned int i =0;
65 for(unsigned int j= ntower-1; i<ntower; j--,i++) { all_towers[i] = -tower_eta_edges[j];}
66 for(unsigned int j= 1; j <ntower+1; j++, i++) { all_towers[i] = tower_eta_edges[j]; }
67 for(i = 0; i< nn; i++) { if(eta < all_towers[i]) {iEta=i; break;} }
68
69 for(unsigned int j=0; j<ntower; j++) {
70 int wedge = int(360./tower_dphi[j]);
71 iPhi = int(phi/(2.*pi)* wedge)%wedge;
72 }
73 }
74 }
75
76 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) {}
77
78 CalTower(const CalTower& c): Et(c.Et), eta(c.eta), phi(c.phi), iEta(c.iEta), iPhi(c.iPhi) {}
79
80 bool isEqual(const CalTower& c) {
81 return Et == c.Et && eta == c.eta && phi == c.phi && iEta == c.iEta && iPhi == c.iPhi;
82 }
83
84// converts theta angle [degrees] into pseudorapidity
85 double pseudorapidity(const double theta) {
86 return -log(tan( (theta/2.) * (pi/180.) ));
87 }
88
89};
90
91/*****
92 e.g. CDF
93 iEta==4 si -3.642 < eta < -3.000
94 iEta==47 si 3.000 < eta < 3.642
95 iEta==-1 si eta < -3.642 ou si eta > 3.642
96
97 i theta pseudorapidity iEta
98--------------------------------------
99 0 3.0 -3.00008274261 4
100 1 5.7 -2.61134904017 5
101 2 8.4 -2.33129451223 6
102 3 11.1 -2.1118548488 7
103 4 13.8 -1.93106912741 8
104 5 16.5 -1.77704423284 9
105 6 19.2 -1.64260787639 10
106 7 21.9 -1.52309848418 11
107 8 24.6 -1.41531379676 12
108 9 27.3 -1.31695789692 13
10910 30.0 -1.19999982651 14
11011 33.524 -1.10000635195 15
11112 36.822 -1.00361552815 16
11213 40.261 -0.916007799535 17
11314 43.614 -0.822472442947 18
11415 47.436 -0.72264587494 19
11516 51.79 -0.616250691646 20
11617 56.735 -0.503273260393 21
11718 62.31 -0.384075299436 22
11819 68.516 -0.259479460739 23
11920 75.297 -0.130817437415 24
12021 82.526 1.11022302463e-16 25
121
122
123 i theta pseudorapidity iEta
124--------------------------------------
125 0 3.0 3.00008274261 47
126 1 5.7 2.61134904017 46
127 2 8.4 2.33129451223 45
128 3 11.1 2.1118548488 44
129 4 13.8 1.93106912741 43
130 5 16.5 1.77704423284 42
131 6 19.2 1.64260787639 41
132 7 21.9 1.52309848418 40
133 8 24.6 1.41531379676 39
134 9 27.3 1.31695789692 38
13510 30.0 1.19999982651 37
13611 33.524 1.10000635195 36
13712 36.822 1.00361552815 35
13813 40.261 0.916007799535 34
13914 43.614 0.822472442947 33
14015 47.436 0.72264587494 32
14116 51.79 0.616250691646 31
14217 56.735 0.503273260393 30
14318 62.31 0.384075299436 29
14419 68.516 0.259479460739 28
14520 75.297 0.130817437415 27
14621 82.526 1.1102230246e-16 26
147*****/
148
149#endif
150
Note: See TracBrowser for help on using the repository browser.