ATLAS Offline Software
Loading...
Searching...
No Matches
PixelDetectorDC1DC2.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7#include "Identifier/Identifier.h"
9#include "GeoModelKernel/GeoDefinitions.h"
10#include "GaudiKernel/SystemOfUnits.h"
11#include "RDBAccessSvc/IRDBRecord.h" //IRDBRecord used in code in the header
13#include "RDBAccessSvc/IRDBAccessSvc.h" //for IRDBRecordset_ptr typedef
14#include "GeoModelKernel/GeoVPhysVol.h"
15#include <string_view>
16#include <string>
17#include <vector>
18
19
21class StoreGateSvc;
22class PixelID;
23
24namespace InDetDD {
26 class SiDetectorDesign;
27 class SiCommonItems;
28}
29
30
31
32namespace PixelGeoDC2 {
33
35//
36// This is the base class for all the pieces of the Pixel detector.
37//
38//
39#ifndef GEOVPIXELFACTORY_H
40#define GEOVPIXELFACTORY_H
41
42
43
59
60
61#endif
62
63
64#ifndef GEOPIXELBARREL_H
65#define GEOPIXELBARREL_H
66
67
68
70 public:
72 virtual GeoVPhysVol* Build() override;
73};
74
75#endif
76#ifndef GEOPIXELCABLE_H
77#define GEOPIXELCABLE_H
78
79
81 public:
86 virtual GeoVPhysVol* Build() override;
87 double Thickness() const;
88 double Length();
89 void SetModuleNumber(int moduleNumber) {m_moduleNumber = moduleNumber;}
91 private:
92 //
93 // ModuleNumber is going from 0 to Numberofmodules/2+1 for symmetry...
94 // 0 is the central module, 6 is the one to the left/right
96};
97
98#endif
99#ifndef GEOPIXELCHIP_H
100#define GEOPIXELCHIP_H
101
102//#include "GeoVPixelFactory.h"
103
105 public:
107 virtual GeoVPhysVol* Build() override;
108};
109
110#endif
111
112#ifndef GEOPIXELDISK_H
113#define GEOPIXELDISK_H
114
115
117 public:
120 GeoPixelDisk (const GeoPixelDisk&) = delete;
122 virtual ~GeoPixelDisk() = default;
123 virtual GeoVPhysVol* Build() override;
124 double Thickness();
125 double RMax();
126 double RMin();
127 private:
128 GeoIntrusivePtr<GeoLogVol> m_theDisk{};
129 int getPhiId();
130};
131
132#endif
133
134#ifndef GEOPIXELDISKSUPPORTS_H
135#define GEOPIXELDISKSUPPORTS_H
136
137
139 public:
142 virtual GeoVPhysVol* Build() override;
143 int NCylinders(){return m_rmin.size();}
144 void SetCylinder(int n) {m_nframe = n;}
145 double ZPos() {return m_zpos[m_nframe];}
146 private:
147 std::vector<double> m_rmin,m_rmax,m_halflength,m_zpos;
148 std::vector<std::string> m_material;
149 int m_nframe{0};
150
151};
152
153#endif
154
155#ifndef GEOPIXELECCABLE_H
156#define GEOPIXELECCABLE_H
157
158
160 public:
165 virtual GeoVPhysVol* Build() override;
166 virtual ~GeoPixelECCable() = default;
167 private:
168 GeoIntrusivePtr<GeoLogVol> m_theECCable;
169};
170
171#endif
172
173#ifndef GEOPIXELENDCAP_H
174#define GEOPIXELENDCAP_H
175
176
178 public:
180 virtual GeoVPhysVol* Build() override;
181};
182
183#endif
184
185#ifndef GEOPIXELENVELOPE_H
186#define GEOPIXELENVELOPE_H
187
188
190 public:
192 virtual GeoVPhysVol* Build() override;
193};
194
195#endif
196
197#ifndef GEOPIXELHYBRID_H
198#define GEOPIXELHYBRID_H
199
200
202 public:
204 virtual GeoVPhysVol* Build() override;
205};
206
207#endif
208
209#ifndef GEOPIXELLADDER_H
210#define GEOPIXELLADDER_H
211
213
215 public:
218 GeoPixelSiCrystal& theSensor);
221 virtual ~GeoPixelLadder() = default;
222 virtual GeoVPhysVol* Build() override;
223 double Thickness();
224 private:
225 GeoIntrusivePtr<GeoLogVol> m_theLadder ;
227};
228
229#endif
230
231#ifndef GEOPIXELLADDERSTRUCT_H
232#define GEOPIXELLADDERSTRUCT_H
233
234
235
237 public:
239 virtual GeoVPhysVol* Build() override;
240};
241
242#endif
243
244#ifndef GEOPIXELLAYER_H
245#define GEOPIXELLAYER_h
246
247
249 public:
251 virtual GeoVPhysVol* Build() override;
252};
253
254#endif
255
256#ifndef GEOPIXELMODULE_H
257#define GEOPIXELMODULE_H
258
260
262 public:
265 GeoPixelSiCrystal &theSensor);
268 virtual ~GeoPixelModule() = default;
269 virtual GeoVPhysVol* Build() override;
270 double Thickness();
271 double Width();
272 double Length();
274 private:
275 GeoIntrusivePtr<GeoLogVol> m_theModule;
278};
279
280#endif
281
282#ifndef GEOPIXELSERVICES_H
283#define GEOPIXELSERVICES_H
284
286 public:
289 const std::string&);
290 virtual GeoVPhysVol* Build() override;
291 int NCylinders(){return m_rmin.size();}
292 void SetCylinder(int n) {m_nframe = n;}
293 double ZPos() {return m_zpos[m_nframe];}
294 void initialize(const std::string&);
295 private:
296 std::vector<double> m_rmin,m_rmax,m_halflength,m_zpos;
297 std::vector<std::string> m_material;
298 std::string m_zone;
299 int m_nframe{0};
300
301
302};
303
304#endif
305
306#ifndef GEOPIXELSICRYSTAL_H
307#define GEOPIXELSICRYSTAL_H
308
309
310
312 public:
315 bool isBLayer);
316 virtual GeoVPhysVol* Build() override;
317 inline Identifier getID();
318 private:
322};
323//
324// Add this method to store the ID in the factory. This is used by the
325// module factory to pass it to the alignment class.
326//
328#endif
329
330#ifndef GEOPIXELSUBDISK_H
331#define GEOPIXELSUBDISK_H
332
334
336 public:
339 GeoPixelSiCrystal &theSensor);
340 virtual ~GeoPixelSubDisk()= default;
343 virtual GeoVPhysVol* Build() override;
344 double Thickness();
345 double RMax();
346 double RMin();
347 private:
349 GeoIntrusivePtr<GeoLogVol> m_theSubDisk;
350};
351
352#endif
353
354#ifndef GEOPIXELTUBECABLES_H
355#define GEOPIXELTUBECABLES_H
356
357
359 public:
362 virtual ~GeoPixelTubeCables() = default;
365 virtual GeoVPhysVol* Build() override;
366 double Thickness();
367 private:
368 GeoIntrusivePtr<GeoLogVol> m_theBox;
369};
370
371#endif
372
373
374#ifndef PixelGeometryManager_H
375#define PixelGeometryManager_H
376
378
379
380 public:
381
383 virtual ~PixelGeometryManager();
384
385 //
386 // GET THE OTHER MANAGERS FROM STOREGATE
387 // -------------------------------------
388
389 // Get the material manager:
391
392 // PixelDetectorManager
394
395 //
396 // VERSION TAG
397 // -----------
398 virtual std::string versionTag() const = 0;
399
400 //
401 // DESIGN AND ELEMENT NAMES
402 // ------------------------
403 virtual void SetDetElementName(std::string_view)=0;
404 virtual std::string GetDetElementName()=0;
405 virtual void SetDesignName(std::string_view)=0;
406 virtual std::string GetDesignName()=0;
407
408 virtual void SetBarrelModuleName(std::string_view)=0;
409 virtual std::string GetBarrelModuleName()=0;
410 virtual void SetEndcapModuleName(std::string_view)=0;
411 virtual std::string GetEndcapModuleName()=0;
412 virtual void SetLayer0ModuleName(std::string_view)=0;
413 virtual std::string GetLayer0ModuleName()=0;
414
415 //
416 // BUILDING DEFINITIONS
417 // --------------------
418
419 // Do I want the services?
420 virtual void SetServices(bool isservice)=0;
421 virtual bool DoServices()=0;
422
423 // Make elements compatible with G3 digits
424 virtual void SetG3CompatibleDigits(bool flag)=0;
425 virtual bool G3CompatibleDigits() const=0;
426
427 // Initial layout (2nd layer missing)
428 virtual void SetInitialLayout(bool flag)=0;
429 virtual bool InitialLayout() const=0;
430
431 // DC1 Geometry. 300 um long pixels and 200 um thick sensor in B layer.
432 virtual void SetDC1Geometry(bool flag)=0;
433 virtual bool DC1Geometry() const=0;
434
435 // Control whether callbacks get registered
436 virtual void SetAlignable(bool flag)=0;
437 virtual bool Alignable() const=0;
438
439 //
440 // BUILDER HELPERS
441 // ----------------
442
443 virtual void SetEta(int eta)=0;
444 virtual void SetPhi(int phi)=0;
445 virtual int Eta()=0;
446 virtual int Phi()=0;
447
448 // What am I building?
449 virtual bool isBarrel()=0;
450 virtual bool isEndcap()=0;
451 virtual void SetBarrel()=0;
452 virtual void SetEndcap()=0;
453
454 // The layer/disk barrel/endcap can be changed by these function.
455 virtual void SetCurrentLD(int i)=0;
456 virtual int GetLD()=0;
457
458 // Which layers/disks are present?
459 virtual bool isLDPresent()=0;
460
461 // The side
462 virtual void SetPos()=0;
463 virtual void SetNeg()=0;
464 virtual int GetSide()=0;
465
466 //
467 // DETECTOR PARAMTERS
468 // ------------------
469
470
471 // Version Number, for the Barrel/EndCap
472 virtual int PixelBarrelMajorVersion()=0;
473 virtual int PixelBarrelMinorVersion()=0;
474 virtual int PixelEndcapMajorVersion()=0;
475 virtual int PixelEndcapMinorVersion()=0;
476
477 // Si Board
478 virtual double PixelBoardWidth()=0;
479 virtual double PixelBoardLength()=0;
480 virtual double PixelBoardThickness()=0;
481 virtual double PixelBoardActiveLen()=0;
482
483 // Hybrid
484 virtual double PixelHybridWidth()=0;
485 virtual double PixelHybridLength()=0;
486 virtual double PixelHybridThickness()=0;
487
488 // Fe Chips (PBRN)
489 virtual double PixelChipWidth()=0;
490 virtual double PixelChipLength()=0;
491 virtual double PixelChipGap()=0;
492 virtual double PixelChipThickness()=0;
493
494 // Disk Carbon Structure
495 virtual double PixelECCarbonRMin(std::string)=0;
496 virtual double PixelECCarbonRMax(std::string)=0;
497 virtual double PixelECCarbonThickness(std::string)=0;
498 virtual std::string PixelECCarbonMaterial(std::string)=0;
499
500 // Services
501 virtual double* PixelServiceR(std::string_view, int )=0;
502 virtual double* PixelServiceZ(std::string_view, int )=0;
503 virtual std::string PixelServiceMaterial(std::string_view, int )=0;
504 virtual int PixelServiceLD(std::string_view, int )=0;
505 virtual int PixelServiceNFrame(std::string_view)=0;
506
507 // Atlas Global volume (from ATLS)
508 virtual double GetATLSRadius()=0;
509 virtual double GetATLSRmin()=0;
510 virtual double GetATLSLength()=0;
511
512 // Pixel container (from PXBG)
513 virtual double PixelRMin()=0;
514 virtual double PixelRMax()=0;
515 virtual double PixelHalfLength()=0;
516 virtual int PixelBarrelNLayer()=0;
517
518 // Pixel Barrel (from PXBO)
519 virtual double PixelBarrelRMin()=0;
520 virtual double PixelBarrelRMax()=0;
521 virtual double PixelBarrelHalfLength()=0;
522
523 // Pixel Layers Geomtry (PXBI)
524 virtual double PixelLayerRadius()=0;
525 virtual double PixelLadderHalfLength()=0;
526 virtual double PixelLadderWidth()=0;
527 virtual double PixelLadderThickness()=0;
528 virtual double PixelLadderTilt()=0;
529 virtual int NPixelSectors()=0;
530 virtual double PixelBalcony()=0;
531 virtual int PixelNModule()=0;
532 virtual double PixelModuleDrDistance()=0;
533 virtual double PixelModuleAngle()=0;
534 virtual double PixelModulePosition(int)=0;
535 virtual double PixelModuleShiftFlag(int)=0;
536 virtual double PixelModuleAngleSign(int)=0;
537
538 // Barrel LAYER CABLES (PBAC)
539 virtual double PixelCableWidth()=0;
540 virtual double PixelCableThickness()=0;
541 virtual double PixelCableZMax()=0;
542 virtual double PixelCableZMin()=0;
543 virtual double PixelCableDeltaZ()=0;
544
545 // Pixel Endcap PXEG
546 virtual int PixelEndcapNDisk()=0;
547
548 // Pixel Endcap Container PEVO
549 virtual double PixelEndcapRMin()=0;
550 virtual double PixelEndcapRMax()=0;
551 virtual double PixelEndcapZMin()=0;
552 virtual double PixelEndcapZMax()=0;
554
555 // Pixel Disks PXEI
556 virtual double PixelDiskPosition()=0;
557 virtual double PixelECSiDz1()=0;
558 virtual double PixelECSiDz2()=0;
559 virtual double PixelDiskRMin()=0;
560 virtual int PixelECNSectors1()=0;
561 virtual int PixelECNSectors2()=0;
562
563 // Endcap CABLES (PEAC)
564 virtual double PixelECCablesRMin()=0;
565 virtual double PixelECCablesRMax()=0;
566 virtual double PixelECCablesThickness()=0;
567 virtual double PixelECCablesDistance()=0;
568
569 // Design Parameter
570 //
571 virtual double DesignRPActiveArea()=0;
572 virtual double DesignZActiveArea()=0;
573
574 virtual int DesignCircuitsPerColumn()=0;
575 virtual int DesignCircuitsPerRow()=0;
576
577 virtual int DesignCellColumnsPerCircuit(bool isBLayer)=0;
578 virtual int DesignCellRowsPerCircuit(bool isBLayer)=0;
579 virtual int DesignDiodeColumnsPerCircuit(bool isBLayer)=0;
580 virtual int DesignDiodeRowsPerCircuit(bool isBLayer)=0;
581
582 virtual double DesignPitchRP(bool isBLayer)=0;
583 virtual double DesignGapRP()=0;
584 virtual double DesignPitchZ(bool isBLayer)=0;
585 virtual double DesignGapZ()=0;
586
587 // Ganged Pixels
588 virtual int NumberOfEmptyRows()=0;
589 virtual int EmptyRows(int index)=0;
590 virtual int EmptyRowConnections(int index)=0;
591
592 //
593 // conditions stuff (probably it shouldnt be here)
594 virtual double Voltage(bool isBLayer)=0;
595 virtual double Temperature(bool isBLayer)=0;
596
597 // CommonItems for Det Elements
599 virtual const InDetDD::SiCommonItems * commonItems() const=0;
601
602 // ID helper
603 virtual const PixelID * getIdHelper()=0;
604
605};
606#endif
607
608
609#ifndef OraclePixelGeoManager_H
610#define OraclePixelGeoManager_H
611
613 private:
614 //
615 // NovaObjects: PixbGeo
616 //
629
630 //
631 // NovaObjects: PixeGeo
632 //
636 //
637 // NovaObjects: Pixbdig
638 //
643
644 // eta, phi, layer/disk, side (EC)
649
651
652 // flag to build also the services
654
655 // flag to make elements compatible with G3 digits
657
658 // flag to indicate initial layout (2nd layer and disk missing)
660
661 // flag to force B-layer to have 300um pixels and be 200um thick
663
664 // control whether callbacks get registered
666
667 // Class holding items that only one instance is needed for all detector elements.
669
670 // the det descr manager...
672
673 //the material manager
675
676 // The Transient Detector Store Service
678
679 // The name of the collections in the det store
682
683 // The design of the pixel modules.
687
688 // version tag
689 std::string m_versionTag;
690
691 private:
692
693 double CalculateThickness(double,const std::string&);
694
695 public:
696
698
699
700 //
701 // GET THE OTHER MANAGERS FROM STOREGATE
702 // -------------------------------------
703
704 // Get the material manager:
705 virtual StoredMaterialManager* getMaterialManager() override;
706
707 // PixelDetectorManager
709
710 //
711 // VERSION TAG
712 // -----------
713 virtual std::string versionTag() const override {return m_versionTag;}
714
715 //
716 // DESIGN AND ELEMENT NAMES
717 // ------------------------
718 virtual void SetDetElementName(std::string_view) override;
719 virtual std::string GetDetElementName() override;
720 virtual void SetDesignName(std::string_view) override;
721 virtual std::string GetDesignName() override;
722
723 virtual void SetBarrelModuleName(std::string_view) override;
724 virtual std::string GetBarrelModuleName() override;
725 virtual void SetEndcapModuleName(std::string_view) override;
726 virtual std::string GetEndcapModuleName() override;
727 virtual void SetLayer0ModuleName(std::string_view) override;
728 virtual std::string GetLayer0ModuleName() override;
729
730 //
731 // BUILDING DEFINITIONS
732 // --------------------
733
734 // Do I want the services?
735 virtual void SetServices(bool isservice) override {m_services = isservice;}
736 virtual bool DoServices() override;
737
738 // Make elements compatible with G3 digits
739 virtual void SetG3CompatibleDigits(bool flag) override {m_g3CompatibleDigits = flag;}
740 virtual bool G3CompatibleDigits() const override;
741
742 // Initial layout (2nd layer missing)
743 virtual void SetInitialLayout(bool flag) override {m_initialLayout = flag;}
744 virtual bool InitialLayout() const override;
745
746 // DC1 Geometry. 300 um long pixels and 200 um thick sensor in B layer.
747 virtual void SetDC1Geometry(bool flag) override {m_dc1Geometry = flag;}
748 virtual bool DC1Geometry() const override;
749
750 // Control whether callbacks get registered
751 virtual void SetAlignable(bool flag) override {m_alignable = flag;}
752 virtual bool Alignable() const override;
753
754 //
755 // BUILDER HELPERS
756 // ----------------
757
758 virtual void SetEta(int eta) override {m_eta = eta;}
759 virtual void SetPhi(int phi) override {m_phi = phi;}
760 virtual int Eta() override {return m_eta;}
761 virtual int Phi() override {return m_phi;}
762
763 // What am I building?
764 virtual bool isBarrel() override;
765 virtual bool isEndcap() override;
766 virtual void SetBarrel() override;
767 virtual void SetEndcap() override;
768
769 // The layer/disk barrel/endcap can be changed by these function.
770 virtual void SetCurrentLD(int i) override;
771 virtual int GetLD() override {return m_currentLD;}
772
773 // Which layers/disks are present?
774 virtual bool isLDPresent() override;
775
776 // The side
777 virtual void SetPos() override {m_side = 1;}
778 virtual void SetNeg() override {m_side = -1;}
779 virtual int GetSide() override {return m_side;}
780
781 //
782 // DETECTOR PARAMTERS
783 // ------------------
784
785
786 // Version Number, for the Barrel/EndCap
787 inline virtual int PixelBarrelMajorVersion() override;
788 inline virtual int PixelBarrelMinorVersion() override;
789 inline virtual int PixelEndcapMajorVersion() override;
790 inline virtual int PixelEndcapMinorVersion() override;
791
792 // Si Board
793 virtual double PixelBoardWidth() override;
794 virtual double PixelBoardLength() override;
795 virtual double PixelBoardThickness() override;
796 virtual double PixelBoardActiveLen() override;
797
798 // Hybrid
799 virtual double PixelHybridWidth() override;
800 virtual double PixelHybridLength() override;
801 virtual double PixelHybridThickness() override;
802
803 // Fe Chips (PBRN)
804 virtual double PixelChipWidth() override;
805 virtual double PixelChipLength() override;
806 virtual double PixelChipGap() override;
807 virtual double PixelChipThickness() override;
808
809 // Disk Carbon Structure
810 virtual double PixelECCarbonRMin(std::string) override;
811 virtual double PixelECCarbonRMax(std::string) override;
812 virtual double PixelECCarbonThickness(std::string) override;
813 virtual std::string PixelECCarbonMaterial(std::string) override;
814
815 // Services
816 virtual double* PixelServiceR(std::string_view, int ) override;
817 virtual double* PixelServiceZ(std::string_view, int ) override;
818 virtual std::string PixelServiceMaterial(std::string_view, int ) override;
819 virtual int PixelServiceLD(std::string_view, int ) override;
820 virtual int PixelServiceNFrame(std::string_view) override;
821
822 // Atlas Global volume (from ATLS)
823 inline virtual double GetATLSRadius() override;
824 inline virtual double GetATLSRmin() override;
825 inline virtual double GetATLSLength() override;
826
827 // Pixel container (from PXBG)
828 inline virtual double PixelRMin() override;
829 inline virtual double PixelRMax() override;
830 inline virtual double PixelHalfLength() override;
831 inline virtual int PixelBarrelNLayer() override;
832
833 // Pixel Barrel (from PXBO)
834 inline virtual double PixelBarrelRMin() override;
835 inline virtual double PixelBarrelRMax() override;
836 inline virtual double PixelBarrelHalfLength() override;
837
838 // Pixel Layers Geomtry (PXBI)
839 inline virtual double PixelLayerRadius() override;
840 inline virtual double PixelLadderHalfLength() override;
841 inline virtual double PixelLadderWidth() override;
842 virtual double PixelLadderThickness() override;
843 inline virtual double PixelLadderTilt() override;
844 inline virtual int NPixelSectors() override;
845 inline virtual double PixelBalcony() override;
846 inline virtual int PixelNModule() override;
847 inline virtual double PixelModuleDrDistance() override;
848 inline virtual double PixelModuleAngle() override;
849 inline virtual double PixelModulePosition(int) override;
850 inline virtual double PixelModuleShiftFlag(int) override;
851 inline virtual double PixelModuleAngleSign(int) override;
852
853 // Barrel LAYER CABLES (PBAC)
854 inline virtual double PixelCableWidth() override;
855 inline virtual double PixelCableThickness() override;
856 inline virtual double PixelCableZMax() override;
857 inline virtual double PixelCableZMin() override;
858 inline virtual double PixelCableDeltaZ() override;
859
860 // Pixel Endcap PXEG
861 inline int PixelEndcapNDisk() override;
862
863 // Pixel Endcap Container PEVO
864 inline virtual double PixelEndcapRMin() override;
865 inline virtual double PixelEndcapRMax() override;
866 inline virtual double PixelEndcapZMin() override;
867 inline virtual double PixelEndcapZMax() override;
868 inline virtual int PixelEndcapNSupportFrames() override;
869
870 // Pixel Disks PXEI
871 inline virtual double PixelDiskPosition() override;
872 inline virtual double PixelECSiDz1() override;
873 inline virtual double PixelECSiDz2() override;
874 inline virtual double PixelDiskRMin() override;
875 inline virtual int PixelECNSectors1() override;
876 inline virtual int PixelECNSectors2() override;
877
878 // Endcap CABLES (PEAC)
879 inline virtual double PixelECCablesRMin() override;
880 inline virtual double PixelECCablesRMax() override;
881 virtual double PixelECCablesThickness() override;
882 inline virtual double PixelECCablesDistance() override;
883
884 // Design Parameter
885 //
886 inline virtual double DesignRPActiveArea() override;
887 inline virtual double DesignZActiveArea() override;
888
889 inline virtual int DesignCircuitsPerColumn() override;
890 inline virtual int DesignCircuitsPerRow() override;
891
892 virtual int DesignCellColumnsPerCircuit(bool isBLayer) override;
893 virtual int DesignCellRowsPerCircuit(bool isBLayer) override;
894 virtual int DesignDiodeColumnsPerCircuit(bool isBLayer) override;
895 virtual int DesignDiodeRowsPerCircuit(bool isBLayer) override;
896
897 inline virtual double DesignPitchRP(bool isBLayer) override;
898 inline virtual double DesignGapRP() override;
899 inline virtual double DesignPitchZ(bool isBLayer) override;
900 inline virtual double DesignGapZ() override;
901
902 // Ganged Pixels
903 virtual int NumberOfEmptyRows() override;
904 virtual int EmptyRows(int index) override;
905 virtual int EmptyRowConnections(int index) override;
906
907 //
908 // conditions stuff (probably it shouldnt be here)
909 virtual double Voltage(bool isBLayer) override;
910 virtual double Temperature(bool isBLayer) override;
911
912 // CommonItems for Det Elements
913 virtual InDetDD::SiCommonItems * commonItems() override;
914 virtual const InDetDD::SiCommonItems * commonItems() const override;
915 virtual void setCommonItems(InDetDD::SiCommonItems * commonItems) override;
916
917 // ID helper
918 const PixelID * getIdHelper() override;
919
920};
921
922//
923// INLINE METHODS:
924//
925
926// ATLS
928{
929 return (*m_atls)[0]->getDouble("RMAX")*Gaudi::Units::cm;
930 }
931
933{
934 return (*m_atls)[0]->getDouble("RMIN")*Gaudi::Units::cm;
935}
937{
938 return (*m_atls)[0]->getDouble("ZMAX")*Gaudi::Units::cm;
939}
940
941//
942// Version of the Geometry
943//
944
945// PXPA
946int OraclePixGeoManager::PixelBarrelMajorVersion() { return static_cast<int>((*m_PixelBarrelGeneral)[0]->getDouble("VERSION"));}
948 { return static_cast<int>(((*m_PixelBarrelGeneral)[0]->getDouble("VERSION") - PixelBarrelMajorVersion())*10 + 0.5);}
949int OraclePixGeoManager::PixelEndcapMajorVersion() { return static_cast<int>((*m_PixelEndcapGeneral)[0]->getDouble("VERSION"));}
951 { return static_cast<int>(((*m_PixelEndcapGeneral)[0]->getDouble("VERSION") - PixelEndcapMajorVersion())*10 + 0.5);}
952
953// PXBG
954double OraclePixGeoManager::PixelRMin() {return (*m_PixelCommon)[0]->getDouble("RMIN")*Gaudi::Units::cm;}
955double OraclePixGeoManager::PixelRMax() {return (*m_PixelCommon)[0]->getDouble("RMAX")*Gaudi::Units::cm;}
956double OraclePixGeoManager::PixelHalfLength() {return (*m_PixelCommon)[0]->getDouble("HALFLENGTH")*Gaudi::Units::cm;}
958
959// m_PixelBarrelGeneral
960double OraclePixGeoManager::PixelBarrelRMin() {return (*m_PixelBarrelGeneral)[0]->getDouble("RMIN")*Gaudi::Units::cm;}
961double OraclePixGeoManager::PixelBarrelRMax() {return (*m_PixelBarrelGeneral)[0]->getDouble("RMAX")*Gaudi::Units::cm;}
962double OraclePixGeoManager::PixelBarrelHalfLength() {return (*m_PixelBarrelGeneral)[0]->getDouble("HALFLENGTH")*Gaudi::Units::cm;}
963
964// PXBI
966{
967 return (*m_PixelLayer)[m_currentLD]->getDouble("RLAYER")*Gaudi::Units::cm;
968}
969
971{
972 return (*m_PixelStave)[0]->getDouble("SUPPORTHLENGTH")*Gaudi::Units::cm;
973}
974
976{
977 return (*m_PixelStave)[0]->getDouble("SUPPORTWIDTH")*Gaudi::Units::cm;
978}
979
981{
982 return (*m_PixelLayer)[m_currentLD]->getDouble("STAVETILT")*Gaudi::Units::deg;
983}
985{
986 return (*m_PixelLayer)[m_currentLD]->getInt("NSECTORS");
987}
988
990{
991 return (*m_pxbi)[m_currentLD]->getDouble("DXELEB")*Gaudi::Units::cm;
992}
993
995{
996 return (*m_PixelStave)[0]->getInt("NMODULE");
997}
998
1000{
1001 return (*m_PixelStave)[0]->getDouble("MODULETILT")*Gaudi::Units::deg;
1002}
1003
1005{
1006 return (*m_PixelStave)[0]->getDouble("CENTRMODULESHIFT")*Gaudi::Units::cm;
1007}
1008
1010{
1011 return (*m_PixelStave)[0]->getDouble("MODULEDZ")*Gaudi::Units::cm*im;
1012}
1013
1014// OBSOLETE!!! TO MOVE INTO THE NEW FACTORY
1016{
1017 if(im == 0) return 1.;
1018 return 0.;
1019}
1020
1021// OBSOLETE!!! TO MOVE INTO THE NEW FACTORY
1023{
1024 if(im < 6) return 1.;
1025 if(im > 6) return -1.;
1026 return 0.;
1027}
1028
1029
1030// PBAC
1032 return (*m_PixelStave)[0]->getDouble("CABLEWIDTH")*Gaudi::Units::cm;
1033}
1034
1036 return (*m_PixelStave)[0]->getDouble("CABLETHICK")*Gaudi::Units::cm;
1037}
1038
1040 return (*m_PixelStave)[0]->getDouble("SUPPORTHLENGTH")*Gaudi::Units::cm;
1041}
1042
1044 return (*m_PixelStave)[0]->getDouble("CABLEZMIN")*Gaudi::Units::cm;
1045}
1046
1048 return (*m_PixelStave)[0]->getDouble("MODULEDZ")*Gaudi::Units::cm;
1049}
1050
1051
1052// EndCap PXEG Mistake in table name.
1054
1055// Endcap container PEVO
1056double OraclePixGeoManager::PixelEndcapRMin() {return (*m_PixelEndcapGeneral)[0]->getDouble("RMIN")*Gaudi::Units::cm;}
1057
1058double OraclePixGeoManager::PixelEndcapRMax() {return (*m_PixelEndcapGeneral)[0]->getDouble("RMAX")*Gaudi::Units::cm;}
1059
1060double OraclePixGeoManager::PixelEndcapZMin() {return (*m_PixelEndcapGeneral)[0]->getDouble("ZMIN")*Gaudi::Units::cm;}
1061
1062double OraclePixGeoManager::PixelEndcapZMax() {return (*m_PixelEndcapGeneral)[0]->getDouble("ZMAX")*Gaudi::Units::cm;}
1063
1064int OraclePixGeoManager::PixelEndcapNSupportFrames() {return (int) (*m_PixelEndcapGeneral)[0]->getDouble("NFRAME");}
1065
1066// Endcap Inner (PXEI)
1067double OraclePixGeoManager::PixelDiskPosition() {return (*m_PixelDisk)[m_currentLD]->getDouble("ZDISK")*Gaudi::Units::cm;}
1068
1069double OraclePixGeoManager::PixelDiskRMin() {return (*m_PixelDisk)[m_currentLD]->getDouble("RIDISK")*Gaudi::Units::cm;}
1070
1071double OraclePixGeoManager::PixelECSiDz1() {return (*m_PixelDisk)[m_currentLD]->getDouble("DZCOUNTER")*Gaudi::Units::cm;}
1072
1073double OraclePixGeoManager::PixelECSiDz2() {return (*m_PixelDisk)[m_currentLD]->getDouble("DZCOUNTER")*Gaudi::Units::cm;}
1074
1076
1078
1079// Endcap Cables PEAC
1081 return (*m_PixelDisk)[m_currentLD]->getDouble("RMINCABLE")*Gaudi::Units::cm;
1082}
1083
1085 return (*m_PixelDisk)[m_currentLD]->getDouble("RMAXCABLE")*Gaudi::Units::cm;
1086}
1087
1088
1090 return (*m_PixelDisk)[m_currentLD]->getDouble("ZCABLE")*Gaudi::Units::cm;
1091}
1092//
1093// Design
1094//
1095
1097 return (*m_pxbi)[0]->getDouble("DYACTIVE")*Gaudi::Units::cm;
1098}
1100 return (*m_pxbi)[0]->getDouble("DZELEB")*Gaudi::Units::cm;
1101}
1102
1104 if(isBLayer) return (*m_pxbd)[0]->getDouble("PITCHRP")*Gaudi::Units::cm;
1105 else return (*m_pxbd)[1]->getDouble("PITCHRP")*Gaudi::Units::cm;
1106}
1107
1109 double pitchZ;
1110 if(isBLayer) {
1111 if (m_dc1Geometry) { // Override NOVA
1112 pitchZ = 300 * Gaudi::Units::micrometer;
1113 } else {
1114 pitchZ = (*m_pxbd)[0]->getDouble("PITCHZ") * Gaudi::Units::cm;
1115 }
1116 } else {
1117 pitchZ = (*m_pxbd)[1]->getDouble("PITCHZ") * Gaudi::Units::cm;
1118 }
1119 return pitchZ;
1120}
1121
1123 return (*m_pdch)[0]->getDouble("GAPRP")*Gaudi::Units::cm;
1124}
1125
1127 return (*m_pdch)[0]->getDouble("GAPZ")*Gaudi::Units::cm;
1128}
1129
1130
1132 //
1133 // This should be (*m_pdch)[0]->getDouble("NRPCHIP"), but in the current
1134 // design we prefer to have one chip in the rphi direction
1135 // and define the connections for the pixels in the gap
1136 return 1;
1137}
1139 return (*m_pdch)[0]->getInt("NZCHIP");
1140}
1141
1142
1143
1144#endif
1145
1146}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Definition of the abstract IRDBAccessSvc interface.
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition of the abstract IRDBRecord interface.
Definition of the abstract IRDBRecordset interface.
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated pixel ...
Helper class to concentrate common items, such as the pointer to the IdHelper, the lorentzAngle tool ...
Base class for the detector design classes for Pixel and SCT.
virtual GeoVPhysVol * Build() override
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
void SetModuleNumber(int moduleNumber)
virtual GeoVPhysVol * Build() override
GeoPixelCable(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
virtual GeoVPhysVol * Build() override
virtual GeoVPhysVol * Build() override
GeoPixelDiskSupports(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
std::vector< std::string > m_material
virtual ~GeoPixelDisk()=default
virtual GeoVPhysVol * Build() override
GeoPixelDisk(const GeoPixelDisk &)=delete
GeoIntrusivePtr< GeoLogVol > m_theDisk
GeoPixelDisk(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
GeoPixelDisk & operator=(const GeoPixelDisk &)=delete
GeoPixelECCable(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
GeoPixelECCable & operator=(const GeoPixelECCable &)=delete
GeoPixelECCable(const GeoPixelECCable &)=delete
virtual GeoVPhysVol * Build() override
GeoIntrusivePtr< GeoLogVol > m_theECCable
virtual ~GeoPixelECCable()=default
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
virtual GeoVPhysVol * Build() override
virtual GeoVPhysVol * Build() override
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
virtual GeoVPhysVol * Build() override
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
virtual GeoVPhysVol * Build() override
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
GeoIntrusivePtr< GeoLogVol > m_theLadder
GeoPixelLadder(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoPixelSiCrystal &theSensor)
virtual ~GeoPixelLadder()=default
virtual GeoVPhysVol * Build() override
GeoPixelLadder & operator=(const GeoPixelLadder &)=delete
GeoPixelLadder(const GeoPixelLadder &)=delete
virtual GeoVPhysVol * Build() override
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
GeoIntrusivePtr< GeoLogVol > m_theModule
virtual GeoVPhysVol * Build() override
GeoPixelModule & operator=(const GeoPixelModule &)=delete
virtual ~GeoPixelModule()=default
GeoPixelModule(const GeoPixelModule &)=delete
GeoPixelModule(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoPixelSiCrystal &theSensor)
std::vector< std::string > m_material
void initialize(const std::string &)
GeoPixelServices(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, const std::string &)
virtual GeoVPhysVol * Build() override
virtual GeoVPhysVol * Build() override
GeoPixelSiCrystal(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, bool isBLayer)
const InDetDD::SiDetectorDesign * m_design
virtual GeoVPhysVol * Build() override
GeoIntrusivePtr< GeoLogVol > m_theSubDisk
GeoPixelSubDisk(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoPixelSiCrystal &theSensor)
GeoPixelSubDisk(const GeoPixelSubDisk &)=delete
virtual ~GeoPixelSubDisk()=default
GeoPixelSubDisk & operator=(const GeoPixelSubDisk &)=delete
GeoIntrusivePtr< GeoLogVol > m_theBox
GeoPixelTubeCables & operator=(const GeoPixelTubeCables &)=delete
virtual GeoVPhysVol * Build() override
GeoPixelTubeCables(const GeoPixelTubeCables &)=delete
GeoPixelTubeCables(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
virtual ~GeoPixelTubeCables()=default
StoredMaterialManager * m_mat_mgr
PixelGeometryManager * m_gmt_mgr
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
InDetDD::PixelDetectorManager * m_DDmgr
virtual GeoVPhysVol * Build()=0
virtual double DesignPitchZ(bool isBLayer) override
virtual double Voltage(bool isBLayer) override
virtual double PixelLadderThickness() override
virtual double DesignRPActiveArea() override
virtual int DesignDiodeColumnsPerCircuit(bool isBLayer) override
const PixelID * getIdHelper() override
virtual int PixelEndcapMajorVersion() override
virtual double PixelEndcapZMax() override
virtual void SetCurrentLD(int i) override
virtual double PixelChipWidth() override
virtual double PixelEndcapRMin() override
virtual double PixelCableZMax() override
virtual void SetDetElementName(std::string_view) override
virtual double GetATLSRmin() override
virtual double PixelECCablesRMin() override
virtual int DesignCircuitsPerColumn() override
virtual void SetDesignName(std::string_view) override
virtual double PixelChipLength() override
virtual double PixelCableWidth() override
virtual void SetPhi(int phi) override
virtual int PixelEndcapNSupportFrames() override
virtual std::string GetDetElementName() override
virtual void SetEndcapModuleName(std::string_view) override
virtual double PixelECSiDz1() override
virtual double GetATLSRadius() override
virtual double PixelHybridThickness() override
virtual double DesignPitchRP(bool isBLayer) override
virtual int DesignCellColumnsPerCircuit(bool isBLayer) override
virtual double PixelDiskRMin() override
virtual void SetBarrelModuleName(std::string_view) override
virtual double PixelBoardThickness() override
virtual double PixelChipThickness() override
virtual double DesignGapRP() override
virtual double PixelLadderWidth() override
virtual double PixelBoardWidth() override
virtual void setCommonItems(InDetDD::SiCommonItems *commonItems) override
virtual int DesignCircuitsPerRow() override
virtual std::string GetLayer0ModuleName() override
virtual StoredMaterialManager * getMaterialManager() override
virtual double PixelBoardLength() override
virtual int EmptyRowConnections(int index) override
virtual int PixelBarrelMajorVersion() override
virtual double PixelRMax() override
virtual std::string PixelServiceMaterial(std::string_view, int) override
virtual std::string versionTag() const override
virtual bool DC1Geometry() const override
virtual double PixelECCarbonRMax(std::string) override
virtual double PixelRMin() override
virtual std::string GetEndcapModuleName() override
virtual int PixelBarrelNLayer() override
virtual void SetEta(int eta) override
virtual double PixelHalfLength() override
virtual int PixelServiceLD(std::string_view, int) override
virtual double PixelECCarbonRMin(std::string) override
virtual double PixelCableDeltaZ() override
virtual std::string GetBarrelModuleName() override
virtual void SetDC1Geometry(bool flag) override
virtual double PixelBalcony() override
virtual int DesignCellRowsPerCircuit(bool isBLayer) override
double CalculateThickness(double, const std::string &)
virtual void SetLayer0ModuleName(std::string_view) override
virtual double * PixelServiceZ(std::string_view, int) override
virtual bool InitialLayout() const override
virtual double PixelCableThickness() override
virtual double PixelECSiDz2() override
virtual double PixelLayerRadius() override
virtual double PixelECCablesDistance() override
virtual double GetATLSLength() override
virtual double * PixelServiceR(std::string_view, int) override
virtual double PixelModuleDrDistance() override
virtual double PixelHybridLength() override
virtual void SetInitialLayout(bool flag) override
InDetDD::PixelDetectorManager * m_pDDmgr
virtual bool G3CompatibleDigits() const override
virtual double PixelCableZMin() override
virtual double PixelModuleShiftFlag(int) override
virtual double DesignGapZ() override
InDetDD::SiCommonItems * m_commonItems
virtual int PixelBarrelMinorVersion() override
virtual double PixelBarrelHalfLength() override
virtual double PixelECCarbonThickness(std::string) override
virtual double PixelModuleAngle() override
virtual double PixelBarrelRMax() override
virtual double PixelDiskPosition() override
virtual void SetG3CompatibleDigits(bool flag) override
virtual double PixelECCablesThickness() override
virtual void SetAlignable(bool flag) override
virtual double PixelModuleAngleSign(int) override
virtual double PixelBoardActiveLen() override
virtual double PixelBarrelRMin() override
virtual InDetDD::SiCommonItems * commonItems() override
virtual double PixelLadderTilt() override
virtual int EmptyRows(int index) override
virtual double Temperature(bool isBLayer) override
virtual double PixelECCablesRMax() override
virtual void SetServices(bool isservice) override
virtual double PixelHybridWidth() override
virtual std::string PixelECCarbonMaterial(std::string) override
virtual int PixelEndcapMinorVersion() override
virtual std::string GetDesignName() override
virtual InDetDD::PixelDetectorManager * GetPixelDDManager() override
virtual double PixelEndcapZMin() override
virtual int DesignDiodeRowsPerCircuit(bool isBLayer) override
virtual double PixelLadderHalfLength() override
virtual double PixelEndcapRMax() override
virtual double PixelModulePosition(int) override
virtual double DesignZActiveArea() override
virtual int PixelServiceNFrame(std::string_view) override
virtual bool Alignable() const override
virtual double * PixelServiceR(std::string_view, int)=0
virtual double PixelLadderThickness()=0
virtual double PixelECCarbonRMin(std::string)=0
virtual std::string PixelServiceMaterial(std::string_view, int)=0
virtual double PixelHybridWidth()=0
virtual InDetDD::PixelDetectorManager * GetPixelDDManager()=0
virtual int PixelEndcapNSupportFrames()=0
virtual void SetBarrelModuleName(std::string_view)=0
virtual double DesignPitchZ(bool isBLayer)=0
virtual double PixelChipLength()=0
virtual void SetPhi(int phi)=0
virtual int PixelServiceLD(std::string_view, int)=0
virtual void SetInitialLayout(bool flag)=0
virtual int PixelBarrelMajorVersion()=0
virtual double PixelBarrelRMax()=0
virtual double PixelHybridThickness()=0
virtual double PixelECCarbonThickness(std::string)=0
virtual double PixelCableThickness()=0
virtual double PixelBoardWidth()=0
virtual double * PixelServiceZ(std::string_view, int)=0
virtual double PixelBoardActiveLen()=0
virtual double PixelModuleAngle()=0
virtual std::string GetDesignName()=0
virtual void SetServices(bool isservice)=0
virtual void setCommonItems(InDetDD::SiCommonItems *commonItems)=0
virtual double PixelEndcapZMax()=0
virtual double PixelBoardLength()=0
virtual int PixelEndcapMinorVersion()=0
virtual double PixelChipWidth()=0
virtual double PixelHybridLength()=0
virtual void SetDC1Geometry(bool flag)=0
virtual void SetEndcapModuleName(std::string_view)=0
virtual double PixelChipThickness()=0
virtual double PixelECCablesRMin()=0
virtual int DesignCellColumnsPerCircuit(bool isBLayer)=0
virtual int PixelEndcapMajorVersion()=0
virtual double PixelModuleDrDistance()=0
virtual int DesignDiodeRowsPerCircuit(bool isBLayer)=0
virtual double PixelCableWidth()=0
virtual double PixelModuleAngleSign(int)=0
virtual bool InitialLayout() const =0
virtual bool G3CompatibleDigits() const =0
virtual double PixelECCablesThickness()=0
virtual double PixelCableDeltaZ()=0
virtual double GetATLSLength()=0
virtual int DesignDiodeColumnsPerCircuit(bool isBLayer)=0
virtual double PixelDiskPosition()=0
virtual bool DC1Geometry() const =0
virtual double PixelECCablesDistance()=0
virtual int EmptyRows(int index)=0
virtual std::string versionTag() const =0
virtual double PixelCableZMin()=0
virtual void SetAlignable(bool flag)=0
virtual double PixelLadderHalfLength()=0
virtual std::string GetDetElementName()=0
virtual double PixelBarrelHalfLength()=0
virtual int PixelBarrelMinorVersion()=0
virtual double DesignRPActiveArea()=0
virtual double PixelBarrelRMin()=0
virtual double PixelLadderWidth()=0
virtual int DesignCircuitsPerColumn()=0
virtual double PixelDiskRMin()=0
virtual int EmptyRowConnections(int index)=0
virtual InDetDD::SiCommonItems * commonItems()=0
virtual int DesignCellRowsPerCircuit(bool isBLayer)=0
virtual std::string PixelECCarbonMaterial(std::string)=0
virtual std::string GetEndcapModuleName()=0
virtual double PixelEndcapZMin()=0
virtual double Temperature(bool isBLayer)=0
virtual double PixelModulePosition(int)=0
virtual int PixelServiceNFrame(std::string_view)=0
virtual double PixelEndcapRMax()=0
virtual void SetG3CompatibleDigits(bool flag)=0
virtual const PixelID * getIdHelper()=0
virtual void SetDetElementName(std::string_view)=0
virtual double PixelBoardThickness()=0
virtual double Voltage(bool isBLayer)=0
virtual double GetATLSRadius()=0
virtual void SetDesignName(std::string_view)=0
virtual double PixelEndcapRMin()=0
virtual double PixelCableZMax()=0
virtual double PixelECCarbonRMax(std::string)=0
virtual void SetEta(int eta)=0
virtual double PixelECCablesRMax()=0
virtual double DesignZActiveArea()=0
virtual bool Alignable() const =0
virtual double PixelLadderTilt()=0
virtual double DesignPitchRP(bool isBLayer)=0
virtual std::string GetLayer0ModuleName()=0
virtual StoredMaterialManager * getMaterialManager()=0
virtual double PixelModuleShiftFlag(int)=0
virtual void SetCurrentLD(int i)=0
virtual const InDetDD::SiCommonItems * commonItems() const =0
virtual void SetLayer0ModuleName(std::string_view)=0
virtual double PixelHalfLength()=0
virtual double PixelLayerRadius()=0
virtual std::string GetBarrelModuleName()=0
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:69
The Athena Transient Store API.
This class holds one or more material managers and makes them storeable, under StoreGate.
Message Stream Member.
Definition index.py:1