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

Last change on this file since 3273 was 3270, checked in by ansari, 18 years ago

Ajout de mesures ds perfmachine.txt (version su seminaire LAL-DevDurable) et mention de modif nt2dcn nt2dci ds modifs.tex , Reza 19/06/2007

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