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

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

MAJ modifs.tex-CHANGELOG suite ajout methodes lecture/ecriture tableaux FITS par morceaux - Reza 30/04/2008

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