|  | ATLAS Offline Software
    | 
 
 
 
This class creates the Surfaces needed to perform track extrapolation.  
 More...
#include <CaloSurfaceBuilder.h>
|  | 
|  | CaloSurfaceBuilder (const std::string &type, const std::string &name, const IInterface *parent) | 
|  | 
| virtual | ~CaloSurfaceBuilder () | 
|  | 
| virtual StatusCode | initialize () override final | 
|  | 
| virtual StatusCode | finalize () override final | 
|  | 
| virtual CaloDepthTool * | getCaloDepth () override final | 
|  | 
| virtual Trk::Surface * | CreateUserSurface (const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final | 
|  | overwrite DD radius/z by CaloDepth radius, and an offset can be added  More... 
 | 
|  | 
| virtual Trk::Surface * | CreateLastSurface (const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final | 
|  | end of the sample for the last layers of the Calo  More... 
 | 
|  | 
| virtual bool | get_cylinder_surface (CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &radius, double &hphi, double &hlength, double &depth, const CaloDetDescrManager *calo_dd) const override final | 
|  | These methods provide the default parameters used by the CaloTrackingGeometry and Surface Builders, clients should not need to use them.  More... 
 | 
|  | 
| virtual bool | get_disk_surface (CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &z, double &rmin, double &rmax, double &hphisec, double &depth, const CaloDetDescrManager *calo_dd) const override final | 
|  | 
| virtual bool | get_cylinder_surface (CaloSubdetNames::ALIGNVOL alvol, Amg::Transform3D &htrans, double &hphi, std::vector< double > &radius, std::vector< double > &depth, std::vector< double > &hlength) const override final | 
|  | 
| virtual bool | get_disk_surface (CaloSubdetNames::ALIGNVOL alvol, Amg::Transform3D &htrans, double &hphi, std::vector< double > &z, std::vector< double > &depth, std::vector< double > &rmin, std::vector< double > &rmax) const override final | 
|  | 
| virtual std::vector< std::pair< const Trk::Surface *, const Trk::Surface * > > | entrySurfaces (const CaloDetDescrManager *calo_dd) const override final | 
|  | 
| virtual std::vector< std::pair< const Trk::Surface *, const Trk::Surface * > > | exitSurfaces (const CaloDetDescrManager *calo_dd) const override final | 
|  | 
This class creates the Surfaces needed to perform track extrapolation. 
All numbers are provided by the CaloDetDescr tools 
Definition at line 56 of file CaloSurfaceBuilder.h.
◆ CaloSurfaceBuilder()
      
        
          | CaloSurfaceBuilder::CaloSurfaceBuilder | ( | const std::string & | type, | 
        
          |  |  | const std::string & | name, | 
        
          |  |  | const IInterface * | parent | 
        
          |  | ) |  |  | 
      
 
 
◆ ~CaloSurfaceBuilder()
  
  | 
        
          | CaloSurfaceBuilder::~CaloSurfaceBuilder | ( |  | ) |  |  | virtualdefault | 
 
 
◆ CreateLastSurface()
end of the sample for the last layers of the Calo 
Definition at line 248 of file CaloSurfaceBuilder.cxx.
  276   if (etaCaloLocal < 0)
 
  310       std::vector<TileDetDescriptor*>::const_iterator Tile_first =
 
  329       if (hphi < 0.9 * 
M_PI) {
 
  344       std::vector<TileDetDescriptor*>::const_iterator Tile_first =
 
  347       zend = TileGap_descr->
zcenter(2) + .5 * TileGap_descr->
dz(2);
 
  354             zend = 
descr->calo_z_max();
 
  368     if (hphi < 0.9 * 
M_PI) {
 
  375       "This sample is not a 'LAST' surface... returning dummy surface");
 
 
 
 
◆ CreateUserSurface()
overwrite DD radius/z by CaloDepth radius, and an offset can be added 
Definition at line 123 of file CaloSurfaceBuilder.cxx.
  158   if (etaCaloLocal < 0)
 
  206     double betterrad = 0;
 
  215     if (hphi < 0.9 * 
M_PI) {
 
  237     if (hphi < 0.9 * 
M_PI) {
 
 
 
 
◆ entrySurfaces()
  
  |  | inlinefinaloverridevirtual | 
 
 
◆ exitSurfaces()
  
  |  | inlinefinaloverridevirtual | 
 
 
◆ fill_tg_surfaces()
Definition at line 590 of file CaloSurfaceBuilder.cxx.
  596     float etaRef = (
sample < 4 || std::abs(
sample - 13) < 2) ? 1. : 2.;
 
  603     m_layerEntries.emplace_back(spos, sneg);
 
  611   std::vector<float> 
offset(neta);
 
  613   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  639   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  664   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  690   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  717   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  744   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  770   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  797   for (
unsigned int ie = 0; 
ie < neta; 
ie++) {
 
  818        sample + 1 < 
static_cast<int>(m_layerEntries.size());
 
  820     m_layerExits.push_back(m_layerEntries[
sample + 1]);
 
  835     std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
 
  846     std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
 
  857     std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
 
  868     std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
 
  879     std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
 
 
 
 
◆ finalize()
  
  | 
        
          | StatusCode CaloSurfaceBuilder::finalize | ( |  | ) |  |  | finaloverridevirtual | 
 
Definition at line 97 of file CaloSurfaceBuilder.cxx.
  100   for (
auto & layerEntry : m_layerEntries) {
 
  101     delete layerEntry.first;
 
  102     delete layerEntry.second;
 
  105   if (!m_layerExits.empty()) {
 
 
 
 
◆ get_cylinder_surface() [1/2]
These methods provide the default parameters used by the CaloTrackingGeometry and Surface Builders, clients should not need to use them. 
Definition at line 391 of file CaloSurfaceBuilder.cxx.
  423         if (reg->getSampling(0) == 
sample && reg->calo_sign() * 
side > 0) {
 
  444         ATH_MSG_ERROR(
" get_cylinder_surface Not Cylindrical Tile found!!!   ");
 
  450         if (reg->getSampling(0) == 
sample && reg->calo_sign() * 
side > 0) {
 
  454           hphi = .5 * reg->dphi() * reg->n_phi();
 
 
 
 
◆ get_cylinder_surface() [2/2]
  
  | 
        
          | bool CaloSurfaceBuilder::get_cylinder_surface | ( | CaloSubdetNames::ALIGNVOL | alvol, |  
          |  |  | Amg::Transform3D & | htrans, |  
          |  |  | double & | hphi, |  
          |  |  | std::vector< double > & | radius, |  
          |  |  | std::vector< double > & | depth, |  
          |  |  | std::vector< double > & | hlength |  
          |  | ) |  | const |  | finaloverridevirtual | 
 
 
◆ get_disk_surface() [1/2]
Definition at line 464 of file CaloSurfaceBuilder.cxx.
  502       if (reg->getSampling(0) == 
sample && reg->calo_sign() * 
side > 0) {
 
  503         result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec, 
depth);
 
  504         if (!reg->is_lar_em_endcap_inner())
 
  515         if (reg->getSampling(0) == 
sample && reg->calo_sign() * 
side > 0) {
 
  516           result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec, 
depth);
 
  517           if (!reg->is_lar_em_endcap_inner())
 
  531   htrans = (htrans) * 
vec;
 
 
 
 
◆ get_disk_surface() [2/2]
  
  | 
        
          | bool CaloSurfaceBuilder::get_disk_surface | ( | CaloSubdetNames::ALIGNVOL | alvol, |  
          |  |  | Amg::Transform3D & | htrans, |  
          |  |  | double & | hphi, |  
          |  |  | std::vector< double > & | z, |  
          |  |  | std::vector< double > & | depth, |  
          |  |  | std::vector< double > & | rmin, |  
          |  |  | std::vector< double > & | rmax |  
          |  | ) |  | const |  | finaloverridevirtual | 
 
 
◆ getCaloDepth()
◆ initialize()
  
  | 
        
          | StatusCode CaloSurfaceBuilder::initialize | ( |  | ) |  |  | finaloverridevirtual | 
 
Definition at line 71 of file CaloSurfaceBuilder.cxx.
   75     return StatusCode::FAILURE;
 
   80     return StatusCode::FAILURE;
 
   85     return StatusCode::FAILURE;
 
   89     ATH_MSG_FATAL(
"Could not find TileDetDescrManager in DetStore");
 
   90     return StatusCode::FAILURE;
 
   93   return StatusCode::SUCCESS;
 
 
 
 
◆ ATLAS_THREAD_SAFE [1/3]
◆ ATLAS_THREAD_SAFE [2/3]
◆ ATLAS_THREAD_SAFE [3/3]
  
  | 
        
          | std::once_flag m_fillOnce CaloSurfaceBuilder::ATLAS_THREAD_SAFE |  | mutableprivate | 
 
 
◆ m_calodepth
Initial value:{ this,
                                         "CaloDepthTool",
                                         "CaloDepthTool/CaloDepthTool",
                                         "CaloDepthTool to be used" }
Definition at line 155 of file CaloSurfaceBuilder.h.
 
 
◆ m_lar_mat
◆ m_lar_simplegeom
◆ m_tile_dd
The documentation for this class was generated from the following files:
 
def retrieve(aClass, aKey=None)
tile_descr_const_iterator tile_descriptors_begin() const
ToolHandle< ICaloRecoMaterialTool > m_lar_mat
@ depth
pointing depth of the shower as calculated in egammaqgcld
ToolHandle< ICaloRecoSimpleGeomTool > m_lar_simplegeom
void setOwner(SurfaceOwner x)
set Ownership
Scalar eta() const
pseudorapidity method
ToolHandle< CaloDepthTool > m_calodepth
std::vector< size_t > vec
const Amg::Vector3D & center() const
Returns the center position of the Surface.
virtual Trk::Surface * CreateUserSurface(const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final
overwrite DD radius/z by CaloDepth radius, and an offset can be added
float dz(unsigned int samp) const
const std::string & lar_geometry() const
get lar geometry label, distinguish between full atlas and TB
float dr(unsigned int samp) const
virtual Trk::Surface * CreateLastSurface(const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final
end of the sample for the last layers of the Calo
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
float rcenter(unsigned int samp) const
CaloSampling::CaloSample CaloSample
float zcenter(unsigned int samp) const
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
calo_descr_range calo_descriptors_range() const
Range over descriptors.
virtual bool get_cylinder_surface(CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &radius, double &hphi, double &hlength, double &depth, const CaloDetDescrManager *calo_dd) const override final
These methods provide the default parameters used by the CaloTrackingGeometry and Surface Builders,...
This is a base class for LAr and Tile Descriptors The primary goal is to speed up loops over all the ...
const TileDetDescrManager * m_tile_dd
Eigen::Translation< double, 3 > Translation3D
virtual bool get_disk_surface(CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &z, double &rmin, double &rmax, double &hphisec, double &depth, const CaloDetDescrManager *calo_dd) const override final
calo_descr_range tile_descriptors_range() const
Range over tile descriptors.
void fill_tg_surfaces(const CaloDetDescrManager *calo_dd) const
virtual double r() const =0
Interface method for the maximal extension or the radius.