LDMX Software
BFieldXYZUtils.cxx
1#include "Tracking/Sim/BFieldXYZUtils.h"
2
3#include "Acts/Utilities/Result.hpp"
4
5Acts::Vector3 defaultTransformPos(const Acts::Vector3& pos_) {
6 Acts::Vector3 rot_pos;
7 rot_pos(0) = pos_(1);
8 rot_pos(1) = pos_(2);
9 rot_pos(2) = pos_(0) + DIPOLE_OFFSET;
10
11 return rot_pos;
12}
13
14Acts::Vector3 defaultTransformBField(const Acts::Vector3& field,
15 const Acts::Vector3& /*pos_*/) {
16 Acts::Vector3 rot_field;
17
18 rot_field(0) = field(2);
19 rot_field(1) = field(0);
20 rot_field(2) = field(1);
21
22 // std::cout<<"PF::DEFAULT TRANSFORM"<<std::endl;
23 // std::cout<<"PF::Check:: transforming"<<std::endl;
24 // std::cout<<field<<std::endl;
25 // std::cout<<"TO"<<std::endl;
26 // std::cout<<rot_field<<std::endl;
27
28 return rot_field;
29}
30
31size_t localToGlobalBinXyz(std::array<size_t, 3> bins,
32 std::array<size_t, 3> sizes) {
33 return (bins[0] * (sizes[1] * sizes[2]) + bins[1] * sizes[2] +
34 bins[2]); // xyz - field space
35 // return (bins[1] * (sizes[2] * sizes[0]) + bins[2] * sizes[0] + bins[0]);
36 // //zxy
37}
38
39void testField(const std::shared_ptr<Acts::MagneticFieldProvider> bfield,
40 const Acts::Vector3& eval_pos,
41 const Acts::MagneticFieldContext bctx) {
42 Acts::MagneticFieldProvider::Cache cache = bfield->makeCache(bctx);
43 std::cout << "Pos::\n" << eval_pos << std::endl;
44 std::cout << " BField::\n"
45 << bfield->getField(eval_pos, cache).value() /
46 Acts::UnitConstants::T
47 << std::endl;
48}