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

Last change on this file since 3753 was 3738, checked in by ansari, 16 years ago

Petite correction fichier modifs.tex - Reza 29/01/2010

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