| [1148] | 1 | // Dominique YVON, CEA/DAPNIA/SPP 02/2000 | 
|---|
|  | 2 |  | 
|---|
|  | 3 | #include <stdio.h> | 
|---|
|  | 4 | #include <stdlib.h> | 
|---|
|  | 5 | #include <iostream> | 
|---|
|  | 6 |  | 
|---|
|  | 7 |  | 
|---|
|  | 8 | #include "makebolotimeline.h" | 
|---|
|  | 9 | #include "bruit.h" | 
|---|
|  | 10 | //#include "fitsio.h" | 
|---|
|  | 11 |  | 
|---|
|  | 12 | #ifdef __MWERKS__ | 
|---|
|  | 13 | #include "dyyield.h" | 
|---|
|  | 14 | #include "macenvvariables.h" | 
|---|
|  | 15 | #define SetNlatLSource (256)         // version debug | 
|---|
|  | 16 | #define NbSAMPLE (200000)                    //      Pour le debug | 
|---|
|  | 17 | #else | 
|---|
|  | 18 | # define ERROR_LABEL -32768 | 
|---|
|  | 19 | #define SetNlatLSource (1024)                // version de production CXX | 
|---|
|  | 20 | #define NbSAMPLE (2684300) | 
|---|
|  | 21 | #endif | 
|---|
|  | 22 |  | 
|---|
|  | 23 |  | 
|---|
|  | 24 |  | 
|---|
|  | 25 | #include "alllobe.h" | 
|---|
|  | 26 | #include "alllightsources.h" | 
|---|
|  | 27 | #include "sigcalctools.h" | 
|---|
|  | 28 | #include "allfilter.h" | 
|---|
|  | 29 |  | 
|---|
|  | 30 |  | 
|---|
|  | 31 | int MakeArcheopsTimelines(char FilePointes[]); | 
|---|
|  | 32 | int GenTimLin1_F(long Nbsample, double TStep, float fknee); | 
|---|
|  | 33 |  | 
|---|
|  | 34 | int MakeArcheopsTimelines(char FilePointes[]) | 
|---|
|  | 35 | { | 
|---|
|  | 36 |  | 
|---|
|  | 37 | // On genre des timelines de bruit en 1/f | 
|---|
|  | 38 | GenTimLin1_F(NbSAMPLE,5.83e-3,1.); | 
|---|
|  | 39 | GenTimLin1_F(NbSAMPLE,5.83e-3,0.5); | 
|---|
|  | 40 | GenTimLin1_F(NbSAMPLE,5.83e-3,0.1); | 
|---|
|  | 41 |  | 
|---|
|  | 42 |  | 
|---|
|  | 43 | // On passe aux cartes de fonds physiques | 
|---|
|  | 44 | // Initialisations | 
|---|
|  | 45 | char filename[150]=""; | 
|---|
|  | 46 |  | 
|---|
|  | 47 | //      cerr.setf(ios::scientific); | 
|---|
|  | 48 | cerr<< "C'est parti"<<endl; | 
|---|
|  | 49 |  | 
|---|
|  | 50 | // Des Lobes | 
|---|
|  | 51 | LobeGaussien GLobeTrapChan1(8./60.,75.e9,600.e9);  //degrs, freqmin, Freqmax | 
|---|
|  | 52 | LobeGaussien GLobeTrapChan2(8./60.,75.e9,600.e9); | 
|---|
|  | 53 | LobeGaussien GLobeTrapChan3(8./60.,75.e9,600.e9); | 
|---|
|  | 54 |  | 
|---|
|  | 55 | #ifndef __MWERKS__ | 
|---|
|  | 56 | /* char* PATHResults=getenv("PATHResults"); | 
|---|
|  | 57 | char* PATHDataLScr=getenv("PATHDataLScr"); | 
|---|
|  | 58 | char* PATHCarteLobe=getenv("PATHCarteLobe"); | 
|---|
|  | 59 | */ | 
|---|
|  | 60 | char* PathInstrumentData=getenv("PathInstrumentData"); | 
|---|
|  | 61 | #endif | 
|---|
|  | 62 |  | 
|---|
|  | 63 | // Des Filtres | 
|---|
|  | 64 | sprintf(filename, "%sfiltretrap99chan1.dat",PathInstrumentData); | 
|---|
|  | 65 | TabulatedFilter FiltreTrapChan1(filename); | 
|---|
|  | 66 | sprintf(filename, "%sfiltretrap99chan2.dat",PathInstrumentData); | 
|---|
|  | 67 | TabulatedFilter FiltreTrapChan2(filename); | 
|---|
|  | 68 | sprintf(filename, "%sfiltretrap99chan3.dat",PathInstrumentData); | 
|---|
|  | 69 | TabulatedFilter FiltreTrapChan3(filename); | 
|---|
|  | 70 |  | 
|---|
|  | 71 | /* | 
|---|
|  | 72 | // On imprime les filtres | 
|---|
|  | 73 | ofstream Cfilter1("TraceFiltre1", ios::out); | 
|---|
|  | 74 | FiltreTrapChan1.TraceFiltre(Cfilter1); | 
|---|
|  | 75 | ofstream Cfilter2("TraceFiltre2", ios::out); | 
|---|
|  | 76 | FiltreTrapChan2.TraceFiltre(Cfilter2); | 
|---|
|  | 77 | ofstream Cfilter3("TraceFiltre3", ios::out); | 
|---|
|  | 78 | FiltreTrapChan3.TraceFiltre(Cfilter3); | 
|---|
|  | 79 | */ | 
|---|
|  | 80 |  | 
|---|
|  | 81 | // /* | 
|---|
|  | 82 | // Les Processus Physiques | 
|---|
|  | 83 | // LightSynchro Synchro(SetNlatLSource);                // Pas pour Archeops | 
|---|
|  | 84 | LightDiffDust DiffDust(SetNlatLSource); | 
|---|
|  | 85 | LightCMBPrim CMBPrim(SetNlatLSource);           // Pour debuter | 
|---|
|  | 86 | // Le bruit reste  chacun de le gnerer | 
|---|
|  | 87 | LightDipole CMBDipole; | 
|---|
|  | 88 |  | 
|---|
|  | 89 | // On definit les timeline desirees | 
|---|
|  | 90 |  | 
|---|
|  | 91 | char fileOut[150]; | 
|---|
|  | 92 |  | 
|---|
|  | 93 | // Bolo 1_1 soit bolo11. | 
|---|
|  | 94 | sprintf(fileOut, "ASigPred_bolo1_1Dipole"); | 
|---|
|  | 95 | MakeBoloTimeline TL1_1Dipole(fileOut,CMBDipole,GLobeTrapChan1, | 
|---|
|  | 96 | FiltreTrapChan1,RayleighJeans); | 
|---|
|  | 97 |  | 
|---|
|  | 98 | sprintf(fileOut, "ASigPred_bolo1_1CMBPrim"); | 
|---|
|  | 99 | MakeBoloTimeline TL1_1CMBPrim(fileOut, CMBPrim,GLobeTrapChan1, | 
|---|
|  | 100 | FiltreTrapChan1,RayleighJeans); | 
|---|
|  | 101 |  | 
|---|
|  | 102 | sprintf(fileOut, "ASigPred_bolo1_1DiffDust"); | 
|---|
|  | 103 | MakeBoloTimeline TL1_1DiffDust(fileOut,DiffDust,GLobeTrapChan1, | 
|---|
|  | 104 | FiltreTrapChan1,RayleighJeans); | 
|---|
|  | 105 |  | 
|---|
|  | 106 | // Bolo 1_3 soit bolo13. | 
|---|
|  | 107 | sprintf(fileOut, "ASigPred_bolo1_3Dipole"); | 
|---|
|  | 108 | MakeBoloTimeline TL1_3Dipole(fileOut, CMBDipole,GLobeTrapChan1, | 
|---|
|  | 109 | FiltreTrapChan1,RayleighJeans); | 
|---|
|  | 110 |  | 
|---|
|  | 111 | sprintf(fileOut, "ASigPred_bolo1_3CMBPrim"); | 
|---|
|  | 112 | MakeBoloTimeline TL1_3CMBPrim(fileOut, CMBPrim,GLobeTrapChan1, | 
|---|
|  | 113 | FiltreTrapChan1,RayleighJeans); | 
|---|
|  | 114 |  | 
|---|
|  | 115 | sprintf(fileOut, "ASigPred_bolo1_3DiffDust"); | 
|---|
|  | 116 | MakeBoloTimeline TL1_3DiffDust(fileOut,DiffDust,GLobeTrapChan1, | 
|---|
|  | 117 | FiltreTrapChan1,RayleighJeans); | 
|---|
|  | 118 |  | 
|---|
|  | 119 | // Bolo 2_4 soit bolo9. | 
|---|
|  | 120 | sprintf(fileOut, "ASigPred_bolo2_4Dipole"); | 
|---|
|  | 121 | MakeBoloTimeline TL2_4Dipole(fileOut, CMBDipole,GLobeTrapChan2, | 
|---|
|  | 122 | FiltreTrapChan2,RayleighJeans); | 
|---|
|  | 123 |  | 
|---|
|  | 124 | sprintf(fileOut, "ASigPred_bolo2_4CMBPrim"); | 
|---|
|  | 125 | MakeBoloTimeline TL2_4CMBPrim(fileOut, CMBPrim,GLobeTrapChan2, | 
|---|
|  | 126 | FiltreTrapChan2,RayleighJeans); | 
|---|
|  | 127 |  | 
|---|
|  | 128 | sprintf(fileOut, "ASigPred_bolo2_4DiffDust"); | 
|---|
|  | 129 | MakeBoloTimeline TL2_4DiffDust(fileOut,DiffDust,GLobeTrapChan2, | 
|---|
|  | 130 | FiltreTrapChan2,RayleighJeans); | 
|---|
|  | 131 |  | 
|---|
|  | 132 | // Bolo 2_5 soit bolo4. | 
|---|
|  | 133 | sprintf(fileOut, "ASigPred_bolo2_5Dipole"); | 
|---|
|  | 134 | MakeBoloTimeline TL2_5Dipole(fileOut, CMBDipole,GLobeTrapChan2, | 
|---|
|  | 135 | FiltreTrapChan2,RayleighJeans); | 
|---|
|  | 136 |  | 
|---|
|  | 137 | sprintf(fileOut, "ASigPred_bolo2_5CMBPrim"); | 
|---|
|  | 138 | MakeBoloTimeline TL2_5CMBPrim(fileOut, CMBPrim,GLobeTrapChan2, | 
|---|
|  | 139 | FiltreTrapChan2,RayleighJeans); | 
|---|
|  | 140 |  | 
|---|
|  | 141 | sprintf(fileOut, "ASigPred_bolo2_5DiffDust"); | 
|---|
|  | 142 | MakeBoloTimeline TL2_5DiffDust(fileOut,DiffDust,GLobeTrapChan2, | 
|---|
|  | 143 | FiltreTrapChan2,RayleighJeans); | 
|---|
|  | 144 |  | 
|---|
|  | 145 | // Bolo 3_6 soit bolo15. | 
|---|
|  | 146 | sprintf(fileOut, "ASigPred_bolo3_6Dipole"); | 
|---|
|  | 147 | MakeBoloTimeline TL3_6Dipole(fileOut, CMBDipole,GLobeTrapChan3, | 
|---|
|  | 148 | FiltreTrapChan3,RayleighJeans); | 
|---|
|  | 149 |  | 
|---|
|  | 150 | sprintf(fileOut, "ASigPred_bolo3_6CMBPrim"); | 
|---|
|  | 151 | MakeBoloTimeline TL3_6CMBPrim(fileOut, CMBPrim,GLobeTrapChan3, | 
|---|
|  | 152 | FiltreTrapChan3,RayleighJeans); | 
|---|
|  | 153 |  | 
|---|
|  | 154 | sprintf(fileOut, "ASigPred_bolo3_6DiffDust"); | 
|---|
|  | 155 | MakeBoloTimeline TL3_6DiffDust(fileOut,DiffDust,GLobeTrapChan3, | 
|---|
|  | 156 | FiltreTrapChan3,RayleighJeans); | 
|---|
|  | 157 |  | 
|---|
|  | 158 |  | 
|---|
|  | 159 | // Il faut maintenant lire le fichier des pointages | 
|---|
|  | 160 |  | 
|---|
|  | 161 | #ifndef __MWERKS__ | 
|---|
|  | 162 | char* PathTimeline=getenv("PathTimeline"); | 
|---|
|  | 163 | #endif | 
|---|
|  | 164 |  | 
|---|
|  | 165 | char FileName[150]; | 
|---|
|  | 166 | sprintf(FileName, "%s%s",PathTimeline,FilePointes); | 
|---|
|  | 167 | ifstream InFile(FileName); | 
|---|
|  | 168 |  | 
|---|
|  | 169 | #ifdef __MWERKS__ | 
|---|
|  | 170 | // Cxx est trop con! | 
|---|
|  | 171 | if (!InFile.is_open()) | 
|---|
|  | 172 | #else | 
|---|
|  | 173 | if (!InFile) | 
|---|
|  | 174 | #endif | 
|---|
|  | 175 | {       cerr<< "Erreur a l'ouverture du fichier de donnees :"<<FileName<< endl; | 
|---|
|  | 176 | exit(-1); | 
|---|
|  | 177 | } | 
|---|
|  | 178 |  | 
|---|
|  | 179 | long SamplNumber; | 
|---|
|  | 180 | float alphaBolo2_5,deltaBolo2_5, alphaBolo2_4,deltaBolo2_4, | 
|---|
|  | 181 | alphaBolo1_1,deltaBolo1_1, alphaBolo1_3,deltaBolo1_3, | 
|---|
|  | 182 | alphaBolo3_6, deltaBolo3_6; | 
|---|
|  | 183 | char Line[200]; | 
|---|
|  | 184 |  | 
|---|
|  | 185 | int nbParamLu; | 
|---|
|  | 186 | long compteur=0; | 
|---|
|  | 187 | //      On genre les timelines | 
|---|
|  | 188 | while(!InFile.eof()) | 
|---|
|  | 189 | { | 
|---|
|  | 190 | // On lit les directions pointes | 
|---|
|  | 191 | InFile.getline(Line,200); | 
|---|
|  | 192 | nbParamLu=sscanf(Line," %d %f %f %f %f %f %f %f %f %f %f", | 
|---|
|  | 193 | &SamplNumber, &alphaBolo2_5,&deltaBolo2_5, &alphaBolo2_4,&deltaBolo2_4, | 
|---|
|  | 194 | &alphaBolo1_1,&deltaBolo1_1, &alphaBolo1_3,&deltaBolo1_3, | 
|---|
|  | 195 | &alphaBolo3_6, &deltaBolo3_6); | 
|---|
|  | 196 | if (nbParamLu!=11) { | 
|---|
|  | 197 | cerr<<" Problme a la lecture du fichier: "<<FileName<<endl; | 
|---|
|  | 198 | cerr<<" Ligne :"<<Line<<endl; | 
|---|
|  | 199 | } | 
|---|
|  | 200 | else | 
|---|
|  | 201 | { | 
|---|
|  | 202 | // On remplit les fichiers correspondants | 
|---|
|  | 203 | TL1_1Dipole.addToStreamArchTOI(alphaBolo1_1,deltaBolo1_1); | 
|---|
|  | 204 | TL1_1CMBPrim.addToStreamArchTOI(alphaBolo1_1,deltaBolo1_1); | 
|---|
|  | 205 | TL1_1DiffDust.addToStreamArchTOI(alphaBolo1_1,deltaBolo1_1); | 
|---|
|  | 206 |  | 
|---|
|  | 207 | TL1_3Dipole.addToStreamArchTOI(alphaBolo1_3,deltaBolo1_3); | 
|---|
|  | 208 | TL1_3CMBPrim.addToStreamArchTOI(alphaBolo1_3,deltaBolo1_3); | 
|---|
|  | 209 | TL1_3DiffDust.addToStreamArchTOI(alphaBolo1_3,deltaBolo1_3); | 
|---|
|  | 210 |  | 
|---|
|  | 211 | TL2_4Dipole.addToStreamArchTOI(alphaBolo2_4,deltaBolo2_4); | 
|---|
|  | 212 | TL2_4CMBPrim.addToStreamArchTOI(alphaBolo2_4,deltaBolo2_4); | 
|---|
|  | 213 | TL2_4DiffDust.addToStreamArchTOI(alphaBolo2_4,deltaBolo2_4); | 
|---|
|  | 214 |  | 
|---|
|  | 215 | TL2_5Dipole.addToStreamArchTOI(alphaBolo2_5,deltaBolo2_5); | 
|---|
|  | 216 | TL2_5CMBPrim.addToStreamArchTOI(alphaBolo2_5,deltaBolo2_5); | 
|---|
|  | 217 | TL2_5DiffDust.addToStreamArchTOI(alphaBolo2_5,deltaBolo2_5); | 
|---|
|  | 218 |  | 
|---|
|  | 219 | TL3_6Dipole.addToStreamArchTOI(alphaBolo3_6,deltaBolo3_6); | 
|---|
|  | 220 | TL3_6CMBPrim.addToStreamArchTOI(alphaBolo3_6,deltaBolo3_6); | 
|---|
|  | 221 | TL3_6DiffDust.addToStreamArchTOI(alphaBolo3_6,deltaBolo3_6); | 
|---|
|  | 222 |  | 
|---|
|  | 223 | compteur++; | 
|---|
|  | 224 |  | 
|---|
|  | 225 | #ifdef __MWERKS__ | 
|---|
|  | 226 | DY_yield(); | 
|---|
|  | 227 | #endif | 
|---|
|  | 228 |  | 
|---|
|  | 229 | if((compteur%1000)==0) | 
|---|
|  | 230 | {       cout<<"Compteur= "<<compteur<<endl; | 
|---|
|  | 231 | /*              //      Version Debug a commenter | 
|---|
|  | 232 | double pourcent=100.*compteur/NbSAMPLE; | 
|---|
|  | 233 | cout<<"Travail effectue a :"<<pourcent<<" %"<<endl; | 
|---|
|  | 234 | */      } | 
|---|
|  | 235 |  | 
|---|
|  | 236 | if(compteur==NbSAMPLE) | 
|---|
|  | 237 | {       cout<<" Arret sur option de debugging"<<endl;           //BUGGG | 
|---|
|  | 238 | break; | 
|---|
|  | 239 | } | 
|---|
|  | 240 | } | 
|---|
|  | 241 | } | 
|---|
|  | 242 |  | 
|---|
|  | 243 | #ifndef __MWERKS__ | 
|---|
|  | 244 | char* PATHResults=getenv("PATHResults"); | 
|---|
|  | 245 | #endif | 
|---|
|  | 246 |  | 
|---|
|  | 247 | char filecur[150]; | 
|---|
|  | 248 |  | 
|---|
|  | 249 | // On remplit le ReadMe | 
|---|
|  | 250 | sprintf(filecur,"%sArchSigPredTimeLineReadMe",PATHResults); | 
|---|
|  | 251 | ofstream ReadMe(filecur, ios::out|ios::trunc); | 
|---|
|  | 252 |  | 
|---|
|  | 253 | ReadMe<<"Files containning timeline stream"<<endl; | 
|---|
|  | 254 | ReadMe<<"Generated using ArchSignalPredictor, D. Yvon /03/2000"<<endl; | 
|---|
|  | 255 | ReadMe<<"Templates used: as provided by R. Teyssier"<<endl; | 
|---|
|  | 256 | ReadMe<<"Resolution of computation: "<< SetNlatLSource <<" Nlat Healpix"<< endl; | 
|---|
|  | 257 | ReadMe<<"Number of consecutive samples generated:"<<compteur<<endl; | 
|---|
|  | 258 | ReadMe<<"Samples with undefined pointing skipped."<<endl; | 
|---|
|  | 259 | ReadMe<<"Dominique Yvon, DAPNIA/SPP, 03/2000"<<endl; | 
|---|
|  | 260 | ReadMe.close(); // J'espere que c'est assez | 
|---|
|  | 261 |  | 
|---|
|  | 262 | return 0; | 
|---|
|  | 263 | } | 
|---|
|  | 264 |  | 
|---|
|  | 265 | #include "fitstarray.h" | 
|---|
|  | 266 |  | 
|---|
|  | 267 | int GenTimLin1_F(long Nbsample, double TStep, float fknee) | 
|---|
|  | 268 | { | 
|---|
|  | 269 | #ifndef __MWERKS__ | 
|---|
|  | 270 | char* PATHResults=getenv("PATHResults"); | 
|---|
|  | 271 | #endif | 
|---|
|  | 272 |  | 
|---|
|  | 273 | char filecur[150]; | 
|---|
|  | 274 |  | 
|---|
|  | 275 | // On remplit le ReadMe | 
|---|
|  | 276 | sprintf(filecur,"%sTimLineNoisetot%2.2fReadMe", PATHResults,fknee); | 
|---|
|  | 277 | ofstream ReadMe(filecur, ios::out|ios::trunc); | 
|---|
|  | 278 |  | 
|---|
|  | 279 | ReadMe<<"File containning noise timeline"<<endl; | 
|---|
|  | 280 | ReadMe<<"Generated using SumNoise et Memnoise of F. Couchot and R. Ansari"<<endl; | 
|---|
|  | 281 | ReadMe<<"Generation of a white noise of sigma=1."<<" Any unit"<<endl; | 
|---|
|  | 282 | ReadMe<<"1/f noise added with knee frequency :"<< fknee<<" Hz"<< endl; | 
|---|
|  | 283 | ReadMe<<"Timestep for generation: "<<TStep<<" Second"<<endl; | 
|---|
|  | 284 | ReadMe<<"Number of consecutive samples generated:"<<Nbsample<<endl; | 
|---|
|  | 285 | ReadMe<<"Dominique Yvon, DAPNIA/SPP, 03/2000"<<endl; | 
|---|
|  | 286 |  | 
|---|
|  | 287 | ReadMe.close(); // J'espere que c'est assez | 
|---|
|  | 288 |  | 
|---|
|  | 289 | // On bosse | 
|---|
|  | 290 | SumNoise NoiseGen(fknee); | 
|---|
|  | 291 |  | 
|---|
|  | 292 | TVector<float> Array(Nbsample); | 
|---|
|  | 293 | cout<< " vous avez reserv un espace memoire de :"<<Nbsample*sizeof(float)<<endl; | 
|---|
|  | 294 | for(int i=0; i<Nbsample; i++) | 
|---|
|  | 295 | {       Array(i)= NoiseGen.Noise(); | 
|---|
|  | 296 | if((i%1000)==0) { | 
|---|
|  | 297 | cout<<"GenTimLin1_F, i= "<< i <<endl; | 
|---|
|  | 298 | } | 
|---|
|  | 299 | } | 
|---|
|  | 300 |  | 
|---|
|  | 301 | // Write my fitFile, Version avec FitsIOServer | 
|---|
|  | 302 | sprintf(filecur,"%sTimLineNoisetot%2.2f.fits",PATHResults,fknee);/* name for new FITS file */ | 
|---|
|  | 303 | FITS_TArray <float> FTArray(Array); | 
|---|
|  | 304 | FTArray.Write(filecur); | 
|---|
|  | 305 |  | 
|---|
|  | 306 | return 0; | 
|---|
| [798] | 307 | } | 
|---|