ATLAS Offline Software
Loading...
Searching...
No Matches
PixelLegacyManager.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5
11#include "GaudiKernel/SystemOfUnits.h"
12
13#include <sstream>
14#include <string>
15#include <cmath>
16
17
18using namespace std;
19
21 const std::string & detectorKey,
22 const std::string & detectorNode)
23 :
24 // These are for the new description of the Pixel Frame
25 m_pfba (rdbSvc->getRecordsetPtr("PFBA", detectorKey, detectorNode)),
26 m_pbba (rdbSvc->getRecordsetPtr("PBBA", detectorKey, detectorNode)),
27 m_ptba (rdbSvc->getRecordsetPtr("PTBA", detectorKey, detectorNode)),
28 m_pfec (rdbSvc->getRecordsetPtr("PFEC", detectorKey, detectorNode)),
29 m_pbec (rdbSvc->getRecordsetPtr("PBEC", detectorKey, detectorNode)),
30 m_ptec (rdbSvc->getRecordsetPtr("PTEC", detectorKey, detectorNode)),
31 m_pecn (rdbSvc->getRecordsetPtr("PECN", detectorKey, detectorNode)),
32 m_pecf (rdbSvc->getRecordsetPtr("PECF", detectorKey, detectorNode)),
33 m_pecb (rdbSvc->getRecordsetPtr("PECB", detectorKey, detectorNode)),
34 m_pect (rdbSvc->getRecordsetPtr("PECT", detectorKey, detectorNode)),
35
36 // These are for the design
37 m_pxbi (rdbSvc->getRecordsetPtr("PXBI", detectorKey, detectorNode)),
38 m_pdch (rdbSvc->getRecordsetPtr("PDCH", detectorKey, detectorNode)),
39 m_pxbd (rdbSvc->getRecordsetPtr("PXBD", detectorKey, detectorNode)),
40
41 // These are (r a detailed description of the ladders and services on ladde),
42 m_ptla (rdbSvc->getRecordsetPtr("PTLA", detectorKey, detectorNode)),
43 m_pctr (rdbSvc->getRecordsetPtr("PCTR", detectorKey, detectorNode)),
44 m_pftr (rdbSvc->getRecordsetPtr("PFTR", detectorKey, detectorNode)),
45 m_pttr (rdbSvc->getRecordsetPtr("PTTR", detectorKey, detectorNode)),
46 m_pome (rdbSvc->getRecordsetPtr("POME", detectorKey, detectorNode)),
47 m_poti (rdbSvc->getRecordsetPtr("POTI", detectorKey, detectorNode)),
48 m_pobi (rdbSvc->getRecordsetPtr("POBI", detectorKey, detectorNode)),
49 m_poai (rdbSvc->getRecordsetPtr("POAI", detectorKey, detectorNode)),
50 m_poci (rdbSvc->getRecordsetPtr("POCI", detectorKey, detectorNode)),
51 m_posi (rdbSvc->getRecordsetPtr("POSI", detectorKey, detectorNode)),
52 m_pccf (rdbSvc->getRecordsetPtr("PCCF", detectorKey, detectorNode)),
53 m_pcff (rdbSvc->getRecordsetPtr("PCFF", detectorKey, detectorNode)),
54 m_BarrelInSFrame(false),
55 m_EndcapInSFrame(false),
56 m_EndConeSFrame(false),
57 m_dc1Geometry(false)
58{
59}
60
61
63{
64 // if m_pfba exists we are using the old frame.
65 return (m_pfba->size());
66}
67
68// PixelBarrelFrame
70{
71 if (m_BarrelInSFrame) {
72 return (*m_pfba)[0]->getInt("NBOXI");
73 } else {
74 return (*m_pfec)[0]->getInt("NBOXI");
75 }
76}
77
79{
80 if (m_BarrelInSFrame) {
81 return (*m_pfba)[0]->getInt("NTRDI");
82 } else {
83 return (*m_pfec)[0]->getInt("NTRDI");
84 }
85}
86
88{
89 if (m_BarrelInSFrame) {
90 return (*m_pfba)[0]->getDouble("WIDTH1")*Gaudi::Units::cm;
91 } else {
92 return (*m_pfec)[0]->getDouble("WIDTH1")*Gaudi::Units::cm;
93 }
94}
95
97{
98 if (m_BarrelInSFrame) {
99 return (*m_pfba)[0]->getDouble("WIDTH2")*Gaudi::Units::cm;
100 } else {
101 return (*m_pfec)[0]->getDouble("WIDTH2")*Gaudi::Units::cm;
102 }
103}
104
106{
107 if (m_BarrelInSFrame) {
108 return (*m_pfba)[0]->getDouble("LENGTH")*Gaudi::Units::cm;
109 } else {
110 return (*m_pfec)[0]->getDouble("LENGTH")*Gaudi::Units::cm;
111 }
112}
113
115{
116 if (m_BarrelInSFrame) {
117 return (*m_pfba)[0]->getDouble("OFFSET")*Gaudi::Units::cm;
118 } else {
119 return (*m_pfec)[0]->getDouble("OFFSET")*Gaudi::Units::cm;
120 }
121}
122
123// PixelEndcapFrame
125{
126 return (*m_pecf)[0]->getInt("NBOXI");
127}
128
130{
131 return (*m_pecf)[0]->getInt("NTRDI");
132}
133
135{
136 return (*m_pecf)[0]->getDouble("WIDTH1")*Gaudi::Units::cm;
137}
138
140{
141 return (*m_pecf)[0]->getDouble("WIDTH2")*Gaudi::Units::cm;
142}
143
145{
146 return (*m_pecf)[0]->getDouble("LENGTH")*Gaudi::Units::cm;
147}
148
150{
151 return (*m_pecf)[0]->getDouble("OFFSET")*Gaudi::Units::cm;
152}
153
155{
156 if (m_BarrelInSFrame) {
157 return (*m_pbba)[0]->getDouble("DZ")*Gaudi::Units::cm;
158 } else {
159 if (m_EndcapInSFrame) {
160 return (*m_pecb)[0]->getDouble("DZ")*Gaudi::Units::cm;
161 } else {
162 return (*m_pbec)[0]->getDouble("DZ")*Gaudi::Units::cm;
163 }
164 }
165}
166
168{
169 if (m_BarrelInSFrame) {
170 return (*m_pbba)[0]->getDouble("DY")*Gaudi::Units::cm;
171 } else {
172 if (m_EndcapInSFrame) {
173 return (*m_pecb)[0]->getDouble("DY")*Gaudi::Units::cm;
174 } else {
175 return (*m_pbec)[0]->getDouble("DY")*Gaudi::Units::cm;
176 }
177 }
178}
179
181{
182 if (m_BarrelInSFrame) {
183 return (*m_pbba)[0]->getDouble("DX")*Gaudi::Units::cm;
184 } else {
185 if (m_EndcapInSFrame) {
186 return (*m_pecb)[0]->getDouble("DX")*Gaudi::Units::cm;
187 } else {
188 return (*m_pbec)[0]->getDouble("DX")*Gaudi::Units::cm;
189 }
190 }
191}
192
194{
195 if (m_BarrelInSFrame) {
196 return (*m_ptba)[0]->getDouble("DZ")*Gaudi::Units::cm;
197 } else {
198 if (m_EndcapInSFrame) {
199 return (*m_pect)[0]->getDouble("DZ")*Gaudi::Units::cm;
200 } else {
201 if (m_EndConeSFrame) {
202 return (*m_pecn)[0]->getDouble("DZ")*Gaudi::Units::cm;
203 } else {
204 return (*m_ptec)[0]->getDouble("DZ")*Gaudi::Units::cm;
205 }
206 }
207 }
208}
209
211{
212 if (m_BarrelInSFrame) {
213 return (*m_ptba)[0]->getDouble("DY")*Gaudi::Units::cm;
214 } else {
215 if (m_EndcapInSFrame) {
216 return (*m_pect)[0]->getDouble("DY")*Gaudi::Units::cm;
217 } else {
218 if (m_EndConeSFrame) {
219 return (*m_pecn)[0]->getDouble("DY")*Gaudi::Units::cm;
220 } else {
221 return (*m_ptec)[0]->getDouble("DY")*Gaudi::Units::cm;
222 }
223 }
224 }
225}
226
228{
229 if (m_BarrelInSFrame) {
230 return (*m_ptba)[0]->getDouble("DX1")*Gaudi::Units::cm;
231 } else {
232 if (m_EndcapInSFrame) {
233 return (*m_pect)[0]->getDouble("DX1")*Gaudi::Units::cm;
234 } else {
235 if (m_EndConeSFrame) {
236 return (*m_pecn)[0]->getDouble("DX1")*Gaudi::Units::cm;
237 } else {
238 return (*m_ptec)[0]->getDouble("DX1")*Gaudi::Units::cm;
239 }
240 }
241 }
242}
243
245{
246 if (m_BarrelInSFrame) {
247 return (*m_ptba)[0]->getDouble("DX2")*Gaudi::Units::cm;
248 } else {
249 if (m_EndcapInSFrame) {
250 return (*m_pect)[0]->getDouble("DX2")*Gaudi::Units::cm;
251 } else {
252 if (m_EndConeSFrame) {
253 return (*m_pecn)[0]->getDouble("DX2")*Gaudi::Units::cm;
254 } else {
255 return (*m_ptec)[0]->getDouble("DX2")*Gaudi::Units::cm;
256 }
257 }
258 }
259}
260
262{
263 if (m_BarrelInSFrame) {
264 return (*m_ptba)[0]->getDouble("DZDR")*Gaudi::Units::deg;
265 } else {
266 if (m_EndcapInSFrame) {
267 return (*m_pect)[0]->getDouble("DZDR")*Gaudi::Units::cm;
268 } else {
269 if (m_EndConeSFrame) {
270 return (*m_pecn)[0]->getDouble("DZDR")*Gaudi::Units::deg;
271 } else {
272 return (*m_ptec)[0]->getDouble("DZDR")*Gaudi::Units::deg;
273 }
274 }
275 }
276}
277
279{
280 return (*m_pecn)[0]->getDouble("RADIUS")*Gaudi::Units::cm;
281}
282
284{
285 return (*m_pecn)[0]->getDouble("Z")*Gaudi::Units::cm;
286}
287
289{
290 return (*m_pecn)[0]->getDouble("ANGLEX")*Gaudi::Units::deg;
291}
292
294{
295 return (*m_pecn)[0]->getDouble("ANGLEY")*Gaudi::Units::deg;
296}
297
298
300{
301 return 2 * 1.48972*Gaudi::Units::mm;
302}
303
305{
306 return 2 * (*m_pxbi)[0]->getDouble("DZLADDER")*Gaudi::Units::cm;
307}
308
313
315{
316 return 3*Gaudi::Units::mm;
317}
318
319
321{
322 return 0.099*Gaudi::Units::mm;
323}
324
326{
327 return 4*Gaudi::Units::mm;
328}
329
331{
332 return -5.8*Gaudi::Units::mm;
333}
334
336{
337 return -0.5*Gaudi::Units::mm - PixelLadderCableOffsetY();
338}
339
340
341//
342// Cable
343//
344int
346{
347 return (*m_pome)[0]->getInt("NPOCI");
348}
349
350double
352{
353 // In old code two cables were connected to middle. Correction stops them touching.
354 double correction = (index == 7) ? 0.000001*Gaudi::Units::cm : 0;
355 return ((*m_poci)[index]->getDouble("Z") - (*m_poci)[index]->getDouble("DZ")) * Gaudi::Units::cm + correction;
356}
357
358double
360{
361 // In old code two cables were connected to middle. Correction stops them touching.
362 double correction = (index == 7) ? 0.000001*Gaudi::Units::cm : 0;
363 return ((*m_poci)[index]->getDouble("Z") + (*m_poci)[index]->getDouble("DZ")) * Gaudi::Units::cm + correction;
364}
365
366double
368{
369 return (*m_poci)[index]->getDouble("DY") * Gaudi::Units::cm;
370}
371
372double
374{
375 return (*m_poci)[index]->getDouble("DX")*Gaudi::Units::cm;
376}
377
378double
380{
381 return (*m_poci)[index]->getDouble("X")*Gaudi::Units::cm;
382}
383
384
385std::string
387{
388 int label = (int)(*m_poci)[index]->getDouble("IBOX");
389 std::ostringstream o;
390 o << label;
391 return o.str();
392}
393
394
395//
397//
399{
400 return (*m_ptla)[0]->getInt("NCENT") + (*m_ptla)[0]->getInt("NEND") + (*m_ptla)[0]->getInt("NTRAP");
401}
402
403double PixelLegacyManager::PixelTMTVariable(int iPart, const std::string & varName)
404{
405 int ncent = (*m_ptla)[0]->getInt("NCENT");
406 int nend = (*m_ptla)[0]->getInt("NEND");
407 if (iPart < ncent) {
408 return (*m_pctr)[iPart]->getDouble(varName);
409 } else if (iPart < nend+ncent) {
410 return (*m_pftr)[iPart-ncent]->getDouble(varName);
411 } else {
412 return (*m_pttr)[iPart-ncent-nend]->getDouble(varName);
413 }
414}
415
417{
418 return PixelTMTVariable(iPart, "DZDR") * Gaudi::Units::deg;
419}
420
421
423{
424 return PixelTMTVariable(iPart, "X") * Gaudi::Units::cm;
425}
426
428{
429 return PixelTMTVariable(iPart, "Z") * Gaudi::Units::cm;
430}
431
433{
434 return 2 * PixelTMTVariable(iPart, "DZ") * Gaudi::Units::cm;
435}
436
438{
439 return 2 * PixelTMTVariable(iPart, "DX2") * Gaudi::Units::cm;
440}
441
443{
444 return 2 * PixelTMTVariable(iPart, "DX1") * Gaudi::Units::cm;
445}
446
448{
449 return 2 * PixelTMTVariable(iPart, "DY") * Gaudi::Units::cm;
450}
451
453{
454 double theta = PixelTMTDzdr(iPart);
455 if (theta == 0) {
456 return PixelTMTVariable(iPart, "X")*Gaudi::Units::cm + 0.25*(PixelTMTWidthX1(iPart)+PixelTMTWidthX2(iPart));
457 } else {
458 return PixelTMTVariable(iPart, "X")*Gaudi::Units::cm - 0.5*PixelTMTLength(iPart) * tan(theta) + 0.5*PixelTMTWidthX1(iPart);
459 }
460}
461
463{
464 double theta = PixelTMTDzdr(iPart);
465 if (theta == 0) {
466 return PixelTMTVariable(iPart, "X")*Gaudi::Units::cm + 0.25*(PixelTMTWidthX1(iPart)+PixelTMTWidthX2(iPart));
467 } else {
468 return PixelTMTVariable(iPart, "X")*Gaudi::Units::cm + 0.5*PixelTMTLength(iPart) * tan(theta) + 0.5*PixelTMTWidthX2(iPart);
469 }
470}
471
473{
474 return PixelTMTVariable(iPart, "Y") * Gaudi::Units::cm;
475}
476
478{
479 return PixelTMTPosZ(iPart) - 0.5*PixelTMTLength(iPart);
480}
481
483{
484 return PixelTMTPosZ(iPart) + 0.5*PixelTMTLength(iPart);
485}
486
488{
489 int ncent = (*m_ptla)[0]->getInt("NCENT");
490 int nend = (*m_ptla)[0]->getInt("NEND");
491 return (iPart >= ncent+nend);
492}
493
494//
495// Omega parameters
496//
498{
499 return (*m_poti)[2]->getDouble("X") * Gaudi::Units::cm;
500}
501
503{
504 return (*m_poti)[2]->getDouble("Y") * Gaudi::Units::cm;
505}
506
508{
509 return (*m_poti)[2]->getDouble("RMAX") * Gaudi::Units::cm;
510}
511
513{
514 return (*m_poti)[0]->getDouble("X") * Gaudi::Units::cm;
515}
516
518{
519 return (*m_poti)[0]->getDouble("Y") * Gaudi::Units::cm;
520}
521
523{
524 return (*m_poti)[0]->getDouble("RMAX") * Gaudi::Units::cm;
525}
526
528{
529 return ((*m_poti)[0]->getDouble("RMAX") - (*m_poti)[0]->getDouble("RMIN")) * Gaudi::Units::cm;
530}
531
533{
534 return 2. * (*m_poti)[0]->getDouble("DZ") * Gaudi::Units::cm;
535}
536
538{
539 return ((*m_posi)[0]->getDouble("Y") + 0.5*(*m_posi)[0]->getDouble("DY")) * Gaudi::Units::cm;
540}
541
543{
544 return ((*m_posi)[1]->getDouble("Y") - 0.5*(*m_posi)[1]->getDouble("DY")) * Gaudi::Units::cm;
545}
546
547//
548// Al Tube
549//
550
552{
553 return (*m_poti)[5]->getDouble("X") * Gaudi::Units::cm;
554}
555
557{
558 return (*m_poti)[5]->getDouble("Y") * Gaudi::Units::cm;
559}
560
562{
563 return (*m_poti)[5]->getDouble("RMAX") * Gaudi::Units::cm;
564}
565
567{
568 return (*m_poti)[3]->getDouble("X") * Gaudi::Units::cm;
569}
570
572{
573 return (*m_poti)[3]->getDouble("Y") * Gaudi::Units::cm;
574}
575
577{
578 return (*m_poti)[3]->getDouble("RMAX") * Gaudi::Units::cm;
579}
580
582{
583 return ((*m_poti)[3]->getDouble("RMAX") - (*m_poti)[3]->getDouble("RMIN")) * Gaudi::Units::cm;
584}
585
587{
588 return 2 * (*m_poti)[3]->getDouble("DZ") * Gaudi::Units::cm;
589}
590
591//
592// Glue
593//
594
599
601{
602 return ((*m_posi)[index+2]->getDouble("X") - 0.5*(*m_posi)[index+2]->getDouble("DX")) * Gaudi::Units::cm;
603}
604
606{
607 return (*m_posi)[index+2]->getDouble("DX") * Gaudi::Units::cm;
608}
609
611{
612 return ((*m_posi)[index+2]->getDouble("Y") - 0.5*(*m_posi)[index+2]->getDouble("DY")) * Gaudi::Units::cm;
613}
614
616{
617 return ((*m_posi)[index+2]->getDouble("Y") + 0.5*(*m_posi)[index+2]->getDouble("DY")) * Gaudi::Units::cm;
618}
619
621{
622 return 2 * (*m_posi)[index+2]->getDouble("DZ") * Gaudi::Units::cm;
623}
624
626{
627 return (*m_posi)[index+2]->getDouble("Z") * Gaudi::Units::cm;
628}
629
634
635//
636// Fluid
637//
638
640{
641 double dz = (*m_pcff)[index%2]->getDouble("DZ")*Gaudi::Units::cm;
642 double posz = (*m_pcff)[index%2]->getDouble("Z")*Gaudi::Units::cm;
643 return posz-dz;
644}
645
647{
648 double dz = (*m_pcff)[index%2]->getDouble("DZ")*Gaudi::Units::cm;
649 double posz = (*m_pcff)[index%2]->getDouble("Z")*Gaudi::Units::cm;
650 return posz+dz;
651}
652
654{
655 if (index < 2) {
656 return 2*(*m_pcff)[index%2]->getDouble("DX1")*Gaudi::Units::cm;
657 } else {
658 return 2*(*m_pcff)[index%2]->getDouble("DX2")*Gaudi::Units::cm;
659 }
660}
661
662
664{
665 if (index < 2) {
666 return 2*(*m_pcff)[index%2]->getDouble("DX2")*Gaudi::Units::cm;
667 } else {
668 return 2*(*m_pcff)[index%2]->getDouble("DX1")*Gaudi::Units::cm;
669 }
670}
671
673{
674 return 2*(*m_pcff)[index%2]->getDouble("DY")*Gaudi::Units::cm;
675}
676
677
679{
680 return (*m_pcff)[index%2]->getDouble("X")*Gaudi::Units::cm;
681}
682
684{
685 return (*m_pcff)[index%2]->getDouble("Y")*Gaudi::Units::cm;
686}
687
689{
690 return index;
691}
692
694{
695 return 4;
696}
697
699 return (int)(*m_pcff)[index%2]->getDouble("MAT");
700}
701
703{
704 std::string var = "ORIENT_";
705 std::ostringstream o;
706 o << phi;
707 var = var+o.str();
708 return (int)(*m_pccf)[layer]->getInt(var) - 1;
709}
710
711
712//
713// Pigtail
714//
716{
717 return (*m_poai)[0]->getDouble("DX") * Gaudi::Units::cm;
718}
719
721{
722 return -0.5*(*m_poai)[0]->getDouble("DY") * Gaudi::Units::cm;
723}
724
726{
727 return 0.5*(*m_poai)[0]->getDouble("DY") * Gaudi::Units::cm;
728}
729
731{
732 // Assume its actually the full width but in old geometry it was interpreted as a half width so we
733 // multiply by 2. This gives the flat section twice the width of the curved section which I don't think was the
734 // intention.
735 return 2*(*m_poai)[0]->getDouble("DZ") * Gaudi::Units::cm;
736}
737
739{
740 return 2*(*m_pobi)[0]->getDouble("DZ") * Gaudi::Units::cm;
741}
742
743// FIXME some weird offset
745{
746 return (*m_poai)[0]->getDouble("X") * Gaudi::Units::cm + PixelLadderConnectorOffsetX();
747}
748
750{
751 return (*m_poai)[0]->getDouble("Z") * Gaudi::Units::cm;
752}
753
755{
756 return (*m_pobi)[0]->getDouble("X") * Gaudi::Units::cm + PixelLadderConnectorOffsetX();
757}
758
760{
761 return (*m_pobi)[0]->getDouble("Y") * Gaudi::Units::cm + PixelLadderPigtailOffsetY();
762}
763
765{
766 return (*m_pobi)[0]->getDouble("RMIN") * Gaudi::Units::cm;
767}
768
770{
771 return (*m_pobi)[0]->getDouble("RMAX") * Gaudi::Units::cm;
772}
773
775{
776 return (*m_pobi)[0]->getDouble("PHI1") * Gaudi::Units::deg;
777}
778
780{
781 return (*m_pobi)[0]->getDouble("PHI2") * Gaudi::Units::deg;
782}
783
785{
786 // FIXME Check
787 return 2*(*m_posi)[9]->getDouble("DZ") * Gaudi::Units::cm;
788}
789
790//
791// Connector
792//
794{
795 return (*m_pome)[0]->getInt("NPOAI") - 1;
796}
797
799{
800 return (*m_poai)[index+1]->getDouble("DX") * Gaudi::Units::cm;
801}
802
804{
805 return (*m_poai)[index+1]->getDouble("DY") * Gaudi::Units::cm;
806}
807
809{
810 return 2*(*m_poai)[index+1]->getDouble("DZ") * Gaudi::Units::cm;
811}
812
814{
815 return (*m_poai)[index+1]->getDouble("X") * Gaudi::Units::cm + PixelLadderConnectorOffsetX();
816}
817
819{
820 return 0;
821}
822
824{
825 // same as (*m_pobi)[0]->getDouble("Z") * Gaudi::Units::cm;
826 return (*m_poai)[index+1]->getDouble("Z") * Gaudi::Units::cm;
827}
828
829
830//
831// Design
832//
833
835{
836 return (isBlayer) ? 0 : 1;
837}
838
840{
841 return (*m_pdch)[0]->getInt("NRPCHIP");
842}
843
844
846 return (*m_pdch)[0]->getInt("NZCHIP");
847}
848
850 double ActiveArea = DesignRPActiveArea();
851 double GapRP = DesignGapRP();
852 double pitchRP = DesignPitchRP(isBLayer);
853 int numTotal = static_cast<int>((ActiveArea - GapRP)/pitchRP + 0.5);
854 return numTotal / DesignNumChipsPhi();
855}
856
858 double ActiveArea = DesignZActiveArea();
859 double GapZ = DesignGapZ();
860 double pitchZ = DesignPitchZ(isBLayer);
861 int CPR = DesignCircuitsEta();
862 return static_cast<int>((ActiveArea - GapZ*CPR)/(CPR*pitchZ) + 0.5);
863}
864
865
867{
868 double ActiveArea = DesignRPActiveArea();
869 double pitchRP = DesignPitchRP(isBLayer);
870 return static_cast<int>((ActiveArea)/pitchRP + 0.5);
871}
872
874{
875 double ActiveArea = DesignRPActiveArea();
876 double pitchRP = DesignPitchRP(isBLayer);
877 return static_cast<int>((ActiveArea)/pitchRP + 0.5);
878}
879
880
882{
883 return static_cast<int>((*m_pdch)[0]->getInt("NYCONNEC"));
884}
885
886// Ganged Pixels
888{
889 return static_cast<int>((*m_pdch)[0]->getInt("NYCONNEC"));
890
891}
892
894{
895 std::ostringstream A;
896 A << "_" << index;
897 return static_cast<int>((*m_pdch)[0]->getInt("JYEMPTY"+A.str())) - 1;
898}
899
901{
902 std::ostringstream A;
903 A << "_" << index;
904 return static_cast<int>((*m_pdch)[0]->getInt("JYCONNEC"+A.str())) - 1;
905}
906
908{
909 return (*m_pxbi)[0]->getDouble("DYACTIVE")*Gaudi::Units::cm;
910
911}
912
914{
915 return (*m_pxbi)[0]->getDouble("DZELEB")*Gaudi::Units::cm;
916}
917
919{
920 int type = designType(isBLayer);
921 return (*m_pxbd)[type]->getDouble("PITCHRP")*Gaudi::Units::cm;
922}
923
924// FIXME m_dc1Geometry
926{
927 int type = designType(isBLayer);
928 double pitchZ;
929 if(isBLayer && m_dc1Geometry) {
930 // Override NOVA
931 pitchZ = 300 * Gaudi::Units::micrometer;
932 } else {
933 pitchZ = (*m_pxbd)[type]->getDouble("PITCHZ") * Gaudi::Units::cm;
934 }
935 return pitchZ;
936}
937
939{
940 return DesignPitchZ(isBLayer) + DesignGapZ()/2;
941}
942
943
945{
946 return (*m_pdch)[0]->getDouble("GAPRP")*Gaudi::Units::cm;
947}
948
950{
951 return (*m_pdch)[0]->getDouble("GAPZ")*Gaudi::Units::cm;
952}
953
Scalar phi() const
phi method
Scalar theta() const
theta method
Definition of the abstract IRDBAccessSvc interface.
Definition of the abstract IRDBRecord interface.
Definition of the abstract IRDBRecordset interface.
IRDBAccessSvc is an abstract interface to the athena service that provides the following functionalit...
int DesignNumColsPerChip(bool isBLayer)
double PixelTMTLength(int iPart)
double PixelCableWidth(int index)
double PixelConnectorWidthY(int index)
double PixelTMTBaseX1(int iPart)
double PixelOmegaGlueEndY(int index)
IRDBRecordset_ptr m_poti
IRDBRecordset_ptr m_posi
double PixelOmegaGlueThickness(int index)
double PixelFluidThick2(int index)
IRDBRecordset_ptr m_pecf
IRDBRecordset_ptr m_pcff
double PixelTMTWidthX2(int iPart)
double PixelTMTDzdr(int iPart)
int DesignDiodesEtaTotal(bool isBLayer)
double PixelConnectorPosY(int index)
double PixelTMTPosZ(int iPart)
IRDBRecordset_ptr m_pftr
double PixelCableZStart(int index)
double PixelTMTPosY(int iPart)
IRDBRecordset_ptr m_pecn
double PixelOmegaGlueStartY(int index)
double PixelConnectorPosZ(int index)
double DesignPitchZ(bool isBLayer)
int PixelFluidMatType(int index)
double PixelOmegaGluePosZ(int index)
int PixelFluidOrient(int layer, int phi)
IRDBRecordset_ptr m_pttr
IRDBRecordset_ptr m_poai
double PixelFluidZ1(int index)
double PixelConnectorWidthZ(int index)
double PixelTMTWidthY(int iPart)
double PixelConnectorWidthX(int index)
double PixelOmegaGlueLength(int index)
IRDBRecordset_ptr m_pfba
double PixelFluidX(int index)
IRDBRecordset_ptr m_pome
double PixelCableThickness(int index)
IRDBRecordset_ptr m_pctr
double PixelFluidThick1(int index)
double DesignPitchZLong(bool isBLayer)
IRDBRecordset_ptr m_ptba
IRDBRecordset_ptr m_pobi
double PixelFluidY(int index)
double DesignPitchRP(bool isBLayer)
double PixelCableZEnd(int index)
IRDBRecordset_ptr m_pdch
int PixelFluidType(int index)
int designType(bool isBlayer)
IRDBRecordset_ptr m_pecb
std::string PixelCableLabel(int index)
double PixelFluidZ2(int index)
double PixelTMTPosZ2(int iPart)
int DesignNumRowsPerChip(bool isBLayer)
int PixelOmegaGlueTypeNum(int index)
double PixelCableStackOffset(int index)
IRDBRecordset_ptr m_poci
double PixelTMTPosX(int iPart)
IRDBRecordset_ptr m_ptec
IRDBRecordset_ptr m_pbba
PixelLegacyManager(IRDBAccessSvc *rdbSvc, const std::string &detectorKey, const std::string &detectorNode)
double PixelTMTWidthX1(int iPart)
int DesignDiodesPhiTotal(bool isBLayer)
IRDBRecordset_ptr m_pxbi
IRDBRecordset_ptr m_pxbd
IRDBRecordset_ptr m_pccf
IRDBRecordset_ptr m_pbec
double PixelConnectorPosX(int index)
double PixelTMTPosZ1(int iPart)
double PixelFluidWidth(int index)
IRDBRecordset_ptr m_ptla
bool PixelTMTPerModule(int iPart)
double PixelOmegaGlueStartX(int index)
double PixelTMTVariable(int iPart, const std::string &varName)
IRDBRecordset_ptr m_pfec
IRDBRecordset_ptr m_pect
double PixelTMTBaseX2(int iPart)
int EmptyRowConnections(int index)
std::string label(const std::string &format, int i)
Definition label.h:19
Definition index.py:1
STL namespace.
hold the test vectors and ease the comparison