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

Last change on this file since 3180 was 3176, checked in by ansari, 19 years ago

MAJ fichier modifs.tex, Reza 05/02/2007

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