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

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

liste modifs ds Samba, SphericalTransformServer - Reza 08/08/2008

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