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

Last change on this file since 3457 was 3457, checked in by cmv, 18 years ago

add texte for autolut=hisrng cmv 12/02/2008

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