1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
module Hkl.Projects.D2AM.XRD
( d2am ) where
import Data.Array.Repa (DIM1, ix1)
-- import Data.Char (toUpper)
import Numeric.LinearAlgebra (ident)
import System.FilePath ((</>))
import Text.Printf (printf)
import Prelude hiding (concat, lookup, readFile, writeFile)
import Hkl.MyMatrix
import Hkl.PyFAI
import Hkl.Xrd
import Hkl.Detector
-- | Samples
project :: FilePath
project = "/home/experiences/instrumentation/picca/data/d2am"
-- project = "/nfs/ruche-diffabs/diffabs-soleil/com-diffabs/"
published :: FilePath
published = project </> "published-data"
sampleRef :: XRDRef
sampleRef = XRDRef "reference"
(published </> "calibration")
(XrdRefEdf
(project </> "16Dec08D5_0268-rsz.edf")
(project </> "16Dec08D5_0268-rsz.poni")
)
sampleCalibration :: XRDCalibration Xpad32
sampleCalibration = XRDCalibration { xrdCalibrationName = "calibration"
, xrdCalibrationOutputDir = published </> "calibration" -- TODO pourquoi ce output
, xrdCalibrationDetector = Xpad32
, xrdCalibrationCalibrant = CeO2
, xrdCalibrationEntries = entries
}
where
idxs :: [Int]
idxs = [268, 271, 285, 295]
entry :: Int -> XRDCalibrationEntry
entry idx = XRDCalibrationEntryEdf
{ xrdCalibrationEntryEdf'Edf = project </> printf "16Dec08D5_%04d-rsz.edf" idx
, xrdCalibrationEntryEdf'NptPath = project </> printf "16Dec08D5_%04d-rsz.npt" idx
}
entries :: [XRDCalibrationEntry]
entries = [ entry idx | idx <- idxs]
bins :: DIM1
bins = ix1 1000
multibins :: DIM1
multibins = ix1 10000
threshold :: Maybe Threshold
threshold = Just (Threshold 5000)
skipedFrames :: [Int]
skipedFrames = []
lab6 :: XRDSample
lab6 = XRDSample "test"
(published </> "test")
[XrdNxs bins multibins threshold skipedFrames entries]
where
idxs :: [Int]
idxs = [268, 271, 285, 295]
entry :: Int -> FilePath
entry idx = project </> printf "16Dec08D5_%04d-rsz.edf" idx
entries :: XrdSource
entries = XrdSourceEdf [entry idx | idx <- idxs]
-- | Main
d2am :: IO ()
d2am = do
let samples = [lab6]
p <- getPoniExtRef sampleRef
-- let poniextref = setPose (Hkl.PyFAI.PoniExt.flip p) (MyMatrix HklB (ident 3))
let poniextref = move p (Pose (MyMatrix HklB (ident 3)))
-- full calibration
poniextref' <- calibrate sampleCalibration poniextref
print poniextref
print poniextref'
-- integrate each step of the scan
let params = XrdOneDParams poniextref' Nothing Csr -- waiting for PyFAI to manage method in multi geometry
integrateMulti params samples
return ()
|