5#ifndef GEOSPECIALSHAPES_LARWHEELCALCULATOR_H
6#define GEOSPECIALSHAPES_LARWHEELCALCULATOR_H
11#ifndef PORTABLE_LAR_SHAPE
16 #define HAVE_VECTOR_SIZE_ATTRIBUTE 1
18 #define CXXUTILS_FEATURES_H 1
22#include "CLHEP/Vector/ThreeVector.h"
23#if !defined(XAOD_STANDALONE) && !defined(PORTABLE_LAR_SHAPE)
27#if HAVE_VECTOR_SIZE_ATTRIBUTE
35#define LARWC_SINCOS_POLY 5
135 int fan_number)
const;
137 int fan_number)
const;
219 int res_fan_number = fan_number;
223 return res_fan_number;
240#if HAVE_VECTOR_SIZE_ATTRIBUTE
246#if !defined(XAOD_STANDALONE) && !defined(PORTABLE_LAR_SHAPE)
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Implements details of distance calculation to parts of the LAr endcap without sagging corrections.
Implements details of distance calculation to parts of the LAr endcap with sagging taken into account...
Abstract interface for calculator classes that handle distance calculation to parts of the LAr endcap...
Abstract interface for fan calculator classes that handle distance calculation to parts of the LAr en...
This is an interface of distance calculation to parts of the LAr endcap.
LAr wheel fan calculator, templated for sagging settings.
This class separates some of the geometry details of the LAr endcap.
LArWheelCalculator(const LArWheelCalculator &)=delete
int GetAtlasZside() const
bool GetisBarretteCalib() const
CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const
void SetStartGapNumber(int n)
double GetWheelRefPoint() const
double GetFanStepOnPhi() const
std::array< double, LARWC_SINCOS_POLY+1 > m_cos_parametrization
std::pair< int, int > GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
bool GetisElectrode() const
double GetdWRPtoFrontFace() const
double GetFanHalfThickness() const
double m_StraightStartSection
void outer_wheel_init(const EMECData &)
double m_electrodeTotalThickness
double GetElecFocaltoWRP() const
int adjust_fan_number(int fan_number) const
double m_leadThicknessOuter
double m_QuarterWaveLength
double m_leadThicknessInner
int GetNumberOfFans() const
int GetPhiGap(const CLHEP::Hep3Vector &p) const
double AmplitudeOfSurface(const CLHEP::Hep3Vector &P, int side, int fan_number) const
int GetNumberOfHalfWaves() const
double GetZeroFanPhi() const
double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const
Calculates aproximate, probably underestimate, distance to the neutral fibre of the vertical fan.
double GetHalfWaveLength() const
double GetFanFoldRadius() const
double GetQuarterWaveLength() const
std::array< double, 5 > m_slant_parametrization
double m_HalfWheelThickness
double m_electrodeInvContraction
bool GetisBarrette() const
double m_FanHalfThickness
double GetStraightStartSection() const
double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int &out_fan_number) const
Determines the nearest to the input point fan.
void parameterized_sin(const double, double &, double &) const
double GetWheelThickness() const
LArWheelCalculator & operator=(const LArWheelCalculator &)=delete
virtual ~LArWheelCalculator()
LArWheelCalculator_Impl::IFanCalculator * m_fanCalcImpl
std::vector< std::vector< double > > m_sagging_parameter
int PhiGapNumberForWheel(int) const
void inner_wheel_init(const EMECData &)
LArG4::LArWheelCalculator_t m_type
int GetStartGapNumber() const
void parameterized_sincos(const double, double &, double &) const
double GetActiveLength() const
double parameterized_slant_angle(double) const
Calculates wave slant angle using parametrization for current wheel for given distance from calorimet...
std::array< double, LARWC_SINCOS_POLY+1 > m_sin_parametrization
LArWheelCalculator(const EMECData &emecData, LArG4::LArWheelCalculator_t a_wheelType, int zside=1)
double GetWheelInnerRadius(std::array< double, 2 > &rInner) const
LArWheelCalculator_Impl::IDistanceCalculator * m_distanceCalcImpl
virtual LArG4::LArWheelCalculator_t type() const
static const char * LArWheelCalculatorTypeString(LArG4::LArWheelCalculator_t)
int GetNumberOfWaves() const
std::vector< double > NearestPointOnNeutralFibre_asVector(const CLHEP::Hep3Vector &p, int fan_number) const
void fill_sincos_parameterization()
void GetWheelOuterRadius(std::array< double, 2 > &rOuter) const
double m_HalfGapBetweenWheels
double m_ZeroFanPhi_ForDetNeaFan
Some additional feature test macros.
vectorized version of parametrized sincos see ATLASSIM-4753 for details