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

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

Mise a jour fichier history modifs.tex avec les changements de PI, lie a PIDrawer::AutoFontSize - Reza 29/01/2009

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