19#include "BDSArray1DCoordsTransformed.hh"
20#include "BDSArrayOperatorIndex.hh"
21#include "BDSArrayOperatorValue.hh"
22#include "BDSFieldValue.hh"
34 indexOperator(indexOperatorIn),
35 valueOperator(valueOperatorIn),
39BDSArray1DCoordsTransformed::~BDSArray1DCoordsTransformed()
47 G4double& xFrac)
const
51 auto x1 = (G4int)std::floor(xArrayCoords);
53 xFrac = xArrayCoords - x1;
54 std::array<G4int, 2> indexArr = {x1, x1+1};
55 G4int indexOriginal, indexTransformed;
56 for (G4int i = 0; i < 2; i++)
58 indexOriginal = indexArr[i];
59 indexTransformed = indexOriginal;
60 indexOperator->
Apply(indexTransformed);
62 localData[i] = valueOperator->
Apply(v, indexOriginal);
68 G4double& xFrac)
const
71 auto x1 = (G4int)std::floor(xArrayCoords);
72 xFrac = xArrayCoords - x1;
74 std::array<G4int, 4> indexArr = {x1-1, x1, x1+1, x1+2};
75 G4int indexOriginal, indexTransformed;
76 for (G4int i = 0; i < 4; i++)
78 indexOriginal = indexArr[i];
79 indexTransformed = indexOriginal;
80 indexOperator->
Apply(indexTransformed);
82 localData[i] = valueOperator->
Apply(v, indexOriginal);
92 G4int indexTransformed = indexOriginal;
93 indexOperator->
Apply(indexTransformed);
95 v = valueOperator->
Apply(v, indexOriginal);
101 out <<
"Spatial limits are the original ones" << G4endl;
102 out <<
"Array index operator: " << indexOperator->
Name() << G4endl;
103 out <<
"Array value operator: " << valueOperator->
Name() << G4endl;
1D array with spatial mapping derived from BDSArray4DCoords.
virtual G4double ArrayCoordsFromX(G4double x) const
Not much point in being both virtual and inline (in our use case) but has to be virtual.
virtual G4int NearestX(G4double x) const
Not much point in being both virtual and inline (in our use case) but has to be virtual.
virtual const BDSFieldValue & GetConst(G4int x, G4int y=0, G4int z=0, G4int t=0) const
virtual std::ostream & Print(std::ostream &out) const
Interface for modifying by reference array indices.
virtual G4String Name() const
Supply a name of this operator for feedback to the user in print out.
virtual void Apply(G4int &, G4int &, G4int &, G4int &) const
Interface for modifying field values.
virtual BDSFieldValue Apply(BDSFieldValue v, G4int, G4int=0, G4int=0, G4int=0) const
virtual G4String Name() const
Return a name of the operator for feedback to the user in print out.