1 #include "gearimpl/ZPlanarLayerLayoutImpl.h" 
    8                                     double ladderDistance, 
double ladderOffset, 
double ladderThickness,
 
    9                                     double ladderLength, 
double ladderWidth, 
double ladderRadLength,
 
   11                                     double sensitiveDistance, 
double sensitiveOffset, 
double sensitiveThickness,
 
   12                                     double sensitiveLength, 
double sensitiveWidth, 
double sensitiveRadLength )
 
   25     lL.NLadders  = nLadders ;
 
   26     lL.internalPhi0      = M_PI/2. - phi0 ;   
 
   27     lL.Distance  = ladderDistance ;
 
   28     lL.Offset    = ladderOffset ;   
 
   29     lL.Thickness = ladderThickness ;
 
   30     lL.Length    = ladderLength ;
 
   31     lL.Width     = ladderWidth ;
 
   32     lL.RadLength = ladderRadLength ;
 
   34     sL.NLadders  = nLadders ;
 
   35     sL.internalPhi0      = M_PI/2. - phi0 ;  
 
   36     sL.Distance  = sensitiveDistance ;
 
   37     sL.Offset    = sensitiveOffset ;  
 
   38     sL.Thickness = sensitiveThickness ;
 
   39     sL.Length    = sensitiveLength ;
 
   40     sL.Width     = sensitiveWidth ;
 
   41     sL.RadLength = sensitiveRadLength ;
 
   43     _lVec.push_back( lL ) ;
 
   44     _sVec.push_back( sL ) ;
 
   53       l = _lVec.at( layerIndex ) ;
 
   56       l = _sVec.at( layerIndex ) ;
 
   59     float d = l.Distance + l.Thickness ;
 
   60     float w = l.Width / 2 + fabs( l.Offset ) ;
 
   62     double max = sqrt( d*d + w*w ) ;
 
   72       l = _lVec.at( layerIndex ) ;
 
   75       l = _sVec.at( layerIndex ) ;
 
   77     return ( l.internalPhi0 + atan( (-l.Width /2 - l.Offset) / l.Distance) ) ;
 
   85       l = _lVec.at( layerIndex ) ;
 
   88       l = _sVec.at( layerIndex ) ;
 
   90     return ( l.internalPhi0 + atan( (l.Width/2 - l.Offset)  / l.Distance ) ) ;
 
   99       l = _lVec.at( layerIndex ) ;
 
  102       l = _sVec.at( layerIndex ) ;
 
  104     return ( l.internalPhi0 - atan( (l.Width /2 + l.Offset) / (l.Distance + l.Thickness) ) )  ;
 
  112       l = _lVec.at( layerIndex ) ;
 
  115       l = _sVec.at( layerIndex ) ;
 
  117     return ( l.internalPhi0 + atan( (l.Width/2 - l.Offset)  / (l.Distance + l.Thickness) ) ) ;
 
  125       l = _lVec.at( layerIndex ) ;
 
  128       l = _sVec.at( layerIndex ) ;
 
  131     double angularThickness ;
 
  140       return ( l.Thickness / cos( phi ) ) ;
 
  146     double distanceSpacePoint = l.Distance * tan( phi ) ;
 
  149     double cutAwayLength = l.Width/2 - l.Offset - distanceSpacePoint ;
 
  152     angularThickness = cutAwayLength / sin( phi ) ;
 
  154     return angularThickness ;
 
virtual double getMaxRadius(int layerIndex, bool sensitive=false) const 
returns maximum radius for a given layer 
 
virtual double getStartOuterPhi(int layerIndex, bool sensitive=false) const 
returns starting phi for first ladder in layer layerIndex (on side away from IP) 
 
virtual double getThicknessForPhi(int layerIndex, double phi, bool sensitive=false) const 
returns thickness as viewed under the angle phi only for the first ladder in layer layerIndex...
 
virtual void addLayer(int nLadders, double phi0, double ladderDistance, double ladderOffset, double ladderThickness, double ladderLength, double ladderWidth, double ladderRadLength, double sensitiveDistance, double sensitiveOffset, double sensitiveThickness, double sensitiveLength, double sensitiveWidth, double sensitiveRadLength)
Add a new layer at the given positon. 
 
virtual double getEndOuterPhi(int layerIndex, bool sensitive=false) const 
returns ending phi for first ladder in layer layerIndex (on side away from IP) 
 
virtual double getEndInnerPhi(int layerIndex, bool sensitive=false) const 
returns ending phi for first ladder in layer layerIndex (on side facing IP) 
 
Helper class for layer properties. 
 
virtual double getStartInnerPhi(int layerIndex, bool sensitive=false) const 
returns starting phi for first ladder in layer layerIndex (on side facing IP)