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

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

mise a jour tres partielle du fichier modifs.tex et sophya.tex , Reza 29/12/2009

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