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

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

MAJ fichiers modifs.tex pour V=2.125 , Sep2008 Reza 13/10/2008

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