Mantid
Loading...
Searching...
No Matches
MCAbsorptionStrategy.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2016 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7#pragma once
8
10#include "MantidAlgorithms/DllConfig.h"
14#include "MantidHistogramData/Histogram.h"
16#include <tuple>
17
18namespace Mantid {
19namespace API {
20class Sample;
21}
22namespace Kernel {
23class PseudoRandomNumberGenerator;
24class V3D;
25class Logger;
26} // namespace Kernel
27namespace Algorithms {
28class IBeamProfile;
29class MonteCarloAbsorption;
30
41class MANTID_ALGORITHMS_DLL MCAbsorptionStrategy : public IMCAbsorptionStrategy {
42public:
43 MCAbsorptionStrategy(IMCInteractionVolume &interactionVolume, const IBeamProfile &beamProfile,
44 Kernel::DeltaEMode::Type EMode, const size_t nevents, const size_t maxScatterPtAttempts,
45 const bool regenerateTracksForEachLambda);
46 virtual void calculate(Kernel::PseudoRandomNumberGenerator &rng, const Kernel::V3D &finalPos,
47 const std::vector<double> &lambdas, const double lambdaFixed,
48 std::vector<double> &attenuationFactors, std::vector<double> &attFactorErrors,
49 MCInteractionStatistics &stats) override;
50
51private:
54 const size_t m_nevents;
58 IMCInteractionVolume &setActiveRegion(IMCInteractionVolume &interactionVolume, const IBeamProfile &beamProfile);
59};
60
61} // namespace Algorithms
62} // namespace Mantid
Base class for all classes defining a beam profile.
Definition: IBeamProfile.h:26
Defines a base class for objects that calculate correction factors for self-attenuation.
Defines a base class for objects describing a volume where interactions of Tracks and Objects can tak...
Implements the algorithm for calculating the correction factor for self-attenuation and single wavele...
const IMCInteractionVolume & m_scatterVol
const Kernel::DeltaEMode::Type m_EMode
Stores statistics relating to the tracks generated in MCInteractionVolume for a specific detector.
Defines a 1D pseudo-random number generator, i.e.
Class for 3D vectors.
Definition: V3D.h:34
Helper class which provides the Collimation Length for SANS instruments.
Type
Define the available energy transfer modes It is important to assign enums proper numbers,...
Definition: DeltaEMode.h:29