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

Last change on this file since 3241 was 3229, checked in by ansari, 18 years ago

MAJ modifs.tex avec les changements sophya fait la semaine du 10-13/04/07 , Reza 23/04/2007

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