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

Last change on this file since 4039 was 4039, checked in by ansari, 14 years ago

description de modifs de SOPHYA sep-nov 2011, 14/11/2011

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