29 #ifndef SYNTHESIS_TRANSFORM2_POLOUTERPRODUCT_H
30 #define SYNTHESIS_TRANSFORM2_POLOUTERPRODUCT_H
55 using namespace CFDefs;
82 polMap_p.resize(4,4);polMap_p=-1;
92 polMap_p.assign(polMap);
105 muellerType_p =
type;
107 nelement_p=countNElements();
117 {polMap_p(element(0),element(1)) = pos;}
127 {
return invIndexMap_p(element(0), element(1));};
132 {
return indexMap_p(element);}
137 {
return (polMap_p(element(0), element(1)) >= 0);};
142 {
return isSet(getMuellerElement(element));}
151 if (polMap_p(i,j) >= 0) n++;
175 inline PolMapType& getConjPol2CFMat() {
return conjOuterProductIndex2VBPolMap_p;};
186 conjOuterProduct2VBPolMap_p, conjOuterProductIndex2VBPolMap_p, cfIndices_p;
205 el(0)=PP; el(1)=PP2Q; el(2)=P2QP; el(3)=P2QP2Q; muellerRows_p(GPP) = el;
206 el(0)=PQ2P; el(1)=PQ; el(2)=P2QQ2P; el(3)=P2QQ; muellerRows_p(GPQ) = el;
207 el(0)=Q2PP; el(1)=Q2PP2Q; el(2)=QP; el(3)=QP2Q; muellerRows_p(GQP) = el;
208 el(0)=Q2PQ2P; el(1)=Q2PQ; el(2)=QQ2P; el(3)=QQ; muellerRows_p(GQQ) = el;
210 el(0)=QQ; el(1)=QQ2P; el(2)=Q2PQ; el(3)=Q2PQ2P; conjMuellerRows_p(GPP)=el;
211 el(0)=QP2Q; el(1)=QP; el(2)=Q2PP2Q; el(3)=Q2PP; conjMuellerRows_p(GPQ)=el;
212 el(0)=P2QQ; el(1)=P2QQ2P; el(2)=PQ; el(3)=PQ2P; conjMuellerRows_p(GQP)=el;
213 el(0)=P2QP2Q; el(1)=P2QP; el(2)=PP2Q; el(3)=PP; conjMuellerRows_p(GQQ)=el;
218 indexMap_p.resize(16);
242 invIndexMap_p.resize(4,4);
244 invIndexMap_p(0,0)=RR; invIndexMap_p(0,1)=RR2L; invIndexMap_p(0,2)=R2LR; invIndexMap_p(0,3)=R2LR2L;
245 invIndexMap_p(1,0)=RL2R; invIndexMap_p(1,1)=RL; invIndexMap_p(1,2)=R2LL2R; invIndexMap_p(1,3)=R2LL;
246 invIndexMap_p(2,0)=L2RR; invIndexMap_p(2,1)=L2RR2L; invIndexMap_p(2,2)=LR; invIndexMap_p(2,3)=LR2L;
247 invIndexMap_p(3,0)=L2RL2R; invIndexMap_p(3,1)=L2RL; invIndexMap_p(3,2)=LL2R; invIndexMap_p(3,3)=LL;
A 1-D Specialization of the Array class.
const casacore::Vector< casacore::RigidVector< casacore::Int, 2 > > & getIndexMap()
PolMapType & getPol2CFMat()
casacore::Int countNElements()
void setElement(const casacore::RigidVector< casacore::Int, 2 > &element, const casacore::Int &pos)
virtual Type type()
Return the type enum.
PolMapType outerProductIndex2VBPolMap_p
Fast Vector classes with fixed (templated) length.
casacore::Int translateGenericToStokes2(const PolOuterProduct::GenericVBPol &gPol, const casacore::MSIter::PolFrame &polFrame=casacore::MSIter::Circular)
void init(MuellerType type=DIAGONAL)
============================= casacore::Functional Parts ============================ ...
casacore::Int getPolEnum(const casacore::RigidVector< casacore::Int, 2 > &element)
casacore::Vector< casacore::RigidVector< casacore::Int, 2 > > indexMap_p
casacore::RigidVector< casacore::Int, 2 > getMuellerElement(const CrossPolCircular &element)
PolOuterProduct(const casacore::Matrix< casacore::Int > &polMap)
bool Bool
Define the standard types used by Casacore.
MuellerType muellerType_p
const casacore::Matrix< casacore::Int > & getPolMap()
void setElement(const CrossPolCircular &element, const casacore::Int &pos)
PolOuterProduct(MuellerType type=DIAGONAL)
========================= Administrative Parts ==========================
PolOuterProduct::GenericVBPol translateStokesToGeneric(const casacore::Int &stokes)
casacore::Matrix< casacore::Int > polMap_p
casacore::Bool isSet(const CrossPolCircular &element)
casacore::Bool isSet(const casacore::RigidVector< casacore::Int, 2 > element)
virtual ~PolOuterProduct()
casacore::Int nelements()
PolMapType & getConjPolMat()