#include <FastSimulation/TrackerSetup/interface/TrackerInteractionGeometry.h>
Public Types | |
enum | FirstCylinders { PXB = 0, PXD = 3, TIB = 5, TID = 9, TOB = 12, TEC = 18 } |
Public Member Functions | |
std::list< TrackerLayer > ::const_iterator | cylinderBegin () const |
Initialize the interaction geometry void initialize(const GeometricSearchTracker* geomSearchTracker);. | |
std::list< TrackerLayer > ::const_iterator | cylinderEnd () const |
Returns the last pointer in the cylinder list. | |
const int | nCylinders () const |
Returns the number of cylinders in the Tracker. | |
TrackerInteractionGeometry (const edm::ParameterSet &trackerMaterial, const GeometricSearchTracker *geomSearchTracker) | |
Constructor : get the configurable parameters. | |
~TrackerInteractionGeometry () | |
Destructor. | |
Private Member Functions | |
std::vector< double > | fudgeFactors (unsigned layerNr) |
std::vector< double > | maxDim (unsigned layerNr) |
std::vector< double > | minDim (unsigned layerNr) |
Private Attributes | |
std::list< TrackerLayer > | _theCylinders |
The list of tracker (sensistive or not) layers. | |
MediumProperties * | _theMPBarrelOutside |
Cables around the tracker (one barrel, two disks). | |
MediumProperties * | _theMPBeamPipe |
The following list gives the thicknesses of the various layers. | |
MediumProperties * | _theMPEndcap |
The Tracker EndCap layers. | |
MediumProperties * | _theMPEndcapOutside |
MediumProperties * | _theMPEndcapOutside2 |
MediumProperties * | _theMPInner1 |
The tracker inner disks. | |
MediumProperties * | _theMPInner2 |
MediumProperties * | _theMPInner3 |
MediumProperties * | _theMPPixelBarrel |
The barrel pixel layers. | |
MediumProperties * | _theMPPixelEndcap |
The endcap pixel layers. | |
MediumProperties * | _theMPPixelOutside |
MediumProperties * | _theMPPixelOutside1 |
A series of cables/walls to reproduce the full sim. | |
MediumProperties * | _theMPPixelOutside2 |
MediumProperties * | _theMPPixelOutside3 |
MediumProperties * | _theMPPixelOutside4 |
MediumProperties * | _theMPPixelOutside5 |
MediumProperties * | _theMPPixelOutside6 |
MediumProperties * | _theMPTIB1 |
The tracker inner barrel layer 1. | |
MediumProperties * | _theMPTIB2 |
The tracker inner barrel layer 2. | |
MediumProperties * | _theMPTIB3 |
The tracker inner barrel layer 3. | |
MediumProperties * | _theMPTIB4 |
The tracker inner barrel layer 4. | |
MediumProperties * | _theMPTIBEOutside1 |
Some material around the tracker inner barrel (disk). | |
MediumProperties * | _theMPTIBEOutside2 |
MediumProperties * | _theMPTIDEOutside |
Some material around the tracker inner disks (disk). | |
MediumProperties * | _theMPTOB1 |
The tracker outer barrel layer 1. | |
MediumProperties * | _theMPTOB2 |
The tracker outer barrel layer 2. | |
MediumProperties * | _theMPTOB3 |
The tracker outer barrel layer 3. | |
MediumProperties * | _theMPTOB4 |
The tracker outer barrel layer 4. | |
MediumProperties * | _theMPTOB5 |
The tracker outer barrel layer 5. | |
MediumProperties * | _theMPTOB6 |
The tracker outer barrel layer 6. | |
MediumProperties * | _theMPTOBBInside |
Some material in front of the tracker outer barrel (cylinder). | |
MediumProperties * | _theMPTOBEOutside |
Some material around the tracker outer barrel (disk). | |
std::vector< double > | barrelCablesThickness |
std::vector< double > | beamPipeLength |
std::vector< double > | beamPipeRadius |
Position of dead material layers (cables, services, etc. | |
std::vector< double > | beamPipeThickness |
Beam Pipe. | |
std::vector< double > | endcapCables1Thickness |
std::vector< double > | endcapCables2Thickness |
std::vector< double > | fudgeFactor |
std::vector< unsigned int > | fudgeLayer |
std::vector< double > | fudgeMax |
std::vector< double > | fudgeMin |
std::vector< double > | pixelOutCablesInnerRadius |
std::vector< double > | pixelOutCablesLength |
std::vector< double > | pixelOutCablesOuterRadius |
std::vector< double > | pixelOutCablesRadius |
Pixel Outside walls and cables (barrel and endcaps). | |
std::vector< double > | pixelOutCablesZPosition |
std::vector< double > | pxb1CablesInnerRadius |
Cables and Services at the end of PIXB1,2,3 ("disk"). | |
std::vector< double > | pxb1CablesThickness |
Pixel Barrel services at the end of layers 1-3. | |
std::vector< double > | pxb2CablesInnerRadius |
std::vector< double > | pxb2CablesThickness |
std::vector< double > | pxb3CablesInnerRadius |
std::vector< double > | pxb3CablesThickness |
std::vector< double > | pxbOutCables1InnerRadius |
Pixel Barrel Outside walls and cables. | |
std::vector< double > | pxbOutCables1OuterRadius |
std::vector< double > | pxbOutCables1Thickness |
Pixel Barrel outside cables. | |
std::vector< double > | pxbOutCables1ZPosition |
std::vector< double > | pxbOutCables2InnerRadius |
std::vector< double > | pxbOutCables2OuterRadius |
std::vector< double > | pxbOutCables2Thickness |
std::vector< double > | pxbOutCables2ZPosition |
std::vector< double > | pxbThickness |
Pixel Barrel Layers 1-3. | |
std::vector< double > | pxdOutCables1Thickness |
Pixel Endcap outside cables. | |
std::vector< double > | pxdOutCables2Thickness |
std::vector< double > | pxdThickness |
Pixel Disks 1-2. | |
std::vector< double > | tecLayerThickness |
std::vector< double > | tecOutCables1InnerRadius |
Tracker Endcaps Outside Cables and walls. | |
std::vector< double > | tecOutCables1OuterRadius |
std::vector< double > | tecOutCables1ZPosition |
std::vector< double > | tecOutCables2InnerRadius |
std::vector< double > | tecOutCables2OuterRadius |
std::vector< double > | tecOutCables2ZPosition |
std::vector< double > | tibLayer1Thickness |
Tracker Inner barrel layers 1-4. | |
std::vector< double > | tibLayer2Thickness |
std::vector< double > | tibLayer3Thickness |
std::vector< double > | tibLayer4Thickness |
std::vector< double > | tibOutCables1InnerRadius |
Tracker Inner Barrel Outside Cables and walls (endcap). | |
std::vector< double > | tibOutCables1OuterRadius |
std::vector< double > | tibOutCables1Thickness |
TIB outside services (endcap). | |
std::vector< double > | tibOutCables1ZPosition |
std::vector< double > | tibOutCables2InnerRadius |
std::vector< double > | tibOutCables2OuterRadius |
std::vector< double > | tibOutCables2Thickness |
std::vector< double > | tibOutCables2ZPosition |
std::vector< double > | tidLayer1Thickness |
Tracker Inner disks layers 1-3. | |
std::vector< double > | tidLayer2Thickness |
std::vector< double > | tidLayer3Thickness |
std::vector< double > | tidOutCablesInnerRadius |
Tracker Inner Disks Outside Cables and walls. | |
std::vector< double > | tidOutCablesZPosition |
std::vector< double > | tidOutsideThickness |
TID outside wall (endcap). | |
std::vector< double > | tobInCablesLength |
std::vector< double > | tobInCablesRadius |
Tracker outer barrel Inside wall (barrel). | |
std::vector< double > | tobInsideThickness |
TOB inside wall (barrel). | |
std::vector< double > | tobLayer1Thickness |
Tracker Outer barrel layers 1-6. | |
std::vector< double > | tobLayer2Thickness |
std::vector< double > | tobLayer3Thickness |
std::vector< double > | tobLayer4Thickness |
std::vector< double > | tobLayer5Thickness |
std::vector< double > | tobLayer6Thickness |
std::vector< double > | tobOutCablesInnerRadius |
Tracker Outer Barrel Outside Cables and walls (barrel and endcaps). | |
std::vector< double > | tobOutCablesLength |
std::vector< double > | tobOutCablesOuterRadius |
std::vector< double > | tobOutCablesRadius |
std::vector< double > | tobOutCablesZPosition |
std::vector< double > | tobOutsideThickness |
unsigned int | version |
Thickness of all layers Version of the description. |
Definition at line 23 of file TrackerInteractionGeometry.h.
TrackerInteractionGeometry::TrackerInteractionGeometry | ( | const edm::ParameterSet & | trackerMaterial, | |
const GeometricSearchTracker * | geomSearchTracker | |||
) |
Constructor : get the configurable parameters.
Definition at line 22 of file TrackerInteractionGeometry.cc.
References _theCylinders, _theMPBarrelOutside, _theMPBeamPipe, _theMPEndcap, _theMPEndcapOutside, _theMPEndcapOutside2, _theMPInner1, _theMPInner2, _theMPInner3, _theMPPixelBarrel, _theMPPixelEndcap, _theMPPixelOutside, _theMPPixelOutside1, _theMPPixelOutside2, _theMPPixelOutside3, _theMPPixelOutside4, _theMPPixelOutside5, _theMPPixelOutside6, _theMPTIB1, _theMPTIB2, _theMPTIB3, _theMPTIB4, _theMPTIBEOutside1, _theMPTIBEOutside2, _theMPTIDEOutside, _theMPTOB1, _theMPTOB2, _theMPTOB3, _theMPTOB4, _theMPTOB5, _theMPTOB6, _theMPTOBBInside, _theMPTOBEOutside, barrelCablesThickness, GeometricSearchTracker::barrelLayers(), beamPipeLength, beamPipeRadius, beamPipeThickness, cylinderBegin(), cylinderEnd(), endcapCables1Thickness, endcapCables2Thickness, lat::endl(), Exception, fudgeFactor, fudgeFactors(), fudgeLayer, fudgeMax, fudgeMin, edm::ParameterSet::getParameter(), max, maxDim(), Surface::mediumProperties(), minDim(), pixelOutCablesInnerRadius, pixelOutCablesLength, pixelOutCablesOuterRadius, pixelOutCablesRadius, pixelOutCablesZPosition, GeometricSearchTracker::posForwardLayers(), PXB, pxb1CablesInnerRadius, pxb1CablesThickness, pxb2CablesInnerRadius, pxb2CablesThickness, pxb3CablesInnerRadius, pxb3CablesThickness, pxbOutCables1InnerRadius, pxbOutCables1OuterRadius, pxbOutCables1Thickness, pxbOutCables1ZPosition, pxbOutCables2InnerRadius, pxbOutCables2OuterRadius, pxbOutCables2Thickness, pxbOutCables2ZPosition, pxbThickness, PXD, pxdOutCables1Thickness, pxdOutCables2Thickness, pxdThickness, MediumProperties::radLen(), Surface::setMediumProperties(), TEC, tecLayerThickness, tecOutCables1InnerRadius, tecOutCables1OuterRadius, tecOutCables1ZPosition, tecOutCables2InnerRadius, tecOutCables2OuterRadius, tecOutCables2ZPosition, TIB, tibLayer1Thickness, tibLayer2Thickness, tibLayer3Thickness, tibLayer4Thickness, tibOutCables1InnerRadius, tibOutCables1OuterRadius, tibOutCables1Thickness, tibOutCables1ZPosition, tibOutCables2InnerRadius, tibOutCables2OuterRadius, tibOutCables2Thickness, tibOutCables2ZPosition, TID, tidLayer1Thickness, tidLayer2Thickness, tidLayer3Thickness, tidOutCablesInnerRadius, tidOutCablesZPosition, tidOutsideThickness, TOB, tobInCablesLength, tobInCablesRadius, tobInsideThickness, tobLayer1Thickness, tobLayer2Thickness, tobLayer3Thickness, tobLayer4Thickness, tobLayer5Thickness, tobLayer6Thickness, tobOutCablesInnerRadius, tobOutCablesLength, tobOutCablesOuterRadius, tobOutCablesRadius, tobOutCablesZPosition, tobOutsideThickness, and version.
00024 { 00025 00026 // Fraction of radiation length : had oc values to account 00027 // for detectors, cables, support, ... 00028 // Note : the second argument is not used in FAMOS 00029 // Note : the first argument is tuned to reproduce the CMSIM material 00030 // in terms or radiation length. 00031 00032 00033 // Thickness of all layers 00034 // Version of the material description 00035 version = trackerMaterial.getParameter<unsigned int>("TrackerMaterialVersion"); 00036 // Beam Pipe 00037 beamPipeThickness = trackerMaterial.getParameter<std::vector<double> >("BeamPipeThickness"); 00038 // Pixel Barrel Layers 1-3 00039 pxbThickness = trackerMaterial.getParameter<std::vector<double> >("PXBThickness"); 00040 // Pixel Barrel services at the end of layers 1-3 00041 pxb1CablesThickness = trackerMaterial.getParameter<std::vector<double> >("PXB1CablesThickness"); 00042 pxb2CablesThickness = trackerMaterial.getParameter<std::vector<double> >("PXB2CablesThickness"); 00043 pxb3CablesThickness = trackerMaterial.getParameter<std::vector<double> >("PXB3CablesThickness"); 00044 // Pixel Barrel outside cables 00045 pxbOutCables1Thickness = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables1Thickness"); 00046 pxbOutCables2Thickness = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables2Thickness"); 00047 // Pixel Disks 1-2 00048 pxdThickness = trackerMaterial.getParameter<std::vector<double> >("PXDThickness"); 00049 // Pixel Endcap outside cables 00050 pxdOutCables1Thickness = trackerMaterial.getParameter<std::vector<double> >("PXDOutCables1Thickness"); 00051 pxdOutCables2Thickness = trackerMaterial.getParameter<std::vector<double> >("PXDOutCables2Thickness"); 00052 // Tracker Inner barrel layers 1-4 00053 tibLayer1Thickness = trackerMaterial.getParameter<std::vector<double> >("TIBLayer1Thickness"); 00054 tibLayer2Thickness = trackerMaterial.getParameter<std::vector<double> >("TIBLayer2Thickness"); 00055 tibLayer3Thickness = trackerMaterial.getParameter<std::vector<double> >("TIBLayer3Thickness"); 00056 tibLayer4Thickness = trackerMaterial.getParameter<std::vector<double> >("TIBLayer4Thickness"); 00057 // TIB outside services (endcap) 00058 tibOutCables1Thickness = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables1Thickness"); 00059 tibOutCables2Thickness = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables2Thickness"); 00060 // Tracker Inner disks layers 1-3 00061 tidLayer1Thickness = trackerMaterial.getParameter<std::vector<double> >("TIDLayer1Thickness"); 00062 tidLayer2Thickness = trackerMaterial.getParameter<std::vector<double> >("TIDLayer2Thickness"); 00063 tidLayer3Thickness = trackerMaterial.getParameter<std::vector<double> >("TIDLayer3Thickness"); 00064 // TID outside wall (endcap) 00065 tidOutsideThickness = trackerMaterial.getParameter<std::vector<double> >("TIDOutsideThickness"); 00066 // TOB inside wall (barrel) 00067 tobInsideThickness = trackerMaterial.getParameter<std::vector<double> >("TOBInsideThickness"); 00068 // Tracker Outer barrel layers 1-6 00069 tobLayer1Thickness = trackerMaterial.getParameter<std::vector<double> >("TOBLayer1Thickness"); 00070 tobLayer2Thickness = trackerMaterial.getParameter<std::vector<double> >("TOBLayer2Thickness"); 00071 tobLayer3Thickness = trackerMaterial.getParameter<std::vector<double> >("TOBLayer3Thickness"); 00072 tobLayer4Thickness = trackerMaterial.getParameter<std::vector<double> >("TOBLayer4Thickness"); 00073 tobLayer5Thickness = trackerMaterial.getParameter<std::vector<double> >("TOBLayer5Thickness"); 00074 tobLayer6Thickness = trackerMaterial.getParameter<std::vector<double> >("TOBLayer6Thickness"); 00075 // TOB services (endcap) 00076 tobOutsideThickness = trackerMaterial.getParameter<std::vector<double> >("TOBOutsideThickness"); 00077 // Tracker EndCap disks layers 1-9 00078 tecLayerThickness = trackerMaterial.getParameter<std::vector<double> >("TECLayerThickness"); 00079 // TOB outside wall (barrel) 00080 barrelCablesThickness = trackerMaterial.getParameter<std::vector<double> >("BarrelCablesThickness"); 00081 // TEC outside wall (endcap) 00082 endcapCables1Thickness = trackerMaterial.getParameter<std::vector<double> >("EndcapCables1Thickness"); 00083 endcapCables2Thickness = trackerMaterial.getParameter<std::vector<double> >("EndcapCables2Thickness"); 00084 00085 // Position of dead material layers (cables, services, etc.) 00086 // Beam pipe 00087 beamPipeRadius = trackerMaterial.getParameter<std::vector<double> >("BeamPipeRadius"); 00088 beamPipeLength = trackerMaterial.getParameter<std::vector<double> >("BeamPipeLength"); 00089 // Cables and Services at the end of PIXB1,2,3 ("disk") 00090 pxb1CablesInnerRadius = trackerMaterial.getParameter<std::vector<double> >("PXB1CablesInnerRadius"); 00091 pxb2CablesInnerRadius = trackerMaterial.getParameter<std::vector<double> >("PXB2CablesInnerRadius"); 00092 pxb3CablesInnerRadius = trackerMaterial.getParameter<std::vector<double> >("PXB3CablesInnerRadius"); 00093 // Pixel Barrel Outside walls and cables 00094 pxbOutCables1InnerRadius = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables1InnerRadius"); 00095 pxbOutCables1OuterRadius = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables1OuterRadius"); 00096 pxbOutCables1ZPosition = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables1ZPosition"); 00097 pxbOutCables2InnerRadius = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables2InnerRadius"); 00098 pxbOutCables2OuterRadius = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables2OuterRadius"); 00099 pxbOutCables2ZPosition = trackerMaterial.getParameter<std::vector<double> >("PXBOutCables2ZPosition"); 00100 // Pixel Outside walls and cables (barrel and endcaps) 00101 pixelOutCablesRadius = trackerMaterial.getParameter<std::vector<double> >("PixelOutCablesRadius"); 00102 pixelOutCablesLength = trackerMaterial.getParameter<std::vector<double> >("PixelOutCablesLength"); 00103 pixelOutCablesInnerRadius = trackerMaterial.getParameter<std::vector<double> >("PixelOutCablesInnerRadius"); 00104 pixelOutCablesOuterRadius = trackerMaterial.getParameter<std::vector<double> >("PixelOutCablesOuterRadius"); 00105 pixelOutCablesZPosition = trackerMaterial.getParameter<std::vector<double> >("PixelOutCablesZPosition"); 00106 // Tracker Inner Barrel Outside Cables and walls (endcap) 00107 tibOutCables1InnerRadius = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables1InnerRadius"); 00108 tibOutCables1OuterRadius = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables1OuterRadius"); 00109 tibOutCables1ZPosition = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables1ZPosition"); 00110 tibOutCables2InnerRadius = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables2InnerRadius"); 00111 tibOutCables2OuterRadius = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables2OuterRadius"); 00112 tibOutCables2ZPosition = trackerMaterial.getParameter<std::vector<double> >("TIBOutCables2ZPosition"); 00113 // Tracker outer barrel Inside wall (barrel) 00114 tobInCablesRadius = trackerMaterial.getParameter<std::vector<double> >("TOBInCablesRadius"); 00115 tobInCablesLength = trackerMaterial.getParameter<std::vector<double> >("TOBInCablesLength"); 00116 // Tracker Inner Disks Outside Cables and walls 00117 tidOutCablesInnerRadius = trackerMaterial.getParameter<std::vector<double> >("TIDOutCablesInnerRadius"); 00118 tidOutCablesZPosition = trackerMaterial.getParameter<std::vector<double> >("TIDOutCablesZPosition"); 00119 // Tracker Outer Barrel Outside Cables and walls (barrel and endcaps) 00120 tobOutCablesInnerRadius = trackerMaterial.getParameter<std::vector<double> >("TOBOutCablesInnerRadius"); 00121 tobOutCablesOuterRadius = trackerMaterial.getParameter<std::vector<double> >("TOBOutCablesOuterRadius"); 00122 tobOutCablesZPosition = trackerMaterial.getParameter<std::vector<double> >("TOBOutCablesZPosition"); 00123 tobOutCablesRadius = trackerMaterial.getParameter<std::vector<double> >("TOBOutCablesRadius"); 00124 tobOutCablesLength = trackerMaterial.getParameter<std::vector<double> >("TOBOutCablesLength"); 00125 // Tracker Endcaps Outside Cables and walls 00126 tecOutCables1InnerRadius = trackerMaterial.getParameter<std::vector<double> >("TECOutCables1InnerRadius"); 00127 tecOutCables1OuterRadius = trackerMaterial.getParameter<std::vector<double> >("TECOutCables1OuterRadius"); 00128 tecOutCables1ZPosition = trackerMaterial.getParameter<std::vector<double> >("TECOutCables1ZPosition"); 00129 tecOutCables2InnerRadius = trackerMaterial.getParameter<std::vector<double> >("TECOutCables2InnerRadius"); 00130 tecOutCables2OuterRadius = trackerMaterial.getParameter<std::vector<double> >("TECOutCables2OuterRadius"); 00131 tecOutCables2ZPosition = trackerMaterial.getParameter<std::vector<double> >("TECOutCables2ZPosition"); 00132 00133 // Fudge factors for tracker layer material inhomogeneities 00134 fudgeLayer = trackerMaterial.getParameter<std::vector<unsigned int> >("FudgeLayer"); 00135 fudgeMin = trackerMaterial.getParameter<std::vector<double> >("FudgeMin"); 00136 fudgeMax = trackerMaterial.getParameter<std::vector<double> >("FudgeMax"); 00137 fudgeFactor = trackerMaterial.getParameter<std::vector<double> >("FudgeFactor"); 00138 00139 // The previous std::vector must have the same size! 00140 if ( fudgeLayer.size() != fudgeMin.size() || 00141 fudgeLayer.size() != fudgeMax.size() || 00142 fudgeLayer.size() != fudgeFactor.size() ) { 00143 throw cms::Exception("FastSimulation/TrackerInteractionGeometry ") 00144 << " WARNING with fudge factors ! You have " << fudgeLayer.size() 00145 << " layers, but " 00146 << fudgeMin.size() << " min values, " 00147 << fudgeMax.size() << " max values and " 00148 << fudgeFactor.size() << " fudge factor values!" 00149 << std::endl 00150 << "Please make enter the same number of inputs " 00151 << "in FastSimulation/TrackerInteractionGeometry/data/TrackerMaterial.cfi" 00152 << std::endl; 00153 } 00154 00155 // The Beam pipe 00156 _theMPBeamPipe = new MediumProperties(beamPipeThickness[version],0.0001); 00157 // The pixel barrel layers 00158 _theMPPixelBarrel = new MediumProperties(pxbThickness[version],0.0001); 00159 // Pixel Barrel services at the end of layers 1-3 00160 _theMPPixelOutside1 = new MediumProperties(pxb1CablesThickness[version],0.0001); 00161 _theMPPixelOutside2 = new MediumProperties(pxb2CablesThickness[version],0.0001); 00162 _theMPPixelOutside3 = new MediumProperties(pxb3CablesThickness[version],0.0001); 00163 // Pixel Barrel outside cables 00164 _theMPPixelOutside4 = new MediumProperties(pxbOutCables1Thickness[version],0.0001); 00165 _theMPPixelOutside = new MediumProperties(pxbOutCables2Thickness[version],0.0001); 00166 // The pixel endcap disks 00167 _theMPPixelEndcap = new MediumProperties(pxdThickness[version],0.0001); 00168 // Pixel Endcap outside cables 00169 _theMPPixelOutside5 = new MediumProperties(pxdOutCables1Thickness[version],0.0001); 00170 _theMPPixelOutside6 = new MediumProperties(pxdOutCables2Thickness[version],0.0001); 00171 // The tracker inner barrel layers 1-4 00172 _theMPTIB1 = new MediumProperties(tibLayer1Thickness[version],0.0001); 00173 _theMPTIB2 = new MediumProperties(tibLayer2Thickness[version],0.0001); 00174 _theMPTIB3 = new MediumProperties(tibLayer3Thickness[version],0.0001); 00175 _theMPTIB4 = new MediumProperties(tibLayer4Thickness[version],0.0001); 00176 // TIB outside services (endcap) 00177 _theMPTIBEOutside1 = new MediumProperties(tibOutCables1Thickness[version],0.0001); 00178 _theMPTIBEOutside2 = new MediumProperties(tibOutCables2Thickness[version],0.0001); 00179 // The tracker inner disks 1-3 00180 _theMPInner1 = new MediumProperties(tidLayer1Thickness[version],0.0001); 00181 _theMPInner2 = new MediumProperties(tidLayer2Thickness[version],0.0001); 00182 _theMPInner3 = new MediumProperties(tidLayer3Thickness[version],0.0001); 00183 // TID outside wall (endcap) 00184 _theMPTIDEOutside = new MediumProperties(tidOutsideThickness[version],0.0001); 00185 // TOB inside wall (barrel) 00186 _theMPTOBBInside = new MediumProperties(tobInsideThickness[version],0.0001); 00187 // The tracker outer barrel layers 1-6 00188 _theMPTOB1 = new MediumProperties(tobLayer1Thickness[version],0.0001); 00189 _theMPTOB2 = new MediumProperties(tobLayer2Thickness[version],0.0001); 00190 _theMPTOB3 = new MediumProperties(tobLayer3Thickness[version],0.0001); 00191 _theMPTOB4 = new MediumProperties(tobLayer4Thickness[version],0.0001); 00192 _theMPTOB5 = new MediumProperties(tobLayer5Thickness[version],0.0001); 00193 _theMPTOB6 = new MediumProperties(tobLayer6Thickness[version],0.0001); 00194 // TOB services (endcap) 00195 _theMPTOBEOutside = new MediumProperties(tobOutsideThickness[version],0.0001); 00196 // The tracker endcap disks 1-9 00197 _theMPEndcap = new MediumProperties(tecLayerThickness[version],0.0001); 00198 // TOB outside wall (barrel) 00199 _theMPBarrelOutside = new MediumProperties(barrelCablesThickness[version],0.0001); 00200 // TEC outside wall (endcap) 00201 _theMPEndcapOutside = new MediumProperties(endcapCables1Thickness[version],0.0001); 00202 _theMPEndcapOutside2 = new MediumProperties(endcapCables2Thickness[version],0.0001); 00203 00204 // Check that the Reco Tracker Geometry has been loaded 00205 if ( !theGeomSearchTracker ) 00206 throw cms::Exception("FastSimulation/TrackerInteractionGeometry") 00207 << "The pointer to the GeometricSearchTracker was not set"; 00208 00209 // The vector of Barrel Tracker Layers 00210 std::vector< BarrelDetLayer*> barrelLayers = 00211 theGeomSearchTracker->barrelLayers(); 00212 00213 // The vector of Forward Tracker Layers (positive z) 00214 std::vector< ForwardDetLayer*> posForwardLayers = 00215 theGeomSearchTracker->posForwardLayers(); 00216 00217 // Local pointers 00218 BoundCylinder* theCylinder; 00219 BoundDisk* theDisk; 00220 00221 // Create the nest of cylinders 00222 const Surface::PositionType thePosition(0.,0.,0.); 00223 const Surface::RotationType theRotation(1.,0.,0.,0.,1.,0.,0.,0.,1.); 00224 // Beam Pipe 00225 // const SimpleCylinderBounds PIPE( 0.997, 1.003, -300., 300.); 00226 const SimpleCylinderBounds PIPE( beamPipeRadius[version]-0.003, beamPipeRadius[version]+0.003, 00227 -beamPipeLength[version], beamPipeLength[version]); 00228 00229 // Take the active layer position from the Tracker Reco Geometry 00230 // Pixel barrel 00231 std::vector< BarrelDetLayer*>::const_iterator bl = barrelLayers.begin(); 00232 double maxLength = (**bl).specificSurface().bounds().length()/2.+1.7; 00233 double maxRadius = (**bl).specificSurface().radius()+0.01; 00234 // First pixel barrel layer: r=4.41058, l=53.38 00235 const SimpleCylinderBounds PIXB1( maxRadius-0.005, maxRadius+0.005, -maxLength, +maxLength); 00236 // "Cables" 00237 const SimpleDiskBounds PIXBOut1(pxb1CablesInnerRadius[version],maxRadius+0.01,-0.5,0.5); 00238 const Surface::PositionType PPIXBOut1(0.0,0.0,maxLength); 00239 00240 // Second pixel barrel layer: r=7.30732, l=53.38 00241 ++bl; 00242 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+1.7, maxLength+0.000 ); 00243 maxRadius = (**bl).specificSurface().radius(); 00244 const SimpleCylinderBounds PIXB2( maxRadius-0.005, maxRadius+0.005, -maxLength, +maxLength); 00245 00246 // "Cables" 00247 const SimpleDiskBounds PIXBOut2(pxb2CablesInnerRadius[version],maxRadius+0.005,-0.5,0.5); 00248 const Surface::PositionType PPIXBOut2(0.0,0.0,maxLength); 00249 00250 // More cables 00251 ++bl; 00252 maxRadius = (**bl).specificSurface().radius(); 00253 const SimpleDiskBounds PIXBOut3(pxb3CablesInnerRadius[version],maxRadius,-0.5,0.5); 00254 const Surface::PositionType PPIXBOut3(0.0,0.0,maxLength); 00255 00256 // Third pixel barrel layer: r=10.1726, l=53.38 00257 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+1.7, maxLength+0.000 ); 00258 const SimpleCylinderBounds PIXB3( maxRadius-0.005, maxRadius+0.005, -maxLength, +maxLength); 00259 00260 // Pixel Barrel Outside walls and cables 00261 const SimpleDiskBounds PIXBOut4( pxbOutCables1InnerRadius[version],pxbOutCables1OuterRadius[version],-0.5,0.5); 00262 const Surface::PositionType PPIXBOut4(0.0,0.0,pxbOutCables1ZPosition[version]); 00263 00264 const SimpleDiskBounds PIXBOut(pxbOutCables2InnerRadius[version],pxbOutCables2OuterRadius[version],-0.5,0.5); 00265 const Surface::PositionType PPIXBOut(0.0,0.0,pxbOutCables2ZPosition[version]); 00266 00267 const SimpleCylinderBounds PIXBOut5( pixelOutCablesRadius[version]-0.1, pixelOutCablesRadius[version]+0.1, 00268 -pixelOutCablesLength[version], pixelOutCablesLength[version]); 00269 00270 const SimpleDiskBounds PIXBOut6(pixelOutCablesInnerRadius[version],pixelOutCablesOuterRadius[version],-0.5,0.5); 00271 const Surface::PositionType PPIXBOut6(0.0,0.0,pixelOutCablesZPosition[version]); 00272 00273 00274 // Tracker Inner Barrel : thin detectors (300 microns) 00275 // First TIB layer: r=25.6786, l=130.04 00276 ++bl; 00277 maxRadius = (**bl).specificSurface().radius(); 00278 maxLength = (**bl).specificSurface().bounds().length()/2.+7.0; 00279 const SimpleCylinderBounds TIB1( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00280 // Second TIB layer: r=34.0341, l=131.999 00281 ++bl; 00282 maxRadius = (**bl).specificSurface().radius(); 00283 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+7.0, maxLength+0.000 ); 00284 const SimpleCylinderBounds TIB2( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00285 // Third TIB layer: r=41.9599, l=131.628 !!!! Needs to be larger than TIB2 00286 ++bl; 00287 maxRadius = (**bl).specificSurface().radius(); 00288 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+7.0, maxLength+0.000 ); 00289 const SimpleCylinderBounds TIB3( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00290 // Fourth TIB layer: r=49.8924, l=132.78 00291 ++bl; 00292 maxRadius = (**bl).specificSurface().radius(); 00293 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+7.0, maxLength+0.000 ); 00294 const SimpleCylinderBounds TIB4( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00295 00296 // Inner Barrel Cylinder & Ends : Cables and walls 00297 const SimpleDiskBounds TIBEOut(tibOutCables1InnerRadius[version],tibOutCables1OuterRadius[version],-0.05,0.05); 00298 const Surface::PositionType PTIBEOut(0.0,0.0,tibOutCables1ZPosition[version]); 00299 00300 const SimpleDiskBounds TIBEOut2(tibOutCables2InnerRadius[version],tibOutCables2OuterRadius[version],-0.05,0.05); 00301 const Surface::PositionType PTIBEOut2(0.0,0.0,tibOutCables2ZPosition[version]); 00302 00303 // Inner Tracker / Outer Barrel Wall 00304 const SimpleCylinderBounds TOBCIn ( tobInCablesRadius[version]-0.5, tobInCablesRadius[version]+0.5, 00305 -tobInCablesLength[version], tobInCablesLength[version]); 00306 00307 // First TOB layer: r=60.7671, l=216.576 00308 ++bl; 00309 maxRadius = (**bl).specificSurface().radius(); 00310 maxLength = (**bl).specificSurface().bounds().length()/2.+0.0; 00311 const SimpleCylinderBounds TOB1( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00312 // Second TOB layer: r=69.3966, l=216.576 00313 ++bl; 00314 maxRadius = (**bl).specificSurface().radius(); 00315 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+0.0, maxLength+0.000 ); 00316 const SimpleCylinderBounds TOB2( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00317 // Third TOB layer: r=78.0686, l=216.576 00318 ++bl; 00319 maxRadius = (**bl).specificSurface().radius(); 00320 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+0.0, maxLength+0.000 ); 00321 const SimpleCylinderBounds TOB3( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00322 // Fourth TOB layer: r=86.8618, l=216.576 00323 ++bl; 00324 maxRadius = (**bl).specificSurface().radius(); 00325 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+0.0, maxLength+0.000 ); 00326 const SimpleCylinderBounds TOB4( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00327 // Fifth TOB layer: r=96.5557, l=216.576 00328 ++bl; 00329 maxRadius = (**bl).specificSurface().radius(); 00330 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+0.0, maxLength+0.000 ); 00331 const SimpleCylinderBounds TOB5( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00332 // Sixth TOB layer: r=108.05, l=216.576 00333 ++bl; 00334 maxRadius = (**bl).specificSurface().radius(); 00335 maxLength = std::max( (**bl).specificSurface().bounds().length()/2.+0.0, maxLength+0.000 ); 00336 const SimpleCylinderBounds TOB6( maxRadius-0.0150, maxRadius+0.0150, -maxLength, +maxLength); 00337 00338 const SimpleDiskBounds TOBEOut(tobOutCablesInnerRadius[version],tobOutCablesOuterRadius[version],-0.5,0.5); 00339 const Surface::PositionType PTOBEOut(0.0,0.0,tobOutCablesZPosition[version]); 00340 00341 const Surface::RotationType theRotation2(1.,0.,0.,0.,1.,0.,0.,0.,1.); 00342 00343 // Outside : Barrel 00344 const SimpleCylinderBounds TBOut ( tobOutCablesRadius[version]-0.5, tobOutCablesRadius[version]+0.5, 00345 -tobOutCablesLength[version], tobOutCablesLength[version]); 00346 00347 // And now the disks... 00348 std::vector< ForwardDetLayer*>::const_iterator fl = posForwardLayers.begin(); 00349 00350 // Pixel disks 00351 // First Pixel disk: Z pos 35.5 radii 5.42078, 16.0756 00352 double innerRadius = (**fl).specificSurface().innerRadius()-1.0; 00353 double outerRadius = (**fl).specificSurface().outerRadius()+2.0; 00354 const SimpleDiskBounds PIXD1(innerRadius, outerRadius,-0.0150,+0.0150); 00355 const Surface::PositionType PPIXD1(0.0,0.0,(**fl).surface().position().z()); 00356 // Second Pixel disk: Z pos 48.5 radii 5.42078, 16.0756 00357 ++fl; 00358 innerRadius = (**fl).specificSurface().innerRadius()-1.0; 00359 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00360 const SimpleDiskBounds PIXD2(innerRadius, outerRadius,-0.0150,+0.0150); 00361 const Surface::PositionType PPIXD2(0.0,0.0,(**fl).surface().position().z()); 00362 00363 // Tracker Inner disks (add 3 cm for the outer radius to simulate cables, 00364 // and remove 1cm to inner radius to allow for some extrapolation margin) 00365 // First TID : Z pos 78.445 radii 23.14, 50.4337 00366 ++fl; 00367 innerRadius = (**fl).specificSurface().innerRadius()-0.5; 00368 outerRadius = (**fl).specificSurface().outerRadius()+3.5; 00369 const SimpleDiskBounds TID1(innerRadius,outerRadius,-0.0150,+0.0150); 00370 const Surface::PositionType PTID1(0.,0.,(**fl).surface().position().z()); 00371 // Second TID : Z pos 90.445 radii 23.14, 50.4337 00372 ++fl; 00373 innerRadius = (**fl).specificSurface().innerRadius()-0.5; 00374 outerRadius = std::max( (**fl).specificSurface().outerRadius()+3.5, outerRadius+0.000); 00375 const SimpleDiskBounds TID2(innerRadius,outerRadius,-0.0150,+0.0150); 00376 const Surface::PositionType PTID2(0.,0.,(**fl).surface().position().z()); 00377 // Third TID : Z pos 105.445 radii 23.14, 50.4337 00378 ++fl; 00379 innerRadius = (**fl).specificSurface().innerRadius()-0.5; 00380 outerRadius = std::max( (**fl).specificSurface().outerRadius()+3.5, outerRadius+0.000); 00381 const SimpleDiskBounds TID3(innerRadius,outerRadius,-0.0150,+0.0150); 00382 const Surface::PositionType PTID3(0.,0.,(**fl).surface().position().z()); 00383 00384 // TID Wall and cables 00385 const SimpleDiskBounds TIDEOut(tidOutCablesInnerRadius[version],outerRadius+1.0,-0.5,0.5); 00386 const Surface::PositionType PTIDEOut(0.0,0.0,tidOutCablesZPosition[version]); 00387 00388 00389 // Tracker Endcaps : Add 11 cm to outer radius to correct for a bug, remove 00390 // 5cm to the inner radius (TEC7,8,9) to correct for a simular bug, and 00391 // remove other 2cm to inner radius to allow for some extrapolation margin 00392 // First TEC: Z pos 131.892 radii 23.3749, 99.1967 00393 ++fl; 00394 innerRadius = (**fl).specificSurface().innerRadius()-1.5; 00395 outerRadius = (**fl).specificSurface().outerRadius()+2.0; 00396 const SimpleDiskBounds TEC1(innerRadius,outerRadius,-0.0150,+0.0150); 00397 const Surface::PositionType PTEC1(0.,0,(**fl).surface().position().z()); 00398 // Second TEC: Z pos 145.892 radii 23.3749, 99.1967 00399 ++fl; 00400 innerRadius = (**fl).specificSurface().innerRadius()-1.5; 00401 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00402 const SimpleDiskBounds TEC2(innerRadius,outerRadius,-0.0150,+0.0150); 00403 const Surface::PositionType PTEC2(0.,0.,(**fl).surface().position().z()); 00404 // Third TEC: Z pos 159.892 radii 23.3749, 99.1967 00405 ++fl; 00406 innerRadius = (**fl).specificSurface().innerRadius()-1.5; 00407 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00408 const SimpleDiskBounds TEC3(innerRadius,outerRadius,-0.0150,+0.0150); 00409 const Surface::PositionType PTEC3(0.,0.,(**fl).surface().position().z()); 00410 // Fourth TEC: Z pos 173.892 radii 32.1263, 99.1967 00411 ++fl; 00412 innerRadius = (**fl).specificSurface().innerRadius()-2.5; 00413 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00414 const SimpleDiskBounds TEC4(innerRadius,outerRadius,-0.0150,+0.0150); 00415 const Surface::PositionType PTEC4(0.,0.,(**fl).surface().position().z()); 00416 // Fifth TEC: Z pos 187.892 radii 32.1263, 99.1967 00417 ++fl; 00418 innerRadius = (**fl).specificSurface().innerRadius()-2.5; 00419 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00420 const SimpleDiskBounds TEC5(innerRadius,outerRadius,-0.0150,+0.0150); 00421 const Surface::PositionType PTEC5(0.,0.,(**fl).surface().position().z()); 00422 // Sixth TEC: Z pos 205.392 radii 32.1263, 99.1967 00423 ++fl; 00424 innerRadius = (**fl).specificSurface().innerRadius()-2.5; 00425 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00426 const SimpleDiskBounds TEC6(innerRadius,outerRadius,-0.0150,+0.0150); 00427 const Surface::PositionType PTEC6(0.,0.,(**fl).surface().position().z()); 00428 // Seventh TEC: Z pos 224.121 radii 44.7432, 99.1967 00429 ++fl; 00430 innerRadius = (**fl).specificSurface().innerRadius()-9.5; 00431 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00432 const SimpleDiskBounds TEC7(innerRadius,outerRadius,-0.0150,+0.0150); 00433 const Surface::PositionType PTEC7(0.,0.,(**fl).surface().position().z()); 00434 // Eighth TEC: Z pos 244.621 radii 44.7432, 99.1967 00435 ++fl; 00436 innerRadius = (**fl).specificSurface().innerRadius()-9.5; 00437 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00438 const SimpleDiskBounds TEC8(innerRadius,outerRadius,-0.0150,+0.0150); 00439 const Surface::PositionType PTEC8(0.,0.,(**fl).surface().position().z()); 00440 // Nineth TEC: Z pos 266.121 radii 56.1781, 99.1967 00441 ++fl; 00442 innerRadius = (**fl).specificSurface().innerRadius()-20.5; 00443 outerRadius = std::max( (**fl).specificSurface().outerRadius()+2.0, outerRadius+0.000 ); 00444 const SimpleDiskBounds TEC9(innerRadius,outerRadius,-0.0150,+0.0150); 00445 const Surface::PositionType PTEC9(0.,0.,(**fl).surface().position().z()); 00446 00447 // Outside : Endcap 00448 const SimpleDiskBounds TEOut(tecOutCables1InnerRadius[version],tecOutCables1OuterRadius[version],-0.5,0.5); 00449 const Surface::PositionType PTEOut(0.0,0.0,tecOutCables1ZPosition[version]); 00450 00451 const SimpleDiskBounds TEOut2(tecOutCables2InnerRadius[version],tecOutCables2OuterRadius[version],-0.5,0.5); 00452 const Surface::PositionType PTEOut2(0.0,0.0,tecOutCables2ZPosition[version]); 00453 00454 // The ordering of disks and cylinders is essential here 00455 // (from inside to outside) 00456 // Do not change it thoughtlessly. 00457 00458 00459 // Beam Pipe 00460 00461 unsigned layerNr = 100; 00462 theCylinder = new BoundCylinder(thePosition,theRotation,PIPE); 00463 theCylinder->setMediumProperties(_theMPBeamPipe); 00464 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00465 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00466 minDim(layerNr),maxDim(layerNr), 00467 fudgeFactors(layerNr))); 00468 else 00469 delete theCylinder; 00470 00471 // Pixels 00472 00473 layerNr = TrackerInteractionGeometry::PXB+1; 00474 theCylinder = new BoundCylinder(thePosition,theRotation,PIXB1); 00475 theCylinder->setMediumProperties(_theMPPixelBarrel); 00476 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00477 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00478 minDim(layerNr),maxDim(layerNr), 00479 fudgeFactors(layerNr))); 00480 else 00481 delete theCylinder; 00482 00483 layerNr = 101; 00484 theDisk = new BoundDisk(PPIXBOut1,theRotation2,PIXBOut1); 00485 theDisk->setMediumProperties(_theMPPixelOutside1); 00486 if ( theDisk->mediumProperties()->radLen() > 0. ) 00487 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00488 minDim(layerNr),maxDim(layerNr), 00489 fudgeFactors(layerNr))); 00490 else 00491 delete theDisk; 00492 00493 layerNr = TrackerInteractionGeometry::PXB+2; 00494 theCylinder = new BoundCylinder(thePosition,theRotation,PIXB2); 00495 theCylinder->setMediumProperties(_theMPPixelBarrel); 00496 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00497 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00498 minDim(layerNr),maxDim(layerNr), 00499 fudgeFactors(layerNr))); 00500 else 00501 delete theCylinder; 00502 00503 layerNr = 102; 00504 theDisk = new BoundDisk(PPIXBOut2,theRotation2,PIXBOut2); 00505 theDisk->setMediumProperties(_theMPPixelOutside2); 00506 if ( theDisk->mediumProperties()->radLen() > 0. ) 00507 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00508 minDim(layerNr),maxDim(layerNr), 00509 fudgeFactors(layerNr))); 00510 else 00511 delete theDisk; 00512 00513 layerNr = 103; 00514 theDisk = new BoundDisk(PPIXBOut3,theRotation2,PIXBOut3); 00515 theDisk->setMediumProperties(_theMPPixelOutside3); 00516 if ( theDisk->mediumProperties()->radLen() > 0. ) 00517 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00518 minDim(layerNr),maxDim(layerNr), 00519 fudgeFactors(layerNr))); 00520 else 00521 delete theDisk; 00522 00523 layerNr = TrackerInteractionGeometry::PXB+3; 00524 theCylinder = new BoundCylinder(thePosition,theRotation,PIXB3); 00525 theCylinder->setMediumProperties(_theMPPixelBarrel); 00526 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00527 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00528 minDim(layerNr),maxDim(layerNr), 00529 fudgeFactors(layerNr))); 00530 else 00531 delete theCylinder; 00532 00533 layerNr = 104; 00534 theDisk = new BoundDisk(PPIXBOut4,theRotation2,PIXBOut4); 00535 theDisk->setMediumProperties(_theMPPixelOutside4); 00536 if ( theDisk->mediumProperties()->radLen() > 0. ) 00537 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00538 minDim(layerNr),maxDim(layerNr), 00539 fudgeFactors(layerNr))); 00540 else 00541 delete theDisk; 00542 00543 layerNr = 105; 00544 theDisk = new BoundDisk(PPIXBOut,theRotation2,PIXBOut); 00545 theDisk->setMediumProperties(_theMPPixelOutside); 00546 if ( theDisk->mediumProperties()->radLen() > 0. ) 00547 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00548 minDim(layerNr),maxDim(layerNr), 00549 fudgeFactors(layerNr))); 00550 else 00551 delete theDisk; 00552 00553 layerNr = TrackerInteractionGeometry::PXD+1; 00554 theDisk = new BoundDisk(PPIXD1,theRotation2,PIXD1); 00555 theDisk->setMediumProperties(_theMPPixelEndcap); 00556 if ( theDisk->mediumProperties()->radLen() > 0. ) 00557 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00558 minDim(layerNr),maxDim(layerNr), 00559 fudgeFactors(layerNr))); 00560 else 00561 delete theDisk; 00562 00563 layerNr = TrackerInteractionGeometry::PXD+2; 00564 theDisk = new BoundDisk(PPIXD2,theRotation2,PIXD2); 00565 theDisk->setMediumProperties(_theMPPixelEndcap); 00566 if ( theDisk->mediumProperties()->radLen() > 0. ) 00567 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00568 minDim(layerNr),maxDim(layerNr), 00569 fudgeFactors(layerNr))); 00570 else 00571 delete theDisk; 00572 00573 layerNr = 106; 00574 theCylinder = new BoundCylinder(thePosition,theRotation,PIXBOut5); 00575 theCylinder->setMediumProperties(_theMPPixelOutside5); 00576 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00577 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00578 minDim(layerNr),maxDim(layerNr), 00579 fudgeFactors(layerNr))); 00580 else 00581 delete theCylinder; 00582 00583 layerNr = 107; 00584 theDisk = new BoundDisk(PPIXBOut6,theRotation2,PIXBOut6); 00585 theDisk->setMediumProperties(_theMPPixelOutside6); 00586 if ( theDisk->mediumProperties()->radLen() > 0. ) 00587 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00588 minDim(layerNr),maxDim(layerNr), 00589 fudgeFactors(layerNr))); 00590 else 00591 delete theDisk; 00592 00593 // Inner Barrel 00594 00595 layerNr = TrackerInteractionGeometry::TIB+1; 00596 theCylinder = new BoundCylinder(thePosition,theRotation,TIB1); 00597 theCylinder->setMediumProperties(_theMPTIB1); 00598 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00599 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00600 minDim(layerNr),maxDim(layerNr), 00601 fudgeFactors(layerNr))); 00602 else 00603 delete theCylinder; 00604 00605 layerNr = TrackerInteractionGeometry::TIB+2; 00606 theCylinder = new BoundCylinder(thePosition,theRotation,TIB2); 00607 theCylinder->setMediumProperties(_theMPTIB2); 00608 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00609 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00610 minDim(layerNr),maxDim(layerNr), 00611 fudgeFactors(layerNr))); 00612 else 00613 delete theCylinder; 00614 00615 layerNr = TrackerInteractionGeometry::TIB+3; 00616 theCylinder = new BoundCylinder(thePosition,theRotation,TIB3); 00617 theCylinder->setMediumProperties(_theMPTIB3); 00618 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00619 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00620 minDim(layerNr),maxDim(layerNr), 00621 fudgeFactors(layerNr))); 00622 else 00623 delete theCylinder; 00624 00625 layerNr = TrackerInteractionGeometry::TIB+4; 00626 theCylinder = new BoundCylinder(thePosition,theRotation,TIB4); 00627 theCylinder->setMediumProperties(_theMPTIB4); 00628 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00629 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00630 minDim(layerNr),maxDim(layerNr), 00631 fudgeFactors(layerNr))); 00632 else 00633 delete theCylinder; 00634 00635 layerNr = 108; 00636 theDisk = new BoundDisk(PTIBEOut,theRotation2,TIBEOut); 00637 theDisk->setMediumProperties(_theMPTIBEOutside1); 00638 if ( theDisk->mediumProperties()->radLen() > 0. ) 00639 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00640 minDim(layerNr),maxDim(layerNr), 00641 fudgeFactors(layerNr))); 00642 else 00643 delete theDisk; 00644 00645 layerNr = 109; 00646 theDisk = new BoundDisk(PTIBEOut2,theRotation2,TIBEOut2); 00647 theDisk->setMediumProperties(_theMPTIBEOutside2); 00648 if ( theDisk->mediumProperties()->radLen() > 0. ) 00649 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00650 minDim(layerNr),maxDim(layerNr), 00651 fudgeFactors(layerNr))); 00652 else 00653 delete theDisk; 00654 00655 // Inner Endcaps 00656 00657 layerNr = TrackerInteractionGeometry::TID+1; 00658 theDisk = new BoundDisk(PTID1,theRotation2,TID1); 00659 theDisk->setMediumProperties(_theMPInner1); 00660 if ( theDisk->mediumProperties()->radLen() > 0. ) 00661 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00662 minDim(layerNr),maxDim(layerNr), 00663 fudgeFactors(layerNr))); 00664 else 00665 delete theDisk; 00666 00667 layerNr = TrackerInteractionGeometry::TID+2; 00668 theDisk = new BoundDisk(PTID2,theRotation2,TID2); 00669 theDisk->setMediumProperties(_theMPInner2); 00670 if ( theDisk->mediumProperties()->radLen() > 0. ) 00671 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00672 minDim(layerNr),maxDim(layerNr), 00673 fudgeFactors(layerNr))); 00674 00675 else 00676 delete theDisk; 00677 00678 layerNr = TrackerInteractionGeometry::TID+3; 00679 theDisk = new BoundDisk(PTID3,theRotation2,TID3); 00680 theDisk->setMediumProperties(_theMPInner3); 00681 if ( theDisk->mediumProperties()->radLen() > 0. ) 00682 _theCylinders.push_back(TrackerLayer(theDisk,12,layerNr, 00683 minDim(layerNr),maxDim(layerNr), 00684 fudgeFactors(layerNr))); 00685 else 00686 delete theDisk; 00687 00688 layerNr = 110; 00689 theDisk = new BoundDisk(PTIDEOut,theRotation2,TIDEOut); 00690 theDisk->setMediumProperties(_theMPTIDEOutside); 00691 if ( theDisk->mediumProperties()->radLen() > 0. ) 00692 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00693 minDim(layerNr),maxDim(layerNr), 00694 fudgeFactors(layerNr))); 00695 else 00696 delete theDisk; 00697 00698 00699 // Outer Barrel 00700 00701 layerNr = 111; 00702 theCylinder = new BoundCylinder(thePosition,theRotation,TOBCIn); 00703 theCylinder->setMediumProperties(_theMPTOBBInside); 00704 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00705 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00706 minDim(layerNr),maxDim(layerNr), 00707 fudgeFactors(layerNr))); 00708 else 00709 delete theCylinder; 00710 00711 layerNr = TrackerInteractionGeometry::TOB+1; 00712 theCylinder = new BoundCylinder(thePosition,theRotation,TOB1); 00713 theCylinder->setMediumProperties(_theMPTOB1); 00714 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00715 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00716 minDim(layerNr),maxDim(layerNr), 00717 fudgeFactors(layerNr))); 00718 else 00719 delete theCylinder; 00720 00721 layerNr = TrackerInteractionGeometry::TOB+2; 00722 theCylinder = new BoundCylinder(thePosition,theRotation,TOB2); 00723 theCylinder->setMediumProperties(_theMPTOB2); 00724 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00725 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00726 minDim(layerNr),maxDim(layerNr), 00727 fudgeFactors(layerNr))); 00728 else 00729 delete theCylinder; 00730 00731 layerNr = TrackerInteractionGeometry::TOB+3; 00732 theCylinder = new BoundCylinder(thePosition,theRotation,TOB3); 00733 theCylinder->setMediumProperties(_theMPTOB3); 00734 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00735 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00736 minDim(layerNr),maxDim(layerNr), 00737 fudgeFactors(layerNr))); 00738 else 00739 delete theCylinder; 00740 00741 layerNr = TrackerInteractionGeometry::TOB+4; 00742 theCylinder = new BoundCylinder(thePosition,theRotation,TOB4); 00743 theCylinder->setMediumProperties(_theMPTOB4); 00744 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00745 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00746 minDim(layerNr),maxDim(layerNr), 00747 fudgeFactors(layerNr))); 00748 else 00749 delete theCylinder; 00750 00751 layerNr = TrackerInteractionGeometry::TOB+5; 00752 theCylinder = new BoundCylinder(thePosition,theRotation,TOB5); 00753 theCylinder->setMediumProperties(_theMPTOB5); 00754 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00755 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00756 minDim(layerNr),maxDim(layerNr), 00757 fudgeFactors(layerNr))); 00758 else 00759 delete theCylinder; 00760 00761 layerNr = TrackerInteractionGeometry::TOB+6; 00762 theCylinder = new BoundCylinder(thePosition,theRotation,TOB6); 00763 theCylinder->setMediumProperties(_theMPTOB6); 00764 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00765 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00766 minDim(layerNr),maxDim(layerNr), 00767 fudgeFactors(layerNr))); 00768 else 00769 delete theCylinder; 00770 00771 layerNr = 112; 00772 theDisk = new BoundDisk(PTOBEOut,theRotation2,TOBEOut); 00773 theDisk->setMediumProperties(_theMPTOBEOutside); 00774 if ( theDisk->mediumProperties()->radLen() > 0. ) 00775 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00776 minDim(layerNr),maxDim(layerNr), 00777 fudgeFactors(layerNr))); 00778 else 00779 delete theDisk; 00780 00781 // Outer Endcaps 00782 00783 layerNr = TrackerInteractionGeometry::TEC+1; 00784 theDisk = new BoundDisk(PTEC1,theRotation2,TEC1); 00785 theDisk->setMediumProperties(_theMPEndcap); 00786 if ( theDisk->mediumProperties()->radLen() > 0. ) 00787 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00788 minDim(layerNr),maxDim(layerNr), 00789 fudgeFactors(layerNr))); 00790 else 00791 delete theDisk; 00792 00793 layerNr = TrackerInteractionGeometry::TEC+2; 00794 theDisk = new BoundDisk(PTEC2,theRotation2,TEC2); 00795 theDisk->setMediumProperties(_theMPEndcap); 00796 if ( theDisk->mediumProperties()->radLen() > 0. ) 00797 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00798 minDim(layerNr),maxDim(layerNr), 00799 fudgeFactors(layerNr))); 00800 else 00801 delete theDisk; 00802 00803 layerNr = TrackerInteractionGeometry::TEC+3; 00804 theDisk = new BoundDisk(PTEC3,theRotation2,TEC3); 00805 theDisk->setMediumProperties(_theMPEndcap); 00806 if ( theDisk->mediumProperties()->radLen() > 0. ) 00807 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00808 minDim(layerNr),maxDim(layerNr), 00809 fudgeFactors(layerNr))); 00810 else 00811 delete theDisk; 00812 00813 layerNr = TrackerInteractionGeometry::TEC+4; 00814 theDisk = new BoundDisk(PTEC4,theRotation2,TEC4); 00815 theDisk->setMediumProperties(_theMPEndcap); 00816 if ( theDisk->mediumProperties()->radLen() > 0. ) 00817 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00818 minDim(layerNr),maxDim(layerNr), 00819 fudgeFactors(layerNr))); 00820 else 00821 delete theDisk; 00822 00823 layerNr = TrackerInteractionGeometry::TEC+5; 00824 theDisk = new BoundDisk(PTEC5,theRotation2,TEC5); 00825 theDisk->setMediumProperties(_theMPEndcap); 00826 if ( theDisk->mediumProperties()->radLen() > 0. ) 00827 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00828 minDim(layerNr),maxDim(layerNr), 00829 fudgeFactors(layerNr))); 00830 else 00831 delete theDisk; 00832 00833 layerNr = TrackerInteractionGeometry::TEC+6; 00834 theDisk = new BoundDisk(PTEC6,theRotation2,TEC6); 00835 theDisk->setMediumProperties(_theMPEndcap); 00836 if ( theDisk->mediumProperties()->radLen() > 0. ) 00837 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00838 minDim(layerNr),maxDim(layerNr), 00839 fudgeFactors(layerNr))); 00840 else 00841 delete theDisk; 00842 00843 layerNr = TrackerInteractionGeometry::TEC+7; 00844 theDisk = new BoundDisk(PTEC7,theRotation2,TEC7); 00845 theDisk->setMediumProperties(_theMPEndcap); 00846 if ( theDisk->mediumProperties()->radLen() > 0. ) 00847 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00848 minDim(layerNr),maxDim(layerNr), 00849 fudgeFactors(layerNr))); 00850 else 00851 delete theDisk; 00852 00853 layerNr = TrackerInteractionGeometry::TEC+8; 00854 theDisk = new BoundDisk(PTEC8,theRotation2,TEC8); 00855 theDisk->setMediumProperties(_theMPEndcap); 00856 if ( theDisk->mediumProperties()->radLen() > 0. ) 00857 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00858 minDim(layerNr),maxDim(layerNr), 00859 fudgeFactors(layerNr))); 00860 else 00861 delete theDisk; 00862 00863 layerNr = TrackerInteractionGeometry::TEC+9; 00864 theDisk = new BoundDisk(PTEC9,theRotation2,TEC9); 00865 theDisk->setMediumProperties(_theMPEndcap); 00866 if ( theDisk->mediumProperties()->radLen() > 0. ) 00867 _theCylinders.push_back(TrackerLayer(theDisk,layerNr, 00868 minDim(layerNr),maxDim(layerNr), 00869 fudgeFactors(layerNr))); 00870 else 00871 delete theDisk; 00872 00873 00874 // Tracker Outside 00875 00876 layerNr = 113; 00877 theCylinder = new BoundCylinder(thePosition,theRotation,TBOut); 00878 theCylinder->setMediumProperties(_theMPBarrelOutside); 00879 if ( theCylinder->mediumProperties()->radLen() > 0. ) 00880 _theCylinders.push_back(TrackerLayer(theCylinder,false,layerNr, 00881 minDim(layerNr),maxDim(layerNr), 00882 fudgeFactors(layerNr))); 00883 else 00884 delete theCylinder; 00885 00886 layerNr = 114; 00887 theDisk = new BoundDisk(PTEOut,theRotation2,TEOut); 00888 theDisk->setMediumProperties(_theMPEndcapOutside); 00889 if ( theDisk->mediumProperties()->radLen() > 0. ) 00890 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00891 minDim(layerNr),maxDim(layerNr), 00892 fudgeFactors(layerNr))); 00893 else 00894 delete theDisk; 00895 00896 layerNr = 115; 00897 theDisk = new BoundDisk(PTEOut2,theRotation2,TEOut2); 00898 theDisk->setMediumProperties(_theMPEndcapOutside2); 00899 if ( theDisk->mediumProperties()->radLen() > 0. ) 00900 _theCylinders.push_back(TrackerLayer(theDisk,true,layerNr, 00901 minDim(layerNr),maxDim(layerNr), 00902 fudgeFactors(layerNr))); 00903 else 00904 delete theDisk; 00905 00906 // Check overall compatibility of cylinder dimensions 00907 // (must be nested cylinders) 00908 // Throw an exception if the test fails 00909 double zin, rin; 00910 double zout, rout; 00911 unsigned nCyl=0; 00912 std::list<TrackerLayer>::const_iterator cyliterOut=cylinderBegin(); 00913 // Inner cylinder dimensions 00914 if ( cyliterOut->forward() ) { 00915 zin = cyliterOut->disk()->position().z(); 00916 rin = cyliterOut->disk()->outerRadius(); 00917 } else { 00918 zin = cyliterOut->cylinder()->bounds().length()/2.; 00919 rin = cyliterOut->cylinder()->bounds().width()/2.; 00920 } 00921 // Go to the next cylinder 00922 ++cyliterOut; 00923 // And loop over all cylinders 00924 while ( cyliterOut != cylinderEnd() ) { 00925 // Outer cylinder dimensions 00926 if ( cyliterOut->forward() ) { 00927 zout = cyliterOut->disk()->position().z(); 00928 rout = cyliterOut->disk()->outerRadius(); 00929 } else { 00930 zout = cyliterOut->cylinder()->bounds().length()/2.; 00931 rout = cyliterOut->cylinder()->bounds().width()/2.; 00932 } 00933 00934 nCyl++; 00935 if ( zout < zin || rout < rin ) { 00936 throw cms::Exception("FastSimulation/TrackerInteractionGeometry ") 00937 << " WARNING with cylinder number " << nCyl 00938 << " (Active Layer Number = " << cyliterOut->layerNumber() 00939 << " Forward ? " << cyliterOut->forward() << " ) " 00940 << " has dimensions smaller than previous cylinder : " << std::endl 00941 << " zout/zin = " << zout << " " << zin << std::endl 00942 << " rout/rin = " << rout << " " << rin << std::endl; 00943 } else { 00944 /* 00945 std::cout << " Cylinder number " << nCyl 00946 << " (Active Layer Number = " << cyliterOut->layerNumber() 00947 << " Forward ? " << cyliterOut->forward() << " ) " 00948 << " has dimensions of : " 00949 << " zout = " << zout << "; " 00950 << " rout = " << rout << std::endl; 00951 */ 00952 } 00953 // Go to the next cylinder 00954 cyliterOut++; 00955 // Inner cylinder becomes outer cylinder 00956 zin = zout; 00957 rin = rout; 00958 // End test 00959 } 00960 00961 }
TrackerInteractionGeometry::~TrackerInteractionGeometry | ( | ) |
Destructor.
Definition at line 993 of file TrackerInteractionGeometry.cc.
References _theCylinders, _theMPBarrelOutside, _theMPBeamPipe, _theMPEndcap, _theMPEndcapOutside, _theMPEndcapOutside2, _theMPInner1, _theMPInner2, _theMPInner3, _theMPPixelBarrel, _theMPPixelEndcap, _theMPPixelOutside, _theMPPixelOutside1, _theMPPixelOutside2, _theMPPixelOutside3, _theMPPixelOutside4, _theMPPixelOutside5, _theMPPixelOutside6, _theMPTIB1, _theMPTIB2, _theMPTIB3, _theMPTIB4, _theMPTIBEOutside1, _theMPTIBEOutside2, _theMPTIDEOutside, _theMPTOB1, _theMPTOB2, _theMPTOB3, _theMPTOB4, _theMPTOB5, _theMPTOB6, _theMPTOBBInside, and _theMPTOBEOutside.
00994 { 00995 _theCylinders.clear(); 00996 // _theRings.clear(); 00997 00998 // The Beam pipe 00999 delete _theMPBeamPipe; 01000 // The pixel barrel layers 01001 delete _theMPPixelBarrel; 01002 // The pixel endcap disks 01003 delete _theMPPixelEndcap; 01004 // The various cables thicnesses for each layer / disks 01005 delete _theMPPixelOutside1; 01006 delete _theMPPixelOutside2; 01007 delete _theMPPixelOutside3; 01008 delete _theMPPixelOutside4; 01009 delete _theMPPixelOutside; 01010 delete _theMPPixelOutside5; 01011 delete _theMPPixelOutside6; 01012 // The tracker inner barrel layers 01013 delete _theMPTIB1; 01014 delete _theMPTIB2; 01015 delete _theMPTIB3; 01016 delete _theMPTIB4; 01017 // The tracker outer barrel layers 01018 delete _theMPTOB1; 01019 delete _theMPTOB2; 01020 delete _theMPTOB3; 01021 delete _theMPTOB4; 01022 delete _theMPTOB5; 01023 delete _theMPTOB6; 01024 // The tracker inner disks 01025 delete _theMPInner1; 01026 delete _theMPInner2; 01027 delete _theMPInner3; 01028 // The tracker endcap disks 01029 delete _theMPEndcap; 01030 // Various cable thicknesses 01031 delete _theMPTOBBInside; 01032 delete _theMPTIBEOutside1; 01033 delete _theMPTIBEOutside2; 01034 delete _theMPTIDEOutside; 01035 delete _theMPTOBEOutside; 01036 delete _theMPBarrelOutside; 01037 delete _theMPEndcapOutside; 01038 delete _theMPEndcapOutside2; 01039 }
std::list<TrackerLayer>::const_iterator TrackerInteractionGeometry::cylinderBegin | ( | ) | const [inline] |
Initialize the interaction geometry void initialize(const GeometricSearchTracker* geomSearchTracker);.
Returns the first pointer in the cylinder list
Definition at line 41 of file TrackerInteractionGeometry.h.
References _theCylinders.
Referenced by TrajectoryManager::initializeLayerMap(), ConvBremSeedProducer::initializeLayerMap(), MagneticFieldMap::MagneticFieldMap(), ConvBremSeedProducer::produce(), TrajectoryManager::propagateToLayer(), TrajectoryManager::reconstruct(), GSPixelHitMatcher::setES(), and TrackerInteractionGeometry().
00042 { return _theCylinders.begin(); }
std::list<TrackerLayer>::const_iterator TrackerInteractionGeometry::cylinderEnd | ( | ) | const [inline] |
Returns the last pointer in the cylinder list.
Definition at line 45 of file TrackerInteractionGeometry.h.
References _theCylinders.
Referenced by TrajectoryManager::initializeLayerMap(), ConvBremSeedProducer::initializeLayerMap(), MagneticFieldMap::MagneticFieldMap(), ConvBremSeedProducer::produce(), TrajectoryManager::propagateToLayer(), TrajectoryManager::reconstruct(), GSPixelHitMatcher::setES(), and TrackerInteractionGeometry().
00046 { return _theCylinders.end(); }
std::vector< double > TrackerInteractionGeometry::fudgeFactors | ( | unsigned | layerNr | ) | [private] |
Definition at line 984 of file TrackerInteractionGeometry.cc.
References fudgeFactor, and fudgeLayer.
Referenced by TrackerInteractionGeometry().
00984 { 00985 std::vector<double> fudge; 00986 for ( unsigned iLayer=0; iLayer<fudgeFactor.size(); ++iLayer ) { 00987 if ( layerNr != fudgeLayer[iLayer] ) continue; 00988 fudge.push_back(fudgeFactor[iLayer]); 00989 } 00990 return fudge; 00991 }
std::vector< double > TrackerInteractionGeometry::maxDim | ( | unsigned | layerNr | ) | [private] |
Definition at line 974 of file TrackerInteractionGeometry.cc.
References fudgeFactor, fudgeLayer, fudgeMax, and max.
Referenced by TrackerInteractionGeometry().
00974 { 00975 std::vector<double> max; 00976 for ( unsigned iLayer=0; iLayer<fudgeFactor.size(); ++iLayer ) { 00977 if ( layerNr != fudgeLayer[iLayer] ) continue; 00978 max.push_back(fudgeMax[iLayer]); 00979 } 00980 return max; 00981 }
std::vector< double > TrackerInteractionGeometry::minDim | ( | unsigned | layerNr | ) | [private] |
Definition at line 964 of file TrackerInteractionGeometry.cc.
References fudgeFactor, fudgeLayer, fudgeMin, and min.
Referenced by TrackerInteractionGeometry().
00964 { 00965 std::vector<double> min; 00966 for ( unsigned iLayer=0; iLayer<fudgeFactor.size(); ++iLayer ) { 00967 if ( layerNr != fudgeLayer[iLayer] ) continue; 00968 min.push_back(fudgeMin[iLayer]); 00969 } 00970 return min; 00971 }
const int TrackerInteractionGeometry::nCylinders | ( | ) | const [inline] |
Returns the number of cylinders in the Tracker.
Definition at line 49 of file TrackerInteractionGeometry.h.
References _theCylinders.
00050 { return static_cast<const int>(_theCylinders.size()); }
std::list<TrackerLayer> TrackerInteractionGeometry::_theCylinders [private] |
The list of tracker (sensistive or not) layers.
Definition at line 62 of file TrackerInteractionGeometry.h.
Referenced by cylinderBegin(), cylinderEnd(), nCylinders(), TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Cables around the tracker (one barrel, two disks).
Definition at line 220 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The following list gives the thicknesses of the various layers.
The beam pipe
Definition at line 171 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The Tracker EndCap layers.
Definition at line 205 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 221 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 222 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker inner disks.
Definition at line 207 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 208 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 209 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The barrel pixel layers.
Definition at line 173 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The endcap pixel layers.
Definition at line 175 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 181 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
A series of cables/walls to reproduce the full sim.
Definition at line 177 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 178 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 179 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 180 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 182 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 183 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker inner barrel layer 1.
Definition at line 185 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker inner barrel layer 2.
Definition at line 187 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker inner barrel layer 3.
Definition at line 189 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker inner barrel layer 4.
Definition at line 191 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Some material around the tracker inner barrel (disk).
Definition at line 213 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Definition at line 214 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Some material around the tracker inner disks (disk).
Definition at line 218 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker outer barrel layer 1.
Definition at line 193 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker outer barrel layer 2.
Definition at line 195 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker outer barrel layer 3.
Definition at line 197 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker outer barrel layer 4.
Definition at line 199 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker outer barrel layer 5.
Definition at line 201 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
The tracker outer barrel layer 6.
Definition at line 203 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Some material in front of the tracker outer barrel (cylinder).
Definition at line 211 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
Some material around the tracker outer barrel (disk).
Definition at line 216 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry(), and ~TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::barrelCablesThickness [private] |
Definition at line 111 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::beamPipeLength [private] |
Definition at line 119 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::beamPipeRadius [private] |
Position of dead material layers (cables, services, etc.
) Beam pipe
Definition at line 118 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::beamPipeThickness [private] |
Beam Pipe.
Definition at line 68 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::endcapCables1Thickness [private] |
Definition at line 113 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::endcapCables2Thickness [private] |
Definition at line 114 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::fudgeFactor [private] |
Definition at line 168 of file TrackerInteractionGeometry.h.
Referenced by fudgeFactors(), maxDim(), minDim(), and TrackerInteractionGeometry().
std::vector<unsigned int> TrackerInteractionGeometry::fudgeLayer [private] |
Definition at line 165 of file TrackerInteractionGeometry.h.
Referenced by fudgeFactors(), maxDim(), minDim(), and TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::fudgeMax [private] |
Definition at line 167 of file TrackerInteractionGeometry.h.
Referenced by maxDim(), and TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::fudgeMin [private] |
Definition at line 166 of file TrackerInteractionGeometry.h.
Referenced by minDim(), and TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pixelOutCablesInnerRadius [private] |
Definition at line 134 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pixelOutCablesLength [private] |
Definition at line 133 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pixelOutCablesOuterRadius [private] |
Definition at line 135 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pixelOutCablesRadius [private] |
Pixel Outside walls and cables (barrel and endcaps).
Definition at line 132 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pixelOutCablesZPosition [private] |
Definition at line 136 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxb1CablesInnerRadius [private] |
Cables and Services at the end of PIXB1,2,3 ("disk").
Definition at line 121 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxb1CablesThickness [private] |
Pixel Barrel services at the end of layers 1-3.
Definition at line 72 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxb2CablesInnerRadius [private] |
Definition at line 122 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxb2CablesThickness [private] |
Definition at line 73 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxb3CablesInnerRadius [private] |
Definition at line 123 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxb3CablesThickness [private] |
Definition at line 74 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables1InnerRadius [private] |
Pixel Barrel Outside walls and cables.
Definition at line 125 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables1OuterRadius [private] |
Definition at line 126 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables1Thickness [private] |
Pixel Barrel outside cables.
Definition at line 76 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables1ZPosition [private] |
Definition at line 127 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables2InnerRadius [private] |
Definition at line 128 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables2OuterRadius [private] |
Definition at line 129 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables2Thickness [private] |
Definition at line 77 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbOutCables2ZPosition [private] |
Definition at line 130 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxbThickness [private] |
Pixel Barrel Layers 1-3.
Definition at line 70 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxdOutCables1Thickness [private] |
Pixel Endcap outside cables.
Definition at line 81 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxdOutCables2Thickness [private] |
Definition at line 82 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::pxdThickness [private] |
Pixel Disks 1-2.
Definition at line 79 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tecLayerThickness [private] |
Definition at line 109 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tecOutCables1InnerRadius [private] |
Tracker Endcaps Outside Cables and walls.
Definition at line 157 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tecOutCables1OuterRadius [private] |
Definition at line 158 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tecOutCables1ZPosition [private] |
Definition at line 159 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tecOutCables2InnerRadius [private] |
Definition at line 160 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tecOutCables2OuterRadius [private] |
Definition at line 161 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tecOutCables2ZPosition [private] |
Definition at line 162 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibLayer1Thickness [private] |
Tracker Inner barrel layers 1-4.
Definition at line 84 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibLayer2Thickness [private] |
Definition at line 85 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibLayer3Thickness [private] |
Definition at line 86 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibLayer4Thickness [private] |
Definition at line 87 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables1InnerRadius [private] |
Tracker Inner Barrel Outside Cables and walls (endcap).
Definition at line 138 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables1OuterRadius [private] |
Definition at line 139 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables1Thickness [private] |
TIB outside services (endcap).
Definition at line 89 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables1ZPosition [private] |
Definition at line 140 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables2InnerRadius [private] |
Definition at line 141 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables2OuterRadius [private] |
Definition at line 142 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables2Thickness [private] |
Definition at line 90 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tibOutCables2ZPosition [private] |
Definition at line 143 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tidLayer1Thickness [private] |
Tracker Inner disks layers 1-3.
Definition at line 92 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tidLayer2Thickness [private] |
Definition at line 93 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tidLayer3Thickness [private] |
Definition at line 94 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tidOutCablesInnerRadius [private] |
Tracker Inner Disks Outside Cables and walls.
Definition at line 148 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tidOutCablesZPosition [private] |
Definition at line 149 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tidOutsideThickness [private] |
TID outside wall (endcap).
Definition at line 96 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobInCablesLength [private] |
Definition at line 146 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobInCablesRadius [private] |
Tracker outer barrel Inside wall (barrel).
Definition at line 145 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobInsideThickness [private] |
TOB inside wall (barrel).
Definition at line 98 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobLayer1Thickness [private] |
Tracker Outer barrel layers 1-6.
Definition at line 100 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobLayer2Thickness [private] |
Definition at line 101 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobLayer3Thickness [private] |
Definition at line 102 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobLayer4Thickness [private] |
Definition at line 103 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobLayer5Thickness [private] |
Definition at line 104 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobLayer6Thickness [private] |
Definition at line 105 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobOutCablesInnerRadius [private] |
Tracker Outer Barrel Outside Cables and walls (barrel and endcaps).
Definition at line 151 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobOutCablesLength [private] |
Definition at line 155 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobOutCablesOuterRadius [private] |
Definition at line 152 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobOutCablesRadius [private] |
Definition at line 154 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobOutCablesZPosition [private] |
Definition at line 153 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
std::vector<double> TrackerInteractionGeometry::tobOutsideThickness [private] |
Definition at line 107 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().
unsigned int TrackerInteractionGeometry::version [private] |
Thickness of all layers Version of the description.
Definition at line 66 of file TrackerInteractionGeometry.h.
Referenced by TrackerInteractionGeometry().