File indexing completed on 2024-04-06 12:11:22
0001 #ifndef FastSimulation_TrackerSetup_TrackerInteractionGeometry_H
0002 #define FastSimulation_TrackerSetup_TrackerInteractionGeometry_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "FastSimulation/TrackerSetup/interface/TrackerLayer.h"
0012
0013 #include <list>
0014 #include <vector>
0015
0016 class MediumProperties;
0017 class GeometricSearchTracker;
0018
0019 namespace edm {
0020 class ParameterSet;
0021 }
0022
0023 class TrackerInteractionGeometry {
0024 public:
0025 enum FirstCylinders { PXB = 0, PXD = 3, TIB = 5, TID = 9, TOB = 12, TEC = 18 };
0026
0027
0028 TrackerInteractionGeometry(const edm::ParameterSet &trackerMaterial, const GeometricSearchTracker *geomSearchTracker);
0029
0030
0031 ~TrackerInteractionGeometry();
0032
0033
0034
0035
0036
0037 inline std::list<TrackerLayer>::const_iterator cylinderBegin() const { return _theCylinders.begin(); }
0038
0039
0040 inline std::list<TrackerLayer>::const_iterator cylinderEnd() const { return _theCylinders.end(); }
0041
0042
0043 inline const int nCylinders() const { return _theCylinders.size(); }
0044
0045 private:
0046
0047 std::vector<double> fudgeFactors(unsigned layerNr);
0048 std::vector<double> minDim(unsigned layerNr);
0049 std::vector<double> maxDim(unsigned layerNr);
0050
0051 private:
0052
0053 std::list<TrackerLayer> _theCylinders;
0054
0055
0056
0057 unsigned int version;
0058
0059 std::vector<double> beamPipeThickness;
0060
0061 std::vector<double> pxbThickness;
0062
0063 std::vector<double> pxb1CablesThickness;
0064 std::vector<double> pxb2CablesThickness;
0065 std::vector<double> pxb3CablesThickness;
0066
0067 std::vector<double> pxbOutCables1Thickness;
0068 std::vector<double> pxbOutCables2Thickness;
0069
0070 std::vector<double> pxdThickness;
0071
0072 std::vector<double> pxdOutCables1Thickness;
0073 std::vector<double> pxdOutCables2Thickness;
0074
0075 std::vector<double> tibLayer1Thickness;
0076 std::vector<double> tibLayer2Thickness;
0077 std::vector<double> tibLayer3Thickness;
0078 std::vector<double> tibLayer4Thickness;
0079
0080 std::vector<double> tibOutCables1Thickness;
0081 std::vector<double> tibOutCables2Thickness;
0082
0083 std::vector<double> tidLayer1Thickness;
0084 std::vector<double> tidLayer2Thickness;
0085 std::vector<double> tidLayer3Thickness;
0086
0087 std::vector<double> tidOutsideThickness;
0088
0089 std::vector<double> tobInsideThickness;
0090
0091 std::vector<double> tobLayer1Thickness;
0092 std::vector<double> tobLayer2Thickness;
0093 std::vector<double> tobLayer3Thickness;
0094 std::vector<double> tobLayer4Thickness;
0095 std::vector<double> tobLayer5Thickness;
0096 std::vector<double> tobLayer6Thickness;
0097
0098 std::vector<double> tobOutsideThickness;
0099
0100 std::vector<double> tecLayerThickness;
0101
0102 std::vector<double> barrelCablesThickness;
0103
0104 std::vector<double> endcapCables1Thickness;
0105 std::vector<double> endcapCables2Thickness;
0106
0107
0108
0109 std::vector<double> beamPipeRadius;
0110 std::vector<double> beamPipeLength;
0111
0112 std::vector<double> pxb1CablesInnerRadius;
0113 std::vector<double> pxb2CablesInnerRadius;
0114 std::vector<double> pxb3CablesInnerRadius;
0115
0116 std::vector<double> pxbOutCables1InnerRadius;
0117 std::vector<double> pxbOutCables1OuterRadius;
0118 std::vector<double> pxbOutCables1ZPosition;
0119 std::vector<double> pxbOutCables2InnerRadius;
0120 std::vector<double> pxbOutCables2OuterRadius;
0121 std::vector<double> pxbOutCables2ZPosition;
0122
0123 std::vector<double> pixelOutCablesRadius;
0124 std::vector<double> pixelOutCablesLength;
0125 std::vector<double> pixelOutCablesInnerRadius;
0126 std::vector<double> pixelOutCablesOuterRadius;
0127 std::vector<double> pixelOutCablesZPosition;
0128
0129 std::vector<double> tibOutCables1InnerRadius;
0130 std::vector<double> tibOutCables1OuterRadius;
0131 std::vector<double> tibOutCables1ZPosition;
0132 std::vector<double> tibOutCables2InnerRadius;
0133 std::vector<double> tibOutCables2OuterRadius;
0134 std::vector<double> tibOutCables2ZPosition;
0135
0136 std::vector<double> tobInCablesRadius;
0137 std::vector<double> tobInCablesLength;
0138
0139 std::vector<double> tidOutCablesInnerRadius;
0140 std::vector<double> tidOutCablesZPosition;
0141
0142 std::vector<double> tobOutCablesInnerRadius;
0143 std::vector<double> tobOutCablesOuterRadius;
0144 std::vector<double> tobOutCablesZPosition;
0145 std::vector<double> tobOutCablesRadius;
0146 std::vector<double> tobOutCablesLength;
0147
0148 std::vector<double> tecOutCables1InnerRadius;
0149 std::vector<double> tecOutCables1OuterRadius;
0150 std::vector<double> tecOutCables1ZPosition;
0151 std::vector<double> tecOutCables2InnerRadius;
0152 std::vector<double> tecOutCables2OuterRadius;
0153 std::vector<double> tecOutCables2ZPosition;
0154
0155
0156 std::vector<unsigned int> fudgeLayer;
0157 std::vector<double> fudgeMin;
0158 std::vector<double> fudgeMax;
0159 std::vector<double> fudgeFactor;
0160
0161
0162 MediumProperties *_theMPBeamPipe;
0163
0164 MediumProperties *_theMPPixelBarrel;
0165
0166 MediumProperties *_theMPPixelEndcap;
0167
0168 MediumProperties *_theMPPixelOutside1;
0169 MediumProperties *_theMPPixelOutside2;
0170 MediumProperties *_theMPPixelOutside3;
0171 MediumProperties *_theMPPixelOutside4;
0172 MediumProperties *_theMPPixelOutside;
0173 MediumProperties *_theMPPixelOutside5;
0174 MediumProperties *_theMPPixelOutside6;
0175
0176 MediumProperties *_theMPTIB1;
0177
0178 MediumProperties *_theMPTIB2;
0179
0180 MediumProperties *_theMPTIB3;
0181
0182 MediumProperties *_theMPTIB4;
0183
0184 MediumProperties *_theMPTOB1;
0185
0186 MediumProperties *_theMPTOB2;
0187
0188 MediumProperties *_theMPTOB3;
0189
0190 MediumProperties *_theMPTOB4;
0191
0192 MediumProperties *_theMPTOB5;
0193
0194 MediumProperties *_theMPTOB6;
0195
0196 MediumProperties *_theMPEndcap;
0197
0198 MediumProperties *_theMPInner1;
0199 MediumProperties *_theMPInner2;
0200 MediumProperties *_theMPInner3;
0201
0202 MediumProperties *_theMPTOBBInside;
0203
0204 MediumProperties *_theMPTIBEOutside1;
0205 MediumProperties *_theMPTIBEOutside2;
0206
0207 MediumProperties *_theMPTOBEOutside;
0208
0209 MediumProperties *_theMPTIDEOutside;
0210
0211 MediumProperties *_theMPBarrelOutside;
0212 MediumProperties *_theMPEndcapOutside;
0213 MediumProperties *_theMPEndcapOutside2;
0214
0215 std::vector<MediumProperties *> _mediumProperties;
0216
0217
0218 bool use_hardcoded;
0219 };
0220 #endif