29 #ifndef SYNTHESIS_POLOUTERPRODUCT_H
30 #define SYNTHESIS_POLOUTERPRODUCT_H
54 using namespace CFDefs;
81 polMap_p.resize(4,4);polMap_p=-1;
91 polMap_p.assign(polMap);
104 muellerType_p =
type;
106 nelement_p=countNElements();
116 {polMap_p(element(0),element(1)) = pos;}
126 {
return invIndexMap_p(element(0), element(1));};
131 {
return indexMap_p(element);}
136 {
return (polMap_p(element(0), element(1)) >= 0);};
141 {
return isSet(getMuellerElement(element));}
150 if (polMap_p(i,j) >= 0) n++;
174 inline PolMapType& getConjPol2CFMat() {
return conjOuterProductIndex2VBPolMap_p;};
185 conjOuterProduct2VBPolMap_p, conjOuterProductIndex2VBPolMap_p, cfIndices_p;
204 el(0)=PP; el(1)=PP2Q; el(2)=P2QP; el(3)=P2QP2Q; muellerRows_p(GPP) = el;
205 el(0)=PQ2P; el(1)=PQ; el(2)=P2QQ2P; el(3)=P2QQ; muellerRows_p(GPQ) = el;
206 el(0)=Q2PP; el(1)=Q2PP2Q; el(2)=QP; el(3)=QP2Q; muellerRows_p(GQP) = el;
207 el(0)=Q2PQ2P; el(1)=Q2PQ; el(2)=QQ2P; el(3)=QQ; muellerRows_p(GQQ) = el;
209 el(0)=QQ; el(1)=QQ2P; el(2)=Q2PQ; el(3)=Q2PQ2P; conjMuellerRows_p(GPP)=el;
210 el(0)=QP2Q; el(1)=QP; el(2)=Q2PP2Q; el(3)=Q2PP; conjMuellerRows_p(GPQ)=el;
211 el(0)=P2QQ; el(1)=P2QQ2P; el(2)=PQ; el(3)=PQ2P; conjMuellerRows_p(GQP)=el;
212 el(0)=P2QP2Q; el(1)=P2QP; el(2)=PP2Q; el(3)=PP; conjMuellerRows_p(GQQ)=el;
217 indexMap_p.resize(16);
241 invIndexMap_p.resize(4,4);
243 invIndexMap_p(0,0)=RR; invIndexMap_p(0,1)=RR2L; invIndexMap_p(0,2)=R2LR; invIndexMap_p(0,3)=R2LR2L;
244 invIndexMap_p(1,0)=RL2R; invIndexMap_p(1,1)=RL; invIndexMap_p(1,2)=R2LL2R; invIndexMap_p(1,3)=R2LL;
245 invIndexMap_p(2,0)=L2RR; invIndexMap_p(2,1)=L2RR2L; invIndexMap_p(2,2)=LR; invIndexMap_p(2,3)=LR2L;
246 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.
casacore::RigidVector< casacore::Int, 2 > getMuellerElement(const CrossPolCircular &element)
casacore::Vector< casacore::RigidVector< casacore::Int, 2 > > indexMap_p
virtual Type type()
Return the type enum.
casacore::Bool isSet(const CrossPolCircular &element)
PolMapType & getPol2CFMat()
PolOuterProduct(MuellerType type=DIAGONAL)
========================= Administrative Parts ==========================
PolMapType outerProductIndex2VBPolMap_p
PolOuterProduct(const casacore::Matrix< casacore::Int > &polMap)
Fast Vector classes with fixed (templated) length.
void setElement(const casacore::RigidVector< casacore::Int, 2 > &element, const casacore::Int &pos)
const casacore::Vector< casacore::RigidVector< casacore::Int, 2 > > & getIndexMap()
void setElement(const CrossPolCircular &element, const casacore::Int &pos)
casacore::Bool isSet(const casacore::RigidVector< casacore::Int, 2 > element)
PolMapType & getConjPolMat()
casacore::Int getPolEnum(const casacore::RigidVector< casacore::Int, 2 > &element)
PolOuterProduct::GenericVBPol translateStokesToGeneric(const casacore::Int &stokes)
bool Bool
Define the standard types used by Casacore.
casacore::Int translateGenericToStokes(const PolOuterProduct::GenericVBPol &gPol, const casacore::MSIter::PolFrame &polFrame=casacore::MSIter::Circular)
void init(MuellerType type=DIAGONAL)
============================= casacore::Functional Parts ============================ ...
virtual ~PolOuterProduct()
casacore::Matrix< casacore::Int > polMap_p
casacore::Int nelements()
casacore::Int countNElements()
MuellerType muellerType_p
const casacore::Matrix< casacore::Int > & getPolMap()