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

Last change on this file since 3874 was 3856, checked in by ansari, 15 years ago

Derniers ajouts ds document sophya.tex (user's guide) pour V=2.2, Reza 12/08/2010

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