204 cout <<
" *NcStokes::SetStokesParameters* Inconsistent data." << endl;
205 cout <<
" I=" <<
fI <<
" Q=" <<
fQ <<
" U=" <<
fU <<
" V=" <<
fV << endl;
240 if (a<0 || b<0 || p<=0)
242 cout <<
" *NcStokes::SetEllipseParameters* Inconsistent input." << endl;
243 cout <<
" a:" << a <<
" b:" << b <<
" theta:" << theta <<
" " << u <<
". h:" << h <<
" p:" << p << endl;
247 Double_t pi=acos(-1.);
249 if (u==
"deg") theta*=pi/180.;
255 fQ=(a2-b2)*cos(2.*theta);
256 fU=(a2-b2)*sin(2.*theta);
281 if (A1<0 || A2<0 || A1*A2==0 || p<=0)
283 cout <<
" *NcStokes::SetJonesVector* Inconsistent input." << endl;
284 cout <<
" A1:" << A1 <<
" A2:" << A2 <<
" phi:" << phi <<
" " << u <<
"." <<
" p:" << p << endl;
288 Double_t pi=acos(-1.);
290 if (u==
"deg") phi*=pi/180.;
294 fU=2.*A1*A2*cos(phi);
295 fV=2.*A1*A2*sin(phi);
337 cout <<
" *NcStokes::GetParameter* Inconsistent data encountered : I=" <<
fI << endl;
338 cout <<
" --- The Stokes vector (I,Q,U,V) is also known as (S0,S1,S2,S3)." << endl;
342 Double_t pi=acos(-1.);
346 Double_t a=sqrt(0.5*(P+L));
347 Double_t b=sqrt(0.5*(P-L));
348 Double_t A1=sqrt(0.5*(P+
fQ));
349 Double_t A2=sqrt(0.5*(P-
fQ));
351 if (name==
"I" || name==
"S0") value=
fI;
352 if (name==
"Q" || name==
"S1") value=
fQ;
353 if (name==
"U" || name==
"S2") value=
fU;
354 if (name==
"V" || name==
"S3") value=
fV;
355 if (name==
"P") value=P;
356 if (name==
"L") value=L;
357 if (name==
"C") value=fabs(
fV);
358 if (name==
"a") value=a;
359 if (name==
"b") value=b;
360 if (name==
"e" && P) value=sqrt(1.-(b*b)/(a*a));
361 if (name==
"A1") value=A1;
362 if (name==
"A2") value=A2;
363 if (name==
"theta" && L)
365 value=0.5*atan2(
fU,
fQ);
366 if (u==
"deg") value*=180./pi;
368 if (name==
"beta" && P)
371 if (u==
"deg") value*=180./pi;
373 if (name==
"helicity" &&
fV)
378 if (name==
"phi" && (
fV ||
fU))
381 if (u==
"deg") value*=180./pi;
407 cout <<
" *NcStokes::Data* Inconsistent data encountered : I=" <<
fI << endl;
408 cout <<
" --- The Stokes vector (I,Q,U,V) is also known as (S0,S1,S2,S3)." << endl;
424 cout <<
" *NcStokes::Data* Listing of all polarisation information." << endl;
425 cout <<
" --- The Stokes vector (I,Q,U,V) is also known as (S0,S1,S2,S3)." << endl;
426 cout <<
" Stokes parameters....................: I=" <<
fI <<
" Q=" <<
fQ <<
" U=" <<
fU <<
" V=" <<
fV << endl;
427 cout <<
" Total beam intensity.................: I=" <<
fI << endl;
428 cout <<
" Total polarisation intensity.........: P=" << P << endl;
429 cout <<
" Linear polarisation intensity........: L=" << L << endl;
430 cout <<
" Circular polarisation intensity......: C=" << fabs(
fV) << endl;
431 cout <<
" Fractional polarisation intensities..: P/I=" << P/
fI <<
" L/I=" << L/
fI <<
" C/I=" << fabs(
fV/
fI) << endl;
434 cout <<
" Jones (x,y) field vector (E1,E2).....: |E1|=" << A1 <<
" |E2|=" << A2 <<
" (phi1-phi2)=" << phi <<
" " << u <<
"." << endl;
435 cout <<
" Polarisation ellipse (semi axes a,b) : a=" << a <<
" b=" << b <<
" eccentricity=" << e <<
" arctan(b/a)=" << beta <<
" " << u <<
"." << endl;
436 if (L) cout <<
" Ellipse orientation angle............: " << theta <<
" " << u <<
"." << endl;
437 if (
fV) cout <<
" Polarisation helicity................: " << h << endl;
Treatment of Stokes parameters for EM polarisation studies.
void SetStokesParameters(Double_t I, Double_t Q, Double_t U, Double_t V)
Double_t GetParameter(TString name, TString u="rad")
void SetEllipseParameters(Double_t a, Double_t b, Double_t theta, TString u, Int_t h, Double_t p=1)
void Data(TString u="rad")
void SetJonesVector(Double_t A1, Double_t A2, Double_t phi, TString u, Double_t p=1)