CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/FastSimulation/TrackerSetup/interface/TrackerInteractionGeometry.h

Go to the documentation of this file.
00001 #ifndef FastSimulation_TrackerSetup_TrackerInteractionGeometry_H
00002 #define FastSimulation_TrackerSetup_TrackerInteractionGeometry_H
00003 // v0  who ? when ? 
00004 // 11 Dec 2003 Florian Beaudette. Removed the surfaces corresponding to ECAL 
00005 //             This will carried out by the FamosTrajectoryManager
00006 // 12 Oct 2006 Patrick Janot. Removed hardcoded active geometry & rings
00007 //                            Removed RecHit smearing parameterization
00008 // 16 Nov 2007 Patrick Janot. Make the whole thing configurable 
00009 
00010 //FAMOS Headers
00011 #include "FastSimulation/TrackerSetup/interface/TrackerLayer.h"
00012 
00013 #include <list>
00014 #include <vector>
00015 
00016 class MediumProperties;
00017 class GeometricSearchTracker;
00018 
00019 namespace edm { 
00020   class ParameterSet;
00021 }
00022 
00023 class TrackerInteractionGeometry
00024 {
00025 
00026  public:
00027 
00028   enum FirstCylinders { PXB=0,PXD=3,TIB=5,TID=9,TOB=12,TEC=18 };
00029 
00031   TrackerInteractionGeometry(const edm::ParameterSet& trackerMaterial,
00032                              const GeometricSearchTracker* geomSearchTracker);
00033 
00035   ~TrackerInteractionGeometry();
00036 
00039 
00041   inline std::list<TrackerLayer>::const_iterator cylinderBegin() const
00042     { return _theCylinders.begin(); }
00043 
00045   inline std::list<TrackerLayer>::const_iterator cylinderEnd() const
00046     { return _theCylinders.end(); }
00047 
00049   inline const int nCylinders() const 
00050     { return static_cast<const int>(_theCylinders.size()); }
00051 
00052  private:
00053 
00054   // Fudge factors to apply to each layer material (private use only)
00055   std::vector<double> fudgeFactors(unsigned layerNr); 
00056   std::vector<double> minDim(unsigned layerNr);
00057   std::vector<double> maxDim(unsigned layerNr);
00058  
00059  private:
00060 
00062   std::list<TrackerLayer> _theCylinders;
00063 
00066   unsigned int version;
00068   std::vector<double> beamPipeThickness;
00070   std::vector<double> pxbThickness;
00072   std::vector<double> pxb1CablesThickness;
00073   std::vector<double> pxb2CablesThickness;
00074   std::vector<double> pxb3CablesThickness;
00076   std::vector<double> pxbOutCables1Thickness;
00077   std::vector<double> pxbOutCables2Thickness;
00079   std::vector<double> pxdThickness;
00081   std::vector<double> pxdOutCables1Thickness;
00082   std::vector<double> pxdOutCables2Thickness;
00084   std::vector<double> tibLayer1Thickness;
00085   std::vector<double> tibLayer2Thickness;
00086   std::vector<double> tibLayer3Thickness;
00087   std::vector<double> tibLayer4Thickness;
00089   std::vector<double> tibOutCables1Thickness;
00090   std::vector<double> tibOutCables2Thickness;
00092   std::vector<double> tidLayer1Thickness;
00093   std::vector<double> tidLayer2Thickness;
00094   std::vector<double> tidLayer3Thickness;
00096   std::vector<double> tidOutsideThickness;
00098   std::vector<double> tobInsideThickness;
00100   std::vector<double> tobLayer1Thickness;
00101   std::vector<double> tobLayer2Thickness;
00102   std::vector<double> tobLayer3Thickness;
00103   std::vector<double> tobLayer4Thickness;
00104   std::vector<double> tobLayer5Thickness;
00105   std::vector<double> tobLayer6Thickness;
00106   // TOB services (endcap)
00107   std::vector<double> tobOutsideThickness;
00108   // Tracker EndCap disks layers 1-9
00109   std::vector<double> tecLayerThickness;
00110   // TOB outside wall (barrel)
00111   std::vector<double> barrelCablesThickness;
00112   // TEC outside wall (endcap)
00113   std::vector<double> endcapCables1Thickness;
00114   std::vector<double> endcapCables2Thickness;
00115 
00118   std::vector<double> beamPipeRadius;
00119   std::vector<double> beamPipeLength;
00121   std::vector<double> pxb1CablesInnerRadius;
00122   std::vector<double> pxb2CablesInnerRadius;
00123   std::vector<double> pxb3CablesInnerRadius;
00125   std::vector<double> pxbOutCables1InnerRadius;
00126   std::vector<double> pxbOutCables1OuterRadius;
00127   std::vector<double> pxbOutCables1ZPosition;
00128   std::vector<double> pxbOutCables2InnerRadius;
00129   std::vector<double> pxbOutCables2OuterRadius;
00130   std::vector<double> pxbOutCables2ZPosition;
00132   std::vector<double> pixelOutCablesRadius;
00133   std::vector<double> pixelOutCablesLength;
00134   std::vector<double> pixelOutCablesInnerRadius;
00135   std::vector<double> pixelOutCablesOuterRadius;
00136   std::vector<double> pixelOutCablesZPosition;
00138   std::vector<double> tibOutCables1InnerRadius;
00139   std::vector<double> tibOutCables1OuterRadius;
00140   std::vector<double> tibOutCables1ZPosition;
00141   std::vector<double> tibOutCables2InnerRadius;
00142   std::vector<double> tibOutCables2OuterRadius;
00143   std::vector<double> tibOutCables2ZPosition;
00145   std::vector<double> tobInCablesRadius;
00146   std::vector<double> tobInCablesLength;
00148   std::vector<double> tidOutCablesInnerRadius;
00149   std::vector<double> tidOutCablesZPosition;
00151   std::vector<double> tobOutCablesInnerRadius;
00152   std::vector<double> tobOutCablesOuterRadius;
00153   std::vector<double> tobOutCablesZPosition;
00154   std::vector<double> tobOutCablesRadius;
00155   std::vector<double> tobOutCablesLength;
00157   std::vector<double> tecOutCables1InnerRadius;
00158   std::vector<double> tecOutCables1OuterRadius;
00159   std::vector<double> tecOutCables1ZPosition;
00160   std::vector<double> tecOutCables2InnerRadius;
00161   std::vector<double> tecOutCables2OuterRadius;
00162   std::vector<double> tecOutCables2ZPosition;
00163 
00164   // Fudge factors for layer inhomogeneities
00165   std::vector<unsigned int> fudgeLayer;
00166   std::vector<double> fudgeMin;
00167   std::vector<double> fudgeMax;
00168   std::vector<double> fudgeFactor;
00171   MediumProperties *_theMPBeamPipe;
00173   MediumProperties *_theMPPixelBarrel;
00175   MediumProperties *_theMPPixelEndcap;
00177   MediumProperties *_theMPPixelOutside1;
00178   MediumProperties *_theMPPixelOutside2;
00179   MediumProperties *_theMPPixelOutside3;
00180   MediumProperties *_theMPPixelOutside4;
00181   MediumProperties *_theMPPixelOutside;
00182   MediumProperties *_theMPPixelOutside5;
00183   MediumProperties *_theMPPixelOutside6;
00185   MediumProperties *_theMPTIB1;
00187   MediumProperties *_theMPTIB2;
00189   MediumProperties *_theMPTIB3;
00191   MediumProperties *_theMPTIB4;
00193   MediumProperties *_theMPTOB1;
00195   MediumProperties *_theMPTOB2;
00197   MediumProperties *_theMPTOB3;
00199   MediumProperties *_theMPTOB4;
00201   MediumProperties *_theMPTOB5;
00203   MediumProperties *_theMPTOB6;
00205   MediumProperties *_theMPEndcap;
00207   MediumProperties *_theMPInner1;
00208   MediumProperties *_theMPInner2;
00209   MediumProperties *_theMPInner3;
00211   MediumProperties *_theMPTOBBInside;
00213   MediumProperties *_theMPTIBEOutside1;
00214   MediumProperties *_theMPTIBEOutside2;
00216   MediumProperties *_theMPTOBEOutside;
00218   MediumProperties *_theMPTIDEOutside;
00220   MediumProperties *_theMPBarrelOutside;
00221   MediumProperties *_theMPEndcapOutside;
00222   MediumProperties *_theMPEndcapOutside2;
00223 
00224   std::vector<MediumProperties *> _mediumProperties;
00225 
00226   //use hardcoded pre-Phase I upgrade tracker geometry or use flexible geometry
00227   bool use_hardcoded;
00228 
00229 };
00230 #endif