Skip to content
Snippets Groups Projects

Add crude (placeholder) implementations of RICH gas volume intersections

All threads resolved!
Files
5
+ 14
5
@@ -29,18 +29,27 @@ namespace LHCb::Detector {
inline static constexpr double GaudiTeV = 1.0;
inline static constexpr double DD4hepToLHCbEnergy = dd4hep::TeV / GaudiTeV;
//
inline auto toLHCbLengthUnits( const double length ) { return DD4hepToLHCbCm * length; }
inline auto toLHCbAreaUnits( const double area ) { return DD4hepToLHCbCm * DD4hepToLHCbCm * area; }
inline auto toLHCbEnergyUnits( const double energy ) { return DD4hepToLHCbEnergy * energy; }
template <typename TYPE>
inline TYPE toLHCbLengthUnits( const TYPE length ) {
return DD4hepToLHCbCm * length;
}
template <typename TYPE>
inline TYPE toLHCbAreaUnits( const TYPE area ) {
return DD4hepToLHCbCm * DD4hepToLHCbCm * area;
}
template <typename TYPE>
inline TYPE toLHCbEnergyUnits( const TYPE energy ) {
return DD4hepToLHCbEnergy * energy;
}
inline ROOT::Math::Transform3D toLHCbLengthUnits( const ROOT::Math::Transform3D& t ) {
double xx{}, xy{}, xz{}, dx{}, yx{}, yy{}, yz{}, dy{}, zx{}, zy{}, zz{}, dz{};
ROOT::Math::Transform3D::Scalar xx{}, xy{}, xz{}, dx{}, yx{}, yy{}, yz{}, dy{}, zx{}, zy{}, zz{}, dz{};
t.GetComponents( xx, xy, xz, dx, yx, yy, yz, dy, zx, zy, zz, dz );
return {xx, xy, xz, toLHCbLengthUnits( dx ), //
yx, yy, yz, toLHCbLengthUnits( dy ), //
zx, zy, zz, toLHCbLengthUnits( dz )};
}
inline ROOT::Math::Translation3D toLHCbLengthUnits( const ROOT::Math::Translation3D& t ) {
double dx{}, dy{}, dz{};
ROOT::Math::Translation3D::Scalar dx{}, dy{}, dz{};
t.GetComponents( dx, dy, dz );
return {toLHCbLengthUnits( dx ), toLHCbLengthUnits( dy ), toLHCbLengthUnits( dz )};
}
Loading