22#include <lal/LALSimInspiral.h>
23#include <lal/LALConstants.h>
24#include <lal/LALSimInspiralWaveformFlags.h>
26#include <lal/XLALError.h>
34 if (fabs(val1 - val2) >
EPSILON)
40int main (
int argc,
char **argv)
50 REAL8 incl, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z;
51 REAL8 thetaJN, phiJL, theta1, theta2, phi12, chi1, chi2, phiRef;
52 REAL8 inclIn,s1xIn, s1yIn, s1zIn, s2xIn, s2yIn, s2zIn;
54 const REAL8 m1min=1.4;
55 const REAL8 m1max=100.;
56 const REAL8 m2min=1.4;
57 const REAL8 m2max=50.;
61 for (
UINT4 idx=0;idx<=Ntest;idx++) {
70 m1=m1min+idxr*(m1max-m1min);
71 m2=m2min+idxr*(m2max-m2min);
75 s1xIn=chi1*sin(theta1);
77 s1zIn=chi1*cos(theta1);
78 s2xIn=chi2*sin(theta2)*cos(phi12);
79 s2yIn=chi2*sin(theta2)*sin(phi12);
80 s2zIn=chi2*cos(theta2);
83 errCode=
XLALSimInspiralTransformPrecessingNewInitialConditions(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, thetaJN, phiJL, theta1, theta2, phi12, chi1, chi2, m1*
LAL_MSUN_SI, m2*
LAL_MSUN_SI, fRef, phiRef);
84 ret +=
compare(chi1*chi1, spin1x*spin1x+spin1y*spin1y+spin1z*spin1z);
85 ret +=
compare(chi2*chi2, spin2x*spin2x+spin2y*spin2y+spin2z*spin2z);
88 ret +=
compare(s1xIn*s2xIn+s1yIn*s2yIn+s1zIn*s2zIn, spin1x*spin2x+spin1y*spin2y+spin1z*spin2z);
89 ret +=
compare(s1xIn*s2xIn+s1yIn*s2yIn, spin1x*spin2x+spin1y*spin2y );
92 errCode+=
XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclIn, s1xIn, s1yIn, s1zIn, s2xIn, s2yIn, s2zIn, m1*
LAL_MSUN_SI, m2*
LAL_MSUN_SI, fRef, phiRef,
XLALSimInspiralGetFrameAxis(waveFlag));
93 ret +=
compare(s1xIn*s2xIn+s1yIn*s2yIn+s1zIn*s2zIn,spin1x*spin2x+spin1y*spin2y+spin1z*spin2z);
94 ret +=
compare(chi1*chi1, spin1x*spin1x+spin1y*spin1y+spin1z*spin1z);
95 ret +=
compare(chi2*chi2, spin2x*spin2x+spin2y*spin2y+spin2z*spin2z);
96 ret +=
compare(s1zIn,spin1x*sin(incl)+spin1z*cos(incl));
97 ret +=
compare(s2zIn,spin2x*sin(incl)+spin2z*cos(incl));
101 errCode+=
XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclIn, s1xIn, s1yIn, s1zIn, s2xIn, s2yIn, s2zIn, m1*
LAL_MSUN_SI, m2*
LAL_MSUN_SI, fRef, phiRef,
XLALSimInspiralGetFrameAxis(waveFlag));
102 ret +=
compare(chi1*chi1, spin1x*spin1x+spin1y*spin1y+spin1z*spin1z);
103 ret +=
compare(chi2*chi2, spin2x*spin2x+spin2y*spin2y+spin2z*spin2z);
104 ret +=
compare(s1xIn*s2xIn+s1yIn*s2yIn+s1zIn*s2zIn,spin1x*spin2x+spin1y*spin2y+spin1z*spin2z);
105 ret +=
compare(s1xIn*sin(incl)+s1zIn*cos(incl),spin1x*sin(inclIn)+spin1z*cos(inclIn));
106 ret +=
compare(s2xIn*sin(incl)+s2zIn*cos(incl),spin2x*sin(inclIn)+spin2z*cos(inclIn));
110errCode+=
XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclIn, s1xIn, s1yIn, s1zIn, s2xIn, s2yIn, s2zIn, m1*
LAL_MSUN_SI, m2*
LAL_MSUN_SI, fRef, phiRef,
XLALSimInspiralGetFrameAxis(waveFlag));
111 ret +=
compare(chi1*chi1, spin1x*spin1x+spin1y*spin1y+spin1z*spin1z);
112 ret +=
compare(chi2*chi2, spin2x*spin2x+spin2y*spin2y+spin2z*spin2z);
113 ret +=
compare(s1xIn*s2xIn+s1yIn*s2yIn+s1zIn*s2zIn,spin1x*spin2x+spin1y*spin2y+spin1z*spin2z);
116 if ( (ret == 0) && (errCode == 0) )
118 fprintf(stdout,
"\nInitial condition rotation test passed.\n");
122 fprintf(stderr,
"\nFAILURE: %u Initial condition rotation test failed.\n", ret);
int main(int argc, char **argv)
static int compare(REAL8 val1, REAL8 val2)
#define LAL_SIM_INSPIRAL_FRAME_AXIS_DEFAULT
@ LAL_SIM_INSPIRAL_FRAME_AXIS_VIEW
Set z-axis along direction of GW propagation (line of sight)
@ LAL_SIM_INSPIRAL_FRAME_AXIS_TOTAL_J
Set z-axis along the initial total angular momentum.
int XLALSimInspiralInitialConditionsPrecessingApproxs(REAL8 *inc, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, const REAL8 inclIn, const REAL8 S1xIn, const REAL8 S1yIn, const REAL8 S1zIn, const REAL8 S2xIn, const REAL8 S2yIn, const REAL8 S2zIn, const REAL8 m1, const REAL8 m2, const REAL8 fRef, const REAL8 phiRef, LALSimInspiralFrameAxis axisChoice)
Function to specify the desired orientation of the spin components of a precessing binary.
int XLALSimInspiralTransformPrecessingNewInitialConditions(REAL8 *incl, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, const REAL8 thetaJN, const REAL8 phiJL, const REAL8 theta1, const REAL8 theta2, const REAL8 phi12, const REAL8 chi1, const REAL8 chi2, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fRef, const REAL8 phiRef)
Transform Precessing Parameters.