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

Last change on this file since 2807 was 2717, checked in by ansari, 20 years ago

MAJ du fichiers modifs.tex - Reza 13 Mai 2005

File size: 46.8 KB
RevLine 
[2632]1\documentclass[twoside,11pt,A4]{article}
2\usepackage[french]{babel}
3
4% \usepackage[T1]{fontenc}
5\usepackage[applemac]{inputenc}
6\usepackage{palatino}
7% \usepackage{times}
8% package pour ecrire DRAFT en fond de page
[2716]9% \usepackage[light,all,draft]{draftcopy}
[2632]10
11% \usepackage{epsfig}
12\usepackage{graphicx}
13\usepackage{amsmath}
14\usepackage{amssymb}
15
16\setlength{\textwidth}{16cm}
17\setlength{\textheight}{23 cm}
18\setlength{\topmargin}{0.5cm}
19\setlength{\oddsidemargin}{0.cm}
20\setlength{\evensidemargin}{0.cm}
21\setlength{\unitlength}{1mm}
22
23\newcommand{\rond}{$\bullet \ $}
24\newcommand{\etoile}{$\star \ $}
25\newcommand{\cercle}{$\circ \ $}
26\newcommand{\carre}{$\Box \ $}
27
28\begin{document}
29\begin{titlepage}
30\begin{center}
31{\Large \bf Liste de modifications de SOPHYA } \\[5mm]
32{ \large (fait ou ˆ faire ) } \\
[2716]33{\large Janvier 2003 - Mai 2005 } \\[25mm]
[2632]34Liste des tags et dates : \\[5mm]
35{\large
36\begin{tabular}{lcl}
37V = 0.727 & \hspace{10mm} & Octobre 1999 \\
38V = 0.8 & \hspace{10mm} & FŽvrier 2000 \\
39V = 1.1 & \hspace{10mm} & FŽvrier 2001 \\
40V = 1.2 & \hspace{10mm} & Juillet 2001 \\
41V = 1.3 & \hspace{10mm} & Novembre 2001 \\
42V = 1.5 & \hspace{10mm} & DŽcembre 2002 \\
43V = 1.7 & \hspace{10mm} & Septembre 2003 \\
44\end{tabular}
45}
46\end{center}
47\end{titlepage}
48
49\newpage
50\tableofcontents
51\newpage
52
53\section{Mgr}
54\subsection{Variables d'environnement SOPHYAxxx (17/9/2003) }
55Septembre 2003 (17/9/2003) : Changement DPCDEVREP, DPCBASEREP
56en SOPHYADEVREP , SOPHYABASEREP , EROSCXX en SOPHYACXX
57
58\subsection{Modifs Makefile - Message du 3 Mars 2004 }
59\begin{verbatim}
60Pour Les makefiles SOPHYA, je n'ai pas encore regarde ton makefile.h
61modifie.
62Voila qques propositions :
63il y aura qu'une seule variable d'environnement : (SOPHYAROOT ou
64SOPHYARACINE) par exemple
65$SOPHYAROOT/Include
66 /Include/FitsIO/ FFTW/ (etc...) pour les .h extlibs
67 /Libs
68 /ShLibs
69 /Exec
70 /Objs
71Un fichier Makefile.h ds $SOPHYAROOT/Include
72contiendra
73# Section generale
74SOPHYAROOT =
75SOPHYACXX=
76...
77# Section compilation
78CC_COMPILER (nom du compilo cc)
79CXX_COMPILER ( c++)
80CPPFLAGS , (flag du preprocesseur), en particulier
81les -Iincludepath (chemin pour les includes SOPHYA
82CFLAGS flag de compilation c
83CXXFLAGS flags de compilation c++
84# Section Link
85LIBPATH -L... -L... (chemin pour les librairies et les lib externes (cfitsio, ...)
86LIBLIST -lm -lcfitsio ... (les librairies)
87
88Ces variables doivent pouvoir etre utilise par la classe CxxCompilerLinker.
89Il faut donc prevoir peut-etre un autre fichier cccpp_flags.h (ou qque chose
90du meme genre) avec la syntaxe C/C++ de chaines de caracteres
91pouvant etre include (par #include) ds cxxcmplnk.cc
92
93le fichier machdefs.h ds $SOPHYAROOT/Include est genere a partir du fichier
94machdefs_mkmf.h actuel (on pourra songer ulterieurement a le casser en
95plusieurs morceaux si necessaire) et contiendra en entete les flags
96qui modifie la generation du code
97
98exemple
99#define Linux
100#define SOPHYA_DEBUG
101....
102
103Dans les fichier Makefile pour chaque module, on abandonnera
104les regles (et repertoire) de compilation par defaut et on aura
105donc:
106INC= $SOPHYAROOT/Include
107OBJ = $SOPHYAROOT/Objs
108LIB=...
109$(OBJ)toto.o : toto.cc $(INC)toto.h $(INC)titi.h ...
110 $CXX $CXXFLAGS -c -o $(OBJ)toto.o toto.cc
111....
112
113Il faudra voir ensuite pour le makefile de fabrication des shared-libs
114\end{verbatim}
115
116\subsection{ Modifs Makefile - Message du 8 Juillet 2004 }
117\begin{verbatim}
118A/ Makefile(s) (voir aussi mon message du 3 mars 2004)
119A-1/ Structures des repertoires
120>> On garde la structuration avec
121+ un Makefile par module 'librairie'
122+ un ensemble de modules librairies sans lib externe -> libsophya.slb
123+ un ensemble de modules librairies avec lib externe -> libextsophya.slb
124+ Des modules programmes (PrgUtil/ PrgMap/ ) avec un makefile par module programme
125+ un Makefile de haut niveau (actuellement ds Mgr/Makefile
126 Ce Makefile de haut niveau sera aussi simplifiŽ - en particulier la partie
127concernant la fabrication des shared-libs (.slb) et Makefile.slb
128+ On garde aussi la convention de generation automatique des GNUmakefile, qui sont
129ensuite renommes eventuellement en Makefile, conserves ds la base
130- Plus d'inclusion automatique du nom du system-compilo (Linux-g++ OSF1-cxx ...)
131dans les noms de repertoires
132- Plus de structure ExtLibDir obligatoire (remplace par des -Ipath -Lpath pour les
133compils/links
134- Si besoin, on fait subir le meme sort que Makefile.h a Makefile.slb
135
136 On aura donc : (message du 3 mars 2004)
137il y aura qu'une seule variable d'environnement : (SOPHYAROOT ou
138SOPHYARACINE) par exemple
139$SOPHYAROOT/Include
140Attention le repertoire Include/ NE sera donc PLUS commun pour plusieurs
141systemes-compilo.
142 /Libs
143 /ShLibs
144 /Exec
145 /Objs
146Un fichier Makefile.h ds $SOPHYAROOT/Include
147contiendra les flags de compilation dŽfinis pour un systme/compilo.
148A la base, on aura ds Mgr/ un fichier Makefile.h pour chaque combinaison
149compilo-compilo;
150Mgr/makef_osf1_cxx.h
151Mgr/makef_linux_g++.h
152Mgr/makef_linux_KCC.h
153Mgr/makef_darwin_g++.h (Mac)
154Mgr/makef_sgi_CC.h
155 etc ...
156C'est ce fichier qui est copiŽ en Include/Makefile.h, Žventuellement
157complete/modifie
158
159----- Fichier Makefile.h
160# Section generale
161SOPHYAROOT =
162SOPHYACXX=
163...
164# Section compilation
165CC_COMPILER (nom du compilo cc)
166CXX_COMPILER ( c++)
167CPPFLAGS , (flag du preprocesseur), en particulier
168les -Iincludepath (chemin pour les includes SOPHYA
169CFLAGS flag de compilation c
170CXXFLAGS flags de compilation c++
171# Section Link
172LIBPATH -L... -L... (chemin pour les librairies et les lib externes (cfitsio, ...)
173LIBLIST -lm -lcfitsio ... (les librairies)
174
175Ces variables doivent pouvoir etre utilise par la classe CxxCompilerLinker.
176Il faut donc prevoir peut-etre un autre fichier cccpp_flags.h (ou qque chose
177du meme genre) avec la syntaxe C/C++ de chaines de caracteres
178pouvant etre include (par #include) ds cxxcmplnk.cc
179
180le fichier machdefs.h ds $SOPHYAROOT/Include est genere a partir du fichier
181machdefs_mkmf.h actuel (on pourra songer ulterieurement a le casser en
182plusieurs morceaux si necessaire) et contiendra en entete les flags
183qui modifie la generation du code
184
185exemple
186#define Linux
187#define SOPHYA_DEBUG
188....
189
190Dans les fichier Makefile pour chaque module, on abandonnera
191les regles (et repertoire) de compilation par defaut et on aura
192donc:
193INC= $SOPHYAROOT/Include
194OBJ = $SOPHYAROOT/Objs
195LIB=...
196$(OBJ)toto.o : toto.cc $(INC)toto.h $(INC)titi.h ...
197 $CXX $CXXFLAGS -c -o $(OBJ)toto.o toto.cc
198....
199
200\end{verbatim}
201
202\section{BaseTools}
203\subsection{Namespace SOPHYA }
204Septembre 2004 :
205Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h -
206Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
207ainsi que lors de la gŽnŽration automatique du code (runxx, c++exec)
208
209\subsection{PPF}
210\begin{itemize}
211\item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
212Classes RawInOutStream , RawInFileStream , RawOutFileStream
213\item[\rond] DŽcembre 2003 - Ajout ppfbinstream.h .cc \\
214Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
[2716]215\item[\rond] DŽcembre 2003 (9/12/2003) Fin de l'ensemble des modifs pour les
[2632]216PPF V3 \\
217- Ecriture nombre complexes r4, r8 avec tag spŽcifique. \\
218Tag de positionnement sous forme de \\
219\centerline{\tt <tag (1 byte)><FilePosition (8 byte, long int)> } \\
220- Ecriture PosTagTable \\
221- Ecriture Statistiques en fin de fichier \\
222- Voir BaseTools/ppfbinstream.h: \\
223\centerline{\tt GotoPositionTag(int\_8 pos) , }
224\centerline{\tt GetPosTagTable(...) }
225\centerline{\tt int\_8 WritePositionTag() PutPosTagTable(...) }
226- Ajout programme de test Tests/ppftswap.cc
[2716]227\item[\rond] Avril 2005 - Ajout de wrapper de lecture/ecriture PPF pour les vecteurs de
[2717]228la librairie standard (classe PPFWrapperSTLVector$<$T$>$ ) fichier ppfwrapstlv.h
[2716]229\item[\rond] Ajout de la classes utilitaire PPF\_TPointer\_IO$<$T$>$
230(fichiers ppftpointer.h .cc)
231\item[\rond] Amelioration de l'impression ds AnalyseTags (ppfbinstream.cc)
232\item[\rond] scanppf.cc revision 1.8 (2005/04/05)
233modification programme scanppf: ajout option -lh -lho pour lister les classes PP
234ersist handler
235
[2632]236\end{itemize}
237
[2716]238
[2717]239\subsection{Nouvelles classes}
240\begin{itemize}
241\item[\rond] Ajout de la classe {\bf TimeStamp} pour la manipulation de date et heure -
242calcul de duree. - Ajout du prog. test Tests/ttimestamp.cc (Mars 2003)
243\item[\rond] { \bf Segmented Data Block :} \\
[2716]244Mars-Avril 2005: Introduction des classes similaires aux NDataBlock, mais permettant
245de gerer des blocs de donnees segementes, pour tout type de donnees, de structures
[2717]246et de classes (template pour tout type T).
247\begin{enumerate}
248\item Ajout de la classe {\tt SegDataBlock<T>} (et l'interface { \tt SegDBInterface<T>} )
[2716]249pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
[2717]250gestionnaire PPF {\tt FIO\_SegDataBlock<T>} (fichier fiosegdb.h )
251\item Ajout de la classe {\tt SwSegDataBlock<T>} (Data bloc segmente avec gestion
252de swap) et la classe swapper PPF {\tt PPFDataSwapper<T>} (fichiers
[2716]253ppfswapper.h et swsegdb.h)
[2717]254\item Ajout programme de test Tests/tstsegdb.cc
255\end{enumerate}
256\end{itemize}
[2716]257
258
[2632]259\section{TArray}
260\begin{itemize}
261\item Optimisation de la multiplication matricielle (CMV) - Extrait du
[2716]262message (from CMV) du 30 Juillet 2004: \\
[2632]263\begin{verbatim}
264- on definit un flag d'optimisation
265 Contrairement a ce qu'on avait dit, je n'ai pas ajoute
266 un argument a Multiply car on ne peut pas jouer
267 avec qiand on utilise l'operateur * surcharge.
268 Or au vu des performance il'ma parut interessant que l'utilisateur
269 meme lambda puisse choisir le niveau d'optimisation
270 --> donc j'ai ajoute une methode statis dans BaseArray::
271 void BaseArray::SetMatProdOpt(uint_2);
272 uint_2 BaseArray::GetMatProdOpt();
273
274- Je n'ai refait les test de rapidite que sur OSF:
275
2761./ pour les matrices 1000x1000 (grosses)
277 on arrive effectivement au meme temps pour les 4 cas
278 si on copie dans le cas lent (FxC)
279 ---EndMultiply FxC CPUTime: Total= 93.1296 (Partial= 69.3806) Sec.
280 devient
281 ---EndMultiply FxC CPUTime: Total= 34.9653 (Partial= 11.1829) Sec.
282 exactement comme les copains:
283 La copie prend de la place mais ne prend absolument
284 pas de temps pour les grosses matrices
285
2862./ pour les matrices 10x10 (1000000 multiplications par cas)
287 on a bien ce que l'on attend a savoir que
288 la copie faites 100000 fois finie par nous faire perdre du temps
289 ---EndMultiply FxC CPUTime: Total= 37.4152 (Partial= 12.4662) Sec.
290 devient
291 ---EndMultiply FxC CPUTime: Total= 53.9978 (Partial= 28.8322) Sec.
292 dans ce cas on perd un gros facteur 2 a cause de la copie
293 mais rien de surprenant la dedans.
294
295-----------------------------------------------------------------------
296- ensuite j'ai implemente une prise de decision au niveau de
297l'optimisation pour les petites matrices:
298le test est simple mais me semble OK:
299je calcule sza taille du NDataBlock de A
300 szb B
301si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
302IDEE: on pifometre que raisonnablement il y a 100 koctets
303 de disponible pour les matrices A et B dans le cache processeur
304 et que dans ce cas elles sont copiees toutes les 2 dans le cache
305 par l'optimiseur du compilo qui est tres malin et surtout qui
306 veux absolument nous faire plaisir......
307
308-----------------------------------------------------------------
309===> Les resultats sont dans le fichier toto.calc en attached
310.. En tete tu as l'explication des flags d'optimisation
311...Avec les 2 sections:
312 GROSSE MATRICE
313 et
314 PETITE MATRICE
315\end{verbatim}
316
317\item Optimisation operations diverses, en particulier \\
3181) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
319 Add/Sub/Mul/DivElt(TArray a, TArray res) \\
3202) Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
321\item Extrait de {\tt cvs log tarray.cc }
322{\small \begin{verbatim}
323----------------------------
324revision 1.38
325date: 2004/07/30 13:31:39; author: ansari; state: Exp; lines: +28 -24
326Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
327----------------------------
328----------------------------
329revision 1.36
330date: 2004/07/27 11:44:23; author: ansari; state: Exp; lines: +4 -1
331Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
332----------------------------
333revision 1.35
334date: 2004/07/26 17:30:40; author: ansari; state: Exp; lines: +187 -108
335Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004
336----------------------------
337\end{verbatim} }
338
339\item Extrait de {\tt cvs log tarray.cc }
340{\small \begin{verbatim}
341----------------------------
342revision 1.27
343date: 2004/07/30 10:24:12; author: cmv; state: Exp; lines: +97 -32
344- Intro decision auto d'optimisation produit de matrices
345- Possibilite a l'utilisateur pour choisir l'optimisation
346- cas FxC optimise par copie
347 cmv 30/07/04
348----------------------------
349revision 1.26
350date: 2004/07/29 12:31:16; author: ansari; state: Exp; lines: +7 -5
3511/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
352 Add/Sub/Mul/DivElt(TArray a, TArray res)
3532/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
3543/ Ajout methode TArray::ScalarProduct()
3554/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
3565/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
357 ReSize() de TMatrix et TVecteur.
358 Reza 29/07/2004
359----------------------------
360revision 1.25
361date: 2004/07/29 08:40:49; author: cmv; state: Exp; lines: +148 -1
362Optimisation produit de matrice a la sauce cmv 29/07/04
363----------------------------
364\end{verbatim} }
365
366\end{itemize}
367
368\section{HiStats}
369\subsection{Classe HistoErr }
370Ajout classe HistoErr (Septembre-Octobre 2004)
371
[2716]372\subsection{NTuple}
373la classe NTuple peut maintenant avoir des colonnes float ou double.
374Il y a maintenant deux methodes Fill(r\_4 *) et Fill(r\_8 *)
375Les noms ne sont plus limites a 8 caracteres.
376
377
378\subsection{ Les DataTable (SuperNTuple) }
379
[2632]380\begin{verbatim}
[2716]381BaseDataTable
382 -------- DataTable
383 -------- SwPPFDataTable
384\end{verbatim}
[2717]385
386\noindent {\bf BaseDataTable} : Classe de base, avec qques methodes virtuelles
[2716]387pures, implementent la presque totalite des fonctionalites, en particulier
388celles de l'interface NTupleInterface.
[2632]389
[2717]390\noindent {\bf DataTable} : Implementation concrete de BaseDataTable avec donnees en
391memoire \\
392(utilise SegDataBlock$<$T$>$ pour stocker les colonnes)
[2632]393
[2717]394\noindent {\bf SwPPFDataTable} : Implementation concrete de BaseDataTable avec donnees
395en swap sur stream PPF (POutPersist)- \\
396Utilise (SwSegDataBlock$<$T$>$ avec
397un data-swapper PPF (classe PPFDataSwapper$<$T$>$ )
[2632]398
[2716]399DataTable et SwPPFDataTable respecte +/- les conventions SOPHYA ,
400constructeur de copie avec partage ou copie de donnees, operateur =
401Datatable : partage et copie , = : fait une copie
402SwPPFDataTable : C'est toujours partage (presque par definition)
403Autre point, compte tenu de la structure des streams PPF ,
404les SwPPFDataTable fonctionne en ecriture OU en lecture, mais
405pas les deux a la fois.
[2632]406
[2716]407Classe de gestion de persistence commune : \\
[2717]408{\bf ObjFileIO$<$BaseDataTable$>$ }
[2632]409
[2716]410Lit et ecrit les DataTable et SwPPFDataTable
411Actuellement, on ne peut les relires que dans le meme type,
412cad on ne peut relire avec un SwPPFDataTable un objet
413ecrit comme DataTable - mais cette possibilite pourra
414peut-etre codee ulterieurement (d'ou l'interet en particulier
[2717]415d'un gestionnaire commun ObjFileIO$<$BaseDataTable$>$
[2632]416
[2716]417(les operateurs habituel $<<$ et $>>$ sur PIn/OutPersist sont definies)
[2632]418
[2717]419Actuellement, les colonnes peuvent etre de type \\
420{\tt int\_4 , int\_8 , r\_4 , r\_8 , string } \\
421On pourra ajouter apres les types suivants : \\
422{\tt complex<r\_4> , complex<r\_8> , TimeStamp }
[2716]423
424Dans BaseDataTable, il reste a remplir la methode
[2717]425{\tt BaseDataTable ::FillFromASCIIFile(string const \& fn) } \\
426{\tt BaseDataTable :: Print(int num, int nmax=1) const }
427(on peut utiliser { \tt LineToString(sa\_size\_t n) const }
[2716]428
429Par contre, les merges et copie sont prevues,
430on doit en principe pouvoir ecrire par exemple:
[2717]431\begin{verbatim}
[2716]432SwPPFDataTable swdt;
433PInPersist pis("swdt.ppf");
434pis >> swdt;
435DataTable dt;
436dt = swdt; // Pour tout charger en memoire
[2717]437\end{verbatim}
[2716]438
439On peut aussi ajouter des methodes d'acces aux variables membres pour enrichier l'interface.
440
[2717]441{\bf PLUS IMPORTANT : } \\
442Il reste a ecrire la classe FITS\_BaseDataTable ou FITS\_DataTable
443pour I/O sur fichiers FITS - j'ai regarde {\tt FITS\_XNTuple} qu'on pourra simplifier enormement
[2716]444et que devrait etre assez rapide.
[2717]445Il faut aussi faire une classe {\tt SwFITSDataTable}, en recopiant pas mal de chose ds la classe
446{\tt SwPPFDataTable} - On pourrait peut-etre avoir une classe intermediaire qui regroupe
447tout ce qui est commun a {\tt SwFITSDataTable et SwPPFDataTable} , mais a voir.
448L'element cle sera le codage de {\tt FITSDataSwapper<T>} qui implemente
449les deux methodes de {\tt DataSwapperInterface<T>} - le reste devrait etre du copier/coller
[2716]450essentiellement.
451
[2717]452{\bf DataTable cote PIAPP :} \\
[2716]453Cote piapp, les DataTable et SwPPFDataTable sont pris en charge par
[2717]454{\tt NOMAdapter\_DataTable} (qui prend en charge tous les 'BaseDataTable' )
455Il faudrait peut-etre rajouter deux commandes : \\
[2716]456newdt ou newdatatable
[2717]457newdt ncol col1 [col2 .... ] \\
[2716]458avec possibilite de specifier coli sous fome de X:colname ou X = D,F,S,I,L ...
459et puis dtfromascii ...
460
461Voir Tests/tnt.cc pour exemple d'utilisation :
[2717]462\begin{verbatim}
[2716]463DataTable dt(64);
464dt.AddIntegerColumn("line");
465dt.AddDoubleColumn("x");
466dt.AddFloatColumn("f_sin");
467MuTyV rec[10];
468for(int k = 0; k<1000; k++) {
469 rec[0] = k;
470 double x = M_PI*k/100.;
471 double fx = sin(x)*cos(x);
472 rec[1] = x;
473 rec[2] = sin(x);
474}
475 POutPersist po("dtable.ppf");
476 po << dt;
[2717]477\end{verbatim}
[2716]478
479Pour SwPPFDataTable, il faut juste creer un stream PPF avant, qui doit rester
[2717]480ouvert tant que le SwPPFDataTable est actif: \\
481\begin{verbatim}
[2716]482 POutPersist po("swdtable.ppf");
483 SwPPFDataTable dt(po, 64);
[2632]484\end{verbatim}
485
[2717]486
[2632]487\section{SkyMap , Samba }
488\subsection{Tests et vŽrifications des polynomes de Legendre}
489--> CMV
490
491\subsection{SphereECP}
492Extrait du message du 7 Septembre 2004
493\begin{verbatim}
494 J'ai mis dans la base (module SkyMap) le code de la classe
495SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
496+ gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
497
498Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
499Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
500le Resize de la sphereECP
501ylmserver.GenerateFromCl(map, -1, clin, 0.);
502
503Dans piapp, c'est visualise par defaut en projection Molleweide
504On peut ajouter dans les options d'affichage :
505ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
506Si option ecparray, on peut preciser en plus
507 - ecpscaledeg: echelle des axes en degres au lieu de pixels
508 - ecpscalerad: echelle des axes en radians au lieu de pixels
509Exemple:
510Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
511\end{verbatim}
512
513\subsection{Bug non corrigŽ ds classe Circle}
514\begin{verbatim}
515From: Laurence Perotto <perotto@cdf.in2p3.fr>
516Date: Mon Jan 5, 2004 4:59:12 PM Europe/Paris
517To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
518Subject: un bug dans sophya...
519
520 Bonjour et bonne annee a tous les deux...
521
522 Je viens de trouver un ptit bug dans la fonction TanOnCircle de la classe Circle: Il
523s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
524utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
525oubliee...
526 Voila...
527 Bonne journee.
528
529 Laurence.
530\end{verbatim}
531
532\section{SysTools}
533\subsection{Classe SOPHYA::Commander (module SysTools) }
534
[2717]535Mars-Avril 2004 :
[2632]536Classe d'interprŽteur de ligne de commande inspire de C-Shell,
537destine a etre incluee dans des applications C/C++. \\
[2717]538( Programme test Test/tcmd.cc ) \\
539Avril 2005 : Introduction de la possibilite d'execution de commandes
540en multithreads \\
541Avril 2005 : Controle strict sur les noms de variables, limites
542aux caracteres alphanumeriques + underscore - Adaptation
543de l'algorithme de substitution en consequence.
[2632]544
545{\bf Mini guide de l'interpreteur - Message du 19 Mars 2004 } \
546
547\begin{itemize}
548
549\item[\rond] {\bf Gestion des variables } \\
550 - Les variables sont non typees toutes traitees comme des chaines
551de caracteres.
552 - Acces aux variables d'environnement -
553 - Un niveau variable d'environnement application est aussi prevu
554 - Toutes les variables de l'interpreteur sont traitees comme des vecteurs.
555extensibles automatiquement (difference avec le C-Shell)
556
557\item[\rond] {\bf Creation / initialisation de variables } \\
558\begin{verbatim}
559Cmd> set sv StringValue
560# Suppression d'une variable : unset ou clearvar
561Cmd> unset sv
562
563# Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
564Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
565#Calcul numerique : expression de type C - Espace avant/apres '=' obligatoire
566Cmd> a = 2+3*sqrt(4)
567# Le signe egal peut etre utilise pour attribuer une chaine de caracteres
568Cmd> a = 'Bonjour Madame'
569# Un element de tableau peut etre specifie avant le signe egal
570Cmd> vecv[2] = 'coucou'
571# Ou bien
572Cmd> i = 3
573Cmd> vecv[i] = 'Ooohhh'
574\end{verbatim}
575
576A droite du signe egal (membre de droite), les variables doivent etre
577adressees a l'aide du signe \$.
578
579Une chaine peut etre cassee en mots a l'aide de la commande var2words
580\begin{verbatim}
581Cmd> var2words varname wordvarname [separateur]
582\end{verbatim}
583
584\item[\rond] {\bf Acces aux variables } \\
585L'acces aux variables s'effectue par le signe \$ {\tt \$varname} .
586Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx.
587Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
588mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
589{\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
590
591\begin{verbatim}
592Cmd> x = 'Hello'
593Cmd> echo $x
594# Taille d'une variable de type vecteur $#vname
595Cmd> set vx ( 111 2222 3333 444444 )
596Cmd> echo $#vx
597# Acces aux elements de tableau
598Cmd> echo $vx[0] $vx[1]
599# ou bien indexe par une variable
600Cmd> i = 2
601Cmd> echo $vx[i]
602# Une syntaxe particuliere: $[vname] retourne le contenu de
603# la variable dont le nom est ds vname
604Cmd> zzz = 'Commander'
605Cmd> xxx = 'zzz'
606Cmd> echo '$[xxx]= ' $[xxx]
607$[xxx]= Commander
608\end{verbatim}
609
610Variables d'environnement: L'acces aux variables d'environnement
611se fait simplement par{\tt \$varenvname}. Attention, les variables locales
612de l'interpreteur sont prioritaires.
613
614\item[\rond] {\bf Variables particulieres: } \\
615{\tt \$retval} ou {\tt \$retstr} : chaine specifee sur la derniere commande return
616{\tt \$status} : code de retour de la derniere commande executee.
617(variable existe et est rempli - mais il faudra se donner une regle
618plus claire ...)
619Arguments des fichiers .pic appeles par la commande exec
620{\tt \$\# } : nombre d'arguments, a part \$0
621{\tt \$0} nom du fichier ou du script
622{\tt \$1 \$2 \$3} .... les arguments (pour les scripts et les .pic (exec))
623
624
625\item[\rond] {\bf Structures de controle } \\
626\begin{verbatim}
627foreach f ( w1 w2 w3 ... )
628 ...
629 echo $f
630end
631\end{verbatim}
632
633Espace avant/apres '(' et avant ')' obligatoire.
634
635\begin{verbatim}
636foreach v vecname
637 ...
638 echo $v
639end
640\end{verbatim}
641
642Boucle de type integer:
643\begin{verbatim}
644for i startInt:endInt[:stepInt]
645 ....
646 echo $i
647end
648\end{verbatim}
649
650Boucle de type float
651\begin{verbatim}
652for f startFloat:endFloat[:stepFloat]
653 ....
654 echo $f
655end
656\end{verbatim}
657
658Boucle sur les lignes d'un fichier:
659\begin{verbatim}
660forinfile line FileName
661 ...
662 echo $line
663end
664\end{verbatim}
665
666Instruction {\tt break} pour casser une boucle
667
668\item[\rond] {\bf Les tests }
669\begin{verbatim}
670if ( test ) then
671endif
672
673if ( test ) then
674 ....
675else
676 ....
677endif
678\end{verbatim}
679
680Espace avant/apres '(' et avant ')' obligatoire.
681
682test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b} OU {\tt a > b}
683OU {\tt a <= b} OU {\tt a >= b}
684les espaces avant l'operateur de comparaison sont obligatoires.
685{\tt ==} et {\tt !=} effectue une comparaison de chaines de caracteres.
686{\tt < , > , <= , >=}une comparaison apres conversion en valeur flottante.
687
688\item[\rond] {\bf Definition de script } \\
689\begin{verbatim}
690defscript scriptname [description ]
691 ....
692endscript
693\end{verbatim}
694
695L'appel a un script se fait simplement a l'aide
696du nom de script (contrairement aux fichiers
697de commande qui sont executes a l'aide de la
698commande {\tt exec} )
699\begin{verbatim}
700Cmd> scriptname arg1 arg2 arg3 ....
701\end{verbatim}
702
703L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
704script ou d'un fichier de commandes.
705Commandes {\bf listscript }et {\bf clearscript scriptname}
706 permettet d'avoir la liste des scripts
707 definis / supprimer la definition d'un script
708
709\item[\rond] {\bf Autres commandes}
710\begin{itemize}
711\item Instruction {\bf echo } pour ecrire sur cout/stdout
712\item Instruction {\bf echo2file} pour ecrire a la fin d'un fichier
713\item Instruction {\bf sleep nsec} (attente de nsec seconds )
714\item Instructions {\bf timingon , timingoff , traceon , traceoff } \\
715%
716\item Commande {\bf exec commandfilename [arg1 arg2 ... ] }
717\item Commandes {\bf help et help keyword/commandname }
718\item Commandes {\bf listvars , listcommands }
719\item Defintion et liste d'alias : {\bf alias aliasname 'string ' } et {\bf listalias}
720\end{itemize}
[2717]721
722\item[\rond] {\bf Threads d'execution de commandes (Avril 2005)} \\
723Possibilite de lancer des commandes (autre que les commandes
724 de l'interpreteur lui-meme) en thread separe (il suffit de mettre un \&
725 a la fin de la commande) \\
726 Commandes des gestion des threads : \\
727 {\bf thrlist ; cleanthrlist ; cancelthr ThId ; waitthr } \\
728 Attention, la possibilite de lancer des commandes en threads separes ne fonctionne que
729pour des commandes "thread-safe".
730La plupart de nos commandes de piapp sont \\
731 - soit trop rapide, \\
732 - soit non "thread-safe" \\
733
734 \item[\rond] controle d'execution : \\
735Possibilite d'arreter l'execution de l'interpreteur (dans une boucle
736 ou dans dans un fichier .pic ...
737 Utiliser la commande {\bf stop} ou {\tt <Cntrl C>} dans PIConsole
738
[2632]739\end{itemize}
740
741\subsection{Classes CExpressionEvaluator et RPNExpressionEvaluator }
742\begin{itemize}
743\item[\rond] Ajout des classes RPNExpressionEvaluator et CExpressionEvaluator
744d'Žvaluation d'expressions numŽriques en notation polonaise inverse
745et avec la syntaxe C . Utilise dans la classe Commander.
746\item[\rond] Programme test Test/tcmd.cc
747\item[\rond] extrait de {\tt cvs log cexpre.cc }
748{\small \begin{verbatim}
749----------------------------
750revision 1.3
751date: 2004/03/18 18:15:19; author: ansari; state: Exp; lines: +10 -6
752Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
753----------------------------
754revision 1.2
755date: 2004/03/16 08:47:48; author: ansari; state: Exp; lines: +5 -6
756suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
757----------------------------
758revision 1.1
759date: 2004/03/15 22:19:43; author: ansari; state: Exp;
760Ajout fichiers des classes RPNExpressionEvaluator et CExpressionEvaluator (expression arithmetiques) et MAJ du fichier Makefile et objlist.list - Reza 15 Mars 2003
761\end{verbatim} }
762
763\item[\rond] Extrait du message du 3 Mars 2004
764\begin{verbatim}
765Le code est base sur une hierarchie de classe d'expression :
766 Expr -------- NumberExp
767 --------- BinExp ------ AddExp
768 ------ MulExp
769 ------ SubExp
770 ------ DivExp
771 --------- FuncExp
772 --------- CExpressionEvaluator
773
774NumberExp : expression elementaire de nombre, sait actuellement traduire Pi et E
775 tres facile d'ajouter d'autres constantes
776BinExp: Classe d'operations binaires (deux operandes) a+b a-b a*b a/b
777 avec gestion de niveau de priorite des operateurs
778 On peut facilement ajouter d'autres operateurs binaires (par exemple
779 puissance ^ a^b ) - et les priorites relatives seront gerees en principe.
780FuncExp: classe d'expression fonctionnelle, avec n arguments f(x1,x2,...x3)
781 actuellemenent, n=0 a n=3 arguments et quelques fonctions
782 usuelles sont decodes ds cette classe (sin,cos,tan, asin, acos, atan, exp, log,
783 atan2, pow ) - voir ds le code
784
785CExpressionEvaluator : C'est la classe de haut niveau a utiliser -
786 la fonction de decodage de la chaine ASCII (qui utilise
787 les fonctionalites des differentes classes est la dedans
788 et ce n'est pas tres long.
789(+ une classe d'exception specifique).
790\end{verbatim}
791
792\end{itemize}
793
[2717]794\section{LinAlg}
795Extension des fonctionalitŽs de la classe {\tt LapackServer<T>} :
796(Juillet 2004 / cmv , FŽvrier 2005 / Reza)
797\begin{itemize}
798\item[\rond] Introduction de l'interface Lapack d'inversion des matrices symetriques (21/7/2004)
799\item[\rond] Introduction de l'interface Lapack de recherche de valeurs et vecteurs propres
800 (cas general, symetrique et hermitique) (21/7/2004)
801\item[\rond] Introduction d'un fonction d'interface pour le calculateur de workspace
802 (ilaenv\_) (21/7/2004)
803\item[\rond] Ajout prog test Tests/tsttminv.cc + Commentaires sur les diverses methodes et sur les matrices FORTRAN (21/7/2004)
804\item[\rond] Ajout SVD decomp by Divide and Conquer SVD\_DC (23/7/2004)
805\item[\rond] Ajout Least Square with SVD DC
806\item[\rond] Ajout methode calcul de la matrice inverse par Lapack en utilisant la
807resolution de systemes (07/02/2005)
808\end{itemize}
809
[2632]810\section{PI,PIext,piapp}
[2717]811\subsection{PI: Classes modifiees - ameliorees}
812\begin{itemize}
813\item[\rond] {\bf PIImageNavigator } \\
814Ajout de la classe {\tt PIImageNavigator } permmettant de visualiser une image
815avec ses propres widget zoom / global view et colormap. (Fevrier 2005) \\
816Commande {\tt imagnav} ajoute ds piapp/baseexcute.cc . \\
817\item[\rond] Avril 2005 - Amelioration de la classe {\bf PIConsole} \\
8181/Envoi Message PIMSG\_Cancel lors de {\tt <Cntl C>} \\
819 2/ Correction positionnement curseur lors de rappel de commande,
820 Si possible en fin de commande - mais toujours avec le
821 debut de commande visible. \\
8223/ Correction (probable) du petit bug sur les derniers caracteres lors de copier/coller
823 ds PIConsole
824\end{itemize}
825%
826%
[2632]827\subsection{ Codage texte des options graphiques (11 Mars 2004)}
828\begin{verbatim}
829// Methode retournant un vecteur de string a partir des options
830virtual int PIDrawer::OptionToString(vector<string> & opt) const
831qui vient completer les deux methodes
832virtual int PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
833virtual void PIDrawer:: GetOptionsHelpInfo(string& info);
834Ces methodes s'occupent de decoder les options graphiques (et l'aide
835associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
836une serie de chaine de caracteres a partir des options graphiques.
837Il y a aussi la methode
838virtual int PIWdgGen::OptionToString(vector<string> & opt) const
839que j'ai ajoute (rien a faire pour le moment) - ainsi que
840int PIGraphicAtt::AttToStrings(vector<string> & att) const.
841
842Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
843L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
844appelle PIGraphicAtt::AttToStrings() - a laisser donc tel quel.
845
846par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
847PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
848DecodeOptionString(vector<string> & opt, bool ...) est modifie,
849rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
850Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
851derriere (push_back()) afin de pouvoir cumuler les options de base + options
852specifiques.
853
854Comment tester ?
855Pour tester, tu peux utiliser la fenetre des options texte ou j'ai ajoute le bouton
856[GetOption] . Tu peux acceder a cette fenetre a partir de la fenetre des options
857graphiques <Alt>O , ou directement sur un objet de gestionnaire 2D - par
858<Alt>T - <Shift>Button-1 permet de selectionner le drawer actif
859\end{verbatim}
860
861\subsection{ Trace des axes (11 Mars 2004)}
862 Ajouter la possibilite de specifier l'origine (le point de croisement des axes)
863lorsque les axes ne sont pas de type 'box' - classes PIAxes et PIElDrawer.
864
865\subsection{ Selection graphique (souris) du drawer actif (11 Mars 2004)}
866\begin{verbatim}
867J'ai ajoute la methode PIDrawer::GetDistanceToPoint(double x, double y)
868// Renvoie une distance au point x,y
869// 0: au(x) point(s) le(s) plus proche(s) ... 1 au bord xmin/xmax , ymin/ymax
870// La methode par defaut calcule la distance normalisee au point ((xmin+xmax)/2,
871(ymin+ymax)/2)
872 virtual double PIDrawer::GetDistanceToPoint(double x, double y);
873
874ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
875methode + code permettant le test ds PIScDrawWdg.
876(virtual void PIDrawer::WdgCoord2DrwCoord(int x, int y, double& xu ...
877 virtual int PIBaseWdgGen:;FindNearestDrawerId(int x, int y) ...)
878Tu as a t'aoccuper de la methode PIDrawer::GetDistanceToPoint(double x, double y)
879qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
880distance raisonnable au point (x,y) en argument.
881J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
882partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
883completer.
884
885Comment tester ?
886J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
887<Shift>Button-1 choisit le drawer le plus proche (base sur la
888valeur de retour de PIDrawer::GetDistanceToPoint(double x, double y)
889comme drawer actif. Ce drawer est passe en 'highlight' pendant que
890le bouton est appuye.
891\end{verbatim}
892
893\subsection{ Manipulation interactive des drawers (3 Juin 2004) }
894La manipulation interactive des drawers (ˆ l'aide d'un menu) a
895ŽtŽ finalisŽe pour les PIImage PIScDrawWdg PI3DWdg .
896
897\begin{verbatim}
898 o <Alt>D affiche le menu avec les differentes option
899 o Move/Resize: Affichage du rectangle + rectangle milieu
900 (deplacement) + coin bas-droite (deplacement) -
901 clicker ailleurs pour finir
902 o Mouse Select : Le mouse select des drawers est gere
903 maintenant par un PIEventHandler (comme pour Move/ReSize)
904 Drawer actif affiche par le rectangle muni d'un petit coin
905 (petit carre + rond dedans, en bas a droite).
906 Click souris change eventuellement le drawer actif.
907 On termine en clickant ds le petit [carre+rond]
908\end{verbatim}
909
910\subsection{ Traceur de bar-graph (classe PIBarGraph) (3 Juin 2004) }
911Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
912et commande {\tt bargraph} ds PIext/basexecut.cc .
913La commande bargraph ne gere pas encore toutes les possibilites
914de la classe PIBarGraph. \\
915Exemple d'utilisation:
916\begin{verbatim}
917Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4.
918Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4.
919Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4.
920Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
921Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
922Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
923 -10. 15. 2 2. 8. 33. 7 -4.
924Cmd> bargraph 'font=times,bold,16 blue verticalbars fill barvaluelabel packfrac=0.8' \
925 -10. 15. 22. 8. 33. 7 -4.
926\end{verbatim}
927
928\subsection{ Traceur de lignes de texte (classe PITextDrawer) (3 Juin 2004) }
929
930Ajout d'une classe de traceur de lignes de texte (classe {\bf PITextDrawer}) et commande
931{\tt textdrawe}r ds PIext/basexecut.cc . Mais le traceur (et sa commande)
932doivent etre completes. \\
933Exemple d'utilisation:
934\begin{verbatim}
935# On affiche qque chose
936Cmd> openppf demo.ppf
937Cmd> disp h1d
938Cmd> textdrawer 'frame line=solid,2 font=times,bold,16 red inset' \
939 ' Christophe ' ' Reza Ansari' ' SOPHYA '
940\end{verbatim}
941
942\subsection{ Gestion de re-scale-ing des axes en 3D (3 Juin 2004) }
943
944Mise en place complete (?) de la gestion de re-scale-ing des axes en 3D
945avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
946les limites de la boites 3D.
947cela a ete une grosse prise de tete de tout un apres-midi.
948J'ai eu ensuite mal a la tete une partie de la soiree ! \\
949Exemple d'utilisation:
950
951\begin{verbatim}
952
953# On ouvre le fichier demo.ppf
954Cmd> openppf demo.ppf
955Cmd> surf mtx1 'colbr32'
956Cmd> surf mtx1 'colbr32 noautoscale'
957Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
958# Affichage avec superposition
959Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
960Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
961# Ou bien :
962Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
963Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
964
965\end{verbatim}
966\subsection{piapp}
967\begin{itemize}
968\item Le multithreading a ŽtŽ mis en oeuvre dans piapp (janvier 2004).
[2717]969\item PossibilitŽ d'execution de commandes en multithread (Avril 2005)
970\item {\bf BUG } a corriger pour {\tt imagvav}:
971La destruction de l'objet et/ou widget pascorrectement geres -
972provoque des plantages lors de la sortie de l'application.
973
[2632]974\item Extrait de {\tt cvs log pistdimgapp.cc } :
975\begin{verbatim}
[2717]976revision 1.77
977date: 2005/04/27 11:55:00; author: ansari; state: Exp; lines: +26 -10
9781/ Prise en charge de DataTable et SwPPFDataTable pour piapp (NObjMgrAdapter) :
979nomhistadapter.cc et piiinit.cc
9802/ Lecture de tous les objets ds un fichier PPF par NamedObjMgr::ReadAll() pour
981fichier PPF sans nametag.
9823/ Ajout bloc try/catch ds PIStdImgApp::Run() (boucle d'evenements)
983 Reza , 27 Avril 2005
984----------------------------
985revision 1.76
986date: 2005/04/19 09:13:49; author: ansari; state: Exp; lines: +3 -1
987Ajout de l option nodisp ds les affichages des NamedObjMgr, prise en compte de
988<Cntrl C> (Msg_Cancel) pour arreter l'execution de l'interpreteur ds PIStdImgApp
989et remplacement commande breakexe par stop ds PIACmd - Reza 19/4/2005
990----------------------------
991revision 1.75
992date: 2005/04/19 06:56:52; author: ansari; state: Exp; lines: +5 -4
993Remis en marche la possibilite d'execution d'un .pic au lancement de piapp -
994Reza 19/4/2005
995----------------------------
996revision 1.74
997date: 2005/02/18 14:09:47; author: ansari; state: Exp; lines: +62 -37
998Modifications pour l'utilisation viewer PIImageNavigator (ajout commande imagnav
999) - Reza 18 Fev 2005
1000----------------------------
1001revision 1.73
1002date: 2004/11/19 17:41:07; author: ansari; state: Exp; lines: +26 -0
1003Ajout commandes addoval addfoval pour trace d'ellipse - Reza 19/11/2004
1004----------------------------
[2632]1005revision 1.71
1006date: 2004/09/07 07:10:18; author: ansari; state: Exp; lines: +35 -0
1007Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
1008methode process, thread boucle d'evts) - Reza 07/09/2004
1009----------------------------
1010revision 1.70
1011date: 2004/01/06 18:44:56; author: ansari; state: Exp; lines: +11 -1
1012 Suite debugging gestion lock entre threads ds piapp - A l'air de
1013marcher sur OSF1 et Linux ... Reza 06/01/2004
1014----------------------------
1015revision 1.69
1016date: 2004/01/06 17:05:25; author: ansari; state: Exp; lines: +33 -7
1017Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
1018 appele de suite) - Reza 06/01/2004
1019----------------------------
1020revision 1.68
1021date: 2004/01/04 19:02:43; author: ansari; state: Exp; lines: +43 -13
1022Suite des modifs pour piapp multi-threads
10231) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
10242) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
1025la classe elle-meme, a travers le NamedObjMgr
10263) Modification de la boucle d'evenements, avec un thread de reveil
1027periodique
1028 Reza, 4 Janvier 2004
1029\end{verbatim}
1030\item Extrait de {\tt cvs log pistdimgapp.cc } :
1031\begin{verbatim}
1032----------------------------
1033revision 1.62
1034date: 2003/11/27 10:51:58; author: ansari; state: Exp; lines: +45 -20
1035Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
1036mmander - Reza 27/11/2003
1037----------------------------
1038revision 1.61
1039date: 2003/11/26 23:01:55; author: ansari; state: Exp; lines: +20 -1755
1040Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
1041ander (de SysTools) - Reza 26/11/2003
1042----------------------------
1043revision 1.60
1044date: 2003/07/21 21:13:10; author: cmv; state: Exp; lines: +3 -3
1045- introduction notion de numero de ligne dans expression ntuple
1046 modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend)
1047 modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,
1048 PrepareNTExpressionCFile, LinkExprFunc,...)
1049- doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand
1050 (rz + cmv 21/7/2003)
1051----------------------------
1052\end{verbatim}
1053\end{itemize}
1054
1055\section{Documentation (Manual/) }
1056Documentation des classes de SysTools. \\
1057Extrait message du 12 Aout 2004 : \\
1058\begin{verbatim}
1059---> Au sujet de la doc (Manual/)
1060 J'ai installe doxygen sur le Mac, version 1.3.8 -
1061 Il faut updater le fichier de config de depart (dox_sophya.conf)
1062 Pour ma part, j'ai du modifier mkmf (en version privee) -
1063 En effet, il n'y avait pas le program doxysearch - Je ne sais pas si c'est general
1064 ou specifique Mac.
1065
1066 J'ai aussi modifie certaines options de doxygen (en version privee)
1067 EXTRACT_LOCAL_CLASSES --> NO (au lieu de YES)
1068 DETAILS_AT_TOP ---> YES (au lieu de No)
1069 SORT_MEMBER_DOCS ---> NO (au lieu de YES)
1070
1071 Si on es d'accord, on peut modifier ces options ds le fichier dox_sophya.conf et
1072 utiliser la fonction update de doxygen (doxygen -u)
1073\end{verbatim}
1074
1075\section{Plan de modifs pour SOPHYA V 2.0 PI/piapp V 4.0 (Septembre 2003) }
1076\subsection{Gestion du code (Mgr/ ) }
1077\begin{verbatim}
1078
1079 o Chemins/variables d'environnement
1080 - Remplacer DPCDEVREP DPCBASEREP par SOPHYADEVREP et SOPHYABASEREP
1081 - Remplacer EROSCXX par SOPHYACXX (?)
1082 o Simplifier/rationaliser les makefiles
1083 - Mettre les flags de compils pour chaque compilo-systeme dans un fichier au lieu
1084 d'avoir tout Makefile.h
1085 Exemple fichier Mgr/linux_g++.flags
1086 CPPFLAGS = ...
1087 CXXFLAGS = ...
1088 LIBS = ...
1089
1090o Mettre un script pour chercher les lib externes (c-fitsio, FFTW, ...) et creer
1091 eventuellement l'arborescence ExtLibs
1092
1093o Inclure la definition des flags influant sur le code (comme
1094 -DOSF1/Linux/Darwin/IRIX64
1095 SO_BOUNDCHECKING a la fin du fichier machdefs.h que l'on fabriquera a
1096 partir de du machdef_mkmf.h )
1097 PB-> ce fichier deviendra alors dependant du systeme et de l'installation !
1098 Faut-il deplacer alors Include/ sous uname-$EROSCXX (Linux-g++)
1099 ou carrement considerer que la separation pour differents systemes doit se faire au
1100 niveau de SOPHYADEV/BASE/REP ?
1101
1102o Abandonner (?) les regles de compilation par defaut
1103 Inclure dans les Makefile la ligne de commande :
1104 $(OBJ)toto.o : toto.cc toto.h titi.h ...
1105 $(COMPILECXX) -$(CPPFLAGS) $(CXXFLAGS) -c -o $(OBJ)toto.o toto.cc
1106
1107o Garder les Makefile simple (eviter trop de tests et syntaxe complique)
1108
1109\end{verbatim}
1110
1111\subsection{Code/Librairie SOPHYA $\rightarrow$ V 2.0)}
1112\begin{verbatim}
1113
1114o Fichiers PPersist (BaseTools) :
1115 - Ajouter la possibilite d'ecrire des complex(r_4> complex<r_8>
1116 (actuellement c'est ecrit sous forme de 2*r_4 ou 2*r_8)
1117 - Ajouter des tag de positionnement qui pourrait servir au cas
1118 ou on utiliserait le fichier PPF comme fichier de swap
1119 Ces tags ne peuvent pas etre les memes que les name-tag
1120 existant actuellement.
1121 Une utilisation annexe de ces tags peut etre alors un moyen
1122 de verifier que le fichier n'est pas corrompu
1123 Ce tag se presente alors sous forme de
1124 <tag (1 byte)><FilePosition (8 byte, long int)>
1125 On peut alors parcourir le fichier et verifier la coherence de
1126 ces tags.
1127 - Il faut aussi ajouter au niveau de POutPersist et PInPersist
1128 les services pour ecrire et lire une collection de tag de
1129 positionnement, afin qu'un objet puisse utiliser une liste de
1130 tag pour se positionner
1131
1132o BaseTools/ Voir autres remarques ds fichier Manual/sophya_afaire.txt
1133 concernant en particulier les NDataBlock<T> DataBlock<T> ...
1134
1135o Les tableaux : TArray/
1136 - Ajouter une classe de base abstraite GenericMatrix<T>
1137 avec methode d'acces aux elements, nb de lignes, nb de colonnes,
1138 ...
1139 - Introduire les TinyMatrix (TinyMatrix<T, int L, int C>)
1140 avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?
1141
1142 - Introduire des matrices creuses simples SpareMatrix<T>
1143
1144 - Introduire les DiagonalMatrix<T>
1145
1146 Remarque: Les TMatrix TinyMatrix et SparseMatrix heritent de GenericMatrix
1147
1148o HiStats
1149 - Faire une classe SuperNTuple (!), facile a utiliser, sachant swaper sur les
1150 PPF, avec des champs de differents type
1151
1152o IFFTW/
1153 - Passage a FFTW 3.x ?
1154
1155o Voir autres remarques pour l'ensemble des modules ds Manual/sophya_afaire.txt
1156\end{verbatim}
1157
1158\subsection{Code/Librairie PI ($\rightarrow$ V 4.0)}
1159\begin{verbatim}
1160
1161o Menu contextuel pour les Drawers
1162 - Ajouter a PIImage, PIScrDrawWdg(2D), PIDraw3DWdg(3D) un menu obtenu
1163 sur <Shift><Bouton-1> par exemple, avec la liste de tous les Drawers
1164 permettant d'afficher la fenetre des options graphiques, ou le fenetre
1165 des options ou la fenetre des options texte, activer deplacement/resize
1166 des drawers, suppression (delete) ou detach des drawers, et en fonction
1167 du widgets, la fenetre des axes ou de controle d'image
1168
1169o Mettre l'option auto-scale (rapport entre axes X,Y,Z) pour les Drawers3D
1170 verifer/debugger la definition de la boite 3D au niveau des Drawers3D
1171
1172o Traceur d'histos, NTuples, ...
1173 Remplacer le trace des lignes par morceau fait par appel multiples
1174 a DrawLine a un seul appel a DrawPolygon (si les lignes sont connectes
1175 bien sur) --> Ca ameliore sensiblement l'aspect pour le trace en pointille
1176
1177o Ajouter un traceur de Bar-chart 2D OU ApplePie (facile !)
1178 On donne une serie de nombres, serie de couleur, + serie de strings
1179 et on trace alors une sorte d'histo, avec des barres (rectangles) espaces
1180 Ou bien on trace un cercle divise en zones
1181
1182o Ajouter un traceur de Lego-Plot
1183
1184o PIImageWindow (Une fenetre avec une PIImage, un Zoom et une vue globale)
1185 Assemblage
1186
1187o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
1188
1189\end{verbatim}
1190
1191\subsection{(s)piapp ($\rightarrow$ V 4.0)}
1192\begin{verbatim}
1193
1194o Verifier l'interpreteur et introduire le type de variable vecteur
1195 qui peut etre detecte par exemple lors de l'initialisation par set
1196 set a 'Bonjour CMV' # -> variable scalaire
1197 set va [ 12 14 hello ... ] # variable de type vecteur $va[]
1198
1199o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
1200 pour pouvoir plotter des objets, l'un vs l'autre
1201
1202o Separer la classe PIACmd en une classe de base (CShellLikeInterpreter)
1203 (a mettre ds SysTools) et la classe PIACmd a laisser ds PIext
1204
1205o (???) Introduire quelque chose du style
1206 AddDialogue("Cmd", "dialogue-description)
1207 qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir
1208 pour les commandes usuelles (???)
1209
1210o Voir les autres commentaires ds Manual/spiapp_afaire.txt
1211
1212\end{verbatim}
1213
1214
1215\end{document}
Note: See TracBrowser for help on using the repository browser.