################# random pointings ########################################## racenter = 0.0 deccenter = -57.0 dtheta=15. npointings=2000 rnd_pointing=create_random_pointings([racenter, deccenter],npointings,dtheta) op = (DegreesOperator() * Cartesian2SphericalOperator('azimuth,elevation') * CartesianEquatorial2GalacticOperator() * Spherical2CartesianOperator('azimuth,elevation') * RadiansOperator()) center = op([racenter, deccenter]) ################# TOD tod=mm.map2tod(maps,rnd_pointing,qubic,kmax=2) ################# Spoil bolometers calibration calerror=1e-2 tod_spoiled=tod.copy() rndcal=np.random.normal(loc=1.,scale=calerror,size=(len(detectors),2)) for i in np.arange(len(detectors)): for j in np.arange(2): tod_spoiled[i,:,j]=rndcal[i,j]*tod[i,:,j] ################# Maps output_maps_all,call=mm.tod2map(tod,rnd_pointing,qubic,disp=False) output_maps_all_spoiled,call_spoiled=mm.tod2map(tod_spoiled,rnd_pointing,qubic,disp=False) output_maps_det,cdet=mm.tod2map_perdet(tod,rnd_pointing,qubic,disp=False) output_maps_det_spoiled,cdet_spoiled=mm.tod2map_perdet(tod_spoiled,rnd_pointing,qubic,disp=False)
################### Make a MC: make various maps useful later from pysimulators import FitsArray dtheta=15. npointings=5000 calerror=1e-2 nbmc=1000 for n in np.arange(nbmc): print(' ') print(' ') print(' ') print('#############################') print('####### mc '+str(n)) print('#############################') mapi,mapq,mapu=hp.synfast(spectra[1:],nside,fwhm=fwhmrad,pixwin=True,new=True) rnd_pointing=create_random_pointings([racenter, deccenter],npointings,dtheta) tod=mm.map2tod(maps,rnd_pointing,qubic) tod_spoiled=tod.copy() rndcal=np.random.normal(loc=1.,scale=calerror,size=(len(detectors),2)) for i in np.arange(len(detectors)): for j in np.arange(2): tod_spoiled[i,:,j]=rndcal[i,j]*tod[i,:,j] output_maps_all,call=mm.tod2map(tod,rnd_pointing,qubic,disp=False) output_maps_all_spoiled,call_spoiled=mm.tod2map(tod_spoiled,rnd_pointing,qubic,disp=False) output_maps_det,cdet=mm.tod2map_perdet(tod,rnd_pointing,qubic,disp=False) output_maps_det_spoiled,cdet_spoiled=mm.tod2map_perdet(tod_spoiled,rnd_pointing,qubic,disp=False) covmin=np.arange(12*nside**2) for i in np.arange(12*nside**2): covmin[i]=np.min([call[i],call_spoiled[i],cdet[i],cdet_spoiled[i]]) strn = str(np.random.randint(1e6))
from astropy.time import Time, TimeDelta DOMECLAT = -(75 + 6 / 60) DOMECLON = 123 + 20 / 60 t0 = pointing.date_obs dt = TimeDelta(pointing.time, format='sec') op = (pysimulators.SphericalHorizontal2EquatorialOperator('NE', t0 + dt, DOMECLAT, DOMECLON, degrees=True)) radec = op(np.array([pointing.azimuth, pointing.elevation]).T) clf() subplot(2,1,1) plot(((radec[:,0]+180 + 360) % 360) -180,radec[:,1],',') subplot(2,1,2,projection='mollweide') plot(np.radians(((radec[:,0]+180 + 360) % 360) -180),np.radians(radec[:,1]),',') #### Comparaison des map-makings avec tous les det d'un coup ou bien det par det tod_all=mm.map2tod(maps,pointing,qubic) clf() plot(tod_all[0,:,0]) ## All det output_maps_all,coverage_all=mm.tod2map(tod_all,pointing,qubic) output_maps_all_new=output_maps_all.copy() hp.mollview(output_maps_all[:,0]) hp.mollview(output_maps_all[:,1]) hp.mollview(output_maps_all[:,2]) ## per det output_maps_det,coverage_det=mm.tod2map_perdet(tod_all,pointing,qubic)