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

Last change on this file since 3855 was 3817, checked in by ansari, 15 years ago

MAJ modifs.tex suite introduction classes SSQM (Special Square Matrix), Reza 26/07/2010

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