ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TestBeam
TBCaloGeometry
src
TBCaloCoordinate.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// ***************************************************************************
6
// Liquid Argon detector description package
7
// -----------------------------------------
8
//
9
//****************************************************************************
10
11
#include "
TBCaloGeometry/TBCaloCoordinate.h
"
12
13
#include "GaudiKernel/Bootstrap.h"
14
#include "Gaudi/Property.h"
15
#include "GaudiKernel/IService.h"
16
#include "GaudiKernel/IToolSvc.h"
17
#include "GaudiKernel/ISvcLocator.h"
18
#include "GaudiKernel/IMessageSvc.h"
19
#include <vector>
20
21
#include "
TBCaloConditions/ITBCaloPosTool.h
"
22
#include "
CaloGeoHelpers/CaloPhiRange.h
"
23
24
#include "
TBDetDescr/TBDetDescrManager.h
"
25
#include "
TBDetDescr/TBElement.h
"
26
#include "
TBDetDescr/TBElementID.h
"
27
28
//#include "CLHEP/Geometry/Transform3D.h"
29
#include "
GeoPrimitives/GeoPrimitives.h
"
30
#include "GaudiKernel/ThreadLocalContext.h"
31
#include <iostream>
32
#include <iomanip>
33
34
35
using
Amg::Vector3D
;
36
using
Amg::Transform3D
;
37
using
Amg::Rotation3D
;
38
using
Amg::Translation3D
;
39
using
Amg::RotationMatrix3D
;
40
41
42
TBCaloCoordinate::TBCaloCoordinate
(
const
std::string&
type
,
43
const
std::string& name,
44
const
IInterface* parent) :
45
base_class(
type
, name, parent),
46
m_table_axis_data
(0.),
m_table_axis_MC
(0.),
47
m_table_proj_data
(0.),
m_table_proj_MC
(0.),
48
m_table_eta
(0.),
49
m_calo_phi_shift
(0.),
m_calo_theta_shift
(0.),
50
m_calo_psi_shift
(0.),
m_calo_x_shift
(0.),
51
m_calo_y_shift
(0.),
m_calo_z_shift
(0.),
52
m_table_theta
(0.),
m_table_z
(0.),
m_table_delta
(0.),
53
m_table_calc_theta
(0.),
m_table_calc_x
(0.),
54
m_DBRead
(-1),
m_PoolRead
(-1),
m_runNumber
(0),
m_firstevt
(0)
55
{
56
57
// by default, assume Atlas : m_DBRead=-1, m_PoolRead=-1
58
// other clients need to include the jobOpt fragment and set
59
// what they want via the properties :
60
61
declareProperty(
"DBRead"
,
m_DBRead
);
62
declareProperty(
"PoolRead"
,
m_PoolRead
);
63
64
declareProperty(
"calo_phi_shift"
,
m_calo_phi_shift
);
65
declareProperty(
"calo_theta_shift"
,
m_calo_theta_shift
);
66
declareProperty(
"calo_psi_shift"
,
m_calo_psi_shift
);
67
declareProperty(
"calo_x_shift"
,
m_calo_x_shift
);
68
declareProperty(
"calo_y_shift"
,
m_calo_y_shift
);
69
declareProperty(
"calo_z_shift"
,
m_calo_z_shift
);
70
71
declareProperty(
"table_eta"
,
m_table_eta
);
72
73
// default values for MC, will be overwritten by Pool numbers
74
m_table_axis_MC
= 6062.;
75
m_table_proj_MC
= 1276. - 6062.;
76
77
// number taken from the note ATC-TT-IN-0001, Feb 12, 2005:
78
m_table_axis_data
= 6208.;
79
80
// number extracted from the Tiles table rotation program, S. Solodkov, Nov 2004
81
m_table_proj_data
= -3910. ;
82
83
// this will be calculated
84
m_table_calc_theta
=0.;
85
m_table_calc_x
=0.;
86
87
m_transform_calo_to_ctb
=
new
Transform3D
();
88
m_transform_ctb_to_calo
=
new
Transform3D
();
89
//m_table_rotate = new Rotate3D();
90
m_table_rotate
=
new
RotationMatrix3D
();
// uninitialized, but always assigned before use
91
m_table_shift
=
new
Translation3D
(0.,0.,0.);
92
m_postool
=0;
93
m_MCmgr
=0;
94
m_range
=
new
CaloPhiRange
;
95
}
96
97
StatusCode
98
TBCaloCoordinate::initialize
()
99
{
100
float
eta
= -1.*std::log(tan( (
float
)
101
((
m_calo_theta_shift
+
m_range
->twopi()/4.)/2.)));
102
103
ATH_MSG_DEBUG
104
(
" Numbers used for Calo geometry : "
105
<<
"phi="
<<
m_calo_phi_shift
<<
" theta="
106
<<
m_calo_theta_shift
<<
" (=> deta="
<<
eta
<<
") psi="
107
<<
m_calo_psi_shift
<<
" x,y,z= "
108
<<
m_calo_x_shift
<<
" "
109
<<
m_calo_y_shift
<<
" "
110
<<
m_calo_z_shift
);
111
112
// For global Calo position build HepTransforms according to
113
// jobOpt parameters :
114
115
m_rotz_extra_calo_to_ctb
=
Amg::AngleAxis3D
(
m_calo_phi_shift
,
Amg::Vector3D
(0.,0.,1.));
116
m_roty_extra_calo_to_ctb
=
Amg::AngleAxis3D
(
m_calo_theta_shift
,
Amg::Vector3D
(0.,1.,0.));
117
m_rotx_extra_calo_to_ctb
=
Amg::AngleAxis3D
(
m_calo_psi_shift
,
Amg::Vector3D
(0.,0.,1.));
118
m_translxyz_extra_calo_to_ctb
=
Translation3D
(
m_calo_x_shift
,
m_calo_y_shift
,
m_calo_z_shift
);
119
120
StatusCode
sc
= StatusCode::SUCCESS;
121
return
sc
;
122
}
123
124
TBCaloCoordinate::~TBCaloCoordinate
()
125
{
126
delete
m_transform_calo_to_ctb
;
127
delete
m_transform_ctb_to_calo
;
128
delete
m_table_rotate
;
129
delete
m_table_shift
;
130
delete
m_range
;
131
}
132
133
StatusCode
134
TBCaloCoordinate::finalize
()
135
{
136
StatusCode
sc
= StatusCode::SUCCESS;
137
return
sc
;
138
}
139
140
void
141
TBCaloCoordinate::ctb_to_local
(
Vector3D
& pt_ctb,
142
Vector3D
& pt_local)
143
{
144
read_table_position
();
145
pt_local = (*m_transform_ctb_to_calo)*pt_ctb;
146
}
147
148
void
149
TBCaloCoordinate::local_to_ctb
(
Vector3D
& pt_local,
150
Vector3D
& pt_ctb)
151
{
152
read_table_position
();
153
pt_ctb = (*m_transform_calo_to_ctb)*pt_local;
154
}
155
156
void
157
TBCaloCoordinate::ctb_to_local
(
double
& x_ctb,
double
& y_ctb,
double
& z_ctb,
158
double
& x_local,
double
& y_local,
double
& z_local)
159
{
160
Vector3D
pt_ctb(x_ctb,y_ctb,z_ctb);
161
Vector3D
pt_local(0.,0.,0.);
162
163
ctb_to_local
(pt_ctb,pt_local);
164
165
x_local = pt_local.x();
166
y_local = pt_local.y();
167
z_local = pt_local.z();
168
169
//log << MSG::DEBUG << "ctb : " << x_ctb << " " << y_ctb << " "
170
// << z_ctb << " " << endmsg;
171
//log << MSG::DEBUG << " ==> local : " << x_local << " " << y_local << " "
172
// << z_local << " " << endmsg;
173
}
174
175
void
176
TBCaloCoordinate::local_to_ctb
(
double
& x_local,
double
& y_local,
double
& z_local,
177
double
& x_ctb,
double
& y_ctb,
double
& z_ctb)
178
{
179
Vector3D
pt_local(x_local,y_local,z_local);
180
Vector3D
pt_ctb(0.,0.,0.);
181
182
local_to_ctb
(pt_local,pt_ctb);
183
184
x_ctb = pt_ctb.x();
185
y_ctb = pt_ctb.y();
186
z_ctb = pt_ctb.z();
187
188
//log << MSG::DEBUG << " local : " << x_local << " " << y_local << " "
189
// << z_local << " " << endmsg;
190
//log << MSG::DEBUG << " ==> ctb : " << x_ctb << " " << y_ctb << " "
191
// << z_ctb << " " << endmsg;
192
}
193
194
double
195
TBCaloCoordinate::beam_local_eta
()
196
{
197
read_table_position
();
198
return
m_table_eta
;
199
}
200
201
double
202
TBCaloCoordinate::beam_local_phi
()
203
{
204
read_table_position
();
205
return
m_table_delta
;
206
}
207
208
// This is where the work is done :
209
210
void
211
TBCaloCoordinate::read_table_position
()
212
{
213
if
(
m_firstevt
== 0 ) {
214
const
EventContext& ctx = Gaudi::Hive::currentContext();
215
m_runNumber
= ctx.eventID().run_number();
216
m_firstevt
= 1;
217
}
218
219
if
(
m_DBRead
>= 0 ) {
220
bool
result =
read_data_position
();
221
if
(!result)
read_user_position
();
222
}
223
else
if
(
m_PoolRead
>= 0 ) {
224
bool
result =
read_MC_position
();
225
if
(!result)
read_user_position
();
226
}
227
else
228
read_neutral_position
();
229
230
}
231
void
232
TBCaloCoordinate::read_fake_table_position
()
233
{
234
if
(
m_firstevt
== 0 )
m_firstevt
= 1;
235
236
if
(
m_DBRead
>= 0 ||
m_PoolRead
>= 0) {
237
read_user_position
();
238
}
239
else
240
read_neutral_position
();
241
}
242
243
Transform3D
*
244
TBCaloCoordinate::transform_calo_to_ctb
()
245
{
246
return
m_transform_calo_to_ctb
;
247
}
248
249
Transform3D
*
250
TBCaloCoordinate::transform_ctb_to_calo
()
251
{
252
return
m_transform_ctb_to_calo
;
253
}
254
255
void
256
TBCaloCoordinate::print_transform
(
Transform3D
& htrans)
257
{
258
RotationMatrix3D
junkrot = htrans.rotation();
259
double
alpha = Eigen::AngleAxisd(junkrot).angle();
260
Eigen::Vector3d junkaxis = Eigen::AngleAxisd(junkrot).axis();
261
262
ATH_MSG_INFO
(
""
);
263
264
ATH_MSG_INFO
(
" -> Rotation : axis x,y,z = "
<< junkaxis[
Amg::x
]
265
<<
" "
<< junkaxis[
Amg::y
] <<
" "
<< junkaxis[
Amg::z
]);
266
ATH_MSG_INFO
(
" angle = "
<< alpha );
267
268
Amg::Vector3D
junktransl = htrans.translation();
269
270
ATH_MSG_INFO
(
" -> Translation : x,y,z = "
<<
271
junktransl[
Amg::x
] <<
" "
<< junktransl[
Amg::y
] <<
" "
<< junktransl[
Amg::z
] );
272
273
ATH_MSG_INFO
(
""
);
274
275
}
276
277
bool
278
TBCaloCoordinate:: read_data_position
()
279
{
280
// -------- Access to DB tool : will try once, if fails will use the default (user)
281
282
if
(
m_DBRead
== 0 ) {
283
284
// Horrible hack : DCS update were missing for the end of the data-taking
285
if
(
m_runNumber
>= 2102455 ) {
286
m_DBRead
= -1;
287
return
false
;
288
}
289
// Horrible hack : DCS indicated infinite eta value for some runs
290
if
(
m_runNumber
> 2102164 &&
m_runNumber
<= 2102208 ) {
291
m_DBRead
= -1;
292
return
false
;
293
}
294
295
if
(!toolSvc()) {
296
ATH_MSG_ERROR
(
"Cannot find ToolSvc ??? "
);
297
m_DBRead
= -1;
298
return
false
;
299
}
300
else
{
301
StatusCode
sc
= toolSvc()->retrieveTool(
"TBCaloPosTool"
,
m_postool
);
302
if
(
sc
.isFailure()) {
303
ATH_MSG_ERROR
304
(
"Cannot get Calo table position from DB : keep default"
);
305
m_DBRead
= -1;
306
return
false
;
307
}
308
else
{
309
ATH_MSG_DEBUG
(
"Did get Calo table position from DB !"
);
310
m_DBRead
= 1;
311
}
312
}
313
}
314
315
if
(
m_DBRead
> 0 ) {
316
m_table_eta
=
m_postool
->eta();
317
m_table_theta
=
m_postool
->theta();
318
m_table_z
=
m_postool
->z();
319
m_table_delta
=
m_postool
->delta();
320
321
// Protection : if result is crasy, switch to handcoded default
322
if
(
m_table_eta < 0. || m_table_eta >
1.5 ) {
323
ATH_MSG_INFO
(
" ==> Calorimeter table position read from DB makes no sense, DB updates will be overwitten "
);
324
ATH_MSG_INFO
(
" "
);
325
m_DBRead
= 1;
326
return
false
;
327
}
328
329
if
(
m_firstevt
== 1 ) {
330
ATH_MSG_INFO
(
" --------------------------------------------------------------------- "
);
331
ATH_MSG_INFO
(
" "
);
332
ATH_MSG_INFO
(
" Calorimeter table position is read from DB : for run "
<<
m_runNumber
333
<<
" eta is = "
<<
m_table_eta
);
334
ATH_MSG_INFO
(
" "
);
335
336
337
ATH_MSG_INFO
(
" If it does not match the LAr logbook, inform LAr people "
);
338
ATH_MSG_INFO
(
" "
);
339
ATH_MSG_INFO
(
" "
);
340
ATH_MSG_INFO
(
" Other (unused) table numbers are : theta="
<<
m_table_theta
341
<<
" z="
<<
m_table_z
<<
" delta="
<<
m_table_delta
);
342
ATH_MSG_INFO
(
" --------------------------------------------------------------------- "
);
343
344
m_firstevt
= 2;
345
}
346
}
347
348
// ------- OK, it worked : now do the work
349
350
// in Atlas, theta is the angle with the z axis, and it is
351
// given by the formula atan(exp(-m_table_eta))*2.
352
// but here, we want the angle against the y axis :
353
m_table_calc_theta
=
m_range
->twopi()/4. - atan(exp(-
m_table_eta
))*2.;
354
*
m_table_rotate
=
Amg::AngleAxis3D
(
m_table_calc_theta
,
Amg::Vector3D
(0.,1.,0.));
355
356
m_table_calc_x
=
m_table_axis_data
+
m_table_proj_data
/cosh(
m_table_eta
);
357
//*m_table_shift = TranslateX3D(m_table_calc_x);
358
*
m_table_shift
=
Translation3D
(
m_table_calc_x
*
Amg::Vector3D
(1.,0.,0.));
359
360
*
m_transform_calo_to_ctb
=
m_translxyz_extra_calo_to_ctb
*((*m_table_shift)*(
m_rotx_extra_calo_to_ctb
*((*m_table_rotate)*(
m_roty_extra_calo_to_ctb
*(
m_rotz_extra_calo_to_ctb
)))));
361
362
//print_transform( *m_transform_calo_to_ctb );
363
364
*
m_transform_ctb_to_calo
=
m_transform_calo_to_ctb
->inverse();
365
366
ATH_MSG_DEBUG
(
"Calculated table position is : "
);
367
ATH_MSG_DEBUG
(
" angle against y axis = "
368
<<
m_table_calc_theta
);
369
ATH_MSG_DEBUG
(
" x shift = "
<<
m_table_calc_x
);
370
371
ATH_MSG_DEBUG
(
" Final corresponding Moovement : "
);
372
//print_transform( *m_transform_calo_to_ctb );
373
374
return
true
;
375
}
376
377
bool
378
TBCaloCoordinate:: read_MC_position
()
379
{
380
if
(!
m_MCmgr
) {
381
ATH_MSG_INFO
(
"Retreiving TBDetDescrManager"
);
382
383
// get the manager used for simulation :
384
385
ATH_CHECK
( detStore()->retrieve(
m_MCmgr
),
false
);
386
}
387
388
ATH_MSG_DEBUG
(
" found TBDetDescrManager "
);
389
390
TBElement
LArTileMother =
m_MCmgr
->getElement(
TBElementID::CALO
);
391
if
(LArTileMother.
id
() ==
TBElementID::Unknown
)
return
false
;
392
393
ATH_MSG_DEBUG
(
" found CALO envelope "
);
394
395
// ------- OK, now do the work :
396
397
Vector3D
pos = LArTileMother.
position
();
398
*
m_table_shift
=
Translation3D
(pos.x(),pos.y(),pos.z());
399
400
// FIXME : rotation has the wrong sign !
401
*
m_table_rotate
= (LArTileMother.
rotation
()).inverse();
402
403
*
m_transform_calo_to_ctb
= (*m_table_shift)*(*m_table_rotate);
404
405
// Extract m_table_eta
406
// Not completely satisfactory : it's wrong if the calorimeter is rotated
407
// around z and/or x in addition to y (it's not supposed
408
// to be the case in MC but still ...)
409
//float angle = m_transform_calo_to_ctb->getRotation().delta();
410
float
angle
= Eigen::AngleAxisd(
m_transform_calo_to_ctb
->rotation()).angle();
411
m_table_eta
= -1.*std::log(tan((
float
) (
m_range
->twopi()/4. -
angle
)/2.));
412
413
if
(
m_table_eta<0. || m_table_eta >
1.5) {
414
ATH_MSG_INFO
(
" m_table_eta is not in [0,1.5] -> will set it to 0. "
);
415
m_table_eta
= 0.;
416
}
417
418
//log << MSG::DEBUG << " Enveloppe position is read from Pool, and is : "
419
// << endmsg;
420
//print_transform( *m_transform_calo_to_ctb );
421
422
*
m_transform_ctb_to_calo
=
m_transform_calo_to_ctb
->inverse();
423
424
return
true
;
425
}
426
427
void
428
TBCaloCoordinate:: read_user_position
()
429
{
430
// This is a fall back solution if numbers are not found anywhere else
431
// Note that the hypothesis is that it is DATA
432
433
// do the work once :
434
//if (m_firstevt > 1 ) return;
435
436
// default :
437
m_table_eta
= 0.45;
438
439
// Horrible hack : DCS indicated infinite eta for some periods
440
if
(
m_runNumber
>= 2102181 &&
m_runNumber
< 2102208 )
m_table_eta
= 0.55;
441
if
(
m_runNumber
== 2102208 )
m_table_eta
= 0.42;
442
443
// Horrible hack : DCS update were missing for the end of the data-taking
444
if
(
m_runNumber
>= 2102455 &&
m_runNumber
< 2102470 )
m_table_eta
= 0.1;
445
if
(
m_runNumber
>= 2102470 &&
m_runNumber
< 2102478 )
m_table_eta
= 0.2;
446
if
(
m_runNumber
>= 2102478 &&
m_runNumber
< 2102488 )
m_table_eta
= 0.3;
447
if
(
m_runNumber
>= 2102488 &&
m_runNumber
< 2102498 )
m_table_eta
= 0.4;
448
if
(
m_runNumber
>= 2102498 &&
m_runNumber
< 2102512 )
m_table_eta
= 0.5;
449
if
(
m_runNumber
>= 2102512 &&
m_runNumber
< 2102530 )
m_table_eta
= 0.7;
450
if
(
m_runNumber
>= 2102530 &&
m_runNumber
< 2102758 )
m_table_eta
= 0.6;
451
452
if
(
m_runNumber
>= 2102758 &&
m_runNumber
< 2102903 )
m_table_eta
= 0.55;
453
if
(
m_runNumber
>= 2102903 &&
m_runNumber
< 2102936 )
m_table_eta
= 0.5;
454
if
(
m_runNumber
>= 2102936 &&
m_runNumber
< 2102953 )
m_table_eta
= 0.3;
455
if
(
m_runNumber
>= 2102953 &&
m_runNumber
< 2102980 )
m_table_eta
= 0.4;
456
if
(
m_runNumber
>= 2102980 )
m_table_eta
= 0.3;
457
458
ATH_MSG_DEBUG
(
" --------------------------------------------------------------------- "
);
459
ATH_MSG_DEBUG
(
" "
);
460
ATH_MSG_DEBUG
(
" Calorimeter table DCS either OFF of not used, position is hardcoded : for run "
461
<<
m_runNumber
<<
" eta is = "
<<
m_table_eta
);
462
ATH_MSG_DEBUG
(
" "
);
463
ATH_MSG_DEBUG
(
" If it does not match the LAr logbook, inform LAr people "
);
464
ATH_MSG_DEBUG
(
" "
);
465
ATH_MSG_DEBUG
(
" --------------------------------------------------------------------- "
);
466
467
m_table_calc_theta
=
m_range
->twopi()/4. - atan(exp(-
m_table_eta
))*2.;
468
469
if
(
m_DBRead
>= 0)
470
m_table_calc_x
=
m_table_axis_data
+
m_table_proj_data
/cosh(
m_table_eta
);
471
else
472
m_table_calc_x
=
m_table_axis_MC
+
m_table_proj_MC
/cosh(
m_table_eta
);
473
474
*
m_table_rotate
=
Amg::AngleAxis3D
(
m_table_calc_theta
,
Amg::Vector3D
(0.,1.,0.));
475
//*m_table_shift = TranslateX3D(m_table_calc_x);
476
*
m_table_shift
=
Translation3D
(
m_table_calc_x
*
Amg::Vector3D
(1.,0.,0.));
477
478
*
m_transform_calo_to_ctb
=
m_translxyz_extra_calo_to_ctb
*((*m_table_shift)*(
m_rotx_extra_calo_to_ctb
*((*m_table_rotate)*(
m_roty_extra_calo_to_ctb
*(
m_rotz_extra_calo_to_ctb
)))));
479
480
//print_transform( *m_transform_calo_to_ctb );
481
482
*
m_transform_ctb_to_calo
=
m_transform_calo_to_ctb
->inverse();
483
484
ATH_MSG_DEBUG
(
" Moovement defined by hardcoded numbers : eta was set to "
485
<<
m_table_eta
);
486
487
ATH_MSG_DEBUG
(
"Calculated table position is : "
);
488
ATH_MSG_DEBUG
(
" angle against y axis = "
489
<<
m_table_calc_theta
);
490
491
m_firstevt
= 2;
492
493
//log << MSG::DEBUG << " x shift = " << m_table_calc_x << endmsg;
494
//print_transform( *m_transform_calo_to_ctb );
495
496
}
497
498
void
499
TBCaloCoordinate:: read_neutral_position
()
500
{
501
// do the work once :
502
if
(
m_firstevt
> 1 )
return
;
503
504
m_table_calc_theta
= 0.;
505
m_table_calc_x
= 0;
506
507
*
m_table_rotate
=
Amg::AngleAxis3D
(
m_table_calc_theta
,
Amg::Vector3D
(0.,1.,0.));
508
//*m_table_shift = TranslateX3D(m_table_calc_x);
509
*
m_table_shift
=
Translation3D
(
m_table_calc_x
*
Amg::Vector3D
(1.,0.,0.));
510
*
m_transform_calo_to_ctb
= (*m_table_shift)*(*m_table_rotate);
511
*
m_transform_ctb_to_calo
=
m_transform_calo_to_ctb
->inverse();
512
513
m_firstevt
= 2;
514
515
ATH_MSG_DEBUG
(
" Neutral Moovement : "
);
516
//print_transform( *m_transform_calo_to_ctb );
517
518
}
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CaloPhiRange.h
CaloPhiRange class declaration.
GeoPrimitives.h
ITBCaloPosTool.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
TBCaloCoordinate.h
TBDetDescrManager.h
TBElementID.h
TBElement.h
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition
TRTDetectorFactory_Full.cxx:71
CaloPhiRange
This class defines the phi convention for Calorimeters.
Definition
CaloPhiRange.h:28
TBCaloCoordinate::m_calo_y_shift
double m_calo_y_shift
Definition
TBCaloCoordinate.h:147
TBCaloCoordinate::m_table_eta
double m_table_eta
Definition
TBCaloCoordinate.h:139
TBCaloCoordinate::m_PoolRead
int m_PoolRead
Definition
TBCaloCoordinate.h:160
TBCaloCoordinate::m_table_rotate
Amg::RotationMatrix3D * m_table_rotate
Definition
TBCaloCoordinate.h:164
TBCaloCoordinate::finalize
StatusCode finalize()
Definition
TBCaloCoordinate.cxx:134
TBCaloCoordinate::m_table_delta
double m_table_delta
Definition
TBCaloCoordinate.h:153
TBCaloCoordinate::print_transform
void print_transform(Amg::Transform3D &htrans)
Definition
TBCaloCoordinate.cxx:256
TBCaloCoordinate::m_translxyz_extra_calo_to_ctb
Amg::Transform3D m_translxyz_extra_calo_to_ctb
Definition
TBCaloCoordinate.h:173
TBCaloCoordinate::beam_local_eta
double beam_local_eta()
Definition
TBCaloCoordinate.cxx:195
TBCaloCoordinate::initialize
StatusCode initialize()
Definition
TBCaloCoordinate.cxx:98
TBCaloCoordinate::m_transform_calo_to_ctb
Amg::Transform3D * m_transform_calo_to_ctb
Definition
TBCaloCoordinate.h:176
TBCaloCoordinate::ctb_to_local
void ctb_to_local(Amg::Vector3D &pt_ctb, Amg::Vector3D &pt_local)
Definition
TBCaloCoordinate.cxx:141
TBCaloCoordinate::transform_ctb_to_calo
Amg::Transform3D * transform_ctb_to_calo()
Definition
TBCaloCoordinate.cxx:250
TBCaloCoordinate::m_calo_psi_shift
double m_calo_psi_shift
Definition
TBCaloCoordinate.h:145
TBCaloCoordinate::m_table_proj_MC
double m_table_proj_MC
Definition
TBCaloCoordinate.h:135
TBCaloCoordinate::m_postool
ITBCaloPosTool * m_postool
Definition
TBCaloCoordinate.h:185
TBCaloCoordinate::m_roty_extra_calo_to_ctb
Amg::Transform3D m_roty_extra_calo_to_ctb
Definition
TBCaloCoordinate.h:171
TBCaloCoordinate::m_table_theta
double m_table_theta
Definition
TBCaloCoordinate.h:151
TBCaloCoordinate::read_table_position
virtual void read_table_position()
Definition
TBCaloCoordinate.cxx:211
TBCaloCoordinate::m_table_shift
Amg::Translation3D * m_table_shift
Definition
TBCaloCoordinate.h:166
TBCaloCoordinate::read_fake_table_position
virtual void read_fake_table_position()
Definition
TBCaloCoordinate.cxx:232
TBCaloCoordinate::m_table_axis_data
double m_table_axis_data
Definition
TBCaloCoordinate.h:131
TBCaloCoordinate::m_table_proj_data
double m_table_proj_data
Definition
TBCaloCoordinate.h:134
TBCaloCoordinate::read_user_position
void read_user_position()
Definition
TBCaloCoordinate.cxx:428
TBCaloCoordinate::m_DBRead
int m_DBRead
Definition
TBCaloCoordinate.h:159
TBCaloCoordinate::read_data_position
bool read_data_position()
Definition
TBCaloCoordinate.cxx:278
TBCaloCoordinate::transform_calo_to_ctb
Amg::Transform3D * transform_calo_to_ctb()
Definition
TBCaloCoordinate.cxx:244
TBCaloCoordinate::m_table_calc_theta
double m_table_calc_theta
Definition
TBCaloCoordinate.h:155
TBCaloCoordinate::local_to_ctb
void local_to_ctb(Amg::Vector3D &pt_local, Amg::Vector3D &pt_ctb)
Definition
TBCaloCoordinate.cxx:149
TBCaloCoordinate::m_table_z
double m_table_z
Definition
TBCaloCoordinate.h:152
TBCaloCoordinate::m_range
CaloPhiRange * m_range
Definition
TBCaloCoordinate.h:187
TBCaloCoordinate::TBCaloCoordinate
TBCaloCoordinate(const std::string &type, const std::string &name, const IInterface *parent)
Definition
TBCaloCoordinate.cxx:42
TBCaloCoordinate::m_rotx_extra_calo_to_ctb
Amg::Transform3D m_rotx_extra_calo_to_ctb
Definition
TBCaloCoordinate.h:172
TBCaloCoordinate::m_rotz_extra_calo_to_ctb
Amg::Transform3D m_rotz_extra_calo_to_ctb
Definition
TBCaloCoordinate.h:170
TBCaloCoordinate::m_transform_ctb_to_calo
Amg::Transform3D * m_transform_ctb_to_calo
Definition
TBCaloCoordinate.h:177
TBCaloCoordinate::m_table_axis_MC
double m_table_axis_MC
Definition
TBCaloCoordinate.h:132
TBCaloCoordinate::m_calo_theta_shift
double m_calo_theta_shift
Definition
TBCaloCoordinate.h:144
TBCaloCoordinate::m_MCmgr
const TBDetDescrManager * m_MCmgr
Definition
TBCaloCoordinate.h:186
TBCaloCoordinate::read_neutral_position
void read_neutral_position()
Definition
TBCaloCoordinate.cxx:499
TBCaloCoordinate::m_calo_phi_shift
double m_calo_phi_shift
Definition
TBCaloCoordinate.h:143
TBCaloCoordinate::m_firstevt
int m_firstevt
Definition
TBCaloCoordinate.h:183
TBCaloCoordinate::read_MC_position
bool read_MC_position()
Definition
TBCaloCoordinate.cxx:378
TBCaloCoordinate::m_calo_z_shift
double m_calo_z_shift
Definition
TBCaloCoordinate.h:148
TBCaloCoordinate::m_runNumber
long m_runNumber
Definition
TBCaloCoordinate.h:180
TBCaloCoordinate::m_table_calc_x
double m_table_calc_x
Definition
TBCaloCoordinate.h:156
TBCaloCoordinate::beam_local_phi
double beam_local_phi()
Definition
TBCaloCoordinate.cxx:202
TBCaloCoordinate::~TBCaloCoordinate
~TBCaloCoordinate()
Definition
TBCaloCoordinate.cxx:124
TBCaloCoordinate::m_calo_x_shift
double m_calo_x_shift
Definition
TBCaloCoordinate.h:146
TBElement
Definition
TBElement.h:20
TBElement::id
TBElementID::TBElementID id() const
Definition
TBElement.h:33
TBElement::position
Amg::Vector3D position() const
Definition
TBElement.h:35
TBElement::rotation
Amg::RotationMatrix3D rotation() const
Definition
TBElement.h:36
Amg::AngleAxis3D
Eigen::AngleAxisd AngleAxis3D
Definition
GeoPrimitives.h:45
Amg::Rotation3D
Eigen::Quaternion< double > Rotation3D
Definition
GeoPrimitives.h:43
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition
GeoPrimitives.h:49
Amg::y
@ y
Definition
GeoPrimitives.h:35
Amg::x
@ x
Definition
GeoPrimitives.h:34
Amg::z
@ z
Definition
GeoPrimitives.h:36
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition
GeoPrimitives.h:46
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition
GeoPrimitives.h:44
TBElementID::CALO
@ CALO
Definition
TBElementID.h:27
TBElementID::Unknown
@ Unknown
Definition
TBElementID.h:12
type
Generated on
for ATLAS Offline Software by
1.17.0