Fork me on GitHub

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

Last change on this file since 108 was 100, checked in by severine ovyn, 16 years ago

Remove datacard bug + CaloTowers OK

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