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

Last change on this file since 3138 was 3137, checked in by cmv, 19 years ago

descip. modifs HistoErr et grphique associe cmv 12/01/2007

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