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

Last change on this file since 4041 was 4041, checked in by cmv, 14 years ago

blabla de cmv pour modifs setp+oct 2011

File size: 74.0 KB
RevLine 
[2632]1\documentclass[twoside,11pt,A4]{article}
[3229]2% \documentclass[twoside,11pt,A4]{report}
[2632]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
[2716]10% \usepackage[light,all,draft]{draftcopy}
[2632]11
12% \usepackage{epsfig}
13\usepackage{graphicx}
14\usepackage{amsmath}
15\usepackage{amssymb}
16
17\setlength{\textwidth}{16cm}
[3735]18\setlength{\textheight}{22 cm}
19\setlength{\topmargin}{-5mm}
[2632]20\setlength{\oddsidemargin}{0.cm}
21\setlength{\evensidemargin}{0.cm}
22\setlength{\unitlength}{1mm}
23
[3536]24\newcommand{\tcls}[1] {#1$<$T$>$}
25\newcommand{\tclsc}[2] {#1$<$#2$>$}
26
[2632]27\newcommand{\rond}{$\bullet \ $}
28\newcommand{\etoile}{$\star \ $}
29\newcommand{\cercle}{$\circ \ $}
30\newcommand{\carre}{$\Box \ $}
31
[3229]32%%%% Pour le decoupage en sections
33% \newcommand{\groupe}[1]{\chapter{#1}}
34% \newcommand{\titre}[1]{\section{#1}}
35% \newcommand{\soustitre}[1]{\subsection{#1}}
36%%%
37\newcommand{\groupe}[1]{\section{#1}}
38\newcommand{\titre}[1]{\subsection{#1}}
39\newcommand{\soustitre}[1]{\subsubsection{#1}}
40%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[2632]42\begin{document}
43\begin{titlepage}
44\begin{center}
[3494]45{\Large \bf SOPHYA Change Log \\[1mm]
46 Liste des modifications de SOPHYA } \\[5mm]
[4039]47{\large Septembre 2003 - Septembre 2011 } \\[25mm]
[2632]48Liste des tags et dates : \\[5mm]
49{\large
50\begin{tabular}{lcl}
51V = 0.727 & \hspace{10mm} & Octobre 1999 \\
[3095]52V = 0.8 & \hspace{10mm} & F\'evrier 2000 \\
53V = 1.1 & \hspace{10mm} & F\'evrier 2001 \\
[2632]54V = 1.2 & \hspace{10mm} & Juillet 2001 \\
55V = 1.3 & \hspace{10mm} & Novembre 2001 \\
[3095]56V = 1.5 & \hspace{10mm} & D\'ecembre 2002 \\
[2632]57V = 1.7 & \hspace{10mm} & Septembre 2003 \\
[2829]58V = 1.9 & \hspace{10mm} & Juin 2005 - SANS tag CVS \\
[3095]59V = 1.9xx & \hspace{10mm} & 09/2005 ... 09/2006 \\
60V = 2.0 & \hspace{10mm} & Septembre 2006 - tag CVS \\
[3301]61V = 2.046 & \hspace{10mm} & Ao\^{u}t 2007 - NO tag \\
[3438]62V = 2.1 & \hspace{10mm} & Novembre 2007 - tag CVS \\
[3459]63V = 2.1xx & \hspace{10mm} & 12/ 2007 - \ldots \\
[3536]64V = 2.125 & \hspace{10mm} & Sept-Oct 2008 - NO tag \\
[3735]65V = 2.140 & \hspace{10mm} & Sept-Oct 2009 - NO tag \\
[3817]66V = 2.150 & \hspace{10mm} & Mars 2010 - NO tag \\
[3856]67V = 2.2 & \hspace{10mm} & Septembre 2010 - tag CVS \\
[4039]68V = 2.2xxx & \hspace{10mm} & Sep 2010 \ldots \\
[4041]69V = 2.211 & \hspace{10mm} & Novembre 2011 - NO tag \\
[2829]70
[2632]71\end{tabular}
[3229]72} \\[8mm]
73%%%%%%
74\begin{tabular}{ll}
75R. Ansari & ansari@lal.in2p3.fr \\
76C. Magneville & cmv@hep.saclay.cea.fr
[3494]77\end{tabular}
78\\[5mm]
79\today
[2632]80\end{center}
81\end{titlepage}
82
83\newpage
84\tableofcontents
85\newpage
86
[3229]87%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
88%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[4039]89\groupe{De V2.2 (Sep 2010) ˆ V2.3 \ldots }
90\titre{BaseTools}
91\begin{itemize}
92\item[\rond] Novembre 2011: NumŽro de version 2.211 - Nov11
[4041]93\item[\rond] Septembre 2011: Ajout de 2 g\'en\'erateurs al\'eatoires. \\
94TinyMT[32/64]RandGen: utilisant le code Tiny Mersenne Twister (TinyMT)
95http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html.
[4039]96\end{itemize}
97
98\titre{TArray}
99\begin{itemize}
100\item[\rond] Novembre 2011: Correction bug au niveau de la gestion mŽmoire pour les constrcuteur de
101copie de TArray/TMatrix/TVector lorsqu'un argument de type BaseArray est passŽ. (bug identifiŽ par JEC)
102lors de l'utilisation de la commande {\tt vecplot} dans piapp. Ces constructeurs par copie ont maintenant
103un argument optionnel permettant de construire des tableaux compactŽs en mŽmoire (packed).
104\begin{verbatim}
105TArray(const BaseArray& a, bool pack=true);
106TMatrix(const BaseArray& a, bool pack=true);
107TVector(const BaseArray& a, bool pack=true);
108\end{verbatim}
109Le code de TArray/TMatrix/TVector a ŽtŽ modifiŽ aussi pour permettre la crŽation par le constructeur de
110copie d'objets non allouŽs, utile en particulier pour uiliser des objets comme
111\begin{verbatim}
112std::vector< TArray<int_4> >
113std::map< std::string, TMatrix<r_4> >
114\end{verbatim}
115\item[\rond] Octobre 2011: Print ds {\tt TArray$<$T$>$::ReadASCII() } soumis au print level global de BaseArray
116(demande JEC)
117\end{itemize}
118
119\titre{FitsIOServer}
120\begin{itemize}
[4041]121\item[\rond] Octobre 2011: FitsABTColRd + FitsABTWriter:
122Suppression du code de lecture bufferis\'ee (cfistio le fait aussi bien sans complication de code - test\'e!).
123Ajout lecture/\'ecriture des bintables dont les \'el\'ements sont des vecteurs de nombres.
124Ajout lecture/\'ecriture de bintable de complexes et de cha\^{i}nes de caract\`eres.
[4039]125\end{itemize}
126
127\titre{SysTools}
128\begin{itemize}
129\item[\rond] Septembre 2011: Corrections dans commander.cc des bugs de {\bf forinfile} et dans la gestion des
130boucles imbriquŽes (bugs trouvŽs par JEC en Mai 2011). DiffŽrentiation instruction break et breakall, pour
131sortir de la boucle courante ou de toutes les boucles. Reste ˆ modifier la gestion des instructions {\bf if}
132pour des tests multiples avec et/ou.
133\end{itemize}
134
135
136
137%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
138%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[4040]139\groupe{De V2.1 (Dec2007) ˆ V2.2 (Sep2010) }
[3580]140\titre{Global}
141\begin{itemize}
142\item[\rond] Fev 2009 : Changement de {\tt char *} en {\tt const char *} dans le code pour
143Žviter les message {\it deprecated} du compilateur lors de l'utilisation de cha”ne de caractre constante.
144\end{itemize}
145
[3754]146\titre{BuildMgr}
147\begin{itemize}
[3856]148\item[\rond] Juillet/Aout 2010 : Ajout des options et arguments suivants au script configure
149\begin{verbatim}
150 -arch32 de compilation en 32 bits pour linux
151 -followlink pour suivi des liens symboliques lors des recherches
152 de fichiers par find. Pas de suivi des liens par defaut
153 -epip pour chemin de librairies et include file PI (Motif ...)
154 -wgrdl activation compil et link piapp avec GNU-readline
155\end{verbatim}
156 {\tt -arch32} de compilation en 32 bits pour linux
[3754]157\item[\rond] Mars 2010 : Ajout de l'option {\tt -ldble128} dans le script configure pour la gestion conditionnelle
158du flag compilation {\bf SO\_LDBLE128 } dans machdefs.h. Ce flag active la dŽclaration des nombres en
159virgule flottant ˆ 128 bits ({\tt r\_16}).
160\end{itemize}
161
[3536]162\titre{BaseTools}
163\begin{itemize}
[3754]164\item[\rond] Mars 2010 : Prise en charge de float 128 bits ({\tt r\_16}) et
165{\tt complex$<$ r\_16 $>$} dans les NDataBlock et PPersist.
166Compilation conditionnelle contr™lŽe par le flag {\bf SO\_LDBLE128 }
[3614]167\item[\rond] Avril 2009 : Introduction de la classe RandomGeneratorInterface, DR48RandGen, ThSDR48RandGen
168 et FMTRandGen - La classe ThSDR48RandGen RandomGenerator
[3723]169\item[\rond] Mars 2009 : Les exceptions sophya (PExceptions ...) hŽritent de de std::exception (methode what())
[3536]170\item[\rond] Oct 2008 : Suppression des flags {\tt OS\_xxx (OS\_MACOSX OS\_LINUX OS\_AIX ...) }
171de machdefs\_mkmf.h et ajout constructeur MuTyV(uint\_4, uint\_8)
172\end{itemize}
173
[3494]174\titre{TArray}
175\begin{itemize}
[3817]176\item[\rond] Juillet 2010 : Introduction des classes de matrices carrŽes spŽciales (SSQM : Special Square Matrix).
177Suppression de la classe {\bf TriangularMatrix$<$T$>$} et du fichier {\tt triangmtx.h }.
178Voir ci-dessous pour plus d'information.
179
[3754]180\item[\rond] Mars 2010 : Prise en charge de float 128 bits ({\tt r\_16}) et
181{\tt complex$<$ r\_16 $>$} dans les TArray, TMatrix et TVector.
182 Compilation conditionnelle contr™lŽe par le flag {\bf SO\_LDBLE128 }
183
[3580]184\item[\rond] Fev 2009 : Correction du bug de SetTemp() intempestive provoquant sur-Žcriture de
185tableaux lors d'opŽration avec des SubArray.
[3494]186\item[\rond] Jan 2008 : Correction bug de protection dans TArray::Resize() \\
187(lors de resize avec ndim=BASEARRAY\_MAXNDIMS = 5)
188\end{itemize}
189
[3817]190\soustitre{SSQM: Special Square Matrix}
191Classes de matrices carrees speciales avec la hiŽrarchie dŽcrite ci-dessous. Ces classes ont ŽtŽ dŽveloppŽes au
192printemps 2009 et introduites dans SOPHYA ˆ l'ŽtŽ 2010.
193\begin{verbatim}
194AnyDataObj -- SpecialSquareMatrix<T> -- DiagonalMatrix<T>
195 -- LowerTriangularMatrix<T>
196 -- SymmetricMatrix<T>
197+ classe gestionnaire PPF FIO_SpecialSquareMatrix<T>
198\end{verbatim}
199
200Fichiers ajoutŽs dans TArray/ : \\
201{\tt spesqmtx.h spesqmtx\_tsnl.h diagmtx.h trngmtx.h symmtx.h fiospsqmtx.h} \\
202{\tt spesqmtx.cc fiospsqmtx.cc } \\
203Fichier {\tt triangmtx.h } a ŽtŽ supprimŽ (classe {\bf TriangularMatrix$<$T$>$ }
204remplacŽe par {\bf LowerTriangularMatrix$<$T$>$} . \\
205Programme test {\tt tssqmx.cc} ajoutŽ dans le module Tests/.
206Pour vŽrifier le code, faire : \\
207{\tt csh> tssqmx d ( tssqmx t , s ) } \\[1mm]
208Pour ajouter d'autres classes de matrices carrŽes:
209\begin{enumerate}
210\item DŽclarer si besoin le type ds enum SpSqMtxType (fichier spesqmtx.h)
211\item Recopier diagmtx.h en mtxnouvcarre.h (enfin, le nouveau nom de fichier/classe)
212\item changer le nom de la classe ds mtxnouvcarre.h
213\item Repasser ˆ travers les mŽthodes et constructeurs en particulier SetSize() et les
214accs aux ŽlŽments
215\item Modifier ou simplement supprimer les mŽthodes (et opŽrateurs) de multiplication de matrices
216\item Dans le fichier fiospsqmtx.cc, prŽvoir le dynamic\_cast / new $<$MatriceCarre$>$ dans :
217\hspace{5mm} FIO\_SpecialSquareMatrix(const SpecialSquareMatrix$<$T$>$ \& obj) \\
218\hspace{5mm} FIO\_SpecialSquareMatrix$<$T$>$::ReadSelf(PInPersist\& is)
219\end{enumerate}
220
221
[3513]222\titre{SkyMap/Samba}
[3509]223\begin{itemize}
[3817]224\item[\rond] Juillet 2010 : Adaptation ˆ la nouvelle classe {\bf LowerTriangularMatrix$<$T$>$}
[3548]225\item[\rond] Sep 2008 : Nettoyage cosmetique ds lambdaBuilder.h .cc - {\bf A FAIRE :} rendre
[3536]226LambdaLMBuilder thread-safe.
[3513]227\item[\rond] Aout 2008 {\bf (Samba)}: Nettoyage cosmetique ds alm.h .cc, utilisation de la
228classe RandomGenerator par la classe Alm$<$T$>$. Possibilite de specifier un objet
229RandomGenerator au constructeur de la classe SphericalTransformServer. Adaptation
230programme PrgMap/cl2map.cc.
231\item[\rond] Aout 2008 {\bf (SkyMap)} : modifs/correction ds la classe SphereECP$<$T$>$.
[3509]232Ajout m\'ethode \\
233{\tt SphereECP<T>::ExtractPartial() } \hspace{5mm} et correction calcul phi ds \\
234{\tt SphereECP<T>::PixThetaPhi() } et modif programme Tests/tsphereecp.cc
235\end{itemize}
236
[3536]237\titre{NTools}
238\begin{itemize}
[3856]239\item[rond] Aout 2010 : Ajout de la classe d'interpolation lineaire {\bf SLinInterp1D} et programme
240test Tests/tstinterp.cc
[3536]241\item[\rond] Oct 2008 : Instanciation explicite des classes
242\tcls{Image} et \tcls{ArrayFitter} pour T=uint\_4, uint\_8
243\end{itemize}
244
[3580]245\titre{SysTools}
246\begin{itemize}
[3723]247\item[\rond] Dec 2009: Introduction des classes {\bf ParallelTaskInterface, ParallelTaskFunction}
248et {\bf ParalExThread, ParallelExecutor} afin de faciliter l'Žcriture de code avec exŽcution de
[3817]249fonctions en parallle dans des threads. \\
250Voir les fichier {\tt SysTools/parlex.h .cc} et {\tt Tests/tparlex.cc}.
[3580]251\item[\rond] Fev 2009 : AmŽlioration conversion double->string pour Žviter la perte de
252prŽcision lors des Žvaluations avec les variables de l'interprŽteur (commander.cc).
253\item[\rond] Fev 2009 : AmŽlioration de la classe {\bf Timer}, prŽcision time-elapsed
[3817]254par utilisation de \\
255{\tt gettimeofday(...)} au lieu de {\tt time()}, \\
[3580]256amŽlioration calcul temps cpu pour jobs tres long (lorsque TCPU dŽpasse le maximum $2^{32}$.
257\end{itemize}
258
[3459]259\titre{FitsIOServer}
260\begin{itemize}
[3494]261\item[\rond] Avril 2008 : Ajout m\'ethodes de lecture/Žcriture tableaux avec offset: \\
262{\tt FitsArrayHandler::ReadAtOffset() , WriteAtOffset() } \\
263$\longrightarrow$ PossibilitŽ de lecture/Žcriture de tableaux par morceaux
264de HDU IMAGE
[3459]265\item[\rond] Jan 2008 : Ajout {\tt FitsInOutFile::SetBScaleBZero(...)} et type LONGLONG
266pour HDU\_Image. Enregistrement conditionnel handler TArray$<$int\_8$>$.
267\end{itemize}
268
269\titre{PI/piapp}
[3735]270{\bf IMPORTANT }\\
271{\bf A1} Reste a faire : debug / prise en charge des images avec tables de couleurs de plus de
272256 entrees dans fichier postscript. \\
273{\bf A2} Utiliser la classe PICMapDrawer dans le widget PICMapView et ajouter la possibilitŽ d'afficher une table
274de couleur dans PIScDrawWdg.
[3459]275\begin{itemize}
[3735]276\item[\rond] Introduction de la classe classe {\bf PICMapDrawer} et ajout de la possibilitŽ d'afficher
277la table de couleur dans la fentre principale PIImage. L'attribut graphique {\tt showcmap} contr™le
278l'affichage de la table. \\
[3738]279{\tt showcmap , showcmap=no , showcmap=top , \\
280showcmap=no/top/right/bottom/left/horiz/vert }
[3723]281\item[\rond] Dec 2009: Ajout des options d'affichage : \\
282{\tt cdreal cdimag cdphase cdmod (=defaut) cdmod2 } \\
283pour les tableaux 2D en mode image ou surface. Fichiers modifiŽs:
284nomtarradapter.cc , nomtmatvecadapter.cc , pitvmaad.cc , pitvmaad.h.
[3580]285\item[\rond] Ajout de gestionnaire d'Žvenements VisibilityChange ds pixtbase.cc pour gŽrer les
286problmes de fentre PIBaseWdg non rafra”chie - suppression de {\tt XFlush()/usleep() }mis
287dans piwindowx.cc en Aout 2007
[3564]288\item[\rond] Jan 2009 {\bf PI , PIext} Extension de la logique AutoFontSize (choix automatique de
289la taille de fonte comme fraction de la taille du widget a tous les PIDrawer. Valeur globale par defaut
290en variable et mŽthode statique de PIDrawer (=0.04). Changement possible par variable d'environnement
291{\bf PIDEFAFSZFRAC} et la commande piapp {\bf setdefafsz }.
[3548]292\item[\rond] Nov 2008 {\bf PIext} Ajout commande {\bf pirgbdisp} - Lecture et affichage d'image RGB
293(objet PIPixRGBArray)
294\item[\rond] Nov 2008 {\bf PI} Optimisation classe LUT, introduction typeExp
[3536]295\item[\rond] Oct 2008 {\bf PIext} : Instanciation explicite et enregistrement des adaptateurs NObjMgrAdapter pour TArray, et TMatrix/TVector $<$T$>$ pour T=uint\_4, uint\_8
[3548]296\item[\rond] Sep-Nov 2008 {\bf PI} : Modifs importantes pour permettre la visalisation des images
[3536]297ou photos couleurs (RGB) ds piapp :
298\begin{enumerate}
299\item Introduction des classes auxiliaires PIPixColIdx , PIPixRGB , PIPixRGBArray
[3548]300(nouveau fichier pipixutils.cc .h) pour support de tables de couleurs avec $>$ 256 couleurs.
301\item Ajout de tables de couleurs RGB (RGB216CM , RGB512CM, RGB4096CM, RGB32768CM)
[3536]302pour representation d'images/photos couleurs RGB
303\item Extension et modification de la classe P2DArrayAdapter, introduction de la methode
304P2DArrayAdapter::MeanVal()
305\item Modif de la classe LUT pour introduction typeRGB et methode LUT::ApplyRGB()
306\end{enumerate}
[3481]307\item[\rond] Avril 2008 {\bf (PI)}: Ajout d\'ecodage options sens des axes X,Y ˆ PiScDrawWdg. \\
308{\tt revax = axerl } (kAxeDirRtoL) \hspace{5mm} {\tt axelr} (kAxeDirLtoR) \\
309{\tt revay = axeud} (kAxeDirUpDown) \hspace{5mm} {\tt axedu} ((kAxeDirDownUp)
[3459]310\item[\rond] Fevrier 2008 {\bf (PI)}: Nouvelle m\'ethode de calcul de limite de LUT\\
311On garde les $frackeep$ valeurs centrales des pixels, cad on vire les $(1-frackeep)/2$
312valeurs les plus petites et les $(1-frackeep)/2$ valeurs les plus grandes.
313\begin{verbatim}
314 autolut=hisrng,frackeep,min,max
315\end{verbatim}
[3481]316\item[\rond] Janvier 2008 {\bf (ProgPI)} Ajout de l'option {\tt -nobsz} ˆ la commande {\bf readfits}
317et ajout de la commande de lecture array from fits : {\bf rdfitsarr}
[3459]318\end{itemize}
319
[3402]320\groupe{De V2.0 (Sep2006) ˆ V2.1 (Nov2007) }
[3229]321\titre{BuildMgr}
[2905]322\begin{itemize}
[3402]323\item[\rond] Nov 2007 : configure detecte Linux 64 bits {(\tt -> /usr/X11R6/lib64)}
324et correction bug lors de l'execution de sed pour la creation de sophyamake.inc
325{\tt AIX, -X 64 }.
[3373]326\item[\rond] Oct 2007 : Ajout flag {\tt -alsofftwfloat} au script pour compilation/link
327methodes float (r\_4) de FFTWServer.
[3229]328\item[\rond] Avril 2007 : AmŽlioration du script configure, qui prend en charge
329la gestion des diffŽrents flags de compilation (mis dans fichier machdefs.h gŽnŽrŽ
330ou dans sophyamake.inc (pour les flags du compilateur) - Nettoyage du fichier
331BaseTools/machdefs\_mkmf.h et des fichiers osname\_compilo.inc
332\begin{verbatim}
333csh> cd BuildMgr/
334csh> ./configure -h
335configure [-sbase SOPHYABASE] [-scxx SOPHYACXX] [-incln]
336 [-minc mymake.inc] [-compopt 'cc/cxxOptions']
337 [-arch64] [-sasz64] [-nofpic] [-nothsafe] [-boundcheck] [-sodebug]
338 [-extp dir1 -extp dir2 ...] [-extip dir1 -extip dir2 ... ]
339 [-extlp dir1 -extlp dir2 ... ]
340 [-noextlib] [-noext fits] [-noext fftw]
341 [-noext lapack] [-noext astro]
342 [-noPI] [-slballinone]
343 [-usefftw2 -uselapack2]
344 (See SOPHYA manual/web pages for a detailed description
345 of configure options)
346\end{verbatim}
347\end{itemize}
348
349%%%%%%
350\titre{BaseTools}
351\begin{itemize}
[3402]352\item[\rond] Novembre 2007 : Ajout de la classe de gŽnŽrateur alŽatoire
353thread-safe {\bf RandomGenerator } - fichiers {\tt stsrand.h .cc} -
354Ajout du programme {\tt Tests/tmtrnd,3.cc }.\\
355Correction , protection I/O PPF pour NDataBlock de taille nulle.
[3301]356\item[\rond] Aout 2007 : Passage numŽro de version SOPHYA V=2.135
357ˆ V=2.046 - Les numŽros V=A.B sont dŽsormais rŽservŽs aux versions
358avec un tag cvs.
359\item[\rond] Avril 2007 : {\bf ThreadSafe } \hspace{5mm}
[3229]360Les opŽrations de partage de rŽfŽrence rendues thread-safe pour les classes
361{\bf NDataBlock$<$T$>$ , SegDataBlock$<$T$>$, SwSegDataBlock$<$T$>$}
362\begin{itemize}
363\item Ajout de la classe {\bf ThSafeOp} avec les mŽthodes {\tt lock() , unlock() } utilisant
364un mutex.
365\item Ces mŽthodes peuvent tre rendues transparentes (sans effet) en activant le flag \\
366{\tt SO\_NOTHSAFE} (option -nothsafe de configure)
367\item Cette protection / synchronisation semble tre efficace en ce qui concerne les
368constructeurs de copie et l'extraction de sous-tableaux pour TArray, TMatrix,TVector.
369(programme de vŽrification Tests/zthr.cc - option sync ).
370\item En ce qui concerne les classes SegDataBlock , SwSegDataBlock, l'efficacitŽ
371de la protection n'a pas ŽtŽ testŽe. Les opŽrations d'Žcriture sur les DataTable
372devront aussi tre protŽgŽes pour l'utilisation multi-thread.
373\end{itemize}
374\item[\rond] Avril 2007 : Nettoyage du fichier machdefs\_mkmf.h, suppression des flags
375de compilation optionnelle MacOS 8.x 9.x / compilo CodeWarrior
376\item[\rond] Fev 2007 : Ajout methode NDataBlock::RenewObjId() , et Dealloc() (alias de Delete())
377et correction bug ds SwSegDataBlock::GetCstSegment()
378\end{itemize}
379
380%%%%%%
381\titre{TArray}
382\begin{itemize}
[3373]383\item[\rond] Oct 07 : MŽthode TArray::SumX2() renommŽe en SumSq(), Norm2() appelle SumSq() sauf pour les tableaux complexes, o on calcule une norme rŽelle positive (Sum[el x conj(el)).
[3229]384\item[\rond] Avr 07 : Constructeur de copie et extraction de sous-tableaux rendus thread-safe
385(voir ci-dessus)
386\item[\rond] Jan 07 : Ajout classes/methodes de cast de contenu - sans conversion (fichier arrctcast.h)
387\item[\rond] Fev 07 : Ajout methode TArray::RenewObjId() (reecriture PPF), et ZeroSize()
388(deallocation tableau / le rendre vierge=sans taille)
389\end{itemize}
390
391%%%%%%
392\titre{HiStats}
393
394\begin{itemize}
[3402]395\item[\rond] Novembre 2007 : Les methodes de remplissage de NTuple {\tt Fill() }
396et de DataTable, SwPPFDataTable {\tt AddRow() }, ainsi que
397{\tt BaseDataTable::GetRow() } rendues thread-safe. \\
398Activation avec la methode {\tt SetThreadSafe(bool fg=true) }
399pour chaque NTuple ou DataTable / SwPPFDataTable. Ajout du programme Tests/tmtdt.cc.
[3286]400\item[\rond] Janvier 2007 : Remaniement de la classe HistoErr: elle n'h\'erite plus
401de Histo et devient stand-alone avec des TVector comme support des donne\'ees. \\
402Introduction de la classe Histo2DErr qui fait la meme chose que HistoErr
403mais \`a $2$ dimensions. \\
404Modifs des adaptateurs: NOMAdapter\_Histo ne contient plus HistoErr,
405et NOMAdapter\_HistoErr, NOMAdapter\_Histo2DErr sont cr\'ees dans PIext.
406
[3229]407\end{itemize}
408
409%%%%%%
410\titre{SkyMap}
411
412\begin{itemize}
[3301]413\item[\rond] Aou 2007 : Correction de signe dans {\tt LocalMap::PixToSphereC()} suite message de
414S. Plaszczynski du 12/07/07
[3229]415\item[\rond] Fev 2007 : Ajout methode RenewObjId() (reecriture PPF) pour les cartes spheriques
416et localmap
417\end{itemize}
418
419%%%%%%
[3280]420\titre{SysTools}
421
422\begin{itemize}
423\item[\rond] Jul 2007 : Ajout d'acces au temps CPU et elapsed ds la classe Timer - et
424ajout test specifique dans Tests/tcmd.cc {\tt (tcmd timer)}. \\
425{\tt Timer::TotalElapsedTime() , PartialElapsedTime() , TotalCPUTime() , PartialCPUTime() }
426\end{itemize}
427
428%%%%%%
[3229]429\titre{FitsIOServer}
430
431\begin{itemize}
[3402]432\item[\rond] Nov 2007 : propagation des modifs BaseDataTable-Thread-safe dans
433SwFitsDataTable. Mais les SwFitsDataTable NE sont toujours pas thread-safe.
[3229]434\item[\rond] Jan/Fev 2007 : Passage a la version LONGLONG ( fits\_xxxll ) permettant
435la gestion de tailles $ > 2^{32} $
436\end{itemize}
437
[3373]438\titre{IFFTW}
439
440\begin{itemize}
[3402]441\item[\rond] Nov 2007 : Correction resize tableau de sortie {\tt FFT(complexe -> reel)} multi-dim.
[3373]442\item[\rond] Oct 2007 : Ajout version float (r\_4) des methodes {\tt FFTForward} et {\tt FFTBackward}
443a la classe FFTWServer. (compilation sous condition et flag -alsofftwfloat du script configure)
444\end{itemize}
445
[3229]446%%%%%%
447\titre{PI/piapp}
448\begin{itemize}
[3457]449%%%
[3438]450\item[\rond] Novembre 2007 {\bf PIext/ProgPI}: \\
451- Ajout commande de trace d'ellipse d'erreur {\tt errorellipse} \\
452- Axes en degres (0..360, -90..90) pour la projection molleweide et adaptation de la commande {\tt mollgrid}. Suppression de mollgridsph. \\
453- Ajout fonctions tetphi2mollX/Y() et longlat2mollX/Y() ds les fichiers d'expressi
454on ntuple generes par piapp pour trace sur projection de type molleweide. \\
455- Ajout flag [-s] a openppf . openfits/savefits comme alias de readfits/writefits.
456- Verification arret thread Reveil avant destruction de l'objet.
[3373]457\item[\rond] Octobre 2007 {\bf (PI/PIext)}: Ajout methodes de redirection stdout/stderr vers un objet PIConsole,
458a travers un fichier disque (fichiers PI/piapplx.h .cc) avec possibilite de recopie sur stdout/stderr
459original (terminal) - en plus d'affichage sur PIConsole. \\
460+ Adaptation au niveau de PIext/pistdimgapp.h .cc et ProgPI/piapp.cc \\
461+ la redirection passe par les fichiers PIATmp\_xxx/sout.log /serr.log \\
462+ le flag (s)piapp -doublered permet la redirection avec recopie sur terminal
463%%%
464\item[\rond] Octobre 2007 {\bf (PIext)}: Correction/protection au niveau de gestion des locks de mutex
465(classes NamedObjMgr , PIStdImgApp) pour eviter les blocages de l'application sous certaines
[3402]466conditions ( lors de l'affichage de la fenetre de gestion d'objets et lecture PPF). \\
[3373]467Modification des classes NamedObjMgr . ObjMgrWind, la methode
[3402]468{ \tt UpdateObjMgrWindow() } de NamedObjMgr en particulier. \\
469Ajout de la classe {\bf SOpExObj} (ds piacmd.h piacmd.cc) pour executer
470- de maniere asynchrone -
471les commandes display,print \ldots sur les objets, initiees au niveau
472de la boucle d'evenements (fenetre ObjMgrWind).
[3373]473\item[\rond] Octobre 2007 {\bf (PIext)}: Ajout attributs graphiques \\
474{\tt samew=WdgName } specification de widget cible pour trace en superposition \\
475{\tt wname=Nom } Pour specifier un nom de widget (= nom d'objet par defaut) \\
476{\tt inset=fx1,fx2,fy1,fy2 } pour specifier la position du drawer en inset (medaillon)
477\item[\rond] Octobre 2007 {\bf (PIGcont/PIext)}: Codage mŽthode PIContourDrawer::GetOptionsHelpInfo() pour le traceur de contour. \\
478Ajout accs aux attributs {\tt min max minmax sumsq norm2 } aux niveau des adaptateurs
479des objets de type TArray, TMatrix, TVector ({\tt \$\{arrName.sumsq\} \$\{arrName.min\} } \ldots).
[3301]480\item[\rond] Aout 2007 {\bf (PI)}: Nouvelles mŽthodes de calcul de limite de LUT
481dans PIImage (AutoLut) et ajout du dŽcodage de l'option {\tt autolut=alt[,ns[,minp,maxp]]}.
482Si {\tt minp,maxp} spŽcifiŽs, seuls les pixels entre {\tt minp <= pixval <= maxp}
483sont utilisŽs pour le calcul des limites.
484\begin{verbatim}
485 autolut=minmax,frac Fraction de la dynamique totale
486 autolut=meansig,ns min=mean-ns*sigma , max=mean+ns*sigma
487 autolut=histail,ns Queue de l'histo des pixels
488 autolut=hispeak,ns Pic de l'histo des pixels
489\end{verbatim}
490%
491\item[\rond] Aout 2007 {\bf (PI)}: Contournement d'un problme d'Žvenements X expose
492perdu - apparu avec des versions rŽcentes du serveur XFree ou le serveur X sur Linux
493ou une combinaison des deux. RŽsultat, contenu non affichŽ lors d'une crŽation de fentre
494suivi d'un ajout de PIBaseWidget (sauf PIImage) et plantage lors du click dans la fentre.
495Correction: Ajout de {\tt XFlush() + usleep(5000)} (5 $\mu$s).
[3270]496\item[\rond] Juin 2007 {\bf (PI/PIext)}: Ajout des mŽthodes
497{\tt PIGraphicAtt::ColNameToColor() , ColIndexToColor()} et possibilitŽ d'utiliser le contenu
498d'une colonne d'une table comme nom de couleur ou numŽro de couleur pour le tracŽ
499des markers par PINTuple {\tt PINTuple::SelectColorByName() , SelectColorByIndex()}.
[3280]500Ajout des commandes {\bf nt2dcn} et {\bf nt2dci} et {\bf plot2dc} ds piapp.
[3229]501\item[\rond] Avril 2007 {\bf (PI)}: La source des problmes sur MacOS/PowerPC (G4/G5)
502et AIX (architecture Power) a finalement ŽtŽ identifiŽ et corrigŽ/
503Parmi ces problmes: des pull-down menus mal placŽs (MenuBar), ou encore des
504dysfonctionnement de boutons dans les fentres de dialogues. \\
505Source et correction: \hspace{5mm} {\tt XtMoveWidget / XtResizeWidget} remplacŽ par \\
506\hspace*{10mm} {\tt XtMakeGeometryRequest}
507\item[\rond] Avril 2007 {\bf (PIext/piapp)}:
508\begin{itemize}
509\item Ajout de la classe {\bf NOMAdapter\_DVList}
510pour la prise en charge des objets DVList.
511Accs aux variables par {\tt \$\{dvlName.varName\} }
[3438]512\item Accs ˆ l'objet DVList attachŽ aux TArray, TMatrix, DataTable et NTuple par \\
[3229]513\hspace*{5mm} {\tt \$\{objName.info.varName\} }
514\item L'adaptateur de DataTable permet aussi d'accŽder aux lignes de la table par \\
515\hspace*{5mm} {\tt \$\{tableName.row.num\} }
516\item Prise en charge de la classe {\tt Image<T>} par l'adaptateur des matrices
517{\tt NOMAdapter\_TMatrix<T> } au lieu de l'adaptateur spŽcifique
518{\tt NOMAdapter\_Image<T> }
519\end{itemize}
[3301]520\item[ \rond] Janvier 2007 {\bf (PIext)}: modification des trac\'es des histogrammes PIHisto.
[3229]521La classe PIHisto prend en entr\'ee un wrapper P1DHistoWrapper.
522Les wrappers HistoWrapper et HistoErrWrapper sont cr\'ees.
523Ainsi les HistoErr peuvent \^etre dessin\'es sous forme d'histogrammes.
524Mise en place des options graphiques permettant de dessiner les
525valeurs (``val''), erreurs (``err'') et le nombre d'entr\'ees par bin (``nb'')
526pour les HistoErr. Idem pour les versions $2$ dimensions.
527\end{itemize}
528
529%%%%%%%%
530\titre{Documentation (Manual/) }
531\begin{itemize}
532\item[\rond] Jan 2007 : Ajout fichier de mesure de performances comparees entre
533differentes processeur / OS / compilateur {\tt perfmachine.txt }
534\end{itemize}
535
536
537%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
538%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[3301]539\groupe{De V1.7 (Sep2003) ˆ V2.0 (Sep2006) }
[3229]540\titre{BuildMgr}
541\begin{itemize}
[2971]542\item[\rond] Juin 2006 : Ajout targets cleanobj prgall tests prgutil
543\item[\rond] Avril 2006 : suppression de libextsophya.so pour fabriquer libPI.so
544(PIext rendu independant de FitsIOServer)
545\item[\rond] Dec 2005/Jan 2006 : Portage sur AIX - xlC
[2905]546\item[\rond] Dec 2005 : check Compil avec icc , compil avec gcc-4
547\item[\rond] Avril-Mai 2005 : Introduction de la nouvelle version de
[2829]548scripts de gestion du code - avec un script principal configure. \\
549Variable d'environnement {\bf SOPHYABASE } - \\
550Pour les makefiles, l'ensemble des dŽfinitions se trouve dans : \\
551SOPHYABASE/include/sophyamake.ic \\
[2905]552\end{itemize}
[3176]553
[3229]554%%%%%%
555\titre{BaseTools}
[3176]556
[3229]557\soustitre{Modifs}
[3176]558
[2829]559\begin{itemize}
[3050]560\item[\rond] Jun/Jul 2006 : Amelioration gestion initialiseur modules \\
561- Ajout methodes statique {\tt RegisterModule(const char* name, double version)
562ListModules(ostream\& os) } a la classe de base SophyaInitiator. \\
563- Enregistrement des modules avec leur nom et un numero de version par module,
564independante du numero de version SOPHYA \\
565- le programme scanppf peut donner la liste des modules enregistrees et leur numero
566de version.
[2835]567\item[\rond] Octobre-Novembre 2005 : \\
[2829]5681/ Correction bug TimeStamp::ToDays() + petites amelioration \\
5692/ Prise en compte du type TimeStamp dans MuTyV (sous forme de double en interne) \\
5703/ Adaptation DVList a modifs MuTyV (typ TimeStamp) et R/W PPersist \\
[2911]5714/ Gestion format YYYY-MM-DDThh:mm:ss par TimeStamp \\
[2835]5725/ Gestionnaire PPersist pour TimeStamp
[2829]573%
574\item[\rond] Septembre 2004 - {\bf Namespace SOPHYA } \\
[2632]575Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h -
576Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
577ainsi que lors de la gŽnŽration automatique du code (runxx, c++exec)
[2829]578\end{itemize}
[2632]579
[3229]580\soustitre{PPF}
[2632]581\begin{itemize}
[3229]582\item[\rond] Avril 2005 - Ajout de wrapper de lecture/ecriture PPF pour les vecteurs de
583la librairie standard (classe PPFWrapperSTLVector$<$T$>$ ) fichier ppfwrapstlv.h
584\item[\rond] Ajout de la classes utilitaire PPF\_TPointer\_IO$<$T$>$
585(fichiers ppftpointer.h .cc)
586\item[\rond] Amelioration de l'impression ds AnalyseTags (ppfbinstream.cc)
587\item[\rond] scanppf.cc revision 1.8 (2005/04/05)
588modification programme scanppf: ajout option -lh -lho pour lister les classes PP
589ersist handler
[2716]590\item[\rond] DŽcembre 2003 (9/12/2003) Fin de l'ensemble des modifs pour les
[2632]591PPF V3 \\
592- Ecriture nombre complexes r4, r8 avec tag spŽcifique. \\
593Tag de positionnement sous forme de \\
594\centerline{\tt <tag (1 byte)><FilePosition (8 byte, long int)> } \\
595- Ecriture PosTagTable \\
596- Ecriture Statistiques en fin de fichier \\
597- Voir BaseTools/ppfbinstream.h: \\
598\centerline{\tt GotoPositionTag(int\_8 pos) , }
599\centerline{\tt GetPosTagTable(...) }
600\centerline{\tt int\_8 WritePositionTag() PutPosTagTable(...) }
601- Ajout programme de test Tests/ppftswap.cc
[3229]602\item[\rond] DŽcembre 2003 - Ajout ppfbinstream.h .cc \\
603Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
604\item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
605Classes RawInOutStream , RawInFileStream , RawOutFileStream
[2716]606
[2632]607\end{itemize}
608
[2716]609
[3229]610\soustitre{Nouvelles classes}
[2717]611\begin{itemize}
612\item[\rond] Ajout de la classe {\bf TimeStamp} pour la manipulation de date et heure -
[3301]613calcul de duree. - Ajout du prog. test Tests/ttimestamp.cc (Mars 2005)
[2717]614\item[\rond] { \bf Segmented Data Block :} \\
[2716]615Mars-Avril 2005: Introduction des classes similaires aux NDataBlock, mais permettant
616de gerer des blocs de donnees segementes, pour tout type de donnees, de structures
[2717]617et de classes (template pour tout type T).
618\begin{enumerate}
619\item Ajout de la classe {\tt SegDataBlock<T>} (et l'interface { \tt SegDBInterface<T>} )
[2716]620pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
[2717]621gestionnaire PPF {\tt FIO\_SegDataBlock<T>} (fichier fiosegdb.h )
622\item Ajout de la classe {\tt SwSegDataBlock<T>} (Data bloc segmente avec gestion
623de swap) et la classe swapper PPF {\tt PPFDataSwapper<T>} (fichiers
[2716]624ppfswapper.h et swsegdb.h)
[2717]625\item Ajout programme de test Tests/tstsegdb.cc
626\end{enumerate}
627\end{itemize}
[2716]628
[3229]629%%%%%
630\titre{TArray}
631%%
[2942]632Il s'agit essentiellement des ameliorations en terme de performances et
633de correction d'erreur.
634
[2632]635\begin{itemize}
[2942]636\item[\rond] Avril 2006 \\
637- Instanciation explicite des tableaux , matrices et vecteurs en types \\
638{\tt int\_2 uint\_2 uint\_4 uint\_8 } \\
639- Optimisation du code (ds tarray.cc) des operations sur tableaux \\
640{\tt (TArray::Add/Mul/Sub/DivCst TArray::Add/Mul/Sub/DivElt ) } \\
641a travers le choix entre Share() ou Allocation si le tableau resultat est non alloue.
642D'apres les tests de performances (TCPU), {\bf (tjet , spar)}, il ne semble pas y
643avoir de cas de pertes, et on a en general des gains de l'ordre de 20\% dans la plupart
644des cas de tests, et un ou deux cas avec des gains de 50-80\%. \\
645- Declaration de l'operateur / entre tableaux (DivElt) et l'operateur \& \& pour la
646multiplication element par element (MulElt)
[2919]647\item[\rond] Janvier, FŽvrier 2006 \\
648- AmŽlioration des fonctionalitŽs de la classe {\bf Range} et des mŽthodes d'extraction
649de sous-tableaux (+ correction bugs et amŽlioration documentation) \\
[2911]650- Ajout de la methode BaseArray::ValueAtPositionDB() pour corriger un gros bug au
651niveau de la conversion de type (r\_4 r\_8 ...) des tableaux \\
652- Compil avec g++ 4 : ajouts fichiers declarations privees tmatrix\_tsnl.h tvector\_tsnl.h
653
[2971]654\item[\rond] Juillet 2004 \\
655- Optimisation de la multiplication matricielle (CMV) - Extrait du
[2716]656message (from CMV) du 30 Juillet 2004: \\
[2632]657\begin{verbatim}
658- on definit un flag d'optimisation
659 Contrairement a ce qu'on avait dit, je n'ai pas ajoute
660 un argument a Multiply car on ne peut pas jouer
661 avec qiand on utilise l'operateur * surcharge.
662 Or au vu des performance il'ma parut interessant que l'utilisateur
663 meme lambda puisse choisir le niveau d'optimisation
664 --> donc j'ai ajoute une methode statis dans BaseArray::
665 void BaseArray::SetMatProdOpt(uint_2);
666 uint_2 BaseArray::GetMatProdOpt();
667
668- Je n'ai refait les test de rapidite que sur OSF:
669
6701./ pour les matrices 1000x1000 (grosses)
671 on arrive effectivement au meme temps pour les 4 cas
672 si on copie dans le cas lent (FxC)
673 ---EndMultiply FxC CPUTime: Total= 93.1296 (Partial= 69.3806) Sec.
674 devient
675 ---EndMultiply FxC CPUTime: Total= 34.9653 (Partial= 11.1829) Sec.
676 exactement comme les copains:
677 La copie prend de la place mais ne prend absolument
678 pas de temps pour les grosses matrices
679
6802./ pour les matrices 10x10 (1000000 multiplications par cas)
681 on a bien ce que l'on attend a savoir que
682 la copie faites 100000 fois finie par nous faire perdre du temps
683 ---EndMultiply FxC CPUTime: Total= 37.4152 (Partial= 12.4662) Sec.
684 devient
685 ---EndMultiply FxC CPUTime: Total= 53.9978 (Partial= 28.8322) Sec.
686 dans ce cas on perd un gros facteur 2 a cause de la copie
687 mais rien de surprenant la dedans.
688
689-----------------------------------------------------------------------
690- ensuite j'ai implemente une prise de decision au niveau de
691l'optimisation pour les petites matrices:
692le test est simple mais me semble OK:
693je calcule sza taille du NDataBlock de A
694 szb B
695si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
696IDEE: on pifometre que raisonnablement il y a 100 koctets
697 de disponible pour les matrices A et B dans le cache processeur
698 et que dans ce cas elles sont copiees toutes les 2 dans le cache
699 par l'optimiseur du compilo qui est tres malin et surtout qui
700 veux absolument nous faire plaisir......
701
702-----------------------------------------------------------------
703===> Les resultats sont dans le fichier toto.calc en attached
704.. En tete tu as l'explication des flags d'optimisation
705...Avec les 2 sections:
706 GROSSE MATRICE
707 et
708 PETITE MATRICE
709\end{verbatim}
710
[2971]711\item[\rond] Juillet 2004 : Optimisation operations diverses, en particulier \\
[2632]7121) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
713 Add/Sub/Mul/DivElt(TArray a, TArray res) \\
7142) Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
[2911]715\item[\rond] Extrait de {\tt cvs log tarray.cc }
[2632]716{\small \begin{verbatim}
717----------------------------
718revision 1.38
719date: 2004/07/30 13:31:39; author: ansari; state: Exp; lines: +28 -24
720Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
721----------------------------
722----------------------------
723revision 1.36
724date: 2004/07/27 11:44:23; author: ansari; state: Exp; lines: +4 -1
725Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
726----------------------------
727revision 1.35
728date: 2004/07/26 17:30:40; author: ansari; state: Exp; lines: +187 -108
729Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004
730----------------------------
731\end{verbatim} }
732
[2911]733\item[\rond] Extrait de {\tt cvs log tarray.cc }
[2632]734{\small \begin{verbatim}
735----------------------------
736revision 1.27
737date: 2004/07/30 10:24:12; author: cmv; state: Exp; lines: +97 -32
738- Intro decision auto d'optimisation produit de matrices
739- Possibilite a l'utilisateur pour choisir l'optimisation
740- cas FxC optimise par copie
741 cmv 30/07/04
742----------------------------
743revision 1.26
744date: 2004/07/29 12:31:16; author: ansari; state: Exp; lines: +7 -5
7451/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
746 Add/Sub/Mul/DivElt(TArray a, TArray res)
7472/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
7483/ Ajout methode TArray::ScalarProduct()
7494/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
7505/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
751 ReSize() de TMatrix et TVecteur.
752 Reza 29/07/2004
753----------------------------
754revision 1.25
755date: 2004/07/29 08:40:49; author: cmv; state: Exp; lines: +148 -1
756Optimisation produit de matrice a la sauce cmv 29/07/04
757----------------------------
758\end{verbatim} }
759
760\end{itemize}
761
[3176]762
[3229]763%%%%%%%%
764\titre{HiStats}
765%%%%%
766\soustitre{Classe Histo,HProf,HistoErr,Histo2D }
[3061]767\noindent
768- Aout 2006 : refonte profonde des allocations memoire et delete de
769 Histo,HProf,HistoErr,Histo2D pour faciliter la gestion des IO FITS. \\
770- Sept 2004 : Ajout classe HistoErr.
771C'est un Histo qui garde le nombre d'entr\'ees dans chaque bin) \\
[3229]772\soustitre{NTuple}
[2716]773la classe NTuple peut maintenant avoir des colonnes float ou double.
774Il y a maintenant deux methodes Fill(r\_4 *) et Fill(r\_8 *)
775Les noms ne sont plus limites a 8 caracteres.
776
777
[3229]778\soustitre{ Les DataTable (SuperNTuple) }
[2716]779
[2835]780{\bf Octobre-Novembre 2005 } \\
781\begin{itemize}
[2854]782\item[\rond] Ajout classe {\bf DataTableRow} pour manipulation d'une ligne de la table.
783Ajout/maj methode BaseDataTable::EmptyRow() AddRow() GetRow()
[2835]784\item[\rond] Gestion des types {\tt complex<r\_4> , complex<r\_8> , TimeStamp } par
785BaseDataTable, DataTable et SwPPFDataTable
786\item[\rond] Codage methode Print() (Dump ascii) et NTFrAscii (decodage fichier
787text) dans BaseDataTable.
788\item[\rond] Codage mŽthode BaseDataTable::GetColumnD() pour recuperer
789une colonne de la table en {\tt TVector<r\_8>} - NON TESTE
790\end{itemize}
791
[2632]792\begin{verbatim}
[2716]793BaseDataTable
794 -------- DataTable
795 -------- SwPPFDataTable
796\end{verbatim}
[2717]797
798\noindent {\bf BaseDataTable} : Classe de base, avec qques methodes virtuelles
[2716]799pures, implementent la presque totalite des fonctionalites, en particulier
800celles de l'interface NTupleInterface.
[2632]801
[2717]802\noindent {\bf DataTable} : Implementation concrete de BaseDataTable avec donnees en
803memoire \\
804(utilise SegDataBlock$<$T$>$ pour stocker les colonnes)
[2632]805
[2717]806\noindent {\bf SwPPFDataTable} : Implementation concrete de BaseDataTable avec donnees
807en swap sur stream PPF (POutPersist)- \\
808Utilise (SwSegDataBlock$<$T$>$ avec
809un data-swapper PPF (classe PPFDataSwapper$<$T$>$ )
[2632]810
[2716]811DataTable et SwPPFDataTable respecte +/- les conventions SOPHYA ,
812constructeur de copie avec partage ou copie de donnees, operateur =
813Datatable : partage et copie , = : fait une copie
814SwPPFDataTable : C'est toujours partage (presque par definition)
815Autre point, compte tenu de la structure des streams PPF ,
816les SwPPFDataTable fonctionne en ecriture OU en lecture, mais
817pas les deux a la fois.
[2632]818
[2716]819Classe de gestion de persistence commune : \\
[2717]820{\bf ObjFileIO$<$BaseDataTable$>$ }
[2632]821
[2716]822Lit et ecrit les DataTable et SwPPFDataTable
823Actuellement, on ne peut les relires que dans le meme type,
824cad on ne peut relire avec un SwPPFDataTable un objet
825ecrit comme DataTable - mais cette possibilite pourra
826peut-etre codee ulterieurement (d'ou l'interet en particulier
[2717]827d'un gestionnaire commun ObjFileIO$<$BaseDataTable$>$
[2632]828
[2716]829(les operateurs habituel $<<$ et $>>$ sur PIn/OutPersist sont definies)
[2632]830
[2716]831
[2911]832Les merges et copie sont prevues,
[2716]833on doit en principe pouvoir ecrire par exemple:
[2717]834\begin{verbatim}
[2716]835SwPPFDataTable swdt;
836PInPersist pis("swdt.ppf");
837pis >> swdt;
838DataTable dt;
839dt = swdt; // Pour tout charger en memoire
[2717]840\end{verbatim}
[2716]841
[2911]842{\it On pourra aussi ajouter des methodes d'acces aux variables
843membres pour enrichier l'interface. }
[2716]844
845
[2717]846{\bf DataTable cote PIAPP :} \\
[2716]847Cote piapp, les DataTable et SwPPFDataTable sont pris en charge par
[2717]848{\tt NOMAdapter\_DataTable} (qui prend en charge tous les 'BaseDataTable' )
849Il faudrait peut-etre rajouter deux commandes : \\
[2716]850newdt ou newdatatable
[2717]851newdt ncol col1 [col2 .... ] \\
[2716]852avec possibilite de specifier coli sous fome de X:colname ou X = D,F,S,I,L ...
853et puis dtfromascii ...
854
855Voir Tests/tnt.cc pour exemple d'utilisation :
[2717]856\begin{verbatim}
[2716]857DataTable dt(64);
858dt.AddIntegerColumn("line");
859dt.AddDoubleColumn("x");
860dt.AddFloatColumn("f_sin");
861MuTyV rec[10];
862for(int k = 0; k<1000; k++) {
863 rec[0] = k;
864 double x = M_PI*k/100.;
865 double fx = sin(x)*cos(x);
866 rec[1] = x;
867 rec[2] = sin(x);
868}
869 POutPersist po("dtable.ppf");
870 po << dt;
[2717]871\end{verbatim}
[2716]872
873Pour SwPPFDataTable, il faut juste creer un stream PPF avant, qui doit rester
[2717]874ouvert tant que le SwPPFDataTable est actif: \\
875\begin{verbatim}
[2716]876 POutPersist po("swdtable.ppf");
877 SwPPFDataTable dt(po, 64);
[2632]878\end{verbatim}
879
[2717]880
[2971]881
[3229]882\titre{SkyMap}
883%%%
[2993]884\begin{itemize}
885\item[\rond] Juin 2006: Prise en charge du rangement mŽmoire {\bf NESTED} dans
886les SphereHEALPix , + I/O PPF et FITS
887\item[\rond] Juin 2006: Nettoyage et amŽliorations diverses dans les classes
888Vector3d, UnitVector, LongLat \ldots et les cartes sphŽriques, en particulier :
889\begin{enumerate}
890\item Nettoyage/uniformation mŽthodes {\tt Print()} des cartes, et
891 ajout de la mŽthode {\tt Show()} dans PixelMap
892 \item Ajout mŽthodes {\tt HasSymThetaSlice() , GetSymThetaSliceIndex() }
893 dans les cartes sphŽriques (SphericalMap)
894 \item Ajout methode {\tt ResolToSizeIndex() SizeIndexToResol() }
895 ds SphereThetaPhi , SphereHEALPix et SphereECP
896 \item Petites optimisations dans {\tt GetThetaSlice()} + methode {\tt GetThetaSliceDataPtr() }
897 \end{enumerate}
898\item[\rond] Juin 2006: Introduction de la classe {\bf Angle} - pour conversion d'angle.
[2971]899\begin{verbatim}
[2993]900 // Example to convert 0.035 radians to arcsec
901 double vr = 0.035;
902 cout << "Angle rad= " << vr << " ->arcsec= " << Angle(vr).ToArcSec() << endl;
903 // Example to convert 2.3 arcmin to radian - we use the conversion operator
904 double vam = 2.3;
905 cout << "Angle arcmin= " << vam << " ->rad= "
906 << (double)Angle(vam, Angle::ArcMin) << endl;
907\end{verbatim}
908%
[2971]909
[2632]910
[2993]911\item[\rond] {\bf SphereECP} - Septembre 2004 \\
[2632]912Extrait du message du 7 Septembre 2004
913\begin{verbatim}
914 J'ai mis dans la base (module SkyMap) le code de la classe
915SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
916+ gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
917
918Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
919Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
920le Resize de la sphereECP
921ylmserver.GenerateFromCl(map, -1, clin, 0.);
922
923Dans piapp, c'est visualise par defaut en projection Molleweide
924On peut ajouter dans les options d'affichage :
925ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
926Si option ecparray, on peut preciser en plus
927 - ecpscaledeg: echelle des axes en degres au lieu de pixels
928 - ecpscalerad: echelle des axes en radians au lieu de pixels
929Exemple:
930Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
931\end{verbatim}
932
[2993]933\item[\rond] Bug non corrigŽ ds classe Circle
[2632]934\begin{verbatim}
935From: Laurence Perotto <perotto@cdf.in2p3.fr>
936Date: Mon Jan 5, 2004 4:59:12 PM Europe/Paris
937To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
938Subject: un bug dans sophya...
939
940 Bonjour et bonne annee a tous les deux...
941
942 Je viens de trouver un ptit bug dans la fonction TanOnCircle de la classe Circle: Il
943s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
944utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
945oubliee...
946 Voila...
947 Bonne journee.
948
949 Laurence.
950\end{verbatim}
[2993]951\end{itemize}
[2632]952
[3229]953\titre{Samba }
[2993]954
955\begin{itemize}
956\item[\rond] {\bf Juin 2006:} correction bug de calcul $a_{lm} \rightarrow$ SphereHEALPix
957(zones polar cap): le problme venant du choix de taille lors du calcul de la transformŽ
958de Fourier complex $\rightarrow$ rŽel (n/2 - 1 ou n/2 -2) .
959Correction dans {\tt RfourierSynthesisFromB } et utilisation de cette mŽthode
960pour tout type de carte.
961On gagne un peu encore en temps de calcul - sur asc (OSF1-cxx) , avec
962SphereThetaPhi(m=400), $l_{max} = 511$ \\[2mm]
963\begin{tabular}{|l|c|c|}
964\hline
965OpŽration & TCPU Avant & TCPU Aprs OPT \\
966\hline
967map $\rightarrow a_{lm}$ & 10 s & 3.6 s. \\
968$a_{lm} \rightarrow$ map & 26 & 10.5 s. \\
969\hline
970\end{tabular} \\[1mm]
971%
972\item[\rond] {\bf Mai 2006:} Optimisation calcul transformŽ en harmoniques sphŽriques
973{\bf SphericalTransformServer}. \\
974Au lieu de calculer un tableau de $\lambda_{lm}$ dans LambdaLMBuilder
975et utiliser ensuite ce tableau, on calcule les sommes nŽcessaires au vol,
976dans des mŽthodes spŽcifiques de la classe LambdaLMBuilder qui
977sont utilisŽes dans SphericalTransformServer (pour les transformŽs
978scalaire/tempŽrature) - PAS fait pour la polarisation pour le moment.
979On peut encore gagner un facteur 2 en utilisant la symŽtrie
980en $\theta <> \pi-\theta$. \\
981Extrait de cvs log :
982\begin{verbatim}
983revision 1.8
984date: 2006/06/01 11:34:50; author: ansari; state: Exp; lines: +147 -12
9851/ passage en sa_size_t (au lieu de int) dans Alm<T> et Bm<T>
9862/ Ajout des methodes optimisees (statiques) pour calcul transforme Ylm
987ds LambdaLMBuilder et utilisation ds SphericalTransformServer
988 Reza , 1/06/2006
989\end{verbatim}
990
[3061]991\item[\rond] {\bf Fin 2004} : Tests et vŽrifications des polynomes de Legendre.
992La classe LambdaLMBuilder donne les bons r\'esultats mais calcule les Plm
993pour tous les $l,m$.
994Introduction d'une routine (C-like) ``HarmSph\_array\_teta'' qui calcule
995les Plm pour $m$ fix\'e et $l\in [0,l_{max}]$ comme ce qui est fait
996dans la GSL... (la routine GSL ne marche pas corectement).
[2993]997\end{itemize}
998
999%%%%%%%%%%%
[3229]1000\titre{SysTools}
[2971]1001{\bf Mai-Juin 2006 } classe ZThread - petites modifs/amŽliorations liŽes
1002ˆ la gestion des signaux et mŽthodes kill
1003
[3229]1004\soustitre{Classe SOPHYA::Commander (module SysTools) }
[2971]1005Mai-Juin 2006:
1006Debug (?) de gestion/controle des threads dans la classe Commander -
1007Extrait de cvs log :
1008\begin{verbatim}
1009date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +62 -11
1010Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
1011s (killthr) dans Commander - Reza 29 mai 2006
1012----------------------------
1013revision 1.7
1014date: 2006/04/26 15:22:09; author: ansari; state: Exp; lines: +13 -0
1015ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
1016ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
1017----------------------------
1018revision 1.22
1019date: 2006/05/31 12:30:13; author: ansari; state: Exp; lines: +20 -11
1020correction gestion & pour ThrExec ds Commander - Reza 31/05/2006
1021----------------------------
1022revision 1.21
1023date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +37 -16
1024Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
1025s (killthr) dans Commander - Reza 29 mai 2006
1026----------------------------
1027revision 1.20
1028date: 2006/04/26 15:22:08; author: ansari; state: Exp; lines: +55 -15
1029ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
1030ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
1031lioration documentation , Reza 26/4/2006
[2632]1032
[2971]1033\end{verbatim}
1034
[2717]1035Mars-Avril 2004 :
[2632]1036Classe d'interprŽteur de ligne de commande inspire de C-Shell,
1037destine a etre incluee dans des applications C/C++. \\
[2717]1038( Programme test Test/tcmd.cc ) \\
1039Avril 2005 : Introduction de la possibilite d'execution de commandes
1040en multithreads \\
1041Avril 2005 : Controle strict sur les noms de variables, limites
1042aux caracteres alphanumeriques + underscore - Adaptation
1043de l'algorithme de substitution en consequence.
[2632]1044
1045{\bf Mini guide de l'interpreteur - Message du 19 Mars 2004 } \
1046
1047\begin{itemize}
1048
1049\item[\rond] {\bf Gestion des variables } \\
1050 - Les variables sont non typees toutes traitees comme des chaines
1051de caracteres.
1052 - Acces aux variables d'environnement -
1053 - Un niveau variable d'environnement application est aussi prevu
1054 - Toutes les variables de l'interpreteur sont traitees comme des vecteurs.
1055extensibles automatiquement (difference avec le C-Shell)
1056
1057\item[\rond] {\bf Creation / initialisation de variables } \\
1058\begin{verbatim}
1059Cmd> set sv StringValue
1060# Suppression d'une variable : unset ou clearvar
1061Cmd> unset sv
1062
1063# Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
1064Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
1065#Calcul numerique : expression de type C - Espace avant/apres '=' obligatoire
1066Cmd> a = 2+3*sqrt(4)
1067# Le signe egal peut etre utilise pour attribuer une chaine de caracteres
1068Cmd> a = 'Bonjour Madame'
1069# Un element de tableau peut etre specifie avant le signe egal
1070Cmd> vecv[2] = 'coucou'
1071# Ou bien
1072Cmd> i = 3
1073Cmd> vecv[i] = 'Ooohhh'
1074\end{verbatim}
1075
1076A droite du signe egal (membre de droite), les variables doivent etre
1077adressees a l'aide du signe \$.
1078
1079Une chaine peut etre cassee en mots a l'aide de la commande var2words
1080\begin{verbatim}
1081Cmd> var2words varname wordvarname [separateur]
1082\end{verbatim}
1083
1084\item[\rond] {\bf Acces aux variables } \\
1085L'acces aux variables s'effectue par le signe \$ {\tt \$varname} .
1086Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx.
1087Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
1088mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
1089{\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
1090
1091\begin{verbatim}
1092Cmd> x = 'Hello'
1093Cmd> echo $x
1094# Taille d'une variable de type vecteur $#vname
1095Cmd> set vx ( 111 2222 3333 444444 )
1096Cmd> echo $#vx
1097# Acces aux elements de tableau
1098Cmd> echo $vx[0] $vx[1]
1099# ou bien indexe par une variable
1100Cmd> i = 2
1101Cmd> echo $vx[i]
1102# Une syntaxe particuliere: $[vname] retourne le contenu de
1103# la variable dont le nom est ds vname
1104Cmd> zzz = 'Commander'
1105Cmd> xxx = 'zzz'
1106Cmd> echo '$[xxx]= ' $[xxx]
1107$[xxx]= Commander
1108\end{verbatim}
1109
1110Variables d'environnement: L'acces aux variables d'environnement
1111se fait simplement par{\tt \$varenvname}. Attention, les variables locales
1112de l'interpreteur sont prioritaires.
1113
1114\item[\rond] {\bf Variables particulieres: } \\
1115{\tt \$retval} ou {\tt \$retstr} : chaine specifee sur la derniere commande return
1116{\tt \$status} : code de retour de la derniere commande executee.
1117(variable existe et est rempli - mais il faudra se donner une regle
1118plus claire ...)
1119Arguments des fichiers .pic appeles par la commande exec
1120{\tt \$\# } : nombre d'arguments, a part \$0
1121{\tt \$0} nom du fichier ou du script
1122{\tt \$1 \$2 \$3} .... les arguments (pour les scripts et les .pic (exec))
1123
1124
1125\item[\rond] {\bf Structures de controle } \\
1126\begin{verbatim}
1127foreach f ( w1 w2 w3 ... )
1128 ...
1129 echo $f
1130end
1131\end{verbatim}
1132
1133Espace avant/apres '(' et avant ')' obligatoire.
1134
1135\begin{verbatim}
1136foreach v vecname
1137 ...
1138 echo $v
1139end
1140\end{verbatim}
1141
1142Boucle de type integer:
1143\begin{verbatim}
1144for i startInt:endInt[:stepInt]
1145 ....
1146 echo $i
1147end
1148\end{verbatim}
1149
1150Boucle de type float
1151\begin{verbatim}
1152for f startFloat:endFloat[:stepFloat]
1153 ....
1154 echo $f
1155end
1156\end{verbatim}
1157
1158Boucle sur les lignes d'un fichier:
1159\begin{verbatim}
1160forinfile line FileName
1161 ...
1162 echo $line
1163end
1164\end{verbatim}
1165
1166Instruction {\tt break} pour casser une boucle
1167
1168\item[\rond] {\bf Les tests }
1169\begin{verbatim}
1170if ( test ) then
1171endif
1172
1173if ( test ) then
1174 ....
1175else
1176 ....
1177endif
1178\end{verbatim}
1179
1180Espace avant/apres '(' et avant ')' obligatoire.
1181
1182test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b} OU {\tt a > b}
1183OU {\tt a <= b} OU {\tt a >= b}
1184les espaces avant l'operateur de comparaison sont obligatoires.
1185{\tt ==} et {\tt !=} effectue une comparaison de chaines de caracteres.
1186{\tt < , > , <= , >=}une comparaison apres conversion en valeur flottante.
1187
1188\item[\rond] {\bf Definition de script } \\
1189\begin{verbatim}
1190defscript scriptname [description ]
1191 ....
1192endscript
1193\end{verbatim}
1194
1195L'appel a un script se fait simplement a l'aide
1196du nom de script (contrairement aux fichiers
1197de commande qui sont executes a l'aide de la
1198commande {\tt exec} )
1199\begin{verbatim}
1200Cmd> scriptname arg1 arg2 arg3 ....
1201\end{verbatim}
1202
1203L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
1204script ou d'un fichier de commandes.
1205Commandes {\bf listscript }et {\bf clearscript scriptname}
1206 permettet d'avoir la liste des scripts
1207 definis / supprimer la definition d'un script
1208
1209\item[\rond] {\bf Autres commandes}
1210\begin{itemize}
1211\item Instruction {\bf echo } pour ecrire sur cout/stdout
1212\item Instruction {\bf echo2file} pour ecrire a la fin d'un fichier
1213\item Instruction {\bf sleep nsec} (attente de nsec seconds )
1214\item Instructions {\bf timingon , timingoff , traceon , traceoff } \\
1215%
1216\item Commande {\bf exec commandfilename [arg1 arg2 ... ] }
1217\item Commandes {\bf help et help keyword/commandname }
1218\item Commandes {\bf listvars , listcommands }
1219\item Defintion et liste d'alias : {\bf alias aliasname 'string ' } et {\bf listalias}
1220\end{itemize}
[2717]1221
1222\item[\rond] {\bf Threads d'execution de commandes (Avril 2005)} \\
1223Possibilite de lancer des commandes (autre que les commandes
1224 de l'interpreteur lui-meme) en thread separe (il suffit de mettre un \&
1225 a la fin de la commande) \\
1226 Commandes des gestion des threads : \\
1227 {\bf thrlist ; cleanthrlist ; cancelthr ThId ; waitthr } \\
1228 Attention, la possibilite de lancer des commandes en threads separes ne fonctionne que
1229pour des commandes "thread-safe".
1230La plupart de nos commandes de piapp sont \\
1231 - soit trop rapide, \\
1232 - soit non "thread-safe" \\
1233
1234 \item[\rond] controle d'execution : \\
1235Possibilite d'arreter l'execution de l'interpreteur (dans une boucle
1236 ou dans dans un fichier .pic ...
1237 Utiliser la commande {\bf stop} ou {\tt <Cntrl C>} dans PIConsole
1238
[2632]1239\end{itemize}
1240
[3229]1241\soustitre{Classes CExpressionEvaluator et RPNExpressionEvaluator }
[2632]1242\begin{itemize}
1243\item[\rond] Ajout des classes RPNExpressionEvaluator et CExpressionEvaluator
1244d'Žvaluation d'expressions numŽriques en notation polonaise inverse
1245et avec la syntaxe C . Utilise dans la classe Commander.
1246\item[\rond] Programme test Test/tcmd.cc
1247\item[\rond] extrait de {\tt cvs log cexpre.cc }
1248{\small \begin{verbatim}
1249----------------------------
1250revision 1.3
1251date: 2004/03/18 18:15:19; author: ansari; state: Exp; lines: +10 -6
1252Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
1253----------------------------
1254revision 1.2
1255date: 2004/03/16 08:47:48; author: ansari; state: Exp; lines: +5 -6
1256suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
1257----------------------------
1258revision 1.1
1259date: 2004/03/15 22:19:43; author: ansari; state: Exp;
1260Ajout fichiers des classes RPNExpressionEvaluator et CExpressionEvaluator (expression arithmetiques) et MAJ du fichier Makefile et objlist.list - Reza 15 Mars 2003
1261\end{verbatim} }
1262
1263\item[\rond] Extrait du message du 3 Mars 2004
1264\begin{verbatim}
1265Le code est base sur une hierarchie de classe d'expression :
1266 Expr -------- NumberExp
1267 --------- BinExp ------ AddExp
1268 ------ MulExp
1269 ------ SubExp
1270 ------ DivExp
1271 --------- FuncExp
1272 --------- CExpressionEvaluator
1273
1274NumberExp : expression elementaire de nombre, sait actuellement traduire Pi et E
1275 tres facile d'ajouter d'autres constantes
1276BinExp: Classe d'operations binaires (deux operandes) a+b a-b a*b a/b
1277 avec gestion de niveau de priorite des operateurs
1278 On peut facilement ajouter d'autres operateurs binaires (par exemple
1279 puissance ^ a^b ) - et les priorites relatives seront gerees en principe.
1280FuncExp: classe d'expression fonctionnelle, avec n arguments f(x1,x2,...x3)
1281 actuellemenent, n=0 a n=3 arguments et quelques fonctions
1282 usuelles sont decodes ds cette classe (sin,cos,tan, asin, acos, atan, exp, log,
1283 atan2, pow ) - voir ds le code
1284
1285CExpressionEvaluator : C'est la classe de haut niveau a utiliser -
1286 la fonction de decodage de la chaine ASCII (qui utilise
1287 les fonctionalites des differentes classes est la dedans
1288 et ce n'est pas tres long.
1289(+ une classe d'exception specifique).
1290\end{verbatim}
1291
1292\end{itemize}
1293
[3176]1294
[3229]1295%%%%%%%%
1296\titre{FitsIOServer}
1297%%%
[3176]1298\begin{itemize}
1299\item[\rond] Aout 2006 : Ecriture/Lecture des classes Histo,HProf,HistoErr,Histo2D dans fichier FITS.
[3061]1300Les Histo2D et leurs projections 1D associ\'ees sont lus et \'ecrits
[3176]1301sur plusieurs HDU cons\'ecutifs.
1302\item[\rond] Juin 2006 : Ajout verification/correction noms de colonne lors de lecture FITS / DataTable,
[2971]1303et remplacement throw par un warning lors de lecture fits-healpix avec $nbcols > 1$ \\[1mm]
[3176]1304\item[\rond] { \large Sep 2005-Jan 2006 : Refondation totale du module }
[2829]1305\begin{itemize}
[2905]1306\item[\rond] Amelioration du programme PrgUtil/scanppf -
1307(scanfits -V1 -lh -rd -header filename)
1308\item[\rond] La classe FitsFile (et donc FitsInFile FitsOutFile) heritent de FitsInOutFile.
1309(Jan 2006)
1310\item[\rond] Fonctionalites classe {\bf FitsManager } etendues - en particulier ScanFile()
1311\item[\rond] Les FitsIOHandler (ancien) heritent de FitsHandlerInterface -
1312Tous les handlers sont pris en charge et enregistre par FitsManager (Jan 2006)
1313\item[\rond] Ajout classe d'initialisation du module {\bf FitsIOServerInitiator },
1314fichiers fiosinit.h .cc (Dec 2005)
1315\item[\rond] Classe { \bf SwFitsDataTable } (DataTable avec swap sur FITS) ajoute
1316 + classe FitsHandler<BaseDataTable> modifie pour prise
1317en charge de SwFitsDataTable (Dec 2005 - Jan 2006)
1318\item[\rond] Classes {\bf FITSDataSwapper$<$T$>$} modifies (Dec 2005)
[2854]1319\item[\rond] Prise en charge de types TSTRING et TCOMPLEX et TDBLCOMPLEX
1320lors de lecture/ecriture de colonnes FITS.
1321\item[\rond] Prise en charge de l'ensemble des types de colonnes pour le handler de Fits
1322de DataTable
[2829]1323\item[\rond] Classe {\bf FitsInOutFile } comme wrapper des fonctions de la librairie cfitsio +
1324classe d'exception spŽcifique {\bf FitsIOException} , et la classe des types FITS {\bf FitsTypes}.
1325\item[\rond] Classe template {\bf FitsBlockRW$<$T$>$} pour lecture/Žcriture (tableaux de donnŽes)
1326sur IMGHDU et Tables.
1327\item[\rond] Classes gestionnaires I/O Fits pour les objets {\bf FitsHandler$<$T$>$} et {\bf FitsManager}
1328\item[\rond] Classes gestionnaire pour les tableaux : {\bf FitsArrayHandler$<$T$>$}
1329\item[\rond] Classes gestionnaire pour les DataTable {\bf FitsHandler$<$BaseDataTable$>$}
1330\item[\rond] Mai 2005 : Classe {\bf FITSDataSwapper$<$T$>$} pour la gestion des
1331SwSegDataBlock sur fichiers FITS
1332\end{itemize}
[3176]1333\end{itemize}
[2829]1334
[3229]1335\titre{LinAlg}
[2717]1336Extension des fonctionalitŽs de la classe {\tt LapackServer<T>} :
1337(Juillet 2004 / cmv , FŽvrier 2005 / Reza)
1338\begin{itemize}
[2911]1339\item[\rond] Ajout lancement d'exception sur renvoi de code d'erreur par lapack
1340(desactivable par flag au niveau du constructeur de la classe serveur)
[2717]1341\item[\rond] Introduction de l'interface Lapack d'inversion des matrices symetriques (21/7/2004)
1342\item[\rond] Introduction de l'interface Lapack de recherche de valeurs et vecteurs propres
1343 (cas general, symetrique et hermitique) (21/7/2004)
1344\item[\rond] Introduction d'un fonction d'interface pour le calculateur de workspace
1345 (ilaenv\_) (21/7/2004)
1346\item[\rond] Ajout prog test Tests/tsttminv.cc + Commentaires sur les diverses methodes et sur les matrices FORTRAN (21/7/2004)
1347\item[\rond] Ajout SVD decomp by Divide and Conquer SVD\_DC (23/7/2004)
1348\item[\rond] Ajout Least Square with SVD DC
1349\item[\rond] Ajout methode calcul de la matrice inverse par Lapack en utilisant la
1350resolution de systemes (07/02/2005)
1351\end{itemize}
1352
[3229]1353\titre{IFFTW}
[3061]1354\noindent
1355- Juillet 2007 : Passage a FFTW 3 \\
1356- Nov 2005 : Correction du bug dans le cas de FFT-1D Backward(complex -> reel)
[2854]1357in(1).imag() pouvait etre ecrase.
1358
[3229]1359\titre{PI,PIext,piapp}
1360\soustitre{PI: Classes modifiees - ameliorees}
[2717]1361\begin{itemize}
1362\item[\rond] {\bf PIImageNavigator } \\
[2911]1363Ajout de la classe {\tt PIImageNavigator } permettant de visualiser une image
[2717]1364avec ses propres widget zoom / global view et colormap. (Fevrier 2005) \\
1365Commande {\tt imagnav} ajoute ds piapp/baseexcute.cc . \\
1366\item[\rond] Avril 2005 - Amelioration de la classe {\bf PIConsole} \\
13671/Envoi Message PIMSG\_Cancel lors de {\tt <Cntl C>} \\
1368 2/ Correction positionnement curseur lors de rappel de commande,
1369 Si possible en fin de commande - mais toujours avec le
1370 debut de commande visible. \\
13713/ Correction (probable) du petit bug sur les derniers caracteres lors de copier/coller
1372 ds PIConsole
[2905]1373\item[\rond] Codage Options graphiques en text (string) pour PIGraphicAtt (Nov-Dec 2005)
1374\item[\rond] Corrections diverses trace d'axes etc ... (Dec 2005)
[2971]1375\item[\rond] PIext rendu indŽpendant de FITS (Avril 2006) - commandes spŽcifiques dans
1376ProgPI/fitsbtadapter.cc
[3050]1377\item[\rond] BUG A corriger, DrawOpaqueString ds PIGraphPS (sortie postscript)
[2717]1378\end{itemize}
[3229]1379%%%%
1380\soustitre{ Codage texte des options graphiques (11 Mars 2004)}
[2632]1381\begin{verbatim}
1382// Methode retournant un vecteur de string a partir des options
1383virtual int PIDrawer::OptionToString(vector<string> & opt) const
1384qui vient completer les deux methodes
1385virtual int PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
1386virtual void PIDrawer:: GetOptionsHelpInfo(string& info);
1387Ces methodes s'occupent de decoder les options graphiques (et l'aide
1388associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
1389une serie de chaine de caracteres a partir des options graphiques.
1390Il y a aussi la methode
1391virtual int PIWdgGen::OptionToString(vector<string> & opt) const
1392que j'ai ajoute (rien a faire pour le moment) - ainsi que
1393int PIGraphicAtt::AttToStrings(vector<string> & att) const.
1394
1395Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
1396L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
1397appelle PIGraphicAtt::AttToStrings() - a laisser donc tel quel.
1398
1399par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
1400PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
1401DecodeOptionString(vector<string> & opt, bool ...) est modifie,
1402rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
1403Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
1404derriere (push_back()) afin de pouvoir cumuler les options de base + options
1405specifiques.
1406
1407Comment tester ?
1408Pour tester, tu peux utiliser la fenetre des options texte ou j'ai ajoute le bouton
1409[GetOption] . Tu peux acceder a cette fenetre a partir de la fenetre des options
1410graphiques <Alt>O , ou directement sur un objet de gestionnaire 2D - par
1411<Alt>T - <Shift>Button-1 permet de selectionner le drawer actif
1412\end{verbatim}
1413
[3229]1414\soustitre{ Trace des axes (11 Mars 2004)}
[2632]1415 Ajouter la possibilite de specifier l'origine (le point de croisement des axes)
[2911]1416lorsque les axes ne sont pas de type 'box' - classes PIAxes et PIElDrawer. FAIT
[2632]1417
[3229]1418\soustitre{ Selection graphique (souris) du drawer actif (11 Mars 2004)}
[2632]1419\begin{verbatim}
1420J'ai ajoute la methode PIDrawer::GetDistanceToPoint(double x, double y)
1421// Renvoie une distance au point x,y
1422// 0: au(x) point(s) le(s) plus proche(s) ... 1 au bord xmin/xmax , ymin/ymax
1423// La methode par defaut calcule la distance normalisee au point ((xmin+xmax)/2,
1424(ymin+ymax)/2)
1425 virtual double PIDrawer::GetDistanceToPoint(double x, double y);
1426
1427ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
1428methode + code permettant le test ds PIScDrawWdg.
1429(virtual void PIDrawer::WdgCoord2DrwCoord(int x, int y, double& xu ...
1430 virtual int PIBaseWdgGen:;FindNearestDrawerId(int x, int y) ...)
1431Tu as a t'aoccuper de la methode PIDrawer::GetDistanceToPoint(double x, double y)
1432qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
1433distance raisonnable au point (x,y) en argument.
1434J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
1435partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
1436completer.
1437
1438Comment tester ?
1439J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
1440<Shift>Button-1 choisit le drawer le plus proche (base sur la
1441valeur de retour de PIDrawer::GetDistanceToPoint(double x, double y)
1442comme drawer actif. Ce drawer est passe en 'highlight' pendant que
1443le bouton est appuye.
1444\end{verbatim}
1445
[3229]1446\soustitre{ Manipulation interactive des drawers (3 Juin 2004) }
[2632]1447La manipulation interactive des drawers (ˆ l'aide d'un menu) a
1448ŽtŽ finalisŽe pour les PIImage PIScDrawWdg PI3DWdg .
1449
1450\begin{verbatim}
1451 o <Alt>D affiche le menu avec les differentes option
1452 o Move/Resize: Affichage du rectangle + rectangle milieu
1453 (deplacement) + coin bas-droite (deplacement) -
1454 clicker ailleurs pour finir
1455 o Mouse Select : Le mouse select des drawers est gere
1456 maintenant par un PIEventHandler (comme pour Move/ReSize)
1457 Drawer actif affiche par le rectangle muni d'un petit coin
1458 (petit carre + rond dedans, en bas a droite).
1459 Click souris change eventuellement le drawer actif.
1460 On termine en clickant ds le petit [carre+rond]
1461\end{verbatim}
1462
[3229]1463\soustitre{ Traceur de bar-graph (classe PIBarGraph) (3 Juin 2004) }
[2632]1464Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
1465et commande {\tt bargraph} ds PIext/basexecut.cc .
1466La commande bargraph ne gere pas encore toutes les possibilites
1467de la classe PIBarGraph. \\
1468Exemple d'utilisation:
1469\begin{verbatim}
1470Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4.
1471Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4.
1472Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4.
1473Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
1474Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
1475Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
1476 -10. 15. 2 2. 8. 33. 7 -4.
1477Cmd> bargraph 'font=times,bold,16 blue verticalbars fill barvaluelabel packfrac=0.8' \
1478 -10. 15. 22. 8. 33. 7 -4.
1479\end{verbatim}
1480
[3229]1481\soustitre{ Traceur de lignes de texte (classe PITextDrawer) (3 Juin 2004) }
[2632]1482
1483Ajout d'une classe de traceur de lignes de texte (classe {\bf PITextDrawer}) et commande
1484{\tt textdrawe}r ds PIext/basexecut.cc . Mais le traceur (et sa commande)
1485doivent etre completes. \\
1486Exemple d'utilisation:
1487\begin{verbatim}
1488# On affiche qque chose
1489Cmd> openppf demo.ppf
1490Cmd> disp h1d
1491Cmd> textdrawer 'frame line=solid,2 font=times,bold,16 red inset' \
1492 ' Christophe ' ' Reza Ansari' ' SOPHYA '
1493\end{verbatim}
1494
[3229]1495\soustitre{ Gestion de re-scale-ing des axes en 3D (3 Juin 2004) }
[2632]1496
1497Mise en place complete (?) de la gestion de re-scale-ing des axes en 3D
1498avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
1499les limites de la boites 3D.
1500cela a ete une grosse prise de tete de tout un apres-midi.
1501J'ai eu ensuite mal a la tete une partie de la soiree ! \\
1502Exemple d'utilisation:
1503
1504\begin{verbatim}
1505
1506# On ouvre le fichier demo.ppf
1507Cmd> openppf demo.ppf
1508Cmd> surf mtx1 'colbr32'
1509Cmd> surf mtx1 'colbr32 noautoscale'
1510Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
1511# Affichage avec superposition
1512Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
1513Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
1514# Ou bien :
1515Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
1516Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
1517
1518\end{verbatim}
[3229]1519\soustitre{piapp (PIext/ProgPI) }
[2632]1520\begin{itemize}
[3050]1521%%%%
1522\item[\rond] Juillet 2006 : Ameliorations et ajouts divers : \\
1523- Ajout commande {\bf plot3dw} ({\tt Services2NObjMgr::DisplayPoints3DW() }) \\
1524- Ajout possibilite d'acces aux caracteristiques des objets par {\tt \$\{objname.att\} } \\
1525{\tt (PIACmd::GetVarApp()) } et amelioration verification du nom des objets
1526(methode {\tt NamedObjMgr::CheckName()}) \\
1527- Operations sur objets: commande {\bf objaoper} ({\tt NObjMgrAdapter::PerformOperation()})
1528
1529\begin{verbatim}
1530# Extracting row / column from matrix
1531Cmd> objaoper matrixname row 23
1532Cmd> objaoper matrixname col 148
1533# Extracting plane from 3D array (slicexy slicexz sliceyz)
1534Cmd> objaoper arr3dname slicexy 14
1535\end{verbatim}
1536%%%%
[2971]1537\item[\rond] Avril 2006: Ajout possibilite de lecture des commandes sur le terminal (stdin)
1538et flag en argument de commande {\tt -small} \\
1539Extrait de cvs log :
1540\begin{verbatim}
1541revision 1.16
1542date: 2006/04/26 15:53:18; author: ansari; state: Exp; lines: +20 -11
15431/ Ajout classe de lecture sur stdin (terminal) avec thread separe pour
1544piapp - incluant la possibilite d'utilisation de la librairie GNU readline
1545(fichiers piacmdrdr.cc piacmdrdr.h + fichier makfile specifique makefile_wgrdl
1546 pour compil+link avec GNU readline)
15472/ MAJ Makefile et modif programme principal piapp.cc avec flag -small
1548et activation thread de lecture sur terminal
1549 Reza , 26/04/2006
1550
1551----------------------------
1552\end{verbatim}
1553
[2905]1554\item[\rond] Jan 2006 : commandes readfits writefits scanfits ont ete ajoutees
1555dans ProgPI/fitsbtadapter.cc en utilisant le nouveau FITS -
1556Le menu OpenFits de PIStdImgApp utilise desormais ces commandes
[3301]1557\item {\bf BUG } a corriger pour {\tt imagvav}:
1558La destruction de l'objet et/ou widget pascorrectement geres -
1559provoque des plantages lors de la sortie de l'application.
1560\end{itemize}
1561\soustitre{piapp multi-thread }
1562\begin{itemize}
[3050]1563\item[\rond] Avril 2005: PossibilitŽ d'execution de commandes en threads separes, en
1564ajoutant {\bf \&} en fin de ligne de commande.
1565\item[\rond] Janvier 2004: Le multithreading a ŽtŽ mis en oeuvre dans piapp .
[2717]1566
[2905]1567\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
[2632]1568\begin{verbatim}
[2717]1569revision 1.77
1570date: 2005/04/27 11:55:00; author: ansari; state: Exp; lines: +26 -10
15711/ Prise en charge de DataTable et SwPPFDataTable pour piapp (NObjMgrAdapter) :
1572nomhistadapter.cc et piiinit.cc
15732/ Lecture de tous les objets ds un fichier PPF par NamedObjMgr::ReadAll() pour
1574fichier PPF sans nametag.
15753/ Ajout bloc try/catch ds PIStdImgApp::Run() (boucle d'evenements)
1576 Reza , 27 Avril 2005
1577----------------------------
1578revision 1.76
1579date: 2005/04/19 09:13:49; author: ansari; state: Exp; lines: +3 -1
1580Ajout de l option nodisp ds les affichages des NamedObjMgr, prise en compte de
1581<Cntrl C> (Msg_Cancel) pour arreter l'execution de l'interpreteur ds PIStdImgApp
1582et remplacement commande breakexe par stop ds PIACmd - Reza 19/4/2005
1583----------------------------
1584revision 1.75
1585date: 2005/04/19 06:56:52; author: ansari; state: Exp; lines: +5 -4
1586Remis en marche la possibilite d'execution d'un .pic au lancement de piapp -
1587Reza 19/4/2005
1588----------------------------
1589revision 1.74
1590date: 2005/02/18 14:09:47; author: ansari; state: Exp; lines: +62 -37
1591Modifications pour l'utilisation viewer PIImageNavigator (ajout commande imagnav
1592) - Reza 18 Fev 2005
1593----------------------------
1594revision 1.73
1595date: 2004/11/19 17:41:07; author: ansari; state: Exp; lines: +26 -0
1596Ajout commandes addoval addfoval pour trace d'ellipse - Reza 19/11/2004
1597----------------------------
[2632]1598revision 1.71
1599date: 2004/09/07 07:10:18; author: ansari; state: Exp; lines: +35 -0
1600Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
1601methode process, thread boucle d'evts) - Reza 07/09/2004
1602----------------------------
1603revision 1.70
1604date: 2004/01/06 18:44:56; author: ansari; state: Exp; lines: +11 -1
1605 Suite debugging gestion lock entre threads ds piapp - A l'air de
1606marcher sur OSF1 et Linux ... Reza 06/01/2004
1607----------------------------
1608revision 1.69
1609date: 2004/01/06 17:05:25; author: ansari; state: Exp; lines: +33 -7
1610Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
1611 appele de suite) - Reza 06/01/2004
1612----------------------------
1613revision 1.68
1614date: 2004/01/04 19:02:43; author: ansari; state: Exp; lines: +43 -13
1615Suite des modifs pour piapp multi-threads
16161) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
16172) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
1618la classe elle-meme, a travers le NamedObjMgr
16193) Modification de la boucle d'evenements, avec un thread de reveil
1620periodique
1621 Reza, 4 Janvier 2004
1622\end{verbatim}
[2905]1623\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
[2632]1624\begin{verbatim}
1625----------------------------
1626revision 1.62
1627date: 2003/11/27 10:51:58; author: ansari; state: Exp; lines: +45 -20
1628Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
1629mmander - Reza 27/11/2003
1630----------------------------
1631revision 1.61
1632date: 2003/11/26 23:01:55; author: ansari; state: Exp; lines: +20 -1755
1633Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
1634ander (de SysTools) - Reza 26/11/2003
1635----------------------------
1636revision 1.60
1637date: 2003/07/21 21:13:10; author: cmv; state: Exp; lines: +3 -3
1638- introduction notion de numero de ligne dans expression ntuple
1639 modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend)
1640 modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,
1641 PrepareNTExpressionCFile, LinkExprFunc,...)
1642- doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand
1643 (rz + cmv 21/7/2003)
1644----------------------------
1645\end{verbatim}
1646\end{itemize}
1647
[3229]1648\titre{Documentation (Manual/) }
1649%%%%
[2632]1650Documentation des classes de SysTools. \\
1651Extrait message du 12 Aout 2004 : \\
1652\begin{verbatim}
1653---> Au sujet de la doc (Manual/)
1654 J'ai installe doxygen sur le Mac, version 1.3.8 -
1655 Il faut updater le fichier de config de depart (dox_sophya.conf)
1656 Pour ma part, j'ai du modifier mkmf (en version privee) -
1657 En effet, il n'y avait pas le program doxysearch - Je ne sais pas si c'est general
1658 ou specifique Mac.
1659
1660 J'ai aussi modifie certaines options de doxygen (en version privee)
1661 EXTRACT_LOCAL_CLASSES --> NO (au lieu de YES)
1662 DETAILS_AT_TOP ---> YES (au lieu de No)
1663 SORT_MEMBER_DOCS ---> NO (au lieu de YES)
1664
[2829]1665 Si on est d'accord, on peut modifier ces options ds le fichier dox_sophya.conf et
[2632]1666 utiliser la fonction update de doxygen (doxygen -u)
1667\end{verbatim}
1668
[3229]1669\titre{Mgr}
[3095]1670\begin{itemize}
1671\item Avril-Mai 2005 : Basculement vers la nouvelle version de scripts
[2911]1672de gestion du code (module {\bf BuildMgr/ } )
1673On n'a plus a se preoccuper des indications de cette section
[2829]1674
[3095]1675\item
[2829]1676Septembre 2003 (17/9/2003) : Changement DPCDEVREP, DPCBASEREP
1677en SOPHYADEVREP , SOPHYABASEREP , EROSCXX en SOPHYACXX
[3095]1678\end{itemize}
[2829]1679
1680
1681
[3229]1682\titre{Plan de modifs pour SOPHYA V 2.x PI/piapp V 4.x }
[2829]1683
[3095]1684{\bf Sep 2006} : La grande majorit\'e des modifs pr\'evues en 2003 ont \'et\'e
1685effectu\'ees. Reste \`a faire , si besoin :
1686\begin{itemize}
1687\item SophyaLib::TArray/
[2632]1688\begin{verbatim}
1689 - Ajouter une classe de base abstraite GenericMatrix<T>
1690 avec methode d'acces aux elements, nb de lignes, nb de colonnes,
1691 - Introduire les TinyMatrix (TinyMatrix<T, int L, int C>)
1692 avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?
1693 - Introduire des matrices creuses simples SpareMatrix<T>
1694 - Introduire les DiagonalMatrix<T>
[3095]1695Remarque: Les TMatrix TinyMatrix et SparseMatrix heritent de GenericMatrix
[2632]1696\end{verbatim}
1697
[3095]1698\item PI/ piapp
[2632]1699\begin{verbatim}
[3095]1700o Ajouter un traceur de ApplePie (BarChart fait )
[2632]1701o Ajouter un traceur de Lego-Plot
1702o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
1703o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
1704 pour pouvoir plotter des objets, l'un vs l'autre
1705o (???) Introduire quelque chose du style
1706 AddDialogue("Cmd", "dialogue-description)
1707 qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir
1708 pour les commandes usuelles (???)
1709\end{verbatim}
[3095]1710\end{itemize}
[2632]1711
1712
1713\end{document}
Note: See TracBrowser for help on using the repository browser.