Monsterlightcurve (xfig example)
Jump to navigation
Jump to search
File common_pars.sl, which I use to load some parameters common to all plots in a paper:
%% -- set up variables for plotting variable width = 10; variable height = 10; variable fullwidth = 25; variable mjdmin = MJDofDate(1995,12,15); variable mjdmax = MJDofDate(2012,12,30); variable yearmin = dateOfMJD(mjdmin); variable yearmax = dateOfMJD(mjdmax); variable max_asmh = 2.5; variable min_asmh = 0.; variable max_asmr = 150.; variable min_asmr = 0.; %%ends of activity periods variable e1 = 50350; variable e2 = 51000; variable e3 = 53900; variable e4 = 55375; %%define colours variable cl_hard = "blue"; variable cl_tran = "green4"; variable cl_soft = "red"; variable cl_neutral = "gray"; variable cl_hard_bg = "blue1"; variable cl_soft_bg = "pink3"; %%define data specific stuff variable gamma_hard = 2.0; variable gamma_soft = 2.5; %define mapping parameters variable asm_th = 20.; % threshold variable asm_x0 = 0.28; %x-intersection variable asm_hs = 55.; %hard slope variable asm_ss = 350.; %soft slope %%define paths to data variable maxiname = "lc_1orbit-Cyg_X-1_55058.09375-56244.21875.csv"
Actual plotting routine:
require("isisscripts");
require("../common_pars");
variable width=25;
variable hh = 3.5;
variable asmmin = 0;
variable asmmax = 200;
variable asmamin = 0;
variable asmamax = 100;
variable asmcmin = 0;
variable asmcmax = 50;
variable batmin = -0.09;
variable batmax = 0.39;
variable asmarrow = 170;
variable ptext = 185;
variable dnd = fits_read_table("../data/all_disk_nodisk.fits");
variable obs = fits_read_table("../data/all_obs.fits");
variable tt = (obs.tstart+obs.tstop)/2.;
variable pca_hard = where(dnd.bknpower_1_phoindx1_value < gamma_hard);
variable pca_tran = where(gamma_hard <= dnd.bknpower_1_phoindx1_value < gamma_soft);
variable pca_soft = where(gamma_soft <= dnd.bknpower_1_phoindx1_value);
variable asm = RXTE_ASM_lightcurve("cygx1");
struct_filter(asm,where(asm.rate_a > 0));
struct_filter(asm,where(asm.rate_b > 0));
struct_filter(asm,where(asm.rate_c > 0));
variable asm_late = struct_filter(asm,where(asm.time > 55200);copy,dim=0);
struct_filter(asm,where(asm.time < 55200));
variable hardness = asm.rate_c/asm.rate_a;
variable asm_hard = where(asm.rate <= asm_th or asm.rate <= (hardness-asm_x0)*asm_hs);
variable asm_tran = where(asm.rate > asm_th and asm.rate > (hardness-asm_x0)*asm_hs
and asm.rate <= (hardness-asm_x0)*asm_ss);
variable asm_soft = where(asm.rate > asm_th and asm.rate > (hardness-asm_x0)*asm_ss);
%%index for the times during the longhard state
variable ind_longhard = where( 53900 < asm.time < 54900);
%BAT
variable bat = fits_read_table("../data/CygX-1.orbit.lc.fits"); %
bat.time = bat.time/3600./24.+51910+0.00074287038;
struct_filter(bat,where(bat.time < 56240));
variable bat_soft = where(bat.rate <= 0.09);
variable bat_uncat = where(bat.rate > 0.09);
%%MAXI
variable maxi = ascii_read_table("../data/"+maxiname,
[{"%F","time"},{"%F","rate"},{"%F","err"},
{"%F","lo"},{"%F","loerr"},
{"%F","mi"},{"%F","mierr"},
{"%F","hi"},{"%F","hierr"}]);
struct_filter(maxi,where(maxi.time < 56240));
variable maxi_hard = where(maxi.lo <= 1.4*maxi.mi/maxi.lo);
variable maxi_tran = where(1.4*maxi.mi/maxi.lo < maxi.lo <= 8./3.*maxi.mi/maxi.lo);
variable maxi_soft = where(maxi.lo > 8./3.*maxi.mi/maxi.lo);
%%GBM
()=evalfile("../gbm/init_gbm.sl");
variable gbm = @d;
%struct_filter(gbm, where(gbm.nr_occ>10));
struct_filter(gbm,where(gbm.mjd_start < 56240));
variable gbm_soft = where(1e-3*get_struct_field (gbm, cnfg.flux[1]) < 0.6);
variable gbm_uncat = where(1e-3*get_struct_field (gbm, cnfg.flux[1]) > 0.6);
%%axis labels
variable mino = [1996:2013];
variable maj = [1996:2013]+0.5;
variable extramin = Double_Type[0];
variable q,i;
variable ticc=String_Type[length(maj)];
_for i (0,2013-1996-1,1){
ticc[i]=string(mino[i]);
_for q (1,11,1){
extramin = [extramin,1996+i+q/12.];
}
}
variable plg = xfig_plot_new(width,hh*5./7.);
plg.world1(mjdmin,mjdmax,-1,4);
plg.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,
yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,
-1,4);
plg.x1axis(;off);
plg.x2axis(;major = maj, minor = mino, ticlabels = ticc,
major_len=0,minor_len=0.2,minor_width=2
);
plg.yaxis(;ticlabels=0,major=0,minor=0);
_for i (0,length(pca_hard)-1,1){
plg.plot([tt[pca_hard[i]],tt[pca_hard[i]]],[2,3];color=cl_hard);
};
_for i (0,length(pca_tran)-1,1){
plg.plot([tt[pca_tran[i]],tt[pca_tran[i]]],[1,2];color=cl_tran);
};
_for i (0,length(pca_soft)-1,1){
plg.plot([tt[pca_soft[i]],tt[pca_soft[i]]],[0,1];color=cl_soft);
};
plg.ylabel("\begin{center}times of\\pointed \\\textsl{RXTE} obs.\end{center}"R;rotate=-90);
plg.x2label("year");
variable pl_asm = xfig_plot_new(width,hh);
pl_asm.world1(mjdmin,mjdmax,asmmin,asmmax);
pl_asm.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,
yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,
asmmin,asmmax);
pl_asm.x2axis(;off);
pl_asm.y2axis(;ticlabels=0);
pl_asm.plot(asm.time[asm_tran],asm.rate[asm_tran];sym="point",size=0.1,color=cl_tran);
pl_asm.plot(asm.time[asm_soft],asm.rate[asm_soft];sym="point",size=0.1,color=cl_soft);
pl_asm.plot(asm.time[asm_hard],asm.rate[asm_hard];sym="point",size=0.1,color=cl_hard);
pl_asm.plot(asm_late.time,asm_late.rate;sym="point",size=0.1,color="gray");
pl_asm.plot([e1,e1],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asm.plot([e2,e2],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asm.plot([e3,e3],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asm.plot([e4,e4],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asm.plot([mjdmin,e1],[asmarrow,asmarrow];
line=0, forward_arrow, arrow_thickness =1,color="gray");
pl_asm.plot([e1,e2],[asmarrow,asmarrow];
line=0, forward_arrow, backward_arrow, arrow_thickness =1,color="gray");
pl_asm.plot([e2,e3],[asmarrow,asmarrow];
line=0, forward_arrow, backward_arrow, arrow_thickness =1,color="gray");
pl_asm.plot([e3,e4],[asmarrow,asmarrow];
line=0, forward_arrow, backward_arrow, arrow_thickness =1,color="gray");
pl_asm.plot([e4,mjdmax],[asmarrow,asmarrow];
line=0, backward_arrow, arrow_thickness =1,color="gray");
pl_asm.xylabel((mjdmin+e1)/2.,ptext,"I";depth=10);
pl_asm.xylabel((e1+e2)/2.,ptext,"II";depth=10);
pl_asm.xylabel((e2+e3)/2.,ptext,"period III";depth=10);
pl_asm.xylabel((e3+e4)/2.,ptext,"period IV";depth=10);
pl_asm.xylabel((e4+mjdmax)/2.,ptext,"period V";depth=10);
pl_asm.ylabel("\begin{center}\textsl{RXTE}-ASM \\1.5--12\,keV \\$[$cps$]$\end{center}"R);
variable pl_asmh = xfig_plot_new(width,hh);
pl_asmh.world1(mjdmin,mjdmax,0.08,15;ylog);
pl_asmh.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,
yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,
0.08,10;ylog);
pl_asmh.x2axis(;major = maj, minor = mino, ticlabels = ticc,
major_len=0,minor_len=0.2,minor_width=2
);
pl_asmh.y2axis(;ticlabels=0);
%pl_asmh.y1axis(;format="$10^{%.1f}$"R);
pl_asmh.plot(asm.time[asm_tran],asm.rate_c[asm_tran]/asm.rate_a[asm_tran];
sym="point",size=0.1,color=cl_tran);
pl_asmh.plot(asm.time[asm_soft],asm.rate_c[asm_soft]/asm.rate_a[asm_soft];
sym="point",size=0.1,color=cl_soft);
pl_asmh.plot(asm.time[asm_hard],asm.rate_c[asm_hard]/asm.rate_a[asm_hard];
sym="point",size=0.1,color=cl_hard);
pl_asmh.plot(asm_late.time,asm_late.rate_c/asm_late.rate_a;
sym="point",size=0.1,color="gray");
pl_asmh.plot([e1,e1],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asmh.plot([e2,e2],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asmh.plot([e3,e3],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asmh.plot([e4,e4],[asmmin,asmmax];line=1,width=2,depth=10);
pl_asmh.ylabel("\begin{center}\textsl{RXTE}-ASM \\ hardness \\ (C$/$A)\end{center}"R);
variable pl_bat = xfig_plot_new(width,hh);
pl_bat.world(mjdmin,mjdmax,batmin,batmax);
pl_bat.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,
yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,batmin,batmax);
pl_bat.y2axis(;ticlabels=0,tic_depth=3);
pl_bat.x2axis(;major = maj, minor = mino, ticlabels = ticc,
major_len=0,minor_len=0.2,minor_width=2
);
pl_bat.plot(bat.time[bat_soft],bat.rate[bat_soft];sym="point",size=0.1,color=cl_soft);
pl_bat.plot(bat.time[bat_uncat],bat.rate[bat_uncat];sym="point",size=0.1);
pl_bat.plot([e1,e1],[batmin,batmax];line=1,width=2,depth=10);
pl_bat.plot([e2,e2],[batmin,batmax];line=1,width=2,depth=10);
pl_bat.plot([e3,e3],[batmin,batmax];line=1,width=2,depth=10);
pl_bat.plot([e4,e4],[batmin,batmax];line=1,width=2,depth=10);
pl_bat.plot([mjdmin,mjdmax],[0,0];color="gray",line=1);
pl_bat.y1axis(;format="%.1f",tic_depth=3);
pl_bat.ylabel("\begin{center}\textsl{Swift}-BAT \\ 15--50\,keV \\$[$cps/cm$^2]$\end{center}"R);
variable pl_maxi = xfig_plot_new(width,hh);
pl_maxi.world(mjdmin,mjdmax,0,5.5);
pl_maxi.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,
yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,0,6);
pl_maxi.x2axis(;major = maj, minor = mino, ticlabels = ticc,
major_len=0,minor_len=0.2,minor_width=2
);
pl_maxi.y2axis(;ticlabels=0);
pl_maxi.plot(maxi.time[maxi_tran],maxi.rate[maxi_tran];sym="point",size=0.1,color=cl_tran);
pl_maxi.plot(maxi.time[maxi_soft],maxi.rate[maxi_soft];sym="point",size=0.1,color=cl_soft);
pl_maxi.plot(maxi.time[maxi_hard],maxi.rate[maxi_hard];sym="point",size=0.1,color=cl_hard);
pl_maxi.plot([e1,e1],[0,6];line=1,width=2,depth=10);
pl_maxi.plot([e2,e2],[0,6];line=1,width=2,depth=10);
pl_maxi.plot([e3,e3],[0,6];line=1,width=2,depth=10);
pl_maxi.plot([e4,e4],[0,6];line=1,width=2,depth=10);
pl_maxi.ylabel("\begin{center}MAXI \\ 2--20\,keV \\$[$cps/cm$^2]$\end{center}"R);
variable pl_gbm = xfig_plot_new(width,hh);
pl_gbm.world(mjdmin,mjdmax,-0.4,1.9);
pl_gbm.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,
yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,-0.4,1.9);
pl_gbm.x2axis(;major = maj, minor = mino, ticlabels = ticc,
major_len=0,minor_len=0.2,minor_width=2
);
pl_gbm.y1axis(;format="%.1f",tic_depth=3);
pl_gbm.y2axis(;ticlabels=0,tic_depth=3);
pl_gbm.plot(0.5*(gbm.mjd_start + gbm.mjd_stop)[gbm_soft],
1e-3*get_struct_field (gbm, cnfg.flux[1])[gbm_soft],
0.5* (gbm.mjd_stop - gbm.mjd_start)[gbm_soft],
1e-3*get_struct_field (gbm, cnfg.err[1])[gbm_soft];
sym = "point",color=cl_soft);
pl_gbm.plot(0.5*(gbm.mjd_start + gbm.mjd_stop)[gbm_uncat],
1e-3*get_struct_field (gbm, cnfg.flux[1])[gbm_uncat],
0.5* (gbm.mjd_stop - gbm.mjd_start)[gbm_uncat],
1e-3*get_struct_field (gbm, cnfg.err[1])[gbm_uncat];
sym = "point");
pl_gbm.plot([mjdmin,mjdmax],[0,0];color="gray",line=1);
pl_gbm.plot([e1,e1],[-0.4,1.9];line=1,width=2,depth=10);
pl_gbm.plot([e2,e2],[-0.4,1.9];line=1,width=2,depth=10);
pl_gbm.plot([e3,e3],[-0.4,1.9];line=1,width=2,depth=10);
pl_gbm.plot([e4,e4],[-0.4,1.9];line=1,width=2,depth=10);
pl_gbm.ylabel("\begin{center}GBM \\ 25--50\,keV \\ $[$Crab$]$\end{center}"R);
variable comp = xfig_new_vbox_compound(plg,
xfig_multiplot(pl_asm,pl_asmh,
pl_maxi,
pl_bat,pl_gbm;
xlabel="MJD"));
comp.render("monster.pdf");
print("STACK:");
_print_stack;
exit;
