Fork me on GitHub

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

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

new version

File size: 6.2 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#include <cmath>
8
9#ifndef M_PI
10#define M_PI 3.141592653589793238462643383279502884197
11#endif
12
13const double pi = acos(-1);
14
15/* // CDF data : 22 towers. step=2.7° at the beginning, and after, it changes
16const unsigned int ntower = 22;
17const 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°
18 33.524, 36.822, 40.261, 43.614, 47.436, 51.790, 56.735, 62.310, 68.516, 75.297, 82.526, 90.000 };
19const couble tower_eta_edges[ntower+1] = {
20 0.0, 0.130817437415, 0.259479460739, 0.384075299436, 0.503273260393, 0.616250691646, 0.72264587494, 0.822472442947,
21 0.916007799535, 1.00361552815, 1.10000635195, 1.19999982651, 1.31695789692, 1.41531379676, 1.52309848418, 1.64260787639,
22 1.77704423284, 1.93106912741, 2.1118548488, 2.33129451223, 2.61134904017, 3.00008274261, 3.64253335732 };
23const int tower_dphi[ntower] = { // list of the tower size in phi (in degrees)
24 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 15,
25 15, 15, 15, 15, 15, 7.5, 7.5 7.5,
26 7.5, 7.5, 7.5, 7.5, 7.5, 7.5 };
27*/
28
29// CMS data
30const unsigned int ntower = 41;
31const 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
32 0., // lower limit of the most central tower
33 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,
34 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,
35 4.350, 4.525,
36 4.700, // lower limit of the most forward tower
37 5.000}; // higher limit of the most forward tower
38const double tower_dphi[ntower] = { // list of the tower size in phi (in degrees)
39 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
40 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
41 20,20 };
42
43
44class CalTower
45{
46 public:
47 double Et,eta,phi;
48 int iEta,iPhi;
49
50 CalTower(): Et(0), eta(0), phi(0), iEta(-1), iPhi(-1) {}
51
52 CalTower(const double Et0, const double eta0, const double phi0): Et(Et0), eta(eta0), phi(phi0)
53 {
54 if (fabs(eta) > tower_eta_edges[ntower]) {iEta = -1; iPhi = -1; } // outside the detector
55 else {
56 const unsigned int nn = ntower*2;
57 double all_towers[nn];
58 unsigned int i =0;
59 for(unsigned int j= ntower-1; j>=0; j++, i++) all_towers[i] = -tower_eta_edges[j];
60 for(unsigned int j= 1; j <ntower+1; j++, i++) all_towers[i] = tower_eta_edges[j];
61 for(i = 0; i< nn; i++) if(eta < all_towers[i]) iEta=i;
62
63 for(unsigned int j=0; j<ntower; j++) {
64 int wedge = int(360./tower_dphi[i]);
65 iPhi = int(phi/(2.*pi)* wedge)%wedge;
66 }
67 }
68
69/* if(fabs(eta) < pseudorapidity(TOWER_THETA[0])) { // |eta| < 3.64
70 if(eta <= 0){ // central particle, but negative eta
71 for(unsigned int i = 0; i < ntower-1; i++)
72 if(eta < pseudorapidity(180 - TOWER_THETA[i + 1])){ // eta < -3 ; -2.61 ; ... ; 0
73 iEta = 4 + i; // <-- pourquio on commence à 4 ????
74 break;
75 }
76 } // central particle but negative eta
77 else{ // central particle but positive eta
78 for(unsigned int i = 0; i < ntower-1; i++)
79 if(-eta < pseudorapidity(180 - TOWER_THETA[i + 1])){ // eta > 3 ; 2.61 ; ... ; 0
80 iEta = 5+ 2*(ntower-2) - i; //CDF iEta = 47 - i;
81 break;
82 }
83 } // central particle but positive eta
84 if( (iEta >= 8 && iEta < 14) || (iEta >= 38 && iEta < 44) )
85 iPhi = int(phi/(2*pi)*48)%48;
86 else
87 iPhi = int(phi/(2*pi)*24)%24;
88 }
89 else{ // particle beyond detector reach :
90 iEta = -1;
91 iPhi = -1;
92 }
93*/
94 }
95
96 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) {}
97
98 CalTower(const CalTower& c): Et(c.Et), eta(c.eta), phi(c.phi), iEta(c.iEta), iPhi(c.iPhi) {}
99
100 bool isEqual(const CalTower& c) {
101 return Et == c.Et && eta == c.eta && phi == c.phi && iEta == c.iEta && iPhi == c.iPhi;
102 }
103
104/* // converts theta angle [degrees] into pseudorapidity
105 double pseudorapidity(const double theta) {
106 return -log(tan( (theta/2.) * (pi/180.) ));
107 }*/
108
109};
110
111/*****
112 e.g. CDF
113 iEta==4 si -3.642 < eta < -3.000
114 iEta==47 si 3.000 < eta < 3.642
115 iEta==-1 si eta < -3.642 ou si eta > 3.642
116
117 i theta pseudorapidity iEta
118--------------------------------------
119 0 3.0 -3.00008274261 4
120 1 5.7 -2.61134904017 5
121 2 8.4 -2.33129451223 6
122 3 11.1 -2.1118548488 7
123 4 13.8 -1.93106912741 8
124 5 16.5 -1.77704423284 9
125 6 19.2 -1.64260787639 10
126 7 21.9 -1.52309848418 11
127 8 24.6 -1.41531379676 12
128 9 27.3 -1.31695789692 13
12910 30.0 -1.19999982651 14
13011 33.524 -1.10000635195 15
13112 36.822 -1.00361552815 16
13213 40.261 -0.916007799535 17
13314 43.614 -0.822472442947 18
13415 47.436 -0.72264587494 19
13516 51.79 -0.616250691646 20
13617 56.735 -0.503273260393 21
13718 62.31 -0.384075299436 22
13819 68.516 -0.259479460739 23
13920 75.297 -0.130817437415 24
14021 82.526 1.11022302463e-16 25
141
142
143 i theta pseudorapidity iEta
144--------------------------------------
145 0 3.0 3.00008274261 47
146 1 5.7 2.61134904017 46
147 2 8.4 2.33129451223 45
148 3 11.1 2.1118548488 44
149 4 13.8 1.93106912741 43
150 5 16.5 1.77704423284 42
151 6 19.2 1.64260787639 41
152 7 21.9 1.52309848418 40
153 8 24.6 1.41531379676 39
154 9 27.3 1.31695789692 38
15510 30.0 1.19999982651 37
15611 33.524 1.10000635195 36
15712 36.822 1.00361552815 35
15813 40.261 0.916007799535 34
15914 43.614 0.822472442947 33
16015 47.436 0.72264587494 32
16116 51.79 0.616250691646 31
16217 56.735 0.503273260393 30
16318 62.31 0.384075299436 29
16419 68.516 0.259479460739 28
16520 75.297 0.130817437415 27
16621 82.526 1.1102230246e-16 26
167*****/
168
169#endif
170
Note: See TracBrowser for help on using the repository browser.