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

Last change on this file since 3307 was 3301, checked in by ansari, 18 years ago

Fichier modifs.tex mis a jour pour mise en ligne de V=2.046 , Reza 17/08/2007

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