Ticket #8506 (closed: fixed)

Opened 7 years ago

Last modified 5 years ago

[Muon] Update LoadMuonNexus to return dead times as a table.

Reported by: Arturs Bekasovs Owned by: Arturs Bekasovs
Priority: major Milestone: Release 3.1
Component: Muon Keywords:
Cc: Blocked By:
Blocking: #8494 Tester: Karl Palmen

Description (last modified by Arturs Bekasovs) (diff)

Both MuonAnalysis interface and PlotAsymmetryLogValue algorithm are currently doing it internally and should be refactored to use the new algorithm. To make it easier, LoadMuonNexus should be updated to return dead times as a table. Single table should be returned for single period data. Group of tables might be returned for multi-period data. In both cases, it will allow us to pass the result directly to ApplyDeadTimeCorr.

Change History

comment:1 Changed 7 years ago by Arturs Bekasovs

  • Description modified (diff)

comment:2 Changed 7 years ago by Arturs Bekasovs

  • Description modified (diff)
  • Summary changed from [Muon] MuonLoadCorrected algorithm to [Muon] Update LoadMuonNexus to return dead times as a table.

comment:3 Changed 7 years ago by Arturs Bekasovs

  • Status changed from new to inprogress

Refs #8506. Changed property type, simple test for it.

Changeset: 55466cf4f94b11fdfb8c1706f0af6fd1e1a3d6f3

comment:4 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Creating single table.

Changeset: 3ac4a46dce7d1ef72589e94c6b2514e7abbc725c

comment:5 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Multi-period dead times.

Changeset: 0648adc166a5f82c6eb38fbab5ccd0c8ffdc0f94

comment:6 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Fix build servers.

Skip some tests for now, fix ambiguous NeXus namespace.

Changeset: bf07d2edd96e783dd6f540ed06a7c77fd10c3e4f

comment:7 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Attempt to fix namespace issues on Windows.

Changeset: 148053bb04cd83d95cb256e2f00d2a3842512226

comment:8 Changed 7 years ago by Arturs Bekasovs

  • Description modified (diff)
  • Summary changed from [Muon] Update LoadMuonNexus to return dead times as a table. to [Muon] MuonLoadCorrected algorithm

comment:9 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Updated PlotAsymmetryByLogValue.

So it uses new functionality and doesn't convert the vector to table itself.

Changeset: 42de2f8250610775cae2d29b13bf15c271a4185f

comment:10 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Renamed property name.

This makes it more consistent with how the same property is named in ApplyDeadTimeCorr.

Changeset: 7d41fe440cb4b31041c1e156529b74fd76e26127

comment:11 Changed 7 years ago by Arturs Bekasovs

Refs #8506. New files.

Changeset: 0de0b86a57cc653530a30a18586f05d28f51f9e8

comment:12 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Initial version - no correction applied.

Changeset: 80a4803b8d6dba7c3069a12a5dd51171d208cac9

comment:13 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Applying correction from data.

Changeset: 80ca087e3ca7889a774e6ec921bc41edef3e991f

comment:14 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Correction from specified file.

Changeset: c6c739652f79436fa044c44d9fe7003421f732b9

comment:15 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Multi-period tests.

Changeset: 664f827c23437a4387f92cb2c6c22f3dc7475878

comment:16 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Update the work.

Some of the commit were taken from another branch created before LoadMuonNexus was updated, so it had to be updated to use new functionality.

Plus skip test for not implemented functionality so that I can checkbuild.

Changeset: c9c7d32461f89cbe5ee786374c0b25d0781e7941

comment:17 Changed 7 years ago by Arturs Bekasovs

  • Description modified (diff)
  • Summary changed from [Muon] MuonLoadCorrected algorithm to [Muon] Update LoadMuonNexus to return dead times as a table.

Rethought again. MuonApplyDtc is basically just replicating checkGroup/processGroups functionality of the Algorithm. I couldn't create such an algorithm for every time I will need to process multi-period Muon data, so a general solution should be found.

The reason why I can't use checkGroup/processGroup functionality is that my workspaces are not in the ADS. That's a fundamental problem with WorkspaceProperties and I would not dare solving it now.

The temporary solution I've came up with is creating ScopedWorkspace class, which would allow me to add something to the ADS and remove it automatically when going out of scope. This should be exception and error safe.

comment:18 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Implemented multi-period handling.

Changeset: bec50773da8808638ac64bd7479cdaa676d4d114

comment:19 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Better property option name.

Changeset: 60ccf5ad46e9dd0de4c1cd852e60dbdd088d0c75

comment:20 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Using new algorithm in PlotAsymmetryByLogValue.

Changeset: b1717fbc403d9c680604c8dc24a0458cbece89c4

comment:21 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Renamed algorithm.

It was decided to move loading part out of it.

Changeset: 425cbef497cd6b97ebc83d51a5912c6cd86b93a3

comment:22 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Removed the workflow algorithm.

Changeset: 8e399b3059cbbbb6e615d50828edb09ef64f10bb

comment:23 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Files for new ScopedWorkspace class.

Changeset: 7025158bb78bc310aa74b2d611416fe12510a9a4

comment:24 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: unique name generation.

Changeset: 70735aa327360212bf54f94b2ab771f5b2a8d5df

comment:25 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: removing from ADS when destructed.

Changeset: ce74929f7c63b77d0951005d65a785d7600bbdb0

comment:26 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: work correctly with groups.

Changeset: 6cbb276fab6fabcf177167278596a207e857bc19

comment:27 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: exception test.

Changeset: d0c7236c0c77d9785a3500dfc727bd65befb6790

comment:28 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: workspace constructor.

Changeset: 1428880f060bc3a2d54b73d517e5eba4dbd76c58

comment:29 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: retrieve() method.

Plus made non copyable/assignable.

Changeset: c9141833138ddcfa80cfc3216efec69665ca7122

comment:30 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: set() method.

Changeset: 019b34e16e6b003456215978a898e12c8aaa4500

comment:31 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: remove srand call.

No need, we don't really care about the seed.

Changeset: 2ac07b6729f3d5cc27ffc3a409427a2836ef6d02

comment:32 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Update PlotAsymmetryByLogValue.

Is using scoped workspaces now so it doesn't care whether workspaces are groups or not.

Changeset: f271e78ec4b0c0dc635cc2899a1a9648375a5a4e

comment:33 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: not allow creating if already in ADS.

Changeset: bc00fb824ba380c628bfffbf108b01e2e9b13262

comment:34 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: boolean operator.

Changeset: 00f0f78baa83f3b3fe9b140a78c76ee97a8eaf9e

comment:35 Changed 7 years ago by Arturs Bekasovs

Refs #8506. Refactor MuonAnalysis.

Dead time table is now just passed to ApplyDeadTimeCorr (with a little help from ScopedWorkspace).

Changeset: 4a5ad3695337666ce463541b085adcca4539259e

comment:36 Changed 7 years ago by Arturs Bekasovs

Refs #8506. ScopedWorkspace: documentation.

Changeset: 3096975d4547d37eb3e32ee0dadda20784032562

comment:37 Changed 7 years ago by Arturs Bekasovs

Tester:

Code review note: please don't use earlier commit history as it is rather confusing - stuff was added and later removed. You'd be better with cumulative set of changes as can be viewed here: https://github.com/mantidproject/mantid/compare/feature;8506_muon_load_corr_alg#files_bucket

What was done and should be verified:

  1. LoadMuonNexus algorithm should return dead times as a table workspace. Test it with both single period and multi-period data. Check that tests were updated accordingly.
  2. MuonAnalysis code was refactored and should now basically just pass table workspace with dead times to ApplyDeadTimeCorr algorithm. None of the calculations should be performed in that regard. Check that dead time is applied for both single-period and multi-period data. (Be aware of problem as described in #8433 which basically means when errors happens during dead time correction for multi-period data, the original data might get corrupted).
  3. PlotAsymmetryByLogValue algorithm was updated to not do any dead time calculations itself as well. This functionality is covered by tests, so check that they are sensible.
  4. ScopedWorkspace was added. Please make sure you understand (and agree with!) its purpose and how it is used in MuonAnalysis in PlotAsymmetryByLogValue.
Last edited 7 years ago by Arturs Bekasovs (previous) (diff)

comment:38 Changed 7 years ago by Arturs Bekasovs

Refs #8506. MuonAnalysis: better error handling.

Changeset: 2d8de9a3b5e1214fea26307826503ad12431acc8

comment:39 Changed 7 years ago by Arturs Bekasovs

  • Status changed from inprogress to verify
  • Resolution set to fixed

comment:40 Changed 7 years ago by Karl Palmen

  • Status changed from verify to verifying
  • Tester set to Karl Palmen

comment:41 Changed 7 years ago by Karl Palmen

  • Status changed from verifying to closed

Merge remote-tracking branch 'origin/feature/8506_muon_load_corr_alg'

Full changeset: 610b6ccbb947bdd31df3b024d5623128bd20cda3

comment:42 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 9350

Note: See TracTickets for help on using tickets.