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