summaryrefslogtreecommitdiff
path: root/contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs')
-rw-r--r--contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs110
1 files changed, 110 insertions, 0 deletions
diff --git a/contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs b/contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs
new file mode 100644
index 0000000..6ada48a
--- /dev/null
+++ b/contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE UnicodeSyntax #-}
+
+module Hkl.Projects.Mars.Schlegel
+ ( schlegel ) where
+
+import Numeric.LinearAlgebra (ident)
+import System.FilePath ((</>))
+import Text.Printf (printf)
+
+import Prelude hiding (concat, lookup, readFile, writeFile)
+
+import Hkl
+
+-- | TODO
+-- * check if the
+-- * find a way to use integrateMulti with a small amount of memory.
+-- * better mask for each detector.
+
+-- | Samples
+
+project :: FilePath
+project = "/nfs/share-temp/picca/20160800"
+
+published :: FilePath
+published = project </> "published-data"
+
+h5path :: NxEntry -> DataFrameH5Path XrdZeroD
+h5path nxentry =
+ XrdZeroDH5Path
+ (DataItemH5 (nxentry </> image) StrictDims)
+ (DataItemConst 0.0485945)
+ where
+ image ∷ H5Path
+ image = "scan_data/data_01"
+
+sampleCalibration ∷ XrdZeroDCalibration Xpad32
+sampleCalibration = XrdZeroDCalibration (XrdZeroDSample name outputdir entries) Xpad32 LaB6
+ where
+ name ∷ String
+ name = "lab6"
+
+ outputdir ∷ AbsDirPath
+ outputdir = published </> "xrd" </> "calibration"
+
+ entries :: [XrdZeroDSource]
+ entries = [ XrdZeroDSourceNxs $
+ mkNxs (project </> "2017" </> "Run3" </> "scan_5_01.nxs") "_5" h5path
+ ]
+
+
+-- bins :: DIM1
+-- bins = ix1 1000
+
+-- multibins :: DIM1
+-- multibins = ix1 10000
+
+-- threshold :: Maybe Threshold
+-- threshold = Just (Threshold 5000)
+
+-- skipedFrames :: [Int]
+-- skipedFrames = []
+
+-- ceo2 :: XRDSample
+-- ceo2 = XRDSample "CeO2"
+-- (published </> "xrd" </> "CeO2")
+-- [ XrdNxs bins multibins threshold skipedFrames (XrdSourceNxs n) | n <-
+-- [ mkNxs (project </> "2016" </> "Run4" </> "2016-09-07" </> "IHR_29.nxs") "scan_29" h5path'
+-- , mkNxs (project </> "2016" </> "Run4" </> "2016-09-07" </> "IHR_30.nxs") "scan_30" h5path'
+-- , mkNxs (project </> "2016" </> "Run4" </> "2016-09-07" </> "IHR_56.nxs") "scan_56" h5path'
+-- , mkNxs (project </> "2016" </> "Run4" </> "2016-09-07" </> "IHR_58.nxs") "scan_58" h5path'
+-- ]
+-- ]
+
+-- | Main
+
+schlegel :: IO ()
+schlegel = do
+ -- | pre-calibrate (extract from nexus to edf in order to do the
+ -- calibration)
+ extractEdf sampleCalibration
+
+ -- p <- getPoniExtRef sampleRef
+
+ -- let poniextref = move p (Pose (MyMatrix HklB (ident 3)))
+
+ -- -- full calibration
+ -- poniextref' <- calibrate sampleCalibration poniextref
+
+ -- print poniextref
+ -- print poniextref'
+
+ -- -- Integrate the flyscan mesh
+ -- -- 4.680504680504681e-3 per images (2*60+18) / 29484 this contain
+ -- -- read/write and computation
+ -- -- integrateMesh (XrdMeshParams poniextref' mflat method) [fly]
+
+ -- -- | set the integration parameters
+ -- let mflat = Nothing
+ -- let aiMethod = Csr
+ -- let params = XrdOneDParams poniextref' mflat aiMethod
+
+ -- -- integrate each step of the scan
+ -- integrate params [ceo2]
+
+ -- -- this code doesn not work because there is not enought memory on
+ -- -- the computer.
+ -- -- integrateMulti params [ceo2]
+
+ return ()