21 #include <lal/LALSimInspiral.h> 47 std::map<TString, double> psample;
48 std::vector<TString> pname;
52 name=
"dummy"; psample[
name] = 0; pname.push_back(name);
54 name=
"time"; psample[
name] =
gps; pname.push_back(name);
56 name=
"costheta_jn"; psample[
name] = 0; pname.push_back(name);
57 name=
"distance"; psample[
name] = 0; pname.push_back(name);
58 name=
"ra"; psample[
name] = 0; pname.push_back(name);
59 name=
"dec"; psample[
name] = 0; pname.push_back(name);
60 name=
"m1"; psample[
name] = 0; pname.push_back(name);
61 name=
"m2"; psample[
name] = 0; pname.push_back(name);
62 name=
"a1"; psample[
name] = 0; pname.push_back(name);
63 name=
"a2"; psample[
name] = 0; pname.push_back(name);
64 name=
"costilt1"; psample[
name] = 0; pname.push_back(name);
65 name=
"costilt2"; psample[
name] = 0; pname.push_back(name);
67 if(ifname.Contains(
"GW170817")) {
68 name=
"lambda1"; psample[
name] = 0; pname.push_back(name);
69 name=
"lambda2"; psample[
name] = 0; pname.push_back(name);
72 name=
"q"; psample[
name] = 0; pname.push_back(name);
73 name=
"mc"; psample[
name] = 0; pname.push_back(name);
75 name=
"lal_pnorder"; psample[
name] = 8; pname.push_back(name);
76 name=
"lal_amporder"; psample[
name] = 0; pname.push_back(name);
77 name=
"lal_approximant"; psample[
name] = IMRPhenomPv2; pname.push_back(name);
78 name=
"flow"; psample[
name] = 20; pname.push_back(name);
79 name=
"f_ref"; psample[
name] = 20; pname.push_back(name);
81 name=
"phase"; psample[
name] = 0; pname.push_back(name);
82 name=
"psi"; psample[
name] = 0; pname.push_back(name);
83 name=
"phi12"; psample[
name] = 0; pname.push_back(name);
84 name=
"phi_jl"; psample[
name] = 0; pname.push_back(name);
89 if(!in.good()) {cout <<
"Error Opening File : " << ifname.Data() << endl;
exit(1);}
93 if(!out.good()) {cout <<
"Error Opening File : " << ofname.Data() << endl;
exit(1);}
97 for(
int i = 0;
i < pname.size();
i++) out << pname[
i] <<
"\t";
104 in >>
line;
if(!in.good())
break;
105 if(
TString(line).Contains(
"{")) {
106 in >>
line;
if(!in.good())
break;
110 psample[
"costheta_jn"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
111 psample[
"distance"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
112 psample[
"ra"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
113 psample[
"dec"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
114 psample[
"m1"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
115 psample[
"m2"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
116 if(ifname.Contains(
"GW170817")) {
117 psample[
"lambda1"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
118 psample[
"lambda2"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
120 psample[
"a1"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
121 psample[
"a2"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
122 psample[
"costilt1"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
123 psample[
"costilt2"] =
TString(line).Atof(); in >>
line;
if(!in.good())
break;
125 double m1 = psample[
"m1"];
126 double m2 = psample[
"m2"];
127 psample[
"mc"] = pow(m1*m2,3./5.)/pow(m1+m2,1./5.);
128 psample[
"q"] = m2<m1 ? m2/
m1 : m1/
m2;
131 for(
int i = 0;
i < pname.size();
i++) out << psample[pname[
i]] <<
"\t";
145 if(
TString(line).Contains(
"}")) data=
false;
150 cout << endl <<
"ConvertSamples.C - converted entries: " << entries << endl;
152 cout << endl <<
"ConvertSamples.C - created file: " << ofname << endl << endl;
171 gRandom->SetSeed(seed);
175 options +=
"--ninjections 1 ";
176 options += TString::Format(
"--seed %d ",seed);
178 options +=
"--source "+gwname+
" ";
179 options +=
"--waveform IMRPhenomPv2pseudoFourPN ";
180 options +=
"--f_ref 20 ";
181 options +=
"--f_lower 20 ";
186 options +=
"--clb_file "+gwname+
"_GWTC-1.clb ";
203 in.open(ifname.Data(),
ios::in);
204 if (!in.good()) {cout <<
"Error Opening File : " << ifname << endl;
exit(1);}
210 in.getline(str,1024);
211 if (!in.good())
break;
212 if(str[0] !=
'#') size++;
214 cout <<
"size " << size << endl;
215 in.clear(ios::goodbit);
216 in.seekg(0, ios::beg);
218 in.getline(str,1024);
221 int iH1 = header.Index(
"LIGO_Hanford_PSD");
222 int iL1 = header.Index(
"LIGO_Livingston_PSD");
223 int iV1 = header.Index(
"Virgo_PSD");
229 if(iH1>=0) {iIFO[
nIFO]=iH1;sIFO[
nIFO]=
"H1";nIFO++;}
230 if(iL1>=0) {iIFO[
nIFO]=iL1;sIFO[
nIFO]=
"L1";nIFO++;}
231 if(iV1>=0) {iIFO[
nIFO]=iV1;sIFO[
nIFO]=
"V1";nIFO++;}
233 if(nIFO==0 || nIFO>
MAX_IFOS) {cout <<
"Error: no IFOs in PSDs file or not allowed Format" << endl;
exit(1);}
240 if(nIFO==1) in >> freq[lines] >> psd[0][lines];
241 if(nIFO==2) in >> freq[lines] >> psd[0][lines] >> psd[1][lines];
242 if(nIFO==3) in >> freq[lines] >> psd[0][lines] >> psd[1][lines] >> psd[2][lines];
243 if (!in.good())
break;
250 TMath::Sort(nIFO,iIFO,idx,
false);
255 ofname.ReplaceAll(
"_PSDs.dat",
"_ASD_"+sIFO[m]+
".dat");
256 cout << ofname << endl;
259 if(!out.good()) {cout <<
"Error Opening Output File : " << ofname << endl;
exit(1);}
260 out << 0 <<
"\t" << 10*sqrt(psd[m][0]) << endl;
261 for(
int i=0;
i<
size;
i++) out << freq[
i] <<
"\t" << sqrt(psd[m][
i]) << endl;
262 out << 8192 <<
"\t" << 10*sqrt(psd[m][size-1]) << endl;
wavearray< double > psd(33)