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

Last change on this file since 3379 was 3373, checked in by ansari, 18 years ago

maj fichier modifs.tex (IFFTW-float et correction blocage spiapp (mutex/ObjMgrWind) et redirection stdout/erra travers fichier) - Reza 5/11/2007

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