source: Sophya/trunk/SigPredictor/maketimeline.cc@ 1011

Last change on this file since 1011 was 798, checked in by ansari, 25 years ago

Creation du module SigPredictor (Simulation de signal Archeops/Planck)

de Dominique Yvon - Reza 30/3/2000

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