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

Last change on this file since 3589 was 3580, checked in by ansari, 17 years ago

MAJ fichier modifs.tex avec les changements fait a Moriond/LaThuile et les semaines suivantes - Reza 20/02/2009

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