// Dominique YVON, CEA/DAPNIA/SPP 02/2000 #include #include #include #include #include //#include #ifdef __MWERKS__ #include "mwerksmath.h" #include "unixmac.h" #include "macenvvariables.h" #endif #include "squarefilt.h" #include "fitsioserver.h" #include "alllobe.h" #include "alllightsources.h" #include "sigcalctools.h" #define NLatTestMap (256) static FitsIoServer FitsServer; int CompareMapResults(); int TestSommeMapsInBand(char file1[], long nlat); int CompareMapResults() { cout<< "Test du fonctionnement par la comparaison systematique"; cout<< " Avec les resultats de supertango"< PowerMap(nlat); // Pour se mettre a l'unite nW/m2/St // Definition channel C LobeGaussien LobeGaussChanC(28.2/60.,30.e9,50.e09); // LobeConique ConeLobe(1.,10.e9,3000.e9); // pour des test simples SquareFilter FlatFilter(36.e9,44.e9); // Hz // Test lobes // On somme les trois contributions intˇgrˇes sur la bande passante /* // OK pour le synchrotron { LightSynchro Synchro(nlat); SigCalcTool ChanCTool(&Synchro,&LobeGaussChanC,&FlatFilter); addInInBandPowerMap(PowerMap,ChanCTool); // OK pour le synchrotron } // On ajoute la poussiere diffuse { LightDiffDust DiffDust(nlat); SigCalcTool ChanCTool(&DiffDust,&LobeGaussChanC,&FlatFilter); addInInBandPowerMap(PowerMap,ChanCTool); } // On ajoute le CMB { LightCMBPrim CMB(nlat); SigCalcTool ChanCTool(&CMB,&LobeGaussChanC,&FlatFilter); addInInBandPowerMap(PowerMap,ChanCTool); } // On ajoute du bruit { SphereGorski NoiseChanCMap(nlat); sprintf(filename, "%schannelC_noise_res%04i.fits",PATHSTangoRes,nlat); FitsServer.load(NoiseChanCMap,filename); scaleMap(1.e-9,NoiseChanCMap); // Pour se mettre W/m2/St addMap(PowerMap,NoiseChanCMap); } // Bilan carte sommee cout<<"Carte Totale"< ChannelCConvolue(nlat); // On convolue addToSkyMap(ChannelCConvolue, ChannelCtool); // On sauvegarde sprintf(filename,"ChannelConvolue%04i.fits",nlat); FitsServer.save(ChannelCConvolue, filename); MinMaxSigMap(ChannelCConvolue,Min,Max,Moy,sigma); cout <<"ChannelCConvolue: "<<"Min="< ObsConvolSTango(nlat); sprintf(filename, "%schannelC_convolved.fits",PATHSTangoRes); FitsServer.load(ObsConvolSTango,filename); // Unite nW/m2/St // On met a la meme echelle LightSrcMapPowerInband LightMapInCBand(fileTotPower,256,36.e9,44.e9); SigCalcTool ChannelCtool(&LightMapInCBand,&LobeGaussChanC,&FlatFilter); double lobeSize=ChannelCtool.CalcLobeSize(); //Steradian double scaleFactor= 1.e-9 * lobeSize; // Pour se mettre W/m2 scaleMap(scaleFactor,ObsConvolSTango); MinMaxSigMap(ObsConvolSTango,Min,Max,Moy,sigma); cout <<"ObsConvolSTango W/m2/sr: "<<"Min="<* pTestMap; pTestMap= new SphereGorski(64); SphereGorski& TestMap=(*pTestMap); #ifndef __MWERKS__ char* PATHResults=getenv("PATHResults"); char* PATHDataLScr=getenv("PATHDataLScr"); char* PATHCarteLobe=getenv("PATHCarteLobe"); #endif //_________________ Test implementation des lobes ___________________ LobeGaussien GaussLobe(0.3,75.e9,125.e9); //degrˇs, freqmin, Freqmax LobeConique ConeLobe(1.,75.e9,125.e9); Lobe4PiGaussien Lobe4Pi1(1.,75.e9,125.e9); // Test de la classe Cartelobe char lobeFileNameRoot[150]; sprintf(lobeFileNameRoot, "%sdetector100_1_cf",PATHCarteLobe); char LobeFitsFile[150]; sprintf(LobeFitsFile, "%sCarteLobe100GHz_1_cf.fits",PATHResults); // Test LobeCartoMoyen ___________________________________________ // CarteLobe CarteLobe100GHzCF(lobeFileNameRoot,100.e9); // Hz // LobeCartoMoyen LobeCartoTest(&CarteLobe100GHzCF,75.e9,125.e9); // Un filtre bete........ SquareFilter FlatFilter(85.e9, 115.e9); // Hz cout<<"param specifiques a BoloFilterFlat"<MaxDipole) MaxDipole=TestMap(i); cout<<"Maximum du dipole: "<MaxSun) MaxSun=TestMap(i); cout<<"Maximum du soleil: "<