source: Sophya/trunk/SophyaLib/Manual/modifs.tex@ 4051

Last change on this file since 4051 was 4042, checked in by cmv, 14 years ago

oubli gene gauss par Ziggurat, cmv 05/12/11

File size: 74.1 KB
Line 
1\documentclass[twoside,11pt,A4]{article}
2% \documentclass[twoside,11pt,A4]{report}
3\usepackage[french]{babel}
4
5% \usepackage[T1]{fontenc}
6\usepackage[applemac]{inputenc}
7\usepackage{palatino}
8% \usepackage{times}
9% package pour ecrire DRAFT en fond de page
10% \usepackage[light,all,draft]{draftcopy}
11
12% \usepackage{epsfig}
13\usepackage{graphicx}
14\usepackage{amsmath}
15\usepackage{amssymb}
16
17\setlength{\textwidth}{16cm}
18\setlength{\textheight}{22 cm}
19\setlength{\topmargin}{-5mm}
20\setlength{\oddsidemargin}{0.cm}
21\setlength{\evensidemargin}{0.cm}
22\setlength{\unitlength}{1mm}
23
24\newcommand{\tcls}[1] {#1$<$T$>$}
25\newcommand{\tclsc}[2] {#1$<$#2$>$}
26
27\newcommand{\rond}{$\bullet \ $}
28\newcommand{\etoile}{$\star \ $}
29\newcommand{\cercle}{$\circ \ $}
30\newcommand{\carre}{$\Box \ $}
31
32%%%% Pour le decoupage en sections
33% \newcommand{\groupe}[1]{\chapter{#1}}
34% \newcommand{\titre}[1]{\section{#1}}
35% \newcommand{\soustitre}[1]{\subsection{#1}}
36%%%
37\newcommand{\groupe}[1]{\section{#1}}
38\newcommand{\titre}[1]{\subsection{#1}}
39\newcommand{\soustitre}[1]{\subsubsection{#1}}
40%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
42\begin{document}
43\begin{titlepage}
44\begin{center}
45{\Large \bf SOPHYA Change Log \\[1mm]
46 Liste des modifications de SOPHYA } \\[5mm]
47{\large Septembre 2003 - Septembre 2011 } \\[25mm]
48Liste des tags et dates : \\[5mm]
49{\large
50\begin{tabular}{lcl}
51V = 0.727 & \hspace{10mm} & Octobre 1999 \\
52V = 0.8 & \hspace{10mm} & F\'evrier 2000 \\
53V = 1.1 & \hspace{10mm} & F\'evrier 2001 \\
54V = 1.2 & \hspace{10mm} & Juillet 2001 \\
55V = 1.3 & \hspace{10mm} & Novembre 2001 \\
56V = 1.5 & \hspace{10mm} & D\'ecembre 2002 \\
57V = 1.7 & \hspace{10mm} & Septembre 2003 \\
58V = 1.9 & \hspace{10mm} & Juin 2005 - SANS tag CVS \\
59V = 1.9xx & \hspace{10mm} & 09/2005 ... 09/2006 \\
60V = 2.0 & \hspace{10mm} & Septembre 2006 - tag CVS \\
61V = 2.046 & \hspace{10mm} & Ao\^{u}t 2007 - NO tag \\
62V = 2.1 & \hspace{10mm} & Novembre 2007 - tag CVS \\
63V = 2.1xx & \hspace{10mm} & 12/ 2007 - \ldots \\
64V = 2.125 & \hspace{10mm} & Sept-Oct 2008 - NO tag \\
65V = 2.140 & \hspace{10mm} & Sept-Oct 2009 - NO tag \\
66V = 2.150 & \hspace{10mm} & Mars 2010 - NO tag \\
67V = 2.2 & \hspace{10mm} & Septembre 2010 - tag CVS \\
68V = 2.2xxx & \hspace{10mm} & Sep 2010 \ldots \\
69V = 2.211 & \hspace{10mm} & Novembre 2011 - NO tag \\
70
71\end{tabular}
72} \\[8mm]
73%%%%%%
74\begin{tabular}{ll}
75R. Ansari & ansari@lal.in2p3.fr \\
76C. Magneville & cmv@hep.saclay.cea.fr
77\end{tabular}
78\\[5mm]
79\today
80\end{center}
81\end{titlepage}
82
83\newpage
84\tableofcontents
85\newpage
86
87%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
88%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
89\groupe{De V2.2 (Sep 2010) ˆ V2.3 \ldots }
90\titre{BaseTools}
91\begin{itemize}
92\item[\rond] Novembre 2011: NumŽro de version 2.211 - Nov11
93\item[\rond] Septembre 2011: Ajout de 2 g\'en\'erateurs al\'eatoires. \\
94TinyMT[32/64]RandGen: utilisant le code Tiny Mersenne Twister (TinyMT)
95http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html.
96Ajout de la methode de tirage par Ziggurat pour la generation de v.a. gaussiennes.
97\end{itemize}
98
99\titre{TArray}
100\begin{itemize}
101\item[\rond] Novembre 2011: Correction bug au niveau de la gestion mŽmoire pour les constrcuteur de
102copie de TArray/TMatrix/TVector lorsqu'un argument de type BaseArray est passŽ. (bug identifiŽ par JEC)
103lors de l'utilisation de la commande {\tt vecplot} dans piapp. Ces constructeurs par copie ont maintenant
104un argument optionnel permettant de construire des tableaux compactŽs en mŽmoire (packed).
105\begin{verbatim}
106TArray(const BaseArray& a, bool pack=true);
107TMatrix(const BaseArray& a, bool pack=true);
108TVector(const BaseArray& a, bool pack=true);
109\end{verbatim}
110Le code de TArray/TMatrix/TVector a ŽtŽ modifiŽ aussi pour permettre la crŽation par le constructeur de
111copie d'objets non allouŽs, utile en particulier pour uiliser des objets comme
112\begin{verbatim}
113std::vector< TArray<int_4> >
114std::map< std::string, TMatrix<r_4> >
115\end{verbatim}
116\item[\rond] Octobre 2011: Print ds {\tt TArray$<$T$>$::ReadASCII() } soumis au print level global de BaseArray
117(demande JEC)
118\end{itemize}
119
120\titre{FitsIOServer}
121\begin{itemize}
122\item[\rond] Octobre 2011: FitsABTColRd + FitsABTWriter:
123Suppression du code de lecture bufferis\'ee (cfistio le fait aussi bien sans complication de code - test\'e!).
124Ajout lecture/\'ecriture des bintables dont les \'el\'ements sont des vecteurs de nombres.
125Ajout lecture/\'ecriture de bintable de complexes et de cha\^{i}nes de caract\`eres.
126\end{itemize}
127
128\titre{SysTools}
129\begin{itemize}
130\item[\rond] Septembre 2011: Corrections dans commander.cc des bugs de {\bf forinfile} et dans la gestion des
131boucles imbriquŽes (bugs trouvŽs par JEC en Mai 2011). DiffŽrentiation instruction break et breakall, pour
132sortir de la boucle courante ou de toutes les boucles. Reste ˆ modifier la gestion des instructions {\bf if}
133pour des tests multiples avec et/ou.
134\end{itemize}
135
136
137
138%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
139%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
140\groupe{De V2.1 (Dec2007) ˆ V2.2 (Sep2010) }
141\titre{Global}
142\begin{itemize}
143\item[\rond] Fev 2009 : Changement de {\tt char *} en {\tt const char *} dans le code pour
144Žviter les message {\it deprecated} du compilateur lors de l'utilisation de cha”ne de caractre constante.
145\end{itemize}
146
147\titre{BuildMgr}
148\begin{itemize}
149\item[\rond] Juillet/Aout 2010 : Ajout des options et arguments suivants au script configure
150\begin{verbatim}
151 -arch32 de compilation en 32 bits pour linux
152 -followlink pour suivi des liens symboliques lors des recherches
153 de fichiers par find. Pas de suivi des liens par defaut
154 -epip pour chemin de librairies et include file PI (Motif ...)
155 -wgrdl activation compil et link piapp avec GNU-readline
156\end{verbatim}
157 {\tt -arch32} de compilation en 32 bits pour linux
158\item[\rond] Mars 2010 : Ajout de l'option {\tt -ldble128} dans le script configure pour la gestion conditionnelle
159du flag compilation {\bf SO\_LDBLE128 } dans machdefs.h. Ce flag active la dŽclaration des nombres en
160virgule flottant ˆ 128 bits ({\tt r\_16}).
161\end{itemize}
162
163\titre{BaseTools}
164\begin{itemize}
165\item[\rond] Mars 2010 : Prise en charge de float 128 bits ({\tt r\_16}) et
166{\tt complex$<$ r\_16 $>$} dans les NDataBlock et PPersist.
167Compilation conditionnelle contr™lŽe par le flag {\bf SO\_LDBLE128 }
168\item[\rond] Avril 2009 : Introduction de la classe RandomGeneratorInterface, DR48RandGen, ThSDR48RandGen
169 et FMTRandGen - La classe ThSDR48RandGen RandomGenerator
170\item[\rond] Mars 2009 : Les exceptions sophya (PExceptions ...) hŽritent de de std::exception (methode what())
171\item[\rond] Oct 2008 : Suppression des flags {\tt OS\_xxx (OS\_MACOSX OS\_LINUX OS\_AIX ...) }
172de machdefs\_mkmf.h et ajout constructeur MuTyV(uint\_4, uint\_8)
173\end{itemize}
174
175\titre{TArray}
176\begin{itemize}
177\item[\rond] Juillet 2010 : Introduction des classes de matrices carrŽes spŽciales (SSQM : Special Square Matrix).
178Suppression de la classe {\bf TriangularMatrix$<$T$>$} et du fichier {\tt triangmtx.h }.
179Voir ci-dessous pour plus d'information.
180
181\item[\rond] Mars 2010 : Prise en charge de float 128 bits ({\tt r\_16}) et
182{\tt complex$<$ r\_16 $>$} dans les TArray, TMatrix et TVector.
183 Compilation conditionnelle contr™lŽe par le flag {\bf SO\_LDBLE128 }
184
185\item[\rond] Fev 2009 : Correction du bug de SetTemp() intempestive provoquant sur-Žcriture de
186tableaux lors d'opŽration avec des SubArray.
187\item[\rond] Jan 2008 : Correction bug de protection dans TArray::Resize() \\
188(lors de resize avec ndim=BASEARRAY\_MAXNDIMS = 5)
189\end{itemize}
190
191\soustitre{SSQM: Special Square Matrix}
192Classes de matrices carrees speciales avec la hiŽrarchie dŽcrite ci-dessous. Ces classes ont ŽtŽ dŽveloppŽes au
193printemps 2009 et introduites dans SOPHYA ˆ l'ŽtŽ 2010.
194\begin{verbatim}
195AnyDataObj -- SpecialSquareMatrix<T> -- DiagonalMatrix<T>
196 -- LowerTriangularMatrix<T>
197 -- SymmetricMatrix<T>
198+ classe gestionnaire PPF FIO_SpecialSquareMatrix<T>
199\end{verbatim}
200
201Fichiers ajoutŽs dans TArray/ : \\
202{\tt spesqmtx.h spesqmtx\_tsnl.h diagmtx.h trngmtx.h symmtx.h fiospsqmtx.h} \\
203{\tt spesqmtx.cc fiospsqmtx.cc } \\
204Fichier {\tt triangmtx.h } a ŽtŽ supprimŽ (classe {\bf TriangularMatrix$<$T$>$ }
205remplacŽe par {\bf LowerTriangularMatrix$<$T$>$} . \\
206Programme test {\tt tssqmx.cc} ajoutŽ dans le module Tests/.
207Pour vŽrifier le code, faire : \\
208{\tt csh> tssqmx d ( tssqmx t , s ) } \\[1mm]
209Pour ajouter d'autres classes de matrices carrŽes:
210\begin{enumerate}
211\item DŽclarer si besoin le type ds enum SpSqMtxType (fichier spesqmtx.h)
212\item Recopier diagmtx.h en mtxnouvcarre.h (enfin, le nouveau nom de fichier/classe)
213\item changer le nom de la classe ds mtxnouvcarre.h
214\item Repasser ˆ travers les mŽthodes et constructeurs en particulier SetSize() et les
215accs aux ŽlŽments
216\item Modifier ou simplement supprimer les mŽthodes (et opŽrateurs) de multiplication de matrices
217\item Dans le fichier fiospsqmtx.cc, prŽvoir le dynamic\_cast / new $<$MatriceCarre$>$ dans :
218\hspace{5mm} FIO\_SpecialSquareMatrix(const SpecialSquareMatrix$<$T$>$ \& obj) \\
219\hspace{5mm} FIO\_SpecialSquareMatrix$<$T$>$::ReadSelf(PInPersist\& is)
220\end{enumerate}
221
222
223\titre{SkyMap/Samba}
224\begin{itemize}
225\item[\rond] Juillet 2010 : Adaptation ˆ la nouvelle classe {\bf LowerTriangularMatrix$<$T$>$}
226\item[\rond] Sep 2008 : Nettoyage cosmetique ds lambdaBuilder.h .cc - {\bf A FAIRE :} rendre
227LambdaLMBuilder thread-safe.
228\item[\rond] Aout 2008 {\bf (Samba)}: Nettoyage cosmetique ds alm.h .cc, utilisation de la
229classe RandomGenerator par la classe Alm$<$T$>$. Possibilite de specifier un objet
230RandomGenerator au constructeur de la classe SphericalTransformServer. Adaptation
231programme PrgMap/cl2map.cc.
232\item[\rond] Aout 2008 {\bf (SkyMap)} : modifs/correction ds la classe SphereECP$<$T$>$.
233Ajout m\'ethode \\
234{\tt SphereECP<T>::ExtractPartial() } \hspace{5mm} et correction calcul phi ds \\
235{\tt SphereECP<T>::PixThetaPhi() } et modif programme Tests/tsphereecp.cc
236\end{itemize}
237
238\titre{NTools}
239\begin{itemize}
240\item[rond] Aout 2010 : Ajout de la classe d'interpolation lineaire {\bf SLinInterp1D} et programme
241test Tests/tstinterp.cc
242\item[\rond] Oct 2008 : Instanciation explicite des classes
243\tcls{Image} et \tcls{ArrayFitter} pour T=uint\_4, uint\_8
244\end{itemize}
245
246\titre{SysTools}
247\begin{itemize}
248\item[\rond] Dec 2009: Introduction des classes {\bf ParallelTaskInterface, ParallelTaskFunction}
249et {\bf ParalExThread, ParallelExecutor} afin de faciliter l'Žcriture de code avec exŽcution de
250fonctions en parallle dans des threads. \\
251Voir les fichier {\tt SysTools/parlex.h .cc} et {\tt Tests/tparlex.cc}.
252\item[\rond] Fev 2009 : AmŽlioration conversion double->string pour Žviter la perte de
253prŽcision lors des Žvaluations avec les variables de l'interprŽteur (commander.cc).
254\item[\rond] Fev 2009 : AmŽlioration de la classe {\bf Timer}, prŽcision time-elapsed
255par utilisation de \\
256{\tt gettimeofday(...)} au lieu de {\tt time()}, \\
257amŽlioration calcul temps cpu pour jobs tres long (lorsque TCPU dŽpasse le maximum $2^{32}$.
258\end{itemize}
259
260\titre{FitsIOServer}
261\begin{itemize}
262\item[\rond] Avril 2008 : Ajout m\'ethodes de lecture/Žcriture tableaux avec offset: \\
263{\tt FitsArrayHandler::ReadAtOffset() , WriteAtOffset() } \\
264$\longrightarrow$ PossibilitŽ de lecture/Žcriture de tableaux par morceaux
265de HDU IMAGE
266\item[\rond] Jan 2008 : Ajout {\tt FitsInOutFile::SetBScaleBZero(...)} et type LONGLONG
267pour HDU\_Image. Enregistrement conditionnel handler TArray$<$int\_8$>$.
268\end{itemize}
269
270\titre{PI/piapp}
271{\bf IMPORTANT }\\
272{\bf A1} Reste a faire : debug / prise en charge des images avec tables de couleurs de plus de
273256 entrees dans fichier postscript. \\
274{\bf A2} Utiliser la classe PICMapDrawer dans le widget PICMapView et ajouter la possibilitŽ d'afficher une table
275de couleur dans PIScDrawWdg.
276\begin{itemize}
277\item[\rond] Introduction de la classe classe {\bf PICMapDrawer} et ajout de la possibilitŽ d'afficher
278la table de couleur dans la fentre principale PIImage. L'attribut graphique {\tt showcmap} contr™le
279l'affichage de la table. \\
280{\tt showcmap , showcmap=no , showcmap=top , \\
281showcmap=no/top/right/bottom/left/horiz/vert }
282\item[\rond] Dec 2009: Ajout des options d'affichage : \\
283{\tt cdreal cdimag cdphase cdmod (=defaut) cdmod2 } \\
284pour les tableaux 2D en mode image ou surface. Fichiers modifiŽs:
285nomtarradapter.cc , nomtmatvecadapter.cc , pitvmaad.cc , pitvmaad.h.
286\item[\rond] Ajout de gestionnaire d'Žvenements VisibilityChange ds pixtbase.cc pour gŽrer les
287problmes de fentre PIBaseWdg non rafra”chie - suppression de {\tt XFlush()/usleep() }mis
288dans piwindowx.cc en Aout 2007
289\item[\rond] Jan 2009 {\bf PI , PIext} Extension de la logique AutoFontSize (choix automatique de
290la taille de fonte comme fraction de la taille du widget a tous les PIDrawer. Valeur globale par defaut
291en variable et mŽthode statique de PIDrawer (=0.04). Changement possible par variable d'environnement
292{\bf PIDEFAFSZFRAC} et la commande piapp {\bf setdefafsz }.
293\item[\rond] Nov 2008 {\bf PIext} Ajout commande {\bf pirgbdisp} - Lecture et affichage d'image RGB
294(objet PIPixRGBArray)
295\item[\rond] Nov 2008 {\bf PI} Optimisation classe LUT, introduction typeExp
296\item[\rond] Oct 2008 {\bf PIext} : Instanciation explicite et enregistrement des adaptateurs NObjMgrAdapter pour TArray, et TMatrix/TVector $<$T$>$ pour T=uint\_4, uint\_8
297\item[\rond] Sep-Nov 2008 {\bf PI} : Modifs importantes pour permettre la visalisation des images
298ou photos couleurs (RGB) ds piapp :
299\begin{enumerate}
300\item Introduction des classes auxiliaires PIPixColIdx , PIPixRGB , PIPixRGBArray
301(nouveau fichier pipixutils.cc .h) pour support de tables de couleurs avec $>$ 256 couleurs.
302\item Ajout de tables de couleurs RGB (RGB216CM , RGB512CM, RGB4096CM, RGB32768CM)
303pour representation d'images/photos couleurs RGB
304\item Extension et modification de la classe P2DArrayAdapter, introduction de la methode
305P2DArrayAdapter::MeanVal()
306\item Modif de la classe LUT pour introduction typeRGB et methode LUT::ApplyRGB()
307\end{enumerate}
308\item[\rond] Avril 2008 {\bf (PI)}: Ajout d\'ecodage options sens des axes X,Y ˆ PiScDrawWdg. \\
309{\tt revax = axerl } (kAxeDirRtoL) \hspace{5mm} {\tt axelr} (kAxeDirLtoR) \\
310{\tt revay = axeud} (kAxeDirUpDown) \hspace{5mm} {\tt axedu} ((kAxeDirDownUp)
311\item[\rond] Fevrier 2008 {\bf (PI)}: Nouvelle m\'ethode de calcul de limite de LUT\\
312On garde les $frackeep$ valeurs centrales des pixels, cad on vire les $(1-frackeep)/2$
313valeurs les plus petites et les $(1-frackeep)/2$ valeurs les plus grandes.
314\begin{verbatim}
315 autolut=hisrng,frackeep,min,max
316\end{verbatim}
317\item[\rond] Janvier 2008 {\bf (ProgPI)} Ajout de l'option {\tt -nobsz} ˆ la commande {\bf readfits}
318et ajout de la commande de lecture array from fits : {\bf rdfitsarr}
319\end{itemize}
320
321\groupe{De V2.0 (Sep2006) ˆ V2.1 (Nov2007) }
322\titre{BuildMgr}
323\begin{itemize}
324\item[\rond] Nov 2007 : configure detecte Linux 64 bits {(\tt -> /usr/X11R6/lib64)}
325et correction bug lors de l'execution de sed pour la creation de sophyamake.inc
326{\tt AIX, -X 64 }.
327\item[\rond] Oct 2007 : Ajout flag {\tt -alsofftwfloat} au script pour compilation/link
328methodes float (r\_4) de FFTWServer.
329\item[\rond] Avril 2007 : AmŽlioration du script configure, qui prend en charge
330la gestion des diffŽrents flags de compilation (mis dans fichier machdefs.h gŽnŽrŽ
331ou dans sophyamake.inc (pour les flags du compilateur) - Nettoyage du fichier
332BaseTools/machdefs\_mkmf.h et des fichiers osname\_compilo.inc
333\begin{verbatim}
334csh> cd BuildMgr/
335csh> ./configure -h
336configure [-sbase SOPHYABASE] [-scxx SOPHYACXX] [-incln]
337 [-minc mymake.inc] [-compopt 'cc/cxxOptions']
338 [-arch64] [-sasz64] [-nofpic] [-nothsafe] [-boundcheck] [-sodebug]
339 [-extp dir1 -extp dir2 ...] [-extip dir1 -extip dir2 ... ]
340 [-extlp dir1 -extlp dir2 ... ]
341 [-noextlib] [-noext fits] [-noext fftw]
342 [-noext lapack] [-noext astro]
343 [-noPI] [-slballinone]
344 [-usefftw2 -uselapack2]
345 (See SOPHYA manual/web pages for a detailed description
346 of configure options)
347\end{verbatim}
348\end{itemize}
349
350%%%%%%
351\titre{BaseTools}
352\begin{itemize}
353\item[\rond] Novembre 2007 : Ajout de la classe de gŽnŽrateur alŽatoire
354thread-safe {\bf RandomGenerator } - fichiers {\tt stsrand.h .cc} -
355Ajout du programme {\tt Tests/tmtrnd,3.cc }.\\
356Correction , protection I/O PPF pour NDataBlock de taille nulle.
357\item[\rond] Aout 2007 : Passage numŽro de version SOPHYA V=2.135
358ˆ V=2.046 - Les numŽros V=A.B sont dŽsormais rŽservŽs aux versions
359avec un tag cvs.
360\item[\rond] Avril 2007 : {\bf ThreadSafe } \hspace{5mm}
361Les opŽrations de partage de rŽfŽrence rendues thread-safe pour les classes
362{\bf NDataBlock$<$T$>$ , SegDataBlock$<$T$>$, SwSegDataBlock$<$T$>$}
363\begin{itemize}
364\item Ajout de la classe {\bf ThSafeOp} avec les mŽthodes {\tt lock() , unlock() } utilisant
365un mutex.
366\item Ces mŽthodes peuvent tre rendues transparentes (sans effet) en activant le flag \\
367{\tt SO\_NOTHSAFE} (option -nothsafe de configure)
368\item Cette protection / synchronisation semble tre efficace en ce qui concerne les
369constructeurs de copie et l'extraction de sous-tableaux pour TArray, TMatrix,TVector.
370(programme de vŽrification Tests/zthr.cc - option sync ).
371\item En ce qui concerne les classes SegDataBlock , SwSegDataBlock, l'efficacitŽ
372de la protection n'a pas ŽtŽ testŽe. Les opŽrations d'Žcriture sur les DataTable
373devront aussi tre protŽgŽes pour l'utilisation multi-thread.
374\end{itemize}
375\item[\rond] Avril 2007 : Nettoyage du fichier machdefs\_mkmf.h, suppression des flags
376de compilation optionnelle MacOS 8.x 9.x / compilo CodeWarrior
377\item[\rond] Fev 2007 : Ajout methode NDataBlock::RenewObjId() , et Dealloc() (alias de Delete())
378et correction bug ds SwSegDataBlock::GetCstSegment()
379\end{itemize}
380
381%%%%%%
382\titre{TArray}
383\begin{itemize}
384\item[\rond] Oct 07 : MŽthode TArray::SumX2() renommŽe en SumSq(), Norm2() appelle SumSq() sauf pour les tableaux complexes, o on calcule une norme rŽelle positive (Sum[el x conj(el)).
385\item[\rond] Avr 07 : Constructeur de copie et extraction de sous-tableaux rendus thread-safe
386(voir ci-dessus)
387\item[\rond] Jan 07 : Ajout classes/methodes de cast de contenu - sans conversion (fichier arrctcast.h)
388\item[\rond] Fev 07 : Ajout methode TArray::RenewObjId() (reecriture PPF), et ZeroSize()
389(deallocation tableau / le rendre vierge=sans taille)
390\end{itemize}
391
392%%%%%%
393\titre{HiStats}
394
395\begin{itemize}
396\item[\rond] Novembre 2007 : Les methodes de remplissage de NTuple {\tt Fill() }
397et de DataTable, SwPPFDataTable {\tt AddRow() }, ainsi que
398{\tt BaseDataTable::GetRow() } rendues thread-safe. \\
399Activation avec la methode {\tt SetThreadSafe(bool fg=true) }
400pour chaque NTuple ou DataTable / SwPPFDataTable. Ajout du programme Tests/tmtdt.cc.
401\item[\rond] Janvier 2007 : Remaniement de la classe HistoErr: elle n'h\'erite plus
402de Histo et devient stand-alone avec des TVector comme support des donne\'ees. \\
403Introduction de la classe Histo2DErr qui fait la meme chose que HistoErr
404mais \`a $2$ dimensions. \\
405Modifs des adaptateurs: NOMAdapter\_Histo ne contient plus HistoErr,
406et NOMAdapter\_HistoErr, NOMAdapter\_Histo2DErr sont cr\'ees dans PIext.
407
408\end{itemize}
409
410%%%%%%
411\titre{SkyMap}
412
413\begin{itemize}
414\item[\rond] Aou 2007 : Correction de signe dans {\tt LocalMap::PixToSphereC()} suite message de
415S. Plaszczynski du 12/07/07
416\item[\rond] Fev 2007 : Ajout methode RenewObjId() (reecriture PPF) pour les cartes spheriques
417et localmap
418\end{itemize}
419
420%%%%%%
421\titre{SysTools}
422
423\begin{itemize}
424\item[\rond] Jul 2007 : Ajout d'acces au temps CPU et elapsed ds la classe Timer - et
425ajout test specifique dans Tests/tcmd.cc {\tt (tcmd timer)}. \\
426{\tt Timer::TotalElapsedTime() , PartialElapsedTime() , TotalCPUTime() , PartialCPUTime() }
427\end{itemize}
428
429%%%%%%
430\titre{FitsIOServer}
431
432\begin{itemize}
433\item[\rond] Nov 2007 : propagation des modifs BaseDataTable-Thread-safe dans
434SwFitsDataTable. Mais les SwFitsDataTable NE sont toujours pas thread-safe.
435\item[\rond] Jan/Fev 2007 : Passage a la version LONGLONG ( fits\_xxxll ) permettant
436la gestion de tailles $ > 2^{32} $
437\end{itemize}
438
439\titre{IFFTW}
440
441\begin{itemize}
442\item[\rond] Nov 2007 : Correction resize tableau de sortie {\tt FFT(complexe -> reel)} multi-dim.
443\item[\rond] Oct 2007 : Ajout version float (r\_4) des methodes {\tt FFTForward} et {\tt FFTBackward}
444a la classe FFTWServer. (compilation sous condition et flag -alsofftwfloat du script configure)
445\end{itemize}
446
447%%%%%%
448\titre{PI/piapp}
449\begin{itemize}
450%%%
451\item[\rond] Novembre 2007 {\bf PIext/ProgPI}: \\
452- Ajout commande de trace d'ellipse d'erreur {\tt errorellipse} \\
453- Axes en degres (0..360, -90..90) pour la projection molleweide et adaptation de la commande {\tt mollgrid}. Suppression de mollgridsph. \\
454- Ajout fonctions tetphi2mollX/Y() et longlat2mollX/Y() ds les fichiers d'expressi
455on ntuple generes par piapp pour trace sur projection de type molleweide. \\
456- Ajout flag [-s] a openppf . openfits/savefits comme alias de readfits/writefits.
457- Verification arret thread Reveil avant destruction de l'objet.
458\item[\rond] Octobre 2007 {\bf (PI/PIext)}: Ajout methodes de redirection stdout/stderr vers un objet PIConsole,
459a travers un fichier disque (fichiers PI/piapplx.h .cc) avec possibilite de recopie sur stdout/stderr
460original (terminal) - en plus d'affichage sur PIConsole. \\
461+ Adaptation au niveau de PIext/pistdimgapp.h .cc et ProgPI/piapp.cc \\
462+ la redirection passe par les fichiers PIATmp\_xxx/sout.log /serr.log \\
463+ le flag (s)piapp -doublered permet la redirection avec recopie sur terminal
464%%%
465\item[\rond] Octobre 2007 {\bf (PIext)}: Correction/protection au niveau de gestion des locks de mutex
466(classes NamedObjMgr , PIStdImgApp) pour eviter les blocages de l'application sous certaines
467conditions ( lors de l'affichage de la fenetre de gestion d'objets et lecture PPF). \\
468Modification des classes NamedObjMgr . ObjMgrWind, la methode
469{ \tt UpdateObjMgrWindow() } de NamedObjMgr en particulier. \\
470Ajout de la classe {\bf SOpExObj} (ds piacmd.h piacmd.cc) pour executer
471- de maniere asynchrone -
472les commandes display,print \ldots sur les objets, initiees au niveau
473de la boucle d'evenements (fenetre ObjMgrWind).
474\item[\rond] Octobre 2007 {\bf (PIext)}: Ajout attributs graphiques \\
475{\tt samew=WdgName } specification de widget cible pour trace en superposition \\
476{\tt wname=Nom } Pour specifier un nom de widget (= nom d'objet par defaut) \\
477{\tt inset=fx1,fx2,fy1,fy2 } pour specifier la position du drawer en inset (medaillon)
478\item[\rond] Octobre 2007 {\bf (PIGcont/PIext)}: Codage mŽthode PIContourDrawer::GetOptionsHelpInfo() pour le traceur de contour. \\
479Ajout accs aux attributs {\tt min max minmax sumsq norm2 } aux niveau des adaptateurs
480des objets de type TArray, TMatrix, TVector ({\tt \$\{arrName.sumsq\} \$\{arrName.min\} } \ldots).
481\item[\rond] Aout 2007 {\bf (PI)}: Nouvelles mŽthodes de calcul de limite de LUT
482dans PIImage (AutoLut) et ajout du dŽcodage de l'option {\tt autolut=alt[,ns[,minp,maxp]]}.
483Si {\tt minp,maxp} spŽcifiŽs, seuls les pixels entre {\tt minp <= pixval <= maxp}
484sont utilisŽs pour le calcul des limites.
485\begin{verbatim}
486 autolut=minmax,frac Fraction de la dynamique totale
487 autolut=meansig,ns min=mean-ns*sigma , max=mean+ns*sigma
488 autolut=histail,ns Queue de l'histo des pixels
489 autolut=hispeak,ns Pic de l'histo des pixels
490\end{verbatim}
491%
492\item[\rond] Aout 2007 {\bf (PI)}: Contournement d'un problme d'Žvenements X expose
493perdu - apparu avec des versions rŽcentes du serveur XFree ou le serveur X sur Linux
494ou une combinaison des deux. RŽsultat, contenu non affichŽ lors d'une crŽation de fentre
495suivi d'un ajout de PIBaseWidget (sauf PIImage) et plantage lors du click dans la fentre.
496Correction: Ajout de {\tt XFlush() + usleep(5000)} (5 $\mu$s).
497\item[\rond] Juin 2007 {\bf (PI/PIext)}: Ajout des mŽthodes
498{\tt PIGraphicAtt::ColNameToColor() , ColIndexToColor()} et possibilitŽ d'utiliser le contenu
499d'une colonne d'une table comme nom de couleur ou numŽro de couleur pour le tracŽ
500des markers par PINTuple {\tt PINTuple::SelectColorByName() , SelectColorByIndex()}.
501Ajout des commandes {\bf nt2dcn} et {\bf nt2dci} et {\bf plot2dc} ds piapp.
502\item[\rond] Avril 2007 {\bf (PI)}: La source des problmes sur MacOS/PowerPC (G4/G5)
503et AIX (architecture Power) a finalement ŽtŽ identifiŽ et corrigŽ/
504Parmi ces problmes: des pull-down menus mal placŽs (MenuBar), ou encore des
505dysfonctionnement de boutons dans les fentres de dialogues. \\
506Source et correction: \hspace{5mm} {\tt XtMoveWidget / XtResizeWidget} remplacŽ par \\
507\hspace*{10mm} {\tt XtMakeGeometryRequest}
508\item[\rond] Avril 2007 {\bf (PIext/piapp)}:
509\begin{itemize}
510\item Ajout de la classe {\bf NOMAdapter\_DVList}
511pour la prise en charge des objets DVList.
512Accs aux variables par {\tt \$\{dvlName.varName\} }
513\item Accs ˆ l'objet DVList attachŽ aux TArray, TMatrix, DataTable et NTuple par \\
514\hspace*{5mm} {\tt \$\{objName.info.varName\} }
515\item L'adaptateur de DataTable permet aussi d'accŽder aux lignes de la table par \\
516\hspace*{5mm} {\tt \$\{tableName.row.num\} }
517\item Prise en charge de la classe {\tt Image<T>} par l'adaptateur des matrices
518{\tt NOMAdapter\_TMatrix<T> } au lieu de l'adaptateur spŽcifique
519{\tt NOMAdapter\_Image<T> }
520\end{itemize}
521\item[ \rond] Janvier 2007 {\bf (PIext)}: modification des trac\'es des histogrammes PIHisto.
522La classe PIHisto prend en entr\'ee un wrapper P1DHistoWrapper.
523Les wrappers HistoWrapper et HistoErrWrapper sont cr\'ees.
524Ainsi les HistoErr peuvent \^etre dessin\'es sous forme d'histogrammes.
525Mise en place des options graphiques permettant de dessiner les
526valeurs (``val''), erreurs (``err'') et le nombre d'entr\'ees par bin (``nb'')
527pour les HistoErr. Idem pour les versions $2$ dimensions.
528\end{itemize}
529
530%%%%%%%%
531\titre{Documentation (Manual/) }
532\begin{itemize}
533\item[\rond] Jan 2007 : Ajout fichier de mesure de performances comparees entre
534differentes processeur / OS / compilateur {\tt perfmachine.txt }
535\end{itemize}
536
537
538%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
539%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
540\groupe{De V1.7 (Sep2003) ˆ V2.0 (Sep2006) }
541\titre{BuildMgr}
542\begin{itemize}
543\item[\rond] Juin 2006 : Ajout targets cleanobj prgall tests prgutil
544\item[\rond] Avril 2006 : suppression de libextsophya.so pour fabriquer libPI.so
545(PIext rendu independant de FitsIOServer)
546\item[\rond] Dec 2005/Jan 2006 : Portage sur AIX - xlC
547\item[\rond] Dec 2005 : check Compil avec icc , compil avec gcc-4
548\item[\rond] Avril-Mai 2005 : Introduction de la nouvelle version de
549scripts de gestion du code - avec un script principal configure. \\
550Variable d'environnement {\bf SOPHYABASE } - \\
551Pour les makefiles, l'ensemble des dŽfinitions se trouve dans : \\
552SOPHYABASE/include/sophyamake.ic \\
553\end{itemize}
554
555%%%%%%
556\titre{BaseTools}
557
558\soustitre{Modifs}
559
560\begin{itemize}
561\item[\rond] Jun/Jul 2006 : Amelioration gestion initialiseur modules \\
562- Ajout methodes statique {\tt RegisterModule(const char* name, double version)
563ListModules(ostream\& os) } a la classe de base SophyaInitiator. \\
564- Enregistrement des modules avec leur nom et un numero de version par module,
565independante du numero de version SOPHYA \\
566- le programme scanppf peut donner la liste des modules enregistrees et leur numero
567de version.
568\item[\rond] Octobre-Novembre 2005 : \\
5691/ Correction bug TimeStamp::ToDays() + petites amelioration \\
5702/ Prise en compte du type TimeStamp dans MuTyV (sous forme de double en interne) \\
5713/ Adaptation DVList a modifs MuTyV (typ TimeStamp) et R/W PPersist \\
5724/ Gestion format YYYY-MM-DDThh:mm:ss par TimeStamp \\
5735/ Gestionnaire PPersist pour TimeStamp
574%
575\item[\rond] Septembre 2004 - {\bf Namespace SOPHYA } \\
576Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h -
577Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
578ainsi que lors de la gŽnŽration automatique du code (runxx, c++exec)
579\end{itemize}
580
581\soustitre{PPF}
582\begin{itemize}
583\item[\rond] Avril 2005 - Ajout de wrapper de lecture/ecriture PPF pour les vecteurs de
584la librairie standard (classe PPFWrapperSTLVector$<$T$>$ ) fichier ppfwrapstlv.h
585\item[\rond] Ajout de la classes utilitaire PPF\_TPointer\_IO$<$T$>$
586(fichiers ppftpointer.h .cc)
587\item[\rond] Amelioration de l'impression ds AnalyseTags (ppfbinstream.cc)
588\item[\rond] scanppf.cc revision 1.8 (2005/04/05)
589modification programme scanppf: ajout option -lh -lho pour lister les classes PP
590ersist handler
591\item[\rond] DŽcembre 2003 (9/12/2003) Fin de l'ensemble des modifs pour les
592PPF V3 \\
593- Ecriture nombre complexes r4, r8 avec tag spŽcifique. \\
594Tag de positionnement sous forme de \\
595\centerline{\tt <tag (1 byte)><FilePosition (8 byte, long int)> } \\
596- Ecriture PosTagTable \\
597- Ecriture Statistiques en fin de fichier \\
598- Voir BaseTools/ppfbinstream.h: \\
599\centerline{\tt GotoPositionTag(int\_8 pos) , }
600\centerline{\tt GetPosTagTable(...) }
601\centerline{\tt int\_8 WritePositionTag() PutPosTagTable(...) }
602- Ajout programme de test Tests/ppftswap.cc
603\item[\rond] DŽcembre 2003 - Ajout ppfbinstream.h .cc \\
604Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
605\item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
606Classes RawInOutStream , RawInFileStream , RawOutFileStream
607
608\end{itemize}
609
610
611\soustitre{Nouvelles classes}
612\begin{itemize}
613\item[\rond] Ajout de la classe {\bf TimeStamp} pour la manipulation de date et heure -
614calcul de duree. - Ajout du prog. test Tests/ttimestamp.cc (Mars 2005)
615\item[\rond] { \bf Segmented Data Block :} \\
616Mars-Avril 2005: Introduction des classes similaires aux NDataBlock, mais permettant
617de gerer des blocs de donnees segementes, pour tout type de donnees, de structures
618et de classes (template pour tout type T).
619\begin{enumerate}
620\item Ajout de la classe {\tt SegDataBlock<T>} (et l'interface { \tt SegDBInterface<T>} )
621pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
622gestionnaire PPF {\tt FIO\_SegDataBlock<T>} (fichier fiosegdb.h )
623\item Ajout de la classe {\tt SwSegDataBlock<T>} (Data bloc segmente avec gestion
624de swap) et la classe swapper PPF {\tt PPFDataSwapper<T>} (fichiers
625ppfswapper.h et swsegdb.h)
626\item Ajout programme de test Tests/tstsegdb.cc
627\end{enumerate}
628\end{itemize}
629
630%%%%%
631\titre{TArray}
632%%
633Il s'agit essentiellement des ameliorations en terme de performances et
634de correction d'erreur.
635
636\begin{itemize}
637\item[\rond] Avril 2006 \\
638- Instanciation explicite des tableaux , matrices et vecteurs en types \\
639{\tt int\_2 uint\_2 uint\_4 uint\_8 } \\
640- Optimisation du code (ds tarray.cc) des operations sur tableaux \\
641{\tt (TArray::Add/Mul/Sub/DivCst TArray::Add/Mul/Sub/DivElt ) } \\
642a travers le choix entre Share() ou Allocation si le tableau resultat est non alloue.
643D'apres les tests de performances (TCPU), {\bf (tjet , spar)}, il ne semble pas y
644avoir de cas de pertes, et on a en general des gains de l'ordre de 20\% dans la plupart
645des cas de tests, et un ou deux cas avec des gains de 50-80\%. \\
646- Declaration de l'operateur / entre tableaux (DivElt) et l'operateur \& \& pour la
647multiplication element par element (MulElt)
648\item[\rond] Janvier, FŽvrier 2006 \\
649- AmŽlioration des fonctionalitŽs de la classe {\bf Range} et des mŽthodes d'extraction
650de sous-tableaux (+ correction bugs et amŽlioration documentation) \\
651- Ajout de la methode BaseArray::ValueAtPositionDB() pour corriger un gros bug au
652niveau de la conversion de type (r\_4 r\_8 ...) des tableaux \\
653- Compil avec g++ 4 : ajouts fichiers declarations privees tmatrix\_tsnl.h tvector\_tsnl.h
654
655\item[\rond] Juillet 2004 \\
656- Optimisation de la multiplication matricielle (CMV) - Extrait du
657message (from CMV) du 30 Juillet 2004: \\
658\begin{verbatim}
659- on definit un flag d'optimisation
660 Contrairement a ce qu'on avait dit, je n'ai pas ajoute
661 un argument a Multiply car on ne peut pas jouer
662 avec qiand on utilise l'operateur * surcharge.
663 Or au vu des performance il'ma parut interessant que l'utilisateur
664 meme lambda puisse choisir le niveau d'optimisation
665 --> donc j'ai ajoute une methode statis dans BaseArray::
666 void BaseArray::SetMatProdOpt(uint_2);
667 uint_2 BaseArray::GetMatProdOpt();
668
669- Je n'ai refait les test de rapidite que sur OSF:
670
6711./ pour les matrices 1000x1000 (grosses)
672 on arrive effectivement au meme temps pour les 4 cas
673 si on copie dans le cas lent (FxC)
674 ---EndMultiply FxC CPUTime: Total= 93.1296 (Partial= 69.3806) Sec.
675 devient
676 ---EndMultiply FxC CPUTime: Total= 34.9653 (Partial= 11.1829) Sec.
677 exactement comme les copains:
678 La copie prend de la place mais ne prend absolument
679 pas de temps pour les grosses matrices
680
6812./ pour les matrices 10x10 (1000000 multiplications par cas)
682 on a bien ce que l'on attend a savoir que
683 la copie faites 100000 fois finie par nous faire perdre du temps
684 ---EndMultiply FxC CPUTime: Total= 37.4152 (Partial= 12.4662) Sec.
685 devient
686 ---EndMultiply FxC CPUTime: Total= 53.9978 (Partial= 28.8322) Sec.
687 dans ce cas on perd un gros facteur 2 a cause de la copie
688 mais rien de surprenant la dedans.
689
690-----------------------------------------------------------------------
691- ensuite j'ai implemente une prise de decision au niveau de
692l'optimisation pour les petites matrices:
693le test est simple mais me semble OK:
694je calcule sza taille du NDataBlock de A
695 szb B
696si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
697IDEE: on pifometre que raisonnablement il y a 100 koctets
698 de disponible pour les matrices A et B dans le cache processeur
699 et que dans ce cas elles sont copiees toutes les 2 dans le cache
700 par l'optimiseur du compilo qui est tres malin et surtout qui
701 veux absolument nous faire plaisir......
702
703-----------------------------------------------------------------
704===> Les resultats sont dans le fichier toto.calc en attached
705.. En tete tu as l'explication des flags d'optimisation
706...Avec les 2 sections:
707 GROSSE MATRICE
708 et
709 PETITE MATRICE
710\end{verbatim}
711
712\item[\rond] Juillet 2004 : Optimisation operations diverses, en particulier \\
7131) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
714 Add/Sub/Mul/DivElt(TArray a, TArray res) \\
7152) Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
716\item[\rond] Extrait de {\tt cvs log tarray.cc }
717{\small \begin{verbatim}
718----------------------------
719revision 1.38
720date: 2004/07/30 13:31:39; author: ansari; state: Exp; lines: +28 -24
721Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
722----------------------------
723----------------------------
724revision 1.36
725date: 2004/07/27 11:44:23; author: ansari; state: Exp; lines: +4 -1
726Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
727----------------------------
728revision 1.35
729date: 2004/07/26 17:30:40; author: ansari; state: Exp; lines: +187 -108
730Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004
731----------------------------
732\end{verbatim} }
733
734\item[\rond] Extrait de {\tt cvs log tarray.cc }
735{\small \begin{verbatim}
736----------------------------
737revision 1.27
738date: 2004/07/30 10:24:12; author: cmv; state: Exp; lines: +97 -32
739- Intro decision auto d'optimisation produit de matrices
740- Possibilite a l'utilisateur pour choisir l'optimisation
741- cas FxC optimise par copie
742 cmv 30/07/04
743----------------------------
744revision 1.26
745date: 2004/07/29 12:31:16; author: ansari; state: Exp; lines: +7 -5
7461/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
747 Add/Sub/Mul/DivElt(TArray a, TArray res)
7482/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
7493/ Ajout methode TArray::ScalarProduct()
7504/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
7515/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
752 ReSize() de TMatrix et TVecteur.
753 Reza 29/07/2004
754----------------------------
755revision 1.25
756date: 2004/07/29 08:40:49; author: cmv; state: Exp; lines: +148 -1
757Optimisation produit de matrice a la sauce cmv 29/07/04
758----------------------------
759\end{verbatim} }
760
761\end{itemize}
762
763
764%%%%%%%%
765\titre{HiStats}
766%%%%%
767\soustitre{Classe Histo,HProf,HistoErr,Histo2D }
768\noindent
769- Aout 2006 : refonte profonde des allocations memoire et delete de
770 Histo,HProf,HistoErr,Histo2D pour faciliter la gestion des IO FITS. \\
771- Sept 2004 : Ajout classe HistoErr.
772C'est un Histo qui garde le nombre d'entr\'ees dans chaque bin) \\
773\soustitre{NTuple}
774la classe NTuple peut maintenant avoir des colonnes float ou double.
775Il y a maintenant deux methodes Fill(r\_4 *) et Fill(r\_8 *)
776Les noms ne sont plus limites a 8 caracteres.
777
778
779\soustitre{ Les DataTable (SuperNTuple) }
780
781{\bf Octobre-Novembre 2005 } \\
782\begin{itemize}
783\item[\rond] Ajout classe {\bf DataTableRow} pour manipulation d'une ligne de la table.
784Ajout/maj methode BaseDataTable::EmptyRow() AddRow() GetRow()
785\item[\rond] Gestion des types {\tt complex<r\_4> , complex<r\_8> , TimeStamp } par
786BaseDataTable, DataTable et SwPPFDataTable
787\item[\rond] Codage methode Print() (Dump ascii) et NTFrAscii (decodage fichier
788text) dans BaseDataTable.
789\item[\rond] Codage mŽthode BaseDataTable::GetColumnD() pour recuperer
790une colonne de la table en {\tt TVector<r\_8>} - NON TESTE
791\end{itemize}
792
793\begin{verbatim}
794BaseDataTable
795 -------- DataTable
796 -------- SwPPFDataTable
797\end{verbatim}
798
799\noindent {\bf BaseDataTable} : Classe de base, avec qques methodes virtuelles
800pures, implementent la presque totalite des fonctionalites, en particulier
801celles de l'interface NTupleInterface.
802
803\noindent {\bf DataTable} : Implementation concrete de BaseDataTable avec donnees en
804memoire \\
805(utilise SegDataBlock$<$T$>$ pour stocker les colonnes)
806
807\noindent {\bf SwPPFDataTable} : Implementation concrete de BaseDataTable avec donnees
808en swap sur stream PPF (POutPersist)- \\
809Utilise (SwSegDataBlock$<$T$>$ avec
810un data-swapper PPF (classe PPFDataSwapper$<$T$>$ )
811
812DataTable et SwPPFDataTable respecte +/- les conventions SOPHYA ,
813constructeur de copie avec partage ou copie de donnees, operateur =
814Datatable : partage et copie , = : fait une copie
815SwPPFDataTable : C'est toujours partage (presque par definition)
816Autre point, compte tenu de la structure des streams PPF ,
817les SwPPFDataTable fonctionne en ecriture OU en lecture, mais
818pas les deux a la fois.
819
820Classe de gestion de persistence commune : \\
821{\bf ObjFileIO$<$BaseDataTable$>$ }
822
823Lit et ecrit les DataTable et SwPPFDataTable
824Actuellement, on ne peut les relires que dans le meme type,
825cad on ne peut relire avec un SwPPFDataTable un objet
826ecrit comme DataTable - mais cette possibilite pourra
827peut-etre codee ulterieurement (d'ou l'interet en particulier
828d'un gestionnaire commun ObjFileIO$<$BaseDataTable$>$
829
830(les operateurs habituel $<<$ et $>>$ sur PIn/OutPersist sont definies)
831
832
833Les merges et copie sont prevues,
834on doit en principe pouvoir ecrire par exemple:
835\begin{verbatim}
836SwPPFDataTable swdt;
837PInPersist pis("swdt.ppf");
838pis >> swdt;
839DataTable dt;
840dt = swdt; // Pour tout charger en memoire
841\end{verbatim}
842
843{\it On pourra aussi ajouter des methodes d'acces aux variables
844membres pour enrichier l'interface. }
845
846
847{\bf DataTable cote PIAPP :} \\
848Cote piapp, les DataTable et SwPPFDataTable sont pris en charge par
849{\tt NOMAdapter\_DataTable} (qui prend en charge tous les 'BaseDataTable' )
850Il faudrait peut-etre rajouter deux commandes : \\
851newdt ou newdatatable
852newdt ncol col1 [col2 .... ] \\
853avec possibilite de specifier coli sous fome de X:colname ou X = D,F,S,I,L ...
854et puis dtfromascii ...
855
856Voir Tests/tnt.cc pour exemple d'utilisation :
857\begin{verbatim}
858DataTable dt(64);
859dt.AddIntegerColumn("line");
860dt.AddDoubleColumn("x");
861dt.AddFloatColumn("f_sin");
862MuTyV rec[10];
863for(int k = 0; k<1000; k++) {
864 rec[0] = k;
865 double x = M_PI*k/100.;
866 double fx = sin(x)*cos(x);
867 rec[1] = x;
868 rec[2] = sin(x);
869}
870 POutPersist po("dtable.ppf");
871 po << dt;
872\end{verbatim}
873
874Pour SwPPFDataTable, il faut juste creer un stream PPF avant, qui doit rester
875ouvert tant que le SwPPFDataTable est actif: \\
876\begin{verbatim}
877 POutPersist po("swdtable.ppf");
878 SwPPFDataTable dt(po, 64);
879\end{verbatim}
880
881
882
883\titre{SkyMap}
884%%%
885\begin{itemize}
886\item[\rond] Juin 2006: Prise en charge du rangement mŽmoire {\bf NESTED} dans
887les SphereHEALPix , + I/O PPF et FITS
888\item[\rond] Juin 2006: Nettoyage et amŽliorations diverses dans les classes
889Vector3d, UnitVector, LongLat \ldots et les cartes sphŽriques, en particulier :
890\begin{enumerate}
891\item Nettoyage/uniformation mŽthodes {\tt Print()} des cartes, et
892 ajout de la mŽthode {\tt Show()} dans PixelMap
893 \item Ajout mŽthodes {\tt HasSymThetaSlice() , GetSymThetaSliceIndex() }
894 dans les cartes sphŽriques (SphericalMap)
895 \item Ajout methode {\tt ResolToSizeIndex() SizeIndexToResol() }
896 ds SphereThetaPhi , SphereHEALPix et SphereECP
897 \item Petites optimisations dans {\tt GetThetaSlice()} + methode {\tt GetThetaSliceDataPtr() }
898 \end{enumerate}
899\item[\rond] Juin 2006: Introduction de la classe {\bf Angle} - pour conversion d'angle.
900\begin{verbatim}
901 // Example to convert 0.035 radians to arcsec
902 double vr = 0.035;
903 cout << "Angle rad= " << vr << " ->arcsec= " << Angle(vr).ToArcSec() << endl;
904 // Example to convert 2.3 arcmin to radian - we use the conversion operator
905 double vam = 2.3;
906 cout << "Angle arcmin= " << vam << " ->rad= "
907 << (double)Angle(vam, Angle::ArcMin) << endl;
908\end{verbatim}
909%
910
911
912\item[\rond] {\bf SphereECP} - Septembre 2004 \\
913Extrait du message du 7 Septembre 2004
914\begin{verbatim}
915 J'ai mis dans la base (module SkyMap) le code de la classe
916SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
917+ gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
918
919Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
920Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
921le Resize de la sphereECP
922ylmserver.GenerateFromCl(map, -1, clin, 0.);
923
924Dans piapp, c'est visualise par defaut en projection Molleweide
925On peut ajouter dans les options d'affichage :
926ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
927Si option ecparray, on peut preciser en plus
928 - ecpscaledeg: echelle des axes en degres au lieu de pixels
929 - ecpscalerad: echelle des axes en radians au lieu de pixels
930Exemple:
931Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
932\end{verbatim}
933
934\item[\rond] Bug non corrigŽ ds classe Circle
935\begin{verbatim}
936From: Laurence Perotto <perotto@cdf.in2p3.fr>
937Date: Mon Jan 5, 2004 4:59:12 PM Europe/Paris
938To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
939Subject: un bug dans sophya...
940
941 Bonjour et bonne annee a tous les deux...
942
943 Je viens de trouver un ptit bug dans la fonction TanOnCircle de la classe Circle: Il
944s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
945utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
946oubliee...
947 Voila...
948 Bonne journee.
949
950 Laurence.
951\end{verbatim}
952\end{itemize}
953
954\titre{Samba }
955
956\begin{itemize}
957\item[\rond] {\bf Juin 2006:} correction bug de calcul $a_{lm} \rightarrow$ SphereHEALPix
958(zones polar cap): le problme venant du choix de taille lors du calcul de la transformŽ
959de Fourier complex $\rightarrow$ rŽel (n/2 - 1 ou n/2 -2) .
960Correction dans {\tt RfourierSynthesisFromB } et utilisation de cette mŽthode
961pour tout type de carte.
962On gagne un peu encore en temps de calcul - sur asc (OSF1-cxx) , avec
963SphereThetaPhi(m=400), $l_{max} = 511$ \\[2mm]
964\begin{tabular}{|l|c|c|}
965\hline
966OpŽration & TCPU Avant & TCPU Aprs OPT \\
967\hline
968map $\rightarrow a_{lm}$ & 10 s & 3.6 s. \\
969$a_{lm} \rightarrow$ map & 26 & 10.5 s. \\
970\hline
971\end{tabular} \\[1mm]
972%
973\item[\rond] {\bf Mai 2006:} Optimisation calcul transformŽ en harmoniques sphŽriques
974{\bf SphericalTransformServer}. \\
975Au lieu de calculer un tableau de $\lambda_{lm}$ dans LambdaLMBuilder
976et utiliser ensuite ce tableau, on calcule les sommes nŽcessaires au vol,
977dans des mŽthodes spŽcifiques de la classe LambdaLMBuilder qui
978sont utilisŽes dans SphericalTransformServer (pour les transformŽs
979scalaire/tempŽrature) - PAS fait pour la polarisation pour le moment.
980On peut encore gagner un facteur 2 en utilisant la symŽtrie
981en $\theta <> \pi-\theta$. \\
982Extrait de cvs log :
983\begin{verbatim}
984revision 1.8
985date: 2006/06/01 11:34:50; author: ansari; state: Exp; lines: +147 -12
9861/ passage en sa_size_t (au lieu de int) dans Alm<T> et Bm<T>
9872/ Ajout des methodes optimisees (statiques) pour calcul transforme Ylm
988ds LambdaLMBuilder et utilisation ds SphericalTransformServer
989 Reza , 1/06/2006
990\end{verbatim}
991
992\item[\rond] {\bf Fin 2004} : Tests et vŽrifications des polynomes de Legendre.
993La classe LambdaLMBuilder donne les bons r\'esultats mais calcule les Plm
994pour tous les $l,m$.
995Introduction d'une routine (C-like) ``HarmSph\_array\_teta'' qui calcule
996les Plm pour $m$ fix\'e et $l\in [0,l_{max}]$ comme ce qui est fait
997dans la GSL... (la routine GSL ne marche pas corectement).
998\end{itemize}
999
1000%%%%%%%%%%%
1001\titre{SysTools}
1002{\bf Mai-Juin 2006 } classe ZThread - petites modifs/amŽliorations liŽes
1003ˆ la gestion des signaux et mŽthodes kill
1004
1005\soustitre{Classe SOPHYA::Commander (module SysTools) }
1006Mai-Juin 2006:
1007Debug (?) de gestion/controle des threads dans la classe Commander -
1008Extrait de cvs log :
1009\begin{verbatim}
1010date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +62 -11
1011Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
1012s (killthr) dans Commander - Reza 29 mai 2006
1013----------------------------
1014revision 1.7
1015date: 2006/04/26 15:22:09; author: ansari; state: Exp; lines: +13 -0
1016ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
1017ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
1018----------------------------
1019revision 1.22
1020date: 2006/05/31 12:30:13; author: ansari; state: Exp; lines: +20 -11
1021correction gestion & pour ThrExec ds Commander - Reza 31/05/2006
1022----------------------------
1023revision 1.21
1024date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +37 -16
1025Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
1026s (killthr) dans Commander - Reza 29 mai 2006
1027----------------------------
1028revision 1.20
1029date: 2006/04/26 15:22:08; author: ansari; state: Exp; lines: +55 -15
1030ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
1031ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
1032lioration documentation , Reza 26/4/2006
1033
1034\end{verbatim}
1035
1036Mars-Avril 2004 :
1037Classe d'interprŽteur de ligne de commande inspire de C-Shell,
1038destine a etre incluee dans des applications C/C++. \\
1039( Programme test Test/tcmd.cc ) \\
1040Avril 2005 : Introduction de la possibilite d'execution de commandes
1041en multithreads \\
1042Avril 2005 : Controle strict sur les noms de variables, limites
1043aux caracteres alphanumeriques + underscore - Adaptation
1044de l'algorithme de substitution en consequence.
1045
1046{\bf Mini guide de l'interpreteur - Message du 19 Mars 2004 } \
1047
1048\begin{itemize}
1049
1050\item[\rond] {\bf Gestion des variables } \\
1051 - Les variables sont non typees toutes traitees comme des chaines
1052de caracteres.
1053 - Acces aux variables d'environnement -
1054 - Un niveau variable d'environnement application est aussi prevu
1055 - Toutes les variables de l'interpreteur sont traitees comme des vecteurs.
1056extensibles automatiquement (difference avec le C-Shell)
1057
1058\item[\rond] {\bf Creation / initialisation de variables } \\
1059\begin{verbatim}
1060Cmd> set sv StringValue
1061# Suppression d'une variable : unset ou clearvar
1062Cmd> unset sv
1063
1064# Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
1065Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
1066#Calcul numerique : expression de type C - Espace avant/apres '=' obligatoire
1067Cmd> a = 2+3*sqrt(4)
1068# Le signe egal peut etre utilise pour attribuer une chaine de caracteres
1069Cmd> a = 'Bonjour Madame'
1070# Un element de tableau peut etre specifie avant le signe egal
1071Cmd> vecv[2] = 'coucou'
1072# Ou bien
1073Cmd> i = 3
1074Cmd> vecv[i] = 'Ooohhh'
1075\end{verbatim}
1076
1077A droite du signe egal (membre de droite), les variables doivent etre
1078adressees a l'aide du signe \$.
1079
1080Une chaine peut etre cassee en mots a l'aide de la commande var2words
1081\begin{verbatim}
1082Cmd> var2words varname wordvarname [separateur]
1083\end{verbatim}
1084
1085\item[\rond] {\bf Acces aux variables } \\
1086L'acces aux variables s'effectue par le signe \$ {\tt \$varname} .
1087Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx.
1088Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
1089mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
1090{\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
1091
1092\begin{verbatim}
1093Cmd> x = 'Hello'
1094Cmd> echo $x
1095# Taille d'une variable de type vecteur $#vname
1096Cmd> set vx ( 111 2222 3333 444444 )
1097Cmd> echo $#vx
1098# Acces aux elements de tableau
1099Cmd> echo $vx[0] $vx[1]
1100# ou bien indexe par une variable
1101Cmd> i = 2
1102Cmd> echo $vx[i]
1103# Une syntaxe particuliere: $[vname] retourne le contenu de
1104# la variable dont le nom est ds vname
1105Cmd> zzz = 'Commander'
1106Cmd> xxx = 'zzz'
1107Cmd> echo '$[xxx]= ' $[xxx]
1108$[xxx]= Commander
1109\end{verbatim}
1110
1111Variables d'environnement: L'acces aux variables d'environnement
1112se fait simplement par{\tt \$varenvname}. Attention, les variables locales
1113de l'interpreteur sont prioritaires.
1114
1115\item[\rond] {\bf Variables particulieres: } \\
1116{\tt \$retval} ou {\tt \$retstr} : chaine specifee sur la derniere commande return
1117{\tt \$status} : code de retour de la derniere commande executee.
1118(variable existe et est rempli - mais il faudra se donner une regle
1119plus claire ...)
1120Arguments des fichiers .pic appeles par la commande exec
1121{\tt \$\# } : nombre d'arguments, a part \$0
1122{\tt \$0} nom du fichier ou du script
1123{\tt \$1 \$2 \$3} .... les arguments (pour les scripts et les .pic (exec))
1124
1125
1126\item[\rond] {\bf Structures de controle } \\
1127\begin{verbatim}
1128foreach f ( w1 w2 w3 ... )
1129 ...
1130 echo $f
1131end
1132\end{verbatim}
1133
1134Espace avant/apres '(' et avant ')' obligatoire.
1135
1136\begin{verbatim}
1137foreach v vecname
1138 ...
1139 echo $v
1140end
1141\end{verbatim}
1142
1143Boucle de type integer:
1144\begin{verbatim}
1145for i startInt:endInt[:stepInt]
1146 ....
1147 echo $i
1148end
1149\end{verbatim}
1150
1151Boucle de type float
1152\begin{verbatim}
1153for f startFloat:endFloat[:stepFloat]
1154 ....
1155 echo $f
1156end
1157\end{verbatim}
1158
1159Boucle sur les lignes d'un fichier:
1160\begin{verbatim}
1161forinfile line FileName
1162 ...
1163 echo $line
1164end
1165\end{verbatim}
1166
1167Instruction {\tt break} pour casser une boucle
1168
1169\item[\rond] {\bf Les tests }
1170\begin{verbatim}
1171if ( test ) then
1172endif
1173
1174if ( test ) then
1175 ....
1176else
1177 ....
1178endif
1179\end{verbatim}
1180
1181Espace avant/apres '(' et avant ')' obligatoire.
1182
1183test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b} OU {\tt a > b}
1184OU {\tt a <= b} OU {\tt a >= b}
1185les espaces avant l'operateur de comparaison sont obligatoires.
1186{\tt ==} et {\tt !=} effectue une comparaison de chaines de caracteres.
1187{\tt < , > , <= , >=}une comparaison apres conversion en valeur flottante.
1188
1189\item[\rond] {\bf Definition de script } \\
1190\begin{verbatim}
1191defscript scriptname [description ]
1192 ....
1193endscript
1194\end{verbatim}
1195
1196L'appel a un script se fait simplement a l'aide
1197du nom de script (contrairement aux fichiers
1198de commande qui sont executes a l'aide de la
1199commande {\tt exec} )
1200\begin{verbatim}
1201Cmd> scriptname arg1 arg2 arg3 ....
1202\end{verbatim}
1203
1204L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
1205script ou d'un fichier de commandes.
1206Commandes {\bf listscript }et {\bf clearscript scriptname}
1207 permettet d'avoir la liste des scripts
1208 definis / supprimer la definition d'un script
1209
1210\item[\rond] {\bf Autres commandes}
1211\begin{itemize}
1212\item Instruction {\bf echo } pour ecrire sur cout/stdout
1213\item Instruction {\bf echo2file} pour ecrire a la fin d'un fichier
1214\item Instruction {\bf sleep nsec} (attente de nsec seconds )
1215\item Instructions {\bf timingon , timingoff , traceon , traceoff } \\
1216%
1217\item Commande {\bf exec commandfilename [arg1 arg2 ... ] }
1218\item Commandes {\bf help et help keyword/commandname }
1219\item Commandes {\bf listvars , listcommands }
1220\item Defintion et liste d'alias : {\bf alias aliasname 'string ' } et {\bf listalias}
1221\end{itemize}
1222
1223\item[\rond] {\bf Threads d'execution de commandes (Avril 2005)} \\
1224Possibilite de lancer des commandes (autre que les commandes
1225 de l'interpreteur lui-meme) en thread separe (il suffit de mettre un \&
1226 a la fin de la commande) \\
1227 Commandes des gestion des threads : \\
1228 {\bf thrlist ; cleanthrlist ; cancelthr ThId ; waitthr } \\
1229 Attention, la possibilite de lancer des commandes en threads separes ne fonctionne que
1230pour des commandes "thread-safe".
1231La plupart de nos commandes de piapp sont \\
1232 - soit trop rapide, \\
1233 - soit non "thread-safe" \\
1234
1235 \item[\rond] controle d'execution : \\
1236Possibilite d'arreter l'execution de l'interpreteur (dans une boucle
1237 ou dans dans un fichier .pic ...
1238 Utiliser la commande {\bf stop} ou {\tt <Cntrl C>} dans PIConsole
1239
1240\end{itemize}
1241
1242\soustitre{Classes CExpressionEvaluator et RPNExpressionEvaluator }
1243\begin{itemize}
1244\item[\rond] Ajout des classes RPNExpressionEvaluator et CExpressionEvaluator
1245d'Žvaluation d'expressions numŽriques en notation polonaise inverse
1246et avec la syntaxe C . Utilise dans la classe Commander.
1247\item[\rond] Programme test Test/tcmd.cc
1248\item[\rond] extrait de {\tt cvs log cexpre.cc }
1249{\small \begin{verbatim}
1250----------------------------
1251revision 1.3
1252date: 2004/03/18 18:15:19; author: ansari; state: Exp; lines: +10 -6
1253Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
1254----------------------------
1255revision 1.2
1256date: 2004/03/16 08:47:48; author: ansari; state: Exp; lines: +5 -6
1257suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
1258----------------------------
1259revision 1.1
1260date: 2004/03/15 22:19:43; author: ansari; state: Exp;
1261Ajout fichiers des classes RPNExpressionEvaluator et CExpressionEvaluator (expression arithmetiques) et MAJ du fichier Makefile et objlist.list - Reza 15 Mars 2003
1262\end{verbatim} }
1263
1264\item[\rond] Extrait du message du 3 Mars 2004
1265\begin{verbatim}
1266Le code est base sur une hierarchie de classe d'expression :
1267 Expr -------- NumberExp
1268 --------- BinExp ------ AddExp
1269 ------ MulExp
1270 ------ SubExp
1271 ------ DivExp
1272 --------- FuncExp
1273 --------- CExpressionEvaluator
1274
1275NumberExp : expression elementaire de nombre, sait actuellement traduire Pi et E
1276 tres facile d'ajouter d'autres constantes
1277BinExp: Classe d'operations binaires (deux operandes) a+b a-b a*b a/b
1278 avec gestion de niveau de priorite des operateurs
1279 On peut facilement ajouter d'autres operateurs binaires (par exemple
1280 puissance ^ a^b ) - et les priorites relatives seront gerees en principe.
1281FuncExp: classe d'expression fonctionnelle, avec n arguments f(x1,x2,...x3)
1282 actuellemenent, n=0 a n=3 arguments et quelques fonctions
1283 usuelles sont decodes ds cette classe (sin,cos,tan, asin, acos, atan, exp, log,
1284 atan2, pow ) - voir ds le code
1285
1286CExpressionEvaluator : C'est la classe de haut niveau a utiliser -
1287 la fonction de decodage de la chaine ASCII (qui utilise
1288 les fonctionalites des differentes classes est la dedans
1289 et ce n'est pas tres long.
1290(+ une classe d'exception specifique).
1291\end{verbatim}
1292
1293\end{itemize}
1294
1295
1296%%%%%%%%
1297\titre{FitsIOServer}
1298%%%
1299\begin{itemize}
1300\item[\rond] Aout 2006 : Ecriture/Lecture des classes Histo,HProf,HistoErr,Histo2D dans fichier FITS.
1301Les Histo2D et leurs projections 1D associ\'ees sont lus et \'ecrits
1302sur plusieurs HDU cons\'ecutifs.
1303\item[\rond] Juin 2006 : Ajout verification/correction noms de colonne lors de lecture FITS / DataTable,
1304et remplacement throw par un warning lors de lecture fits-healpix avec $nbcols > 1$ \\[1mm]
1305\item[\rond] { \large Sep 2005-Jan 2006 : Refondation totale du module }
1306\begin{itemize}
1307\item[\rond] Amelioration du programme PrgUtil/scanppf -
1308(scanfits -V1 -lh -rd -header filename)
1309\item[\rond] La classe FitsFile (et donc FitsInFile FitsOutFile) heritent de FitsInOutFile.
1310(Jan 2006)
1311\item[\rond] Fonctionalites classe {\bf FitsManager } etendues - en particulier ScanFile()
1312\item[\rond] Les FitsIOHandler (ancien) heritent de FitsHandlerInterface -
1313Tous les handlers sont pris en charge et enregistre par FitsManager (Jan 2006)
1314\item[\rond] Ajout classe d'initialisation du module {\bf FitsIOServerInitiator },
1315fichiers fiosinit.h .cc (Dec 2005)
1316\item[\rond] Classe { \bf SwFitsDataTable } (DataTable avec swap sur FITS) ajoute
1317 + classe FitsHandler<BaseDataTable> modifie pour prise
1318en charge de SwFitsDataTable (Dec 2005 - Jan 2006)
1319\item[\rond] Classes {\bf FITSDataSwapper$<$T$>$} modifies (Dec 2005)
1320\item[\rond] Prise en charge de types TSTRING et TCOMPLEX et TDBLCOMPLEX
1321lors de lecture/ecriture de colonnes FITS.
1322\item[\rond] Prise en charge de l'ensemble des types de colonnes pour le handler de Fits
1323de DataTable
1324\item[\rond] Classe {\bf FitsInOutFile } comme wrapper des fonctions de la librairie cfitsio +
1325classe d'exception spŽcifique {\bf FitsIOException} , et la classe des types FITS {\bf FitsTypes}.
1326\item[\rond] Classe template {\bf FitsBlockRW$<$T$>$} pour lecture/Žcriture (tableaux de donnŽes)
1327sur IMGHDU et Tables.
1328\item[\rond] Classes gestionnaires I/O Fits pour les objets {\bf FitsHandler$<$T$>$} et {\bf FitsManager}
1329\item[\rond] Classes gestionnaire pour les tableaux : {\bf FitsArrayHandler$<$T$>$}
1330\item[\rond] Classes gestionnaire pour les DataTable {\bf FitsHandler$<$BaseDataTable$>$}
1331\item[\rond] Mai 2005 : Classe {\bf FITSDataSwapper$<$T$>$} pour la gestion des
1332SwSegDataBlock sur fichiers FITS
1333\end{itemize}
1334\end{itemize}
1335
1336\titre{LinAlg}
1337Extension des fonctionalitŽs de la classe {\tt LapackServer<T>} :
1338(Juillet 2004 / cmv , FŽvrier 2005 / Reza)
1339\begin{itemize}
1340\item[\rond] Ajout lancement d'exception sur renvoi de code d'erreur par lapack
1341(desactivable par flag au niveau du constructeur de la classe serveur)
1342\item[\rond] Introduction de l'interface Lapack d'inversion des matrices symetriques (21/7/2004)
1343\item[\rond] Introduction de l'interface Lapack de recherche de valeurs et vecteurs propres
1344 (cas general, symetrique et hermitique) (21/7/2004)
1345\item[\rond] Introduction d'un fonction d'interface pour le calculateur de workspace
1346 (ilaenv\_) (21/7/2004)
1347\item[\rond] Ajout prog test Tests/tsttminv.cc + Commentaires sur les diverses methodes et sur les matrices FORTRAN (21/7/2004)
1348\item[\rond] Ajout SVD decomp by Divide and Conquer SVD\_DC (23/7/2004)
1349\item[\rond] Ajout Least Square with SVD DC
1350\item[\rond] Ajout methode calcul de la matrice inverse par Lapack en utilisant la
1351resolution de systemes (07/02/2005)
1352\end{itemize}
1353
1354\titre{IFFTW}
1355\noindent
1356- Juillet 2007 : Passage a FFTW 3 \\
1357- Nov 2005 : Correction du bug dans le cas de FFT-1D Backward(complex -> reel)
1358in(1).imag() pouvait etre ecrase.
1359
1360\titre{PI,PIext,piapp}
1361\soustitre{PI: Classes modifiees - ameliorees}
1362\begin{itemize}
1363\item[\rond] {\bf PIImageNavigator } \\
1364Ajout de la classe {\tt PIImageNavigator } permettant de visualiser une image
1365avec ses propres widget zoom / global view et colormap. (Fevrier 2005) \\
1366Commande {\tt imagnav} ajoute ds piapp/baseexcute.cc . \\
1367\item[\rond] Avril 2005 - Amelioration de la classe {\bf PIConsole} \\
13681/Envoi Message PIMSG\_Cancel lors de {\tt <Cntl C>} \\
1369 2/ Correction positionnement curseur lors de rappel de commande,
1370 Si possible en fin de commande - mais toujours avec le
1371 debut de commande visible. \\
13723/ Correction (probable) du petit bug sur les derniers caracteres lors de copier/coller
1373 ds PIConsole
1374\item[\rond] Codage Options graphiques en text (string) pour PIGraphicAtt (Nov-Dec 2005)
1375\item[\rond] Corrections diverses trace d'axes etc ... (Dec 2005)
1376\item[\rond] PIext rendu indŽpendant de FITS (Avril 2006) - commandes spŽcifiques dans
1377ProgPI/fitsbtadapter.cc
1378\item[\rond] BUG A corriger, DrawOpaqueString ds PIGraphPS (sortie postscript)
1379\end{itemize}
1380%%%%
1381\soustitre{ Codage texte des options graphiques (11 Mars 2004)}
1382\begin{verbatim}
1383// Methode retournant un vecteur de string a partir des options
1384virtual int PIDrawer::OptionToString(vector<string> & opt) const
1385qui vient completer les deux methodes
1386virtual int PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
1387virtual void PIDrawer:: GetOptionsHelpInfo(string& info);
1388Ces methodes s'occupent de decoder les options graphiques (et l'aide
1389associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
1390une serie de chaine de caracteres a partir des options graphiques.
1391Il y a aussi la methode
1392virtual int PIWdgGen::OptionToString(vector<string> & opt) const
1393que j'ai ajoute (rien a faire pour le moment) - ainsi que
1394int PIGraphicAtt::AttToStrings(vector<string> & att) const.
1395
1396Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
1397L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
1398appelle PIGraphicAtt::AttToStrings() - a laisser donc tel quel.
1399
1400par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
1401PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
1402DecodeOptionString(vector<string> & opt, bool ...) est modifie,
1403rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
1404Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
1405derriere (push_back()) afin de pouvoir cumuler les options de base + options
1406specifiques.
1407
1408Comment tester ?
1409Pour tester, tu peux utiliser la fenetre des options texte ou j'ai ajoute le bouton
1410[GetOption] . Tu peux acceder a cette fenetre a partir de la fenetre des options
1411graphiques <Alt>O , ou directement sur un objet de gestionnaire 2D - par
1412<Alt>T - <Shift>Button-1 permet de selectionner le drawer actif
1413\end{verbatim}
1414
1415\soustitre{ Trace des axes (11 Mars 2004)}
1416 Ajouter la possibilite de specifier l'origine (le point de croisement des axes)
1417lorsque les axes ne sont pas de type 'box' - classes PIAxes et PIElDrawer. FAIT
1418
1419\soustitre{ Selection graphique (souris) du drawer actif (11 Mars 2004)}
1420\begin{verbatim}
1421J'ai ajoute la methode PIDrawer::GetDistanceToPoint(double x, double y)
1422// Renvoie une distance au point x,y
1423// 0: au(x) point(s) le(s) plus proche(s) ... 1 au bord xmin/xmax , ymin/ymax
1424// La methode par defaut calcule la distance normalisee au point ((xmin+xmax)/2,
1425(ymin+ymax)/2)
1426 virtual double PIDrawer::GetDistanceToPoint(double x, double y);
1427
1428ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
1429methode + code permettant le test ds PIScDrawWdg.
1430(virtual void PIDrawer::WdgCoord2DrwCoord(int x, int y, double& xu ...
1431 virtual int PIBaseWdgGen:;FindNearestDrawerId(int x, int y) ...)
1432Tu as a t'aoccuper de la methode PIDrawer::GetDistanceToPoint(double x, double y)
1433qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
1434distance raisonnable au point (x,y) en argument.
1435J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
1436partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
1437completer.
1438
1439Comment tester ?
1440J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
1441<Shift>Button-1 choisit le drawer le plus proche (base sur la
1442valeur de retour de PIDrawer::GetDistanceToPoint(double x, double y)
1443comme drawer actif. Ce drawer est passe en 'highlight' pendant que
1444le bouton est appuye.
1445\end{verbatim}
1446
1447\soustitre{ Manipulation interactive des drawers (3 Juin 2004) }
1448La manipulation interactive des drawers (ˆ l'aide d'un menu) a
1449ŽtŽ finalisŽe pour les PIImage PIScDrawWdg PI3DWdg .
1450
1451\begin{verbatim}
1452 o <Alt>D affiche le menu avec les differentes option
1453 o Move/Resize: Affichage du rectangle + rectangle milieu
1454 (deplacement) + coin bas-droite (deplacement) -
1455 clicker ailleurs pour finir
1456 o Mouse Select : Le mouse select des drawers est gere
1457 maintenant par un PIEventHandler (comme pour Move/ReSize)
1458 Drawer actif affiche par le rectangle muni d'un petit coin
1459 (petit carre + rond dedans, en bas a droite).
1460 Click souris change eventuellement le drawer actif.
1461 On termine en clickant ds le petit [carre+rond]
1462\end{verbatim}
1463
1464\soustitre{ Traceur de bar-graph (classe PIBarGraph) (3 Juin 2004) }
1465Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
1466et commande {\tt bargraph} ds PIext/basexecut.cc .
1467La commande bargraph ne gere pas encore toutes les possibilites
1468de la classe PIBarGraph. \\
1469Exemple d'utilisation:
1470\begin{verbatim}
1471Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4.
1472Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4.
1473Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4.
1474Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
1475Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
1476Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
1477 -10. 15. 2 2. 8. 33. 7 -4.
1478Cmd> bargraph 'font=times,bold,16 blue verticalbars fill barvaluelabel packfrac=0.8' \
1479 -10. 15. 22. 8. 33. 7 -4.
1480\end{verbatim}
1481
1482\soustitre{ Traceur de lignes de texte (classe PITextDrawer) (3 Juin 2004) }
1483
1484Ajout d'une classe de traceur de lignes de texte (classe {\bf PITextDrawer}) et commande
1485{\tt textdrawe}r ds PIext/basexecut.cc . Mais le traceur (et sa commande)
1486doivent etre completes. \\
1487Exemple d'utilisation:
1488\begin{verbatim}
1489# On affiche qque chose
1490Cmd> openppf demo.ppf
1491Cmd> disp h1d
1492Cmd> textdrawer 'frame line=solid,2 font=times,bold,16 red inset' \
1493 ' Christophe ' ' Reza Ansari' ' SOPHYA '
1494\end{verbatim}
1495
1496\soustitre{ Gestion de re-scale-ing des axes en 3D (3 Juin 2004) }
1497
1498Mise en place complete (?) de la gestion de re-scale-ing des axes en 3D
1499avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
1500les limites de la boites 3D.
1501cela a ete une grosse prise de tete de tout un apres-midi.
1502J'ai eu ensuite mal a la tete une partie de la soiree ! \\
1503Exemple d'utilisation:
1504
1505\begin{verbatim}
1506
1507# On ouvre le fichier demo.ppf
1508Cmd> openppf demo.ppf
1509Cmd> surf mtx1 'colbr32'
1510Cmd> surf mtx1 'colbr32 noautoscale'
1511Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
1512# Affichage avec superposition
1513Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
1514Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
1515# Ou bien :
1516Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
1517Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
1518
1519\end{verbatim}
1520\soustitre{piapp (PIext/ProgPI) }
1521\begin{itemize}
1522%%%%
1523\item[\rond] Juillet 2006 : Ameliorations et ajouts divers : \\
1524- Ajout commande {\bf plot3dw} ({\tt Services2NObjMgr::DisplayPoints3DW() }) \\
1525- Ajout possibilite d'acces aux caracteristiques des objets par {\tt \$\{objname.att\} } \\
1526{\tt (PIACmd::GetVarApp()) } et amelioration verification du nom des objets
1527(methode {\tt NamedObjMgr::CheckName()}) \\
1528- Operations sur objets: commande {\bf objaoper} ({\tt NObjMgrAdapter::PerformOperation()})
1529
1530\begin{verbatim}
1531# Extracting row / column from matrix
1532Cmd> objaoper matrixname row 23
1533Cmd> objaoper matrixname col 148
1534# Extracting plane from 3D array (slicexy slicexz sliceyz)
1535Cmd> objaoper arr3dname slicexy 14
1536\end{verbatim}
1537%%%%
1538\item[\rond] Avril 2006: Ajout possibilite de lecture des commandes sur le terminal (stdin)
1539et flag en argument de commande {\tt -small} \\
1540Extrait de cvs log :
1541\begin{verbatim}
1542revision 1.16
1543date: 2006/04/26 15:53:18; author: ansari; state: Exp; lines: +20 -11
15441/ Ajout classe de lecture sur stdin (terminal) avec thread separe pour
1545piapp - incluant la possibilite d'utilisation de la librairie GNU readline
1546(fichiers piacmdrdr.cc piacmdrdr.h + fichier makfile specifique makefile_wgrdl
1547 pour compil+link avec GNU readline)
15482/ MAJ Makefile et modif programme principal piapp.cc avec flag -small
1549et activation thread de lecture sur terminal
1550 Reza , 26/04/2006
1551
1552----------------------------
1553\end{verbatim}
1554
1555\item[\rond] Jan 2006 : commandes readfits writefits scanfits ont ete ajoutees
1556dans ProgPI/fitsbtadapter.cc en utilisant le nouveau FITS -
1557Le menu OpenFits de PIStdImgApp utilise desormais ces commandes
1558\item {\bf BUG } a corriger pour {\tt imagvav}:
1559La destruction de l'objet et/ou widget pascorrectement geres -
1560provoque des plantages lors de la sortie de l'application.
1561\end{itemize}
1562\soustitre{piapp multi-thread }
1563\begin{itemize}
1564\item[\rond] Avril 2005: PossibilitŽ d'execution de commandes en threads separes, en
1565ajoutant {\bf \&} en fin de ligne de commande.
1566\item[\rond] Janvier 2004: Le multithreading a ŽtŽ mis en oeuvre dans piapp .
1567
1568\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
1569\begin{verbatim}
1570revision 1.77
1571date: 2005/04/27 11:55:00; author: ansari; state: Exp; lines: +26 -10
15721/ Prise en charge de DataTable et SwPPFDataTable pour piapp (NObjMgrAdapter) :
1573nomhistadapter.cc et piiinit.cc
15742/ Lecture de tous les objets ds un fichier PPF par NamedObjMgr::ReadAll() pour
1575fichier PPF sans nametag.
15763/ Ajout bloc try/catch ds PIStdImgApp::Run() (boucle d'evenements)
1577 Reza , 27 Avril 2005
1578----------------------------
1579revision 1.76
1580date: 2005/04/19 09:13:49; author: ansari; state: Exp; lines: +3 -1
1581Ajout de l option nodisp ds les affichages des NamedObjMgr, prise en compte de
1582<Cntrl C> (Msg_Cancel) pour arreter l'execution de l'interpreteur ds PIStdImgApp
1583et remplacement commande breakexe par stop ds PIACmd - Reza 19/4/2005
1584----------------------------
1585revision 1.75
1586date: 2005/04/19 06:56:52; author: ansari; state: Exp; lines: +5 -4
1587Remis en marche la possibilite d'execution d'un .pic au lancement de piapp -
1588Reza 19/4/2005
1589----------------------------
1590revision 1.74
1591date: 2005/02/18 14:09:47; author: ansari; state: Exp; lines: +62 -37
1592Modifications pour l'utilisation viewer PIImageNavigator (ajout commande imagnav
1593) - Reza 18 Fev 2005
1594----------------------------
1595revision 1.73
1596date: 2004/11/19 17:41:07; author: ansari; state: Exp; lines: +26 -0
1597Ajout commandes addoval addfoval pour trace d'ellipse - Reza 19/11/2004
1598----------------------------
1599revision 1.71
1600date: 2004/09/07 07:10:18; author: ansari; state: Exp; lines: +35 -0
1601Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
1602methode process, thread boucle d'evts) - Reza 07/09/2004
1603----------------------------
1604revision 1.70
1605date: 2004/01/06 18:44:56; author: ansari; state: Exp; lines: +11 -1
1606 Suite debugging gestion lock entre threads ds piapp - A l'air de
1607marcher sur OSF1 et Linux ... Reza 06/01/2004
1608----------------------------
1609revision 1.69
1610date: 2004/01/06 17:05:25; author: ansari; state: Exp; lines: +33 -7
1611Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
1612 appele de suite) - Reza 06/01/2004
1613----------------------------
1614revision 1.68
1615date: 2004/01/04 19:02:43; author: ansari; state: Exp; lines: +43 -13
1616Suite des modifs pour piapp multi-threads
16171) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
16182) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
1619la classe elle-meme, a travers le NamedObjMgr
16203) Modification de la boucle d'evenements, avec un thread de reveil
1621periodique
1622 Reza, 4 Janvier 2004
1623\end{verbatim}
1624\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
1625\begin{verbatim}
1626----------------------------
1627revision 1.62
1628date: 2003/11/27 10:51:58; author: ansari; state: Exp; lines: +45 -20
1629Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
1630mmander - Reza 27/11/2003
1631----------------------------
1632revision 1.61
1633date: 2003/11/26 23:01:55; author: ansari; state: Exp; lines: +20 -1755
1634Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
1635ander (de SysTools) - Reza 26/11/2003
1636----------------------------
1637revision 1.60
1638date: 2003/07/21 21:13:10; author: cmv; state: Exp; lines: +3 -3
1639- introduction notion de numero de ligne dans expression ntuple
1640 modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend)
1641 modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,
1642 PrepareNTExpressionCFile, LinkExprFunc,...)
1643- doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand
1644 (rz + cmv 21/7/2003)
1645----------------------------
1646\end{verbatim}
1647\end{itemize}
1648
1649\titre{Documentation (Manual/) }
1650%%%%
1651Documentation des classes de SysTools. \\
1652Extrait message du 12 Aout 2004 : \\
1653\begin{verbatim}
1654---> Au sujet de la doc (Manual/)
1655 J'ai installe doxygen sur le Mac, version 1.3.8 -
1656 Il faut updater le fichier de config de depart (dox_sophya.conf)
1657 Pour ma part, j'ai du modifier mkmf (en version privee) -
1658 En effet, il n'y avait pas le program doxysearch - Je ne sais pas si c'est general
1659 ou specifique Mac.
1660
1661 J'ai aussi modifie certaines options de doxygen (en version privee)
1662 EXTRACT_LOCAL_CLASSES --> NO (au lieu de YES)
1663 DETAILS_AT_TOP ---> YES (au lieu de No)
1664 SORT_MEMBER_DOCS ---> NO (au lieu de YES)
1665
1666 Si on est d'accord, on peut modifier ces options ds le fichier dox_sophya.conf et
1667 utiliser la fonction update de doxygen (doxygen -u)
1668\end{verbatim}
1669
1670\titre{Mgr}
1671\begin{itemize}
1672\item Avril-Mai 2005 : Basculement vers la nouvelle version de scripts
1673de gestion du code (module {\bf BuildMgr/ } )
1674On n'a plus a se preoccuper des indications de cette section
1675
1676\item
1677Septembre 2003 (17/9/2003) : Changement DPCDEVREP, DPCBASEREP
1678en SOPHYADEVREP , SOPHYABASEREP , EROSCXX en SOPHYACXX
1679\end{itemize}
1680
1681
1682
1683\titre{Plan de modifs pour SOPHYA V 2.x PI/piapp V 4.x }
1684
1685{\bf Sep 2006} : La grande majorit\'e des modifs pr\'evues en 2003 ont \'et\'e
1686effectu\'ees. Reste \`a faire , si besoin :
1687\begin{itemize}
1688\item SophyaLib::TArray/
1689\begin{verbatim}
1690 - Ajouter une classe de base abstraite GenericMatrix<T>
1691 avec methode d'acces aux elements, nb de lignes, nb de colonnes,
1692 - Introduire les TinyMatrix (TinyMatrix<T, int L, int C>)
1693 avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?
1694 - Introduire des matrices creuses simples SpareMatrix<T>
1695 - Introduire les DiagonalMatrix<T>
1696Remarque: Les TMatrix TinyMatrix et SparseMatrix heritent de GenericMatrix
1697\end{verbatim}
1698
1699\item PI/ piapp
1700\begin{verbatim}
1701o Ajouter un traceur de ApplePie (BarChart fait )
1702o Ajouter un traceur de Lego-Plot
1703o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
1704o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
1705 pour pouvoir plotter des objets, l'un vs l'autre
1706o (???) Introduire quelque chose du style
1707 AddDialogue("Cmd", "dialogue-description)
1708 qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir
1709 pour les commandes usuelles (???)
1710\end{verbatim}
1711\end{itemize}
1712
1713
1714\end{document}
Note: See TracBrowser for help on using the repository browser.