|
ATLAS Offline Software
|
Go to the documentation of this file.
11 #include "Gaudi/Property.h"
12 #include "GaudiKernel/Bootstrap.h"
13 #include "GaudiKernel/IMessageSvc.h"
14 #include "GaudiKernel/IService.h"
15 #include "GaudiKernel/ISvcLocator.h"
16 #include "GaudiKernel/IToolSvc.h"
17 #include "GaudiKernel/MsgStream.h"
18 #include "GaudiKernel/SystemOfUnits.h"
35 #include "CaloDetDescr/CaloDetDescrElement.h"
57 const std::string&
name,
61 , m_lar_mat(
"LArRecoMaterialTool")
62 , m_lar_simplegeom(
"LArRecoSimpleGeomTool")
64 declareProperty(
"LArRecoMaterialTool",
m_lar_mat);
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;
100 for (
auto & layerEntry : m_layerEntries) {
101 delete layerEntry.first;
102 delete layerEntry.second;
105 if (!m_layerExits.empty()) {
125 const double etaCaloLocal,
158 if (etaCaloLocal < 0)
206 double betterrad = 0;
215 if (hphi < 0.9 *
M_PI) {
237 if (hphi < 0.9 *
M_PI) {
250 const double etaCaloLocal,
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");
385 return &(*m_calodepth);
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();
500 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
501 result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec,
depth);
502 if (!reg->is_lar_em_endcap_inner())
513 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
514 result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec,
depth);
515 if (!reg->is_lar_em_endcap_inner())
529 htrans = (htrans) *
vec;
537 std::vector<double>&
radius,
538 std::vector<double>&
depth,
539 std::vector<double>& hlength)
const
553 htrans = (htrans) *
vec;
560 htrans = (htrans) *
vec;
571 std::vector<double>&
z,
572 std::vector<double>&
depth,
573 std::vector<double>& rmin,
574 std::vector<double>& rmax)
const
577 alvol, htrans, hphi,
z,
depth, rmin, rmax);
594 float etaRef = (
sample < 4 || std::abs(
sample - 13) < 2) ? 1. : 2.;
601 m_layerEntries.emplace_back(spos, sneg);
609 std::vector<float>
offset(neta);
611 for (
unsigned int ie = 0;
ie < neta;
ie++) {
637 for (
unsigned int ie = 0;
ie < neta;
ie++) {
662 for (
unsigned int ie = 0;
ie < neta;
ie++) {
688 for (
unsigned int ie = 0;
ie < neta;
ie++) {
715 for (
unsigned int ie = 0;
ie < neta;
ie++) {
742 for (
unsigned int ie = 0;
ie < neta;
ie++) {
768 for (
unsigned int ie = 0;
ie < neta;
ie++) {
795 for (
unsigned int ie = 0;
ie < neta;
ie++) {
816 sample + 1 <
static_cast<int>(m_layerEntries.size());
818 m_layerExits.push_back(m_layerEntries[
sample + 1]);
833 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
844 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
855 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
866 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
877 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
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
virtual ~CaloSurfaceBuilder()
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
Definition of CaloDetDescrManager.
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.
Definition of CaloDetDescriptor.
float rcenter(unsigned int samp) const
CaloSampling::CaloSample CaloSample
virtual CaloDepthTool * getCaloDepth() override final
float zcenter(unsigned int samp) const
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
virtual StatusCode initialize() override final
CaloSurfaceBuilder(const std::string &type, const std::string &name, const IInterface *parent)
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
virtual StatusCode finalize() override final
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 class provides the client interface for accessing the detector description information common to...
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
ALIGNVOL
LAr Alignable volumes.
virtual double r() const =0
Interface method for the maximal extension or the radius.