* add the SampleList and SampleFactory to bouml
[hkl.git] / TODO
bloba0828910b1ddf499736dde465efea595328737c2
1 TODO
2   GENERAL
3     ~ realiser le diagramme UML avec dia.
4     - mettre tau comme étant un paramètre des diffractomètres. 2 valeurs possibles.
5     - Gerer les unités des paramètres
6     - ajouter les méthodes permettant l'aide à la décision pour l'indexation.
7     - modifier le comportement de computeHKL lorsque le crystal en question est soit une poudre soit un mono-cristal.
9     - ajouter une class abstraite Persistant et deriver Object de cette classe.
10     - comment modifier MyVector pour qu'il n'accepte que des classes derivées de object.
11     - voir comment gérer l'internationalisation de la librairie sous VC++6 et gcc
12         utiliser sans doute gettext qui existe aussi pour windows.
13     - Utiliser les unordered_map avec gcc-4.0 à la place de MyVector.
14         Créer une class MyUnorderedMap à la place de MyVector.
15     - comment gerer le changement de longueur d'onde ?
16       - penser aux reflection ainsi qu'aux geometry servant à initialiser les pseudoAxes.
17     
18   AFFINEMENT
19     - utiliser la librairie gsl pour faire les affinements.
20     - Rajouter le fit sur les offsets des angles.
21     - Ajouter d'autres méthode de résolution plus robustes pour notre problème que le simplex.
22     
23   GEOMETRY
24     - dans les fonctions de conversion il faut pouvoir faire intervenir la précision des angles.
25     - utiliser le patern desing Observable pour mettre à jour les pseudoAxes.
26     
27   AXE
28     - ajouter les coupures en utilisant le min et max.
29     - ecrire un AxeInterface
30     - Ajouter un offset sur les Axes de façon à gérer les changement d'origine.
32   CRYSTALLIST
33     - optimiser le renomage d'un crystal sans faire la copy de celui-ci.
34     
35   CRYSTALS
36     - ajouter un champ qui indique si le cristal est un monocristal ou une poudre.
37     - ajouter le calcule du volume de la maille.
38     - Ajouter le calcule de l'angle mesuré ainsi que de l'angle calculé entre
39         deux reflections.
40     - voir comment indiquer que les valeurs des angles alpha beta gamma ne sont
41         pas compatibles dans le constructeur.
42     - Penser à ajouter un paramètre U matrice d'orientation plutot que euler_x, y et z.
43   
44   DIFFRACTOMETRE
45     
46   MODES
47     - Gerer correctement les limites dans les modes suivant la valeurs des
48         paramêtres des modes.
49     - E4C
50       - Mode "zone"
51     - E6C
52       - Mode "Horizontal Eulerian 4C zone"
53       - Mode "Vertical Eulerian 4C zone"
54     - K6C::E4CV
55       - "Bras levant"
56       
57     - K4C utiliser la decomposition de Bricogne pour gerer les modes.
58     - Retourner l'ensemble des solutions et non pas une seule.
59     - Sélection de la solution intéressante parmis les précédentes suivant diverses statégies.
61   REFLECTIONS
62     - ajouter un flag or0 et or1 pour le calcule de UB avec la methode busing et Levy.
63     - voir que faire de la relevance.
65     
66   PSEUDOMOTORS
67     - rajouter les toStream et fromStream pour les versions MSVC6
68     - ajouter un champ m_value a pseudoAxe et le mettre à jour lors du set_value().
69       De cette façon lors d'un get_value() on peut savoir s'il faut + ou - pi par exemple.
70     - Au lieu de get_min et get_max mettre un get_range et créer une classe Range sur laquelle
71       on peut fair des calculs du genre cos(range) qui retourne un range.
72       Il faudrait donc séparer le Range de la Value pour que le range soit composé de deux Values
73       min et max. De plus il suffirait alors de s'occuper de cette classe Value pour gérer les unitées.
74       Ces calcules sur les ranges existe dans boost.
75     - Vérifier lors d'un set_value que l'on est bien dans le range du pseudoAxe.
76     - Relier le pseudoAxe aux moteurs de la géométrie qu'il modifie.
78   SERIALIZATION
79     ~ Sérialiser l'ensemble de la librairie.
80       Lors du passage à un compilateur > MSVC6 penser à utiliser boost pour cela.
81     - comment gérer le cas du Nan et +/-Inf.
83   TEST
84     - revoir LatticeTest::randomize()
85     - revoir setFromGeometry
86     - revoir Axe, Reflection, Mode, Object, Diffractometer, FitParameter
87     - faire les tests de convenience
88     - faire les tests de diffractometer::kappa4C
89     - faire les tests de diffractometer::kappa6C
90     - faire un test plus exhaustif des fonctions de conversion E4C <-> K4C.
92   DOCUMENTATION
93     ~ API
94     - Toujours plus de documentation.
95     - Expliquer comment rajouter des diffractomètres et des modes à la librairie.
96   
97   BINDING
98     ~ python
99     - Autres languages.
101   FRONTEND
102     ~ Developper une interface graphique à la librairie pour la tester.