DD4hep  01.18
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
DetectorData.h
Go to the documentation of this file.
1 //==========================================================================
2 // AIDA Detector description implementation
3 //--------------------------------------------------------------------------
4 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
5 // All rights reserved.
6 //
7 // For the licensing terms see $DD4hepINSTALL/LICENSE.
8 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
9 //
10 // Author : F.Gaede
11 //
12 //==========================================================================
13 #ifndef DDREC_DETECTORDATA_H
14 #define DDREC_DETECTORDATA_H
15 
16 #include <map>
17 #include <bitset>
18 #include <ostream>
19 
20 #include "DD4hep/DetElement.h"
21 
22 namespace dd4hep {
23  namespace rec {
24 
34  template< class T>
35  struct StructExtension : public T {
36  StructExtension() : T() { }
37  StructExtension(const StructExtension<T>& t) : T(t) {}
38  StructExtension(const T& t) : T(t) {}
39  StructExtension(const DetElement& d) : T( *d.extension<StructExtension<T> >() ) {}
40  StructExtension(const StructExtension<T>& t, const DetElement&) : T(t) {}
43  s << *this ;
44  return s.str();
45  }
46  };
47 
48 
49 
62  double zHalf ;
64  double rMin ;
66  double rMax ;
68  double driftLength ;
70  double zMinReadout ;
72  double rMinReadout ;
74  double rMaxReadout ;
80  double padHeight ;
82  double padWidth ;
84  double maxRow ;
86  double padGap ;
87  };
89 
91 
92 
104  double zHalfShell ;
106  double gapShell ;
108  double rInnerShell ;
110  double rOuterShell ;
111 
113  double widthStrip ;
115  double lengthStrip ;
117  double pitchStrip ;
119  double angleStrip ;
120 
124  struct LayerLayout{
125 
126  // default c'tor with zero initialization
128  ladderNumber(0),
129  phi0(0),
130  sensorsPerLadder(0),
131  lengthSensor(0),
132  distanceSupport(0),
133  thicknessSupport(0),
134  offsetSupport(0),
135  widthSupport(0),
136  zHalfSupport(0),
139  offsetSensitive(0),
140  widthSensitive(0),
141  zHalfSensitive(0) {
142  }
143 
144 
147 
149  double phi0 ;
150 
154  double lengthSensor ;
155 
161  double offsetSupport ;
163  double widthSupport ;
165  double zHalfSupport ;
166 
172  double offsetSensitive ;
174  double widthSensitive ;
176  double zHalfSensitive ;
177  } ;
178 
180 
181  } ;
183 
184  std::ostream& operator<<( std::ostream& io , const ZPlanarData& d ) ;
185 
186 
187 
198 
200  double widthStrip ;
202  double lengthStrip ;
204  double pitchStrip ;
206  double angleStrip ;
207 
209  struct SensorType{
210  enum {
213  };
214  } ;
215 
219  struct LayerLayout{
220 
222  petalHalfAngle(0),
223  alphaPetal(0),
224  zPosition(0),
225  petalNumber(0),
226  sensorsPerPetal(0),
227  typeFlags(0),
228  phi0(0),
229  zOffsetSupport(0),
230  distanceSupport(0),
231  thicknessSupport(0),
234  lengthSupport(0),
235  zOffsetSensitive(0),
240  lengthSensitive(0) {
241  }
242 
244  double petalHalfAngle ;
245 
249  double alphaPetal ;
250 
252  double zPosition ;
253 
256 
259 
262 
264  double phi0 ;
265 
269  double zOffsetSupport ;
279  double lengthSupport ;
280 
295  } ;
296 
298 
299  } ;
301 
303 
315 
318 
319  struct Section{
320 
322  rInner(0),
323  rOuter(0),
324  zPos(0){
325  }
326 
328  double rInner ;
330  double rOuter ;
332  double zPos ;
333  } ;
334 
340 
341  } ;
342 
344 
346 
347 
357 
363  };
364 
367 
371  double extent[6] ;
372 
377 
382 
391  double outer_phi0 ;
392 
395  double inner_phi0 ;
396 
397 
401  double phi0 ;
402 
403 
405  double gap0;
406 
408  double gap1;
409 
411  double gap2;
412 
413 
414  struct Layer {
415 
416  Layer() :
417  distance(0),
418  phi0(0),
424  inner_thickness(0),
425  outer_thickness(0),
427  cellSize0(0),
428  cellSize1(0) {
429  }
430 
432  double distance;
433 
435  double phi0 ;
436 
439 
444 
449 
452 
455 
458 
459 
460 
462  double cellSize0 ;
464  double cellSize1 ;
465  } ;
466 
468  } ;
469 
471 
473 
474 
475 
476 
485 
488 
491 
494 
495  } ;
497 
499 
502  };
504 
506 
507  } /* namespace rec */
508 } /* namespace dd4hep */
509 
510 #endif // DDREC_DETECTORDATA_H
double padHeight
pad height of readout rows
Definition: DetectorData.h:80
double distanceSensitive
The distance of the ladder sensitive from the origin (IP).
Definition: DetectorData.h:168
std::vector< LayerLayout > layers
Definition: DetectorData.h:179
double alphaPetal
angle alpha by which the petal is rotated away from the plane that is orthogonal to the z-axis ...
Definition: DetectorData.h:249
double padGap
gap between pads
Definition: DetectorData.h:86
double lengthStrip
length of the strips (if applicable )
Definition: DetectorData.h:202
double inner_nRadiationLengths
Absorber material in front of sensitive element in the layer, units of radiation lengths.
Definition: DetectorData.h:441
int sensorsPerPetal
number of sensor per petal
Definition: DetectorData.h:258
double cellSize1
second cell size, perpendicular to the first direction cellSize0 and the depth of the layers...
Definition: DetectorData.h:464
double phi0
Azimuthal angle of the first module in barrel layout DEPRECATED! PLEASE POPULATE INNER/OUTER PHI0 INS...
Definition: DetectorData.h:401
double outer_nInteractionLengths
Absorber material in behind of sensitive element in the layer, units of radiation lengths...
Definition: DetectorData.h:448
double distanceSupport
The distance of the ladder support from the origin (IP).
Definition: DetectorData.h:157
double inner_nInteractionLengths
Absorber material in front of sensitive element in the layer, units of radiation lengths.
Definition: DetectorData.h:443
double outer_nRadiationLengths
Absorber material in behind of sensitive element in the layer, units of radiation lengths...
Definition: DetectorData.h:446
StructExtension(const DetElement &d)
Definition: DetectorData.h:39
std::map< dd4hep::long64, std::vector< dd4hep::long64 > > prevLayer
map of all neighbours in the previous layer
Definition: DetectorData.h:490
double extent[6]
extent of the calorimeter in the r-z-plane [ rmin, rmax, zmin, zmax, rmin2, rmax2 ] in mm...
Definition: DetectorData.h:371
double phi0
phi0 of layer: potential rotation around normal to absorber plane, e.g. if layers are &#39;staggered&#39; in ...
Definition: DetectorData.h:435
double gap2
Gap between modules(reserved for future use) e.g in the r-direction.
Definition: DetectorData.h:411
double zPos
z position at start of section
Definition: DetectorData.h:332
int inner_symmetry
the order of the rotational symmetry at the inside, e.g.
Definition: DetectorData.h:381
double rOuter
outer r at start of section
Definition: DetectorData.h:330
double pitchStrip
strip pitch (if applicable )
Definition: DetectorData.h:117
double innerWallThickness
thickness of the inner wall (field cage)
Definition: DetectorData.h:76
double zOffsetSensitive
z-offset of sensitive petals from layer z-position - signed for first petal, following petals have al...
Definition: DetectorData.h:284
double angleStrip
strip stereo angle (if applicable )
Definition: DetectorData.h:119
double maxRow
maximum number of rows
Definition: DetectorData.h:84
enum for encoding the sensor type in typeFlags
Definition: DetectorData.h:209
double lengthStrip
length of the strips (if applicable )
Definition: DetectorData.h:115
double angleStrip
strip stereo angle (if applicable )
Definition: DetectorData.h:206
double zHalfSupport
The half length of the ladder support in z.
Definition: DetectorData.h:165
double widthStrip
width of the strips (if applicable )
Definition: DetectorData.h:113
double cellSize0
cell size along the first axis where first is either along the beam (BarrelLayout) or up (EndcapLayou...
Definition: DetectorData.h:462
std::ostream & operator<<(std::ostream &io, const FixedPadSizeTPCData &d)
double offsetSupport
The offset of the ladder support, i.e. the shift in the direction of increasing phi, perpendicular to the ladders&#39;s normal.
Definition: DetectorData.h:161
double widthInnerSensitive
The inner width of the petal sensitive.
Definition: DetectorData.h:290
double zHalf
half length of the TPC
Definition: DetectorData.h:62
StructExtension< NeighbourSurfacesStruct > NeighbourSurfacesData
Definition: DetectorData.h:496
int petalNumber
The number of petals in the layer.
Definition: DetectorData.h:255
double phi0
Azimuthal angle of the (outward pointing) normal of the first ladder.
Definition: DetectorData.h:149
double thicknessSensitive
The thickness of the petal sensitive.
Definition: DetectorData.h:288
Simple data structure with key parameters for reconstruction of a silicon tracking detector with disk...
Definition: DetectorData.h:197
double gap1
Gap between modules(eg. middle stave gap) in the z-direction.
Definition: DetectorData.h:408
std::map< dd4hep::long64, std::vector< dd4hep::long64 > > nextLayer
map of all neighbours in the next layer
Definition: DetectorData.h:493
double driftLength
driftLength in z (half length of active volume)
Definition: DetectorData.h:68
Simple data structure with key parameters for reconstruction of a cylindrical TPC with a pad plane th...
Definition: DetectorData.h:60
LayoutType layoutType
type of layout: BarrelLayout or EndcapLayout
Definition: DetectorData.h:366
double lengthSupport
The radial length of the petal support.
Definition: DetectorData.h:279
std::vector< LayerLayout > layers
Definition: DetectorData.h:297
double distance
distance from Origin (or the z-axis) to the inner-most face of the layer
Definition: DetectorData.h:432
double thicknessSupport
The thickness of the ladder support from the origin (IP).
Definition: DetectorData.h:159
double rMin
inner radius of the TPC
Definition: DetectorData.h:64
StructExtension(const StructExtension< T > &t)
Definition: DetectorData.h:37
STL class.
double zHalfShell
The half length (z) of the support shell (w/o gap) - 0. if no shell exists.
Definition: DetectorData.h:104
double lengthSensor
sensor length (if divided in sensors)
Definition: DetectorData.h:154
double gapShell
The length of the gap in mm (gap position at z=0).
Definition: DetectorData.h:106
int sensorsPerLadder
number of sensor per ladder
Definition: DetectorData.h:152
StructExtension< LayeredCalorimeterStruct > LayeredCalorimeterData
Definition: DetectorData.h:470
Internal helper struct for defining the layer layout.
Definition: DetectorData.h:124
double outer_thickness
Distance between the center of the sensitive element and the outermost face of the layer...
Definition: DetectorData.h:454
StructExtension< ConicalSupportStruct > ConicalSupportData
Definition: DetectorData.h:343
double widthOuterSupport
The outer width of the petal support.
Definition: DetectorData.h:277
double widthInnerSupport
The inner width of the petal support.
Definition: DetectorData.h:275
std::map< dd4hep::long64, std::vector< dd4hep::long64 > > sameLayer
map of all neighbours in the same layer
Definition: DetectorData.h:487
double rMaxReadout
outer r of active volume
Definition: DetectorData.h:74
Simple data structure with key parameters for reconstruction of a planar silicon tracking detector wi...
Definition: DetectorData.h:102
T str(T...args)
double outerWallThickness
thickness of the outer wall (field cage)
Definition: DetectorData.h:78
double padWidth
fixed pad width ( at middle of row)
Definition: DetectorData.h:82
double distanceSensitive
The distance of the petal sensitive from the z-axis.
Definition: DetectorData.h:286
double gap0
Gap between modules(eg. stave gap) in the phi-direction.
Definition: DetectorData.h:405
double rMinReadout
inner r of active volume
Definition: DetectorData.h:72
double rInner
inner r at start of section
Definition: DetectorData.h:328
bool isSymmetricInZ
if true the sections are repeated at negative z
Definition: DetectorData.h:317
double zHalfSensitive
The half length of the ladder sensitive in z.
Definition: DetectorData.h:176
StructExtension< ZPlanarStruct > ZPlanarData
Definition: DetectorData.h:182
double widthOuterSensitive
The outer width of the petal sensitive.
Definition: DetectorData.h:292
double widthSupport
The width of the ladder support.
Definition: DetectorData.h:163
double zPosition
z-position of layer ( z-position of middle axis )
Definition: DetectorData.h:252
std::bitset< 32 > typeFlags
Bit flag describing sensor type - use enum SensorType to access the bits.
Definition: DetectorData.h:261
STL class.
double rInnerShell
The inner radius of the support shell.
Definition: DetectorData.h:108
std::map< std::string, double > doubleParameters
Definition: DetectorData.h:501
double offsetSensitive
The offset of the ladder sensitive, i.e. the shift in the direction of increasing phi...
Definition: DetectorData.h:172
StructExtension< ZDiskPetalsStruct > ZDiskPetalsData
Definition: DetectorData.h:300
Wrapper class for adding structs or pods as extensions to DetElements.
Definition: DetectorData.h:35
Simple data strucuture that holds maps of ids of the nearest neighbour surfaces in the same...
Definition: DetectorData.h:484
double rOuterShell
The outer radius of the support shell.
Definition: DetectorData.h:110
double widthStrip
width of the strips (if applicable )
Definition: DetectorData.h:200
double widthSensitive
The width of the ladder sensitive.
Definition: DetectorData.h:174
double phi0
azimuthal angle of vector defined by the Z-axis to first petal x-positive, y-positive edge ...
Definition: DetectorData.h:264
double lengthSensitive
The radial length of the petal sensitive.
Definition: DetectorData.h:294
double distanceSupport
The distance of the petal support from the z-axis.
Definition: DetectorData.h:271
Simple data structure defining a support structure built from consecutive conical sections...
Definition: DetectorData.h:314
double pitchStrip
strip pitch (if applicable )
Definition: DetectorData.h:204
double rMax
outer radius of the TPC
Definition: DetectorData.h:66
double sensitive_thickness
Thickness of the sensitive element (e.g. scintillator)
Definition: DetectorData.h:457
Internal helper struct for defining the layer layout.
Definition: DetectorData.h:219
LayoutType
enum for encoding the sensor type in typeFlags
Definition: DetectorData.h:359
double inner_thickness
Distance between the innermost face of the layer (closest to IP) and the center of the sensitive elem...
Definition: DetectorData.h:451
int ladderNumber
The number of ladders in the layer.
Definition: DetectorData.h:146
StructExtension(const StructExtension< T > &t, const DetElement &)
Definition: DetectorData.h:40
int outer_symmetry
the order of the rotational symmetry at the outside, e.g.
Definition: DetectorData.h:376
StructExtension< FixedPadSizeTPCStruct > FixedPadSizeTPCData
Definition: DetectorData.h:88
double outer_phi0
Angle between the normal to the first outer face of the calorimeter and the x-axis, where the first face is defined to be the one with the smallest positve angle.
Definition: DetectorData.h:391
std::vector< Section > sections
The consecutive sections of the structure.
Definition: DetectorData.h:339
STL class.
Simple data structure defining a layered calorimeter layout for reconstruction.
Definition: DetectorData.h:356
double inner_phi0
Same as outer_phi for the first inner face.
Definition: DetectorData.h:395
double thicknessSupport
The thickness of the petal support.
Definition: DetectorData.h:273
double zOffsetSupport
z-offset of support petals from layer z-position - signed for first petal, following petals have alte...
Definition: DetectorData.h:269
double petalHalfAngle
half angle covered by petal
Definition: DetectorData.h:244
double thicknessSensitive
The thickness of the ladder sensitive from the origin (IP).
Definition: DetectorData.h:170
double zMinReadout
start z of active Volume (typically cathode half thickness)
Definition: DetectorData.h:70
double absorberThickness
thickness of the absorber part of the layer. Consider using inner/outer_nRadiationLengths and inner/o...
Definition: DetectorData.h:438