BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
TransformFromDomain Namespace Reference

Functions

bool isValidRoughness (const LayerRoughness *roughness)
 Returns true if given roughness is non-zero roughness. More...
 
void set1DLatticeItem (SessionItem *item, const InterferenceFunction1DLattice &sample)
 
void set2DLatticeItem (SessionItem *item, const InterferenceFunction2DLattice &sample)
 
void set2DParaCrystalItem (SessionItem *item, const InterferenceFunction2DParaCrystal &sample)
 
void setAxisItem (SessionItem *item, const IAxis &axis, double factor=1.0)
 
void setBackground (InstrumentItem *instrument_item, const ISimulation &simulation)
 
void setDetector (Instrument2DItem *instrument_item, const ISimulation2D &simulation)
 
void setDetectorGeometry (Instrument2DItem *instrument_item, const IDetector &detector)
 
void setDetectorMasks (DetectorItem *detector_item, const ISimulation &simulation)
 
void setDetectorProperties (DetectorItem *detector_item, const IDetector &detector)
 
void setDetectorResolution (DetectorItem *detector_item, const IDetector &detector)
 
void setFinite2DLatticeItem (SessionItem *item, const InterferenceFunctionFinite2DLattice &sample)
 
void setFootprintFactor (const IFootprintFactor *footprint, SpecularBeamItem *beam_item)
 
void setGISASBeamItem (BeamItem *beam_item, const GISASSimulation &simulation)
 
void setHardDiskItem (SessionItem *item, const InterferenceFunctionHardDisk &sample)
 
void setItemFromSample (BeamDistributionItem *beam_distribution_item, const ParameterDistribution &parameter_distribution)
 
void setLayerItem (SessionItem *layer_item, const Layer *layer, const LayerInterface *top_interface)
 
void setMaskContainer (MaskContainerItem *container_item, const IDetector &detector, double scale)
 
void setOffSpecularBeamItem (BeamItem *beam_item, const OffSpecularSimulation &simulation)
 
void setParticleDistributionItem (SessionItem *item, const ParticleDistribution &sample)
 Initialization of ParticleDistributionItem. More...
 
void setRadialParaCrystalItem (SessionItem *item, const InterferenceFunctionRadialParaCrystal &sample)
 
void setRectangularDetector (RectangularDetectorItem *detector_item, const RectangularDetector &detector)
 
void setRoughnessItem (SessionItem *item, const LayerRoughness &sample)
 
void setSpecularBeamItem (SpecularBeamItem *beam_item, const SpecularSimulation &simulation)
 
void setSphericalDetector (SphericalDetectorItem *detector_item, const SphericalDetector &detector)
 

Function Documentation

◆ isValidRoughness()

bool TransformFromDomain::isValidRoughness ( const LayerRoughness roughness)

Returns true if given roughness is non-zero roughness.

Definition at line 228 of file TransformFromDomain.cpp.

229 {
230  if (!roughness)
231  return false;
232  if (roughness->getSigma() == 0 && roughness->getHurstParameter() == 0.0
233  && roughness->getLatteralCorrLength() == 0.0)
234  return false;
235  return true;
236 }
double getSigma() const
Returns rms of roughness.
double getLatteralCorrLength() const
Returns lateral correlation length.
double getHurstParameter() const
Returns hurst parameter.

References LayerRoughness::getHurstParameter(), LayerRoughness::getLatteralCorrLength(), and LayerRoughness::getSigma().

Referenced by setLayerItem().

Here is the call graph for this function:

◆ set1DLatticeItem()

void TransformFromDomain::set1DLatticeItem ( SessionItem item,
const InterferenceFunction1DLattice sample 
)

Definition at line 88 of file TransformFromDomain.cpp.

90 {
93  Units::rad2deg(sample.getXi()));
94 
95  auto pdf = OnlyChildOfType<IFTDecayFunction1D>(sample);
97  SetDecayFunction1D(item, pdf, group_name);
98  setPositionVariance(item, sample);
99 }
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
double rad2deg(double angle)
Definition: Units.h:55

References InterferenceFunction1DLattice::getLength(), InterferenceFunction1DLattice::getXi(), InterferenceFunction1DLatticeItem::P_DECAY_FUNCTION, InterferenceFunction1DLatticeItem::P_LENGTH, InterferenceFunction1DLatticeItem::P_ROTATION_ANGLE, Units::rad2deg(), and SessionItem::setItemValue().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ set2DLatticeItem()

void TransformFromDomain::set2DLatticeItem ( SessionItem item,
const InterferenceFunction2DLattice sample 
)

Definition at line 101 of file TransformFromDomain.cpp.

103 {
104  set2DLatticeParameters(item, sample.lattice());
105 
107  sample.integrationOverXi());
108 
109  auto p_pdf = OnlyChildOfType<IFTDecayFunction2D>(sample);
111  SetDecayFunction2D(item, p_pdf, group_name);
112  setPositionVariance(item, sample);
113 }

References InterferenceFunction2DLattice::integrationOverXi(), InterferenceFunction2DLattice::lattice(), InterferenceFunction2DLatticeItem::P_DECAY_FUNCTION, InterferenceFunction2DLatticeItem::P_XI_INTEGRATION, and SessionItem::setItemValue().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ set2DParaCrystalItem()

void TransformFromDomain::set2DParaCrystalItem ( SessionItem item,
const InterferenceFunction2DParaCrystal sample 
)

Definition at line 115 of file TransformFromDomain.cpp.

117 {
118  set2DLatticeParameters(item, sample.lattice());
119 
121  sample.dampingLength());
123  sample.domainSizes()[0]);
125  sample.domainSizes()[1]);
127  sample.integrationOverXi());
128 
129  auto pdfs = ChildNodesOfType<IFTDistribution2D>(sample);
130  QStringList group_names;
133  for (unsigned i = 0; i < pdfs.size(); ++i)
134  setPDF2D(item, pdfs[i], group_names[i]);
135  setPositionVariance(item, sample);
136 }

References InterferenceFunction2DParaCrystal::dampingLength(), InterferenceFunction2DParaCrystal::domainSizes(), InterferenceFunction2DParaCrystal::integrationOverXi(), InterferenceFunction2DParaCrystal::lattice(), InterferenceFunction2DParaCrystalItem::P_DAMPING_LENGTH, InterferenceFunction2DParaCrystalItem::P_DOMAIN_SIZE1, InterferenceFunction2DParaCrystalItem::P_DOMAIN_SIZE2, InterferenceFunction2DParaCrystalItem::P_PDF1, InterferenceFunction2DParaCrystalItem::P_PDF2, InterferenceFunction2DParaCrystalItem::P_XI_INTEGRATION, and SessionItem::setItemValue().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setAxisItem()

void TransformFromDomain::setAxisItem ( SessionItem item,
const IAxis axis,
double  factor = 1.0 
)

Definition at line 615 of file TransformFromDomain.cpp.

616 {
617  if (item->modelType() != "BasicAxis")
618  throw GUIHelpers::Error("TransformFromDomain::setAxisItem() -> Error. Unexpected item.");
619 
620  if (!dynamic_cast<const FixedBinAxis*>(&axis))
621  throw GUIHelpers::Error("TransformFromDomain::setAxisItem() -> Error. Unexpected axis");
622 
623  item->setItemValue(BasicAxisItem::P_NBINS, static_cast<int>(axis.size()));
624  item->setItemValue(BasicAxisItem::P_MIN_DEG, factor * axis.lowerBound());
625  item->setItemValue(BasicAxisItem::P_MAX_DEG, factor * axis.upperBound());
626  item->setItemValue(BasicAxisItem::P_TITLE, QString::fromStdString(axis.getName()));
627 }
static const QString P_NBINS
Definition: AxesItems.h:26
static const QString P_MAX_DEG
Definition: AxesItems.h:28
static const QString P_TITLE
Definition: AxesItems.h:29
static const QString P_MIN_DEG
Definition: AxesItems.h:27
Axis with fixed bin size.
Definition: FixedBinAxis.h:23
virtual double upperBound() const =0
Returns value of last point of axis.
virtual size_t size() const =0
retrieve the number of bins
virtual double lowerBound() const =0
Returns value of first point of axis.
std::string getName() const
retrieve the label of the axis
Definition: IAxis.h:40
QString modelType() const
Get model type.

References IAxis::getName(), IAxis::lowerBound(), SessionItem::modelType(), BasicAxisItem::P_MAX_DEG, BasicAxisItem::P_MIN_DEG, BasicAxisItem::P_NBINS, BasicAxisItem::P_TITLE, SessionItem::setItemValue(), IAxis::size(), and IAxis::upperBound().

Referenced by setSpecularBeamItem().

Here is the call graph for this function:

◆ setBackground()

void TransformFromDomain::setBackground ( InstrumentItem instrument_item,
const ISimulation simulation 
)

Definition at line 583 of file TransformFromDomain.cpp.

585 {
586  auto p_bg = simulation.background();
587  if (auto p_constant_bg = dynamic_cast<const ConstantBackground*>(p_bg)) {
588  auto constant_bg_item =
589  instrument_item->setGroupProperty(InstrumentItem::P_BACKGROUND, "ConstantBackground");
590  double value = p_constant_bg->backgroundValue();
591  constant_bg_item->setItemValue(ConstantBackgroundItem::P_VALUE, value);
592  } else if (dynamic_cast<const PoissonNoiseBackground*>(p_bg)) {
593  instrument_item->setGroupProperty(InstrumentItem::P_BACKGROUND, "PoissonNoiseBackground");
594  }
595 }
static const QString P_VALUE
Class representing a constant background signal.
const IBackground * background() const
Definition: ISimulation.h:74
static const QString P_BACKGROUND
Class representing Poisson noise on top of the scattered intensity.
SessionItem * setGroupProperty(const QString &groupTag, const QString &modelType) const
Set the current type of group item.

References ISimulation::background(), InstrumentItem::P_BACKGROUND, ConstantBackgroundItem::P_VALUE, SessionItem::setGroupProperty(), and SessionItem::setItemValue().

Here is the call graph for this function:

◆ setDetector()

void TransformFromDomain::setDetector ( Instrument2DItem instrument_item,
const ISimulation2D simulation 
)

Definition at line 311 of file TransformFromDomain.cpp.

313 {
314  const IDetector* p_detector = simulation.getDetector();
315  setDetectorGeometry(instrument_item, *p_detector);
316 
317  auto detector_item = instrument_item->detectorItem();
318 
319  setDetectorResolution(detector_item, *p_detector);
320  setDetectorProperties(detector_item, *p_detector);
321  setDetectorMasks(detector_item, simulation);
322 }
Abstract detector interface.
Definition: IDetector.h:36
IDetector * getDetector()
Definition: ISimulation.h:61
DetectorItem * detectorItem() const
void setDetectorResolution(DetectorItem *detector_item, const IDetector &detector)
void setDetectorGeometry(Instrument2DItem *instrument_item, const IDetector &detector)
void setDetectorProperties(DetectorItem *detector_item, const IDetector &detector)
void setDetectorMasks(DetectorItem *detector_item, const ISimulation &simulation)

References Instrument2DItem::detectorItem(), ISimulation::getDetector(), setDetectorGeometry(), setDetectorMasks(), setDetectorProperties(), and setDetectorResolution().

Here is the call graph for this function:

◆ setDetectorGeometry()

void TransformFromDomain::setDetectorGeometry ( Instrument2DItem instrument_item,
const IDetector detector 
)

Definition at line 324 of file TransformFromDomain.cpp.

326 {
327  if (auto det = dynamic_cast<const SphericalDetector*>(&detector)) {
328  instrument_item->setDetectorGroup("SphericalDetector");
329  auto item = dynamic_cast<SphericalDetectorItem*>(instrument_item->detectorItem());
330  setSphericalDetector(item, *det);
331  } else if (auto det = dynamic_cast<const RectangularDetector*>(&detector)) {
332  instrument_item->setDetectorGroup("RectangularDetector");
333  auto item = dynamic_cast<RectangularDetectorItem*>(instrument_item->detectorItem());
334  setRectangularDetector(item, *det);
335  } else {
336  throw GUIHelpers::Error(
337  "TransformFromDomain::setDetectorGeometry() -> Unknown detector type.");
338  }
339 }
void setDetectorGroup(const QString &modelType)
A flat rectangular detector with axes and resolution function.
A detector with coordinate axes along angles phi and alpha.
void setRectangularDetector(RectangularDetectorItem *detector_item, const RectangularDetector &detector)
void setSphericalDetector(SphericalDetectorItem *detector_item, const SphericalDetector &detector)

References Instrument2DItem::detectorItem(), Instrument2DItem::setDetectorGroup(), setRectangularDetector(), and setSphericalDetector().

Referenced by setDetector().

Here is the call graph for this function:

◆ setDetectorMasks()

void TransformFromDomain::setDetectorMasks ( DetectorItem detector_item,
const ISimulation simulation 
)

Definition at line 464 of file TransformFromDomain.cpp.

466 {
467  const IDetector* detector = simulation.getDetector();
468  if ((detector->detectorMask() && detector->detectorMask()->numberOfMasks())
469  || detector->regionOfInterest()) {
470  detector_item->createMaskContainer();
471 
472  double scale(1.0);
473  if (detector_item->modelType() == "SphericalDetector")
474  scale = 1. / Units::deg;
475 
476  setMaskContainer(detector_item->maskContainerItem(), *detector, scale);
477  }
478 }
MaskContainerItem * maskContainerItem() const
void createMaskContainer()
size_t numberOfMasks() const
virtual const DetectorMask * detectorMask() const =0
Returns detector masks container.
virtual const RegionOfInterest * regionOfInterest() const =0
Returns region of interest if exists.
void setMaskContainer(MaskContainerItem *container_item, const IDetector &detector, double scale)
static constexpr double deg
Definition: Units.h:46

References DetectorItem::createMaskContainer(), Units::deg, IDetector::detectorMask(), ISimulation::getDetector(), DetectorItem::maskContainerItem(), SessionItem::modelType(), DetectorMask::numberOfMasks(), IDetector::regionOfInterest(), and setMaskContainer().

Referenced by setDetector().

Here is the call graph for this function:

◆ setDetectorProperties()

void TransformFromDomain::setDetectorProperties ( DetectorItem detector_item,
const IDetector detector 
)

Definition at line 371 of file TransformFromDomain.cpp.

373 {
374  double total_transmission = detector.detectionProperties().analyzerTotalTransmission();
375  if (total_transmission <= 0.0)
376  return;
377 
378  kvector_t analyzer_dir = detector.detectionProperties().analyzerDirection();
379  double efficiency = detector.detectionProperties().analyzerEfficiency();
380  detector_item->item<VectorItem>(DetectorItem::P_ANALYZER_DIRECTION)->setVector(analyzer_dir);
381  detector_item->setItemValue(DetectorItem::P_ANALYZER_EFFICIENCY, efficiency);
382  detector_item->setItemValue(DetectorItem::P_ANALYZER_TOTAL_TRANSMISSION, total_transmission);
383 }
double analyzerEfficiency() const
will always return positive value
double analyzerTotalTransmission() const
kvector_t analyzerDirection() const
Retrieve the analyzer characteristics.
static const QString P_ANALYZER_EFFICIENCY
Definition: DetectorItems.h:30
static const QString P_ANALYZER_DIRECTION
Definition: DetectorItems.h:29
static const QString P_ANALYZER_TOTAL_TRANSMISSION
Definition: DetectorItems.h:31
const DetectionProperties & detectionProperties() const
Returns detection properties.
Definition: IDetector.h:82
T * item(const QString &tag) const
Definition: SessionItem.h:151

References DetectionProperties::analyzerDirection(), DetectionProperties::analyzerEfficiency(), DetectionProperties::analyzerTotalTransmission(), IDetector::detectionProperties(), SessionItem::item(), DetectorItem::P_ANALYZER_DIRECTION, DetectorItem::P_ANALYZER_EFFICIENCY, DetectorItem::P_ANALYZER_TOTAL_TRANSMISSION, and SessionItem::setItemValue().

Referenced by setDetector().

Here is the call graph for this function:

◆ setDetectorResolution()

void TransformFromDomain::setDetectorResolution ( DetectorItem detector_item,
const IDetector detector 
)

Definition at line 341 of file TransformFromDomain.cpp.

343 {
344  const IDetectorResolution* p_resfunc = detector.detectorResolution();
345 
346  if (!p_resfunc)
347  return;
348 
349  if (auto p_convfunc = dynamic_cast<const ConvolutionDetectorResolution*>(p_resfunc)) {
350  if (auto resfunc = dynamic_cast<const ResolutionFunction2DGaussian*>(
351  p_convfunc->getResolutionFunction2D())) {
353  "ResolutionFunction2DGaussian");
354  double scale(1.0);
355  if (detector_item->modelType() == "SphericalDetector")
356  scale = 1. / Units::deg;
358  scale * resfunc->getSigmaX());
360  scale * resfunc->getSigmaY());
361  } else {
362  throw GUIHelpers::Error("TransformFromDomain::setDetectorResolution() -> Error. "
363  "Unknown detector resolution function");
364  }
365  } else {
366  throw GUIHelpers::Error("TransformFromDomain::setDetectorResolution() -> Error. "
367  "Not a ConvolutionDetectorResolution function");
368  }
369 }
Convolutes the intensity in 1 or 2 dimensions with a resolution function.
static const QString P_RESOLUTION_FUNCTION
Definition: DetectorItems.h:28
Interface for detector resolution algorithms.
const IDetectorResolution * detectorResolution() const
Returns a pointer to detector resolution object.
Definition: IDetector.cpp:138
Simple gaussian two-dimensional resolution function.

References Units::deg, IDetector::detectorResolution(), SessionItem::modelType(), DetectorItem::P_RESOLUTION_FUNCTION, ResolutionFunction2DGaussianItem::P_SIGMA_X, ResolutionFunction2DGaussianItem::P_SIGMA_Y, SessionItem::setGroupProperty(), and SessionItem::setItemValue().

Referenced by setDetector().

Here is the call graph for this function:

◆ setFinite2DLatticeItem()

void TransformFromDomain::setFinite2DLatticeItem ( SessionItem item,
const InterferenceFunctionFinite2DLattice sample 
)

Definition at line 138 of file TransformFromDomain.cpp.

140 {
141  set2DLatticeParameters(item, sample.lattice());
142 
144  sample.numberUnitCells1());
146  sample.numberUnitCells2());
148  sample.positionVariance());
150  sample.integrationOverXi());
151  setPositionVariance(item, sample);
152 }
double positionVariance() const
Returns the position variance.
static const QString P_POSITION_VARIANCE

References InterferenceFunctionFinite2DLattice::integrationOverXi(), InterferenceFunctionFinite2DLattice::lattice(), InterferenceFunctionFinite2DLattice::numberUnitCells1(), InterferenceFunctionFinite2DLattice::numberUnitCells2(), InterferenceFunctionFinite2DLatticeItem::P_DOMAIN_SIZE_1, InterferenceFunctionFinite2DLatticeItem::P_DOMAIN_SIZE_2, InterferenceFunctionItem::P_POSITION_VARIANCE, InterferenceFunctionFinite2DLatticeItem::P_XI_INTEGRATION, IInterferenceFunction::positionVariance(), and SessionItem::setItemValue().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setFootprintFactor()

void TransformFromDomain::setFootprintFactor ( const IFootprintFactor footprint,
SpecularBeamItem beam_item 
)

Definition at line 597 of file TransformFromDomain.cpp.

599 {
600  if (!footprint)
601  return;
602  if (const auto gaussian_fp = dynamic_cast<const FootprintGauss*>(footprint)) {
603  auto gaussian_fp_item =
604  beam_item->setGroupProperty(SpecularBeamItem::P_FOOPTPRINT, "GaussianFootrpint");
605  const double value = gaussian_fp->widthRatio();
606  gaussian_fp_item->setItemValue(FootprintGaussianItem::P_VALUE, value);
607  } else if (const auto square_fp = dynamic_cast<const FootprintSquare*>(footprint)) {
608  auto square_fp_item =
609  beam_item->setGroupProperty(SpecularBeamItem::P_FOOPTPRINT, "SquareFootprint");
610  const double value = square_fp->widthRatio();
611  square_fp_item->setItemValue(FootprintSquareItem::P_VALUE, value);
612  }
613 }
Gaussian beam footprint.
static const QString P_VALUE
static const QString P_VALUE
Rectangular beam footprint.
static const QString P_FOOPTPRINT
Definition: BeamItems.h:56

References SpecularBeamItem::P_FOOPTPRINT, FootprintGaussianItem::P_VALUE, FootprintSquareItem::P_VALUE, SessionItem::setGroupProperty(), and SessionItem::setItemValue().

Referenced by setSpecularBeamItem().

Here is the call graph for this function:

◆ setGISASBeamItem()

void TransformFromDomain::setGISASBeamItem ( BeamItem beam_item,
const GISASSimulation simulation 
)

Definition at line 238 of file TransformFromDomain.cpp.

239 {
240  ASSERT(beam_item);
241  Beam beam = simulation.beam();
242 
243  beam_item->setIntensity(beam.intensity());
244  beam_item->setWavelength(beam.wavelength());
245  beam_item->setInclinationAngle(Units::rad2deg(beam.direction().alpha()));
246  beam_item->setAzimuthalAngle(Units::rad2deg(beam.direction().phi()));
247 
248  // distribution parameters
249  const DistributionHandler::Distributions_t distributions =
251  for (size_t i = 0; i < distributions.size(); ++i) {
252  addDistributionToBeamItem("Wavelength", BeamItem::P_WAVELENGTH, distributions[i],
253  beam_item);
254  addDistributionToBeamItem("InclinationAngle", BeamItem::P_INCLINATION_ANGLE,
255  distributions[i], beam_item);
256  addDistributionToBeamItem("AzimuthalAngle", BeamItem::P_AZIMUTHAL_ANGLE, distributions[i],
257  beam_item);
258  }
259 
260  // polarization parameters
261  beam_item->item<VectorItem>(BeamItem::P_POLARIZATION)->setVector(beam.getBlochVector());
262 }
#define ASSERT(condition)
Definition: Assert.h:31
static const QString P_AZIMUTHAL_ANGLE
Definition: BeamItems.h:31
void setWavelength(double value)
Definition: BeamItems.cpp:74
static const QString P_WAVELENGTH
Definition: BeamItems.h:29
static const QString P_INCLINATION_ANGLE
Definition: BeamItems.h:30
virtual void setInclinationAngle(double value)
Definition: BeamItems.cpp:79
void setIntensity(double value)
Definition: BeamItems.cpp:64
void setAzimuthalAngle(double value)
Definition: BeamItems.cpp:89
static const QString P_POLARIZATION
Definition: BeamItems.h:32
An incident neutron or x-ray beam.
Definition: Beam.h:27
Direction direction() const
Definition: Beam.h:45
double intensity() const
Returns the beam intensity in neutrons/sec.
Definition: Beam.h:42
double wavelength() const
Definition: Beam.h:43
kvector_t getBlochVector() const
Definition: Beam.cpp:122
double phi() const
Definition: Direction.h:30
double alpha() const
Definition: Direction.h:29
const Distributions_t & getDistributions() const
std::vector< ParameterDistribution > Distributions_t
const DistributionHandler & getDistributionHandler() const
Definition: ISimulation.h:88
Beam & beam()
Definition: ISimulation.h:58

References Direction::alpha(), ASSERT, ISimulation::beam(), Beam::direction(), Beam::getBlochVector(), ISimulation::getDistributionHandler(), DistributionHandler::getDistributions(), Beam::intensity(), SessionItem::item(), BeamItem::P_AZIMUTHAL_ANGLE, BeamItem::P_INCLINATION_ANGLE, BeamItem::P_POLARIZATION, BeamItem::P_WAVELENGTH, Direction::phi(), Units::rad2deg(), BeamItem::setAzimuthalAngle(), BeamItem::setInclinationAngle(), BeamItem::setIntensity(), BeamItem::setWavelength(), and Beam::wavelength().

Here is the call graph for this function:

◆ setHardDiskItem()

void TransformFromDomain::setHardDiskItem ( SessionItem item,
const InterferenceFunctionHardDisk sample 
)

Definition at line 154 of file TransformFromDomain.cpp.

References InterferenceFunctionHardDisk::density(), InterferenceFunctionHardDiskItem::P_DENSITY, InterferenceFunctionHardDiskItem::P_RADIUS, InterferenceFunctionHardDisk::radius(), and SessionItem::setItemValue().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setItemFromSample()

void TransformFromDomain::setItemFromSample ( BeamDistributionItem beam_distribution_item,
const ParameterDistribution parameter_distribution 
)

Definition at line 566 of file TransformFromDomain.cpp.

568 {
569  ASSERT(beam_distribution_item);
570 
571  if (parameter_distribution.getMinValue() < parameter_distribution.getMaxValue()) {
572  throw GUIHelpers::Error(
573  "TransformFromDomain::setItemFromSample(BeamDistributionItem* beamDistributionItem,"
574  "const ParameterDistribution& parameterDistribution) -> Error. ParameterDistribution "
575  "with defined min,max are not yet implemented in GUI");
576  }
577 
578  const double unit_factor = 1.0 / beam_distribution_item->scaleFactor();
579  QString group_name = BeamDistributionItem::P_DISTRIBUTION;
580  setDistribution(beam_distribution_item, parameter_distribution, group_name, unit_factor);
581 }
static const QString P_DISTRIBUTION
virtual double scaleFactor() const
Scales the values provided by distribution (to perform deg->rad conversion in the case of AngleDistri...

References ASSERT, ParameterDistribution::getMaxValue(), ParameterDistribution::getMinValue(), BeamDistributionItem::P_DISTRIBUTION, and BeamDistributionItem::scaleFactor().

Here is the call graph for this function:

◆ setLayerItem()

void TransformFromDomain::setLayerItem ( SessionItem layer_item,
const Layer layer,
const LayerInterface top_interface 
)

Definition at line 179 of file TransformFromDomain.cpp.

181 {
182  layerItem->setItemValue(LayerItem::P_THICKNESS, layer->thickness());
183  layerItem->setGroupProperty(LayerItem::P_ROUGHNESS, "LayerZeroRoughness");
184  layerItem->setItemValue(LayerItem::P_NSLICES, (int)layer->numberOfSlices());
185 
186  if (top_interface) {
187  const LayerRoughness* roughness = top_interface->getRoughness();
188  if (TransformFromDomain::isValidRoughness(roughness)) {
189  SessionItem* roughnessItem =
190  layerItem->setGroupProperty(LayerItem::P_ROUGHNESS, "LayerBasicRoughness");
191  TransformFromDomain::setRoughnessItem(roughnessItem, *roughness);
192  }
193  }
194 }
const LayerRoughness * getRoughness() const
Returns roughness of the interface.
static const QString P_THICKNESS
Definition: LayerItem.h:22
static const QString P_ROUGHNESS
Definition: LayerItem.h:23
static const QString P_NSLICES
Definition: LayerItem.h:25
A roughness of interface between two layers.
double thickness() const
Definition: Layer.h:38
unsigned int numberOfSlices() const
Definition: Layer.h:52
bool isValidRoughness(const LayerRoughness *roughness)
Returns true if given roughness is non-zero roughness.
void setRoughnessItem(SessionItem *item, const LayerRoughness &sample)

References LayerInterface::getRoughness(), isValidRoughness(), Layer::numberOfSlices(), LayerItem::P_NSLICES, LayerItem::P_ROUGHNESS, LayerItem::P_THICKNESS, SessionItem::setGroupProperty(), SessionItem::setItemValue(), setRoughnessItem(), and Layer::thickness().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setMaskContainer()

void TransformFromDomain::setMaskContainer ( MaskContainerItem container_item,
const IDetector detector,
double  scale 
)

Definition at line 480 of file TransformFromDomain.cpp.

482 {
483  auto detectorMask = detector.detectorMask();
484  for (size_t i_mask = 0; i_mask < detectorMask->numberOfMasks(); ++i_mask) {
485  bool mask_value(false);
486  const IShape2D* shape = detectorMask->getMaskShape(i_mask, mask_value);
487 
488  if (const Ellipse* ellipse = dynamic_cast<const Ellipse*>(shape)) {
489  EllipseItem* ellipseItem = new EllipseItem();
490  ellipseItem->setItemValue(EllipseItem::P_XCENTER, scale * ellipse->getCenterX());
491  ellipseItem->setItemValue(EllipseItem::P_YCENTER, scale * ellipse->getCenterY());
492  ellipseItem->setItemValue(EllipseItem::P_XRADIUS, scale * ellipse->getRadiusX());
493  ellipseItem->setItemValue(EllipseItem::P_YRADIUS, scale * ellipse->getRadiusY());
494  ellipseItem->setItemValue(EllipseItem::P_ANGLE, scale * ellipse->getTheta());
495  ellipseItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
496  container_item->insertItem(0, ellipseItem);
497  }
498 
499  else if (const Rectangle* rectangle = dynamic_cast<const Rectangle*>(shape)) {
500  RectangleItem* rectangleItem = new RectangleItem();
501  rectangleItem->setItemValue(RectangleItem::P_XLOW, scale * rectangle->getXlow());
502  rectangleItem->setItemValue(RectangleItem::P_YLOW, scale * rectangle->getYlow());
503  rectangleItem->setItemValue(RectangleItem::P_XUP, scale * rectangle->getXup());
504  rectangleItem->setItemValue(RectangleItem::P_YUP, scale * rectangle->getYup());
505  rectangleItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
506  container_item->insertItem(0, rectangleItem);
507 
508  }
509 
510  else if (const Polygon* polygon = dynamic_cast<const Polygon*>(shape)) {
511  PolygonItem* polygonItem = new PolygonItem();
512  std::vector<double> xpos, ypos;
513  polygon->getPoints(xpos, ypos);
514  for (size_t i_point = 0; i_point < xpos.size(); ++i_point) {
515  PolygonPointItem* pointItem = new PolygonPointItem();
516  pointItem->setItemValue(PolygonPointItem::P_POSX, scale * xpos[i_point]);
517  pointItem->setItemValue(PolygonPointItem::P_POSY, scale * ypos[i_point]);
518  polygonItem->insertItem(-1, pointItem);
519  }
520 
521  polygonItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
522  polygonItem->setItemValue(PolygonItem::P_ISCLOSED, true);
523 
524  container_item->insertItem(0, polygonItem);
525  }
526 
527  else if (const VerticalLine* vline = dynamic_cast<const VerticalLine*>(shape)) {
528  VerticalLineItem* lineItem = new VerticalLineItem();
529  lineItem->setItemValue(VerticalLineItem::P_POSX, scale * vline->getXpos());
530  lineItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
531  container_item->insertItem(0, lineItem);
532  }
533 
534  else if (const HorizontalLine* hline = dynamic_cast<const HorizontalLine*>(shape)) {
535  HorizontalLineItem* lineItem = new HorizontalLineItem();
536  lineItem->setItemValue(HorizontalLineItem::P_POSY, scale * hline->getYpos());
537  lineItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
538  container_item->insertItem(0, lineItem);
539  }
540 
541  else if (const InfinitePlane* plane = dynamic_cast<const InfinitePlane*>(shape)) {
542  Q_UNUSED(plane);
543  MaskAllItem* planeItem = new MaskAllItem();
544  planeItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
545  container_item->insertItem(-1, planeItem);
546  }
547 
548  else {
549  throw GUIHelpers::Error("TransformFromDomain::setDetectorMasks() -> Error. "
550  "Unknown shape");
551  }
552  }
553 
554  if (detector.regionOfInterest()) {
557  scale * detector.regionOfInterest()->getXlow());
559  scale * detector.regionOfInterest()->getYlow());
560  roiItem->setItemValue(RectangleItem::P_XUP, scale * detector.regionOfInterest()->getXup());
561  roiItem->setItemValue(RectangleItem::P_YUP, scale * detector.regionOfInterest()->getYup());
562  container_item->insertItem(-1, roiItem);
563  }
564 }
static const QString P_XRADIUS
Definition: MaskItems.h:91
static const QString P_YRADIUS
Definition: MaskItems.h:92
static const QString P_XCENTER
Definition: MaskItems.h:89
static const QString P_ANGLE
Definition: MaskItems.h:93
static const QString P_YCENTER
Definition: MaskItems.h:90
An ellipse, for use in detector masks.
Definition: Ellipse.h:23
static const QString P_POSY
Definition: MaskItems.h:81
An infinite horizontal line.
Definition: Line.h:55
Basic class for all shapes in 2D.
Definition: IShape2D.h:27
The infinite plane is used for masking the entire detector.
Definition: InfinitePlane.h:28
static const QString P_MASK_VALUE
Definition: MaskItems.h:33
static const QString P_ISCLOSED
Definition: MaskItems.h:65
static const QString P_POSX
Definition: MaskItems.h:57
static const QString P_POSY
Definition: MaskItems.h:58
A polygon, for use in detector masks.
Definition: Polygon.h:30
static const QString P_XUP
Definition: MaskItems.h:43
static const QString P_YLOW
Definition: MaskItems.h:42
static const QString P_YUP
Definition: MaskItems.h:44
static const QString P_XLOW
Definition: MaskItems.h:41
A rectangle, for use in detector masks.
Definition: Rectangle.h:25
double getYlow() const
double getYup() const
double getXlow() const
double getXup() const
bool insertItem(int row, SessionItem *item, const QString &tag="")
Insert item into given tag into given row.
static const QString P_POSX
Definition: MaskItems.h:73
An infinite vertical line.
Definition: Line.h:38

References IDetector::detectorMask(), RegionOfInterest::getXlow(), RegionOfInterest::getXup(), RegionOfInterest::getYlow(), RegionOfInterest::getYup(), SessionItem::insertItem(), EllipseItem::P_ANGLE, PolygonItem::P_ISCLOSED, MaskItem::P_MASK_VALUE, PolygonPointItem::P_POSX, VerticalLineItem::P_POSX, PolygonPointItem::P_POSY, HorizontalLineItem::P_POSY, EllipseItem::P_XCENTER, RectangleItem::P_XLOW, EllipseItem::P_XRADIUS, RectangleItem::P_XUP, EllipseItem::P_YCENTER, RectangleItem::P_YLOW, EllipseItem::P_YRADIUS, RectangleItem::P_YUP, IDetector::regionOfInterest(), and SessionItem::setItemValue().

Referenced by setDetectorMasks().

Here is the call graph for this function:

◆ setOffSpecularBeamItem()

void TransformFromDomain::setOffSpecularBeamItem ( BeamItem beam_item,
const OffSpecularSimulation simulation 
)

Definition at line 264 of file TransformFromDomain.cpp.

266 {
267  Beam beam = simulation.beam();
268 
269  beam_item->setIntensity(beam.intensity());
270  beam_item->setWavelength(beam.wavelength());
271  beam_item->setInclinationAngle(Units::rad2deg(beam.direction().alpha()));
272  beam_item->setAzimuthalAngle(Units::rad2deg(beam.direction().phi()));
273  // TODO implement beam divergence
274 }

References Direction::alpha(), ISimulation::beam(), Beam::direction(), Beam::intensity(), Direction::phi(), Units::rad2deg(), BeamItem::setAzimuthalAngle(), BeamItem::setInclinationAngle(), BeamItem::setIntensity(), BeamItem::setWavelength(), and Beam::wavelength().

Here is the call graph for this function:

◆ setParticleDistributionItem()

void TransformFromDomain::setParticleDistributionItem ( SessionItem item,
const ParticleDistribution sample 
)

Initialization of ParticleDistributionItem.

Definition at line 205 of file TransformFromDomain.cpp.

207 {
208  ParticleDistributionItem* distItem = dynamic_cast<ParticleDistributionItem*>(item);
209  ASSERT(distItem);
210 
211  distItem->setItemValue(ParticleItem::P_ABUNDANCE, sample.abundance());
212 
213  ParameterDistribution par_distr = sample.parameterDistribution();
214  QString main_distr_par_name = QString::fromStdString(par_distr.getMainParameterName());
215  QStringList linked_pars = GUIHelpers::fromStdStrings(par_distr.getLinkedParameterNames());
216 
217  distItem->setDomainCacheNames(main_distr_par_name, linked_pars);
218 
219  double unit_factor(1.0);
220  if (sample.mainUnits() == "rad")
221  unit_factor = 1. / Units::deg;
222 
223  QString group_name = ParticleDistributionItem::P_DISTRIBUTION;
224  setDistribution(distItem, par_distr, group_name, unit_factor);
225 }
double abundance() const
A parametric distribution function, for use with any model parameter.
std::vector< std::string > getLinkedParameterNames() const
get list of linked parameter names
std::string getMainParameterName() const
get the main parameter's name
static const QString P_DISTRIBUTION
void setDomainCacheNames(const QString &name, const QStringList &linked)
ParameterDistribution parameterDistribution() const
Returns the distributed parameter data.
std::string mainUnits() const
static const QString P_ABUNDANCE
Definition: ParticleItem.h:26
QStringList fromStdStrings(const std::vector< std::string > &container)
Definition: GUIHelpers.cpp:233

References IAbstractParticle::abundance(), ASSERT, Units::deg, GUIHelpers::fromStdStrings(), ParameterDistribution::getLinkedParameterNames(), ParameterDistribution::getMainParameterName(), ParticleDistribution::mainUnits(), ParticleItem::P_ABUNDANCE, ParticleDistributionItem::P_DISTRIBUTION, ParticleDistribution::parameterDistribution(), ParticleDistributionItem::setDomainCacheNames(), and SessionItem::setItemValue().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setRadialParaCrystalItem()

void TransformFromDomain::setRadialParaCrystalItem ( SessionItem item,
const InterferenceFunctionRadialParaCrystal sample 
)

Definition at line 162 of file TransformFromDomain.cpp.

164 {
166  sample.peakDistance());
168  sample.dampingLength());
170  sample.domainSize());
172 
173  auto ipdf = OnlyChildOfType<IFTDistribution1D>(sample);
175  SetPDF1D(item, ipdf, group_name);
176  setPositionVariance(item, sample);
177 }

References InterferenceFunctionRadialParaCrystal::dampingLength(), InterferenceFunctionRadialParaCrystal::domainSize(), InterferenceFunctionRadialParaCrystal::kappa(), InterferenceFunctionRadialParaCrystalItem::P_DAMPING_LENGTH, InterferenceFunctionRadialParaCrystalItem::P_DOMAIN_SIZE, InterferenceFunctionRadialParaCrystalItem::P_KAPPA, InterferenceFunctionRadialParaCrystalItem::P_PDF, InterferenceFunctionRadialParaCrystalItem::P_PEAK_DISTANCE, InterferenceFunctionRadialParaCrystal::peakDistance(), and SessionItem::setItemValue().

Referenced by GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setRectangularDetector()

void TransformFromDomain::setRectangularDetector ( RectangularDetectorItem detector_item,
const RectangularDetector detector 
)

Definition at line 403 of file TransformFromDomain.cpp.

405 {
406  // Axes
407  auto xAxisItem = detector_item->xAxisItem();
408  xAxisItem->setBinCount(detector.getNbinsX());
409  xAxisItem->setUpperBound(detector.getWidth());
410 
411  auto yAxisItem = detector_item->yAxisItem();
412  yAxisItem->setBinCount((int)detector.getNbinsY());
413  yAxisItem->setUpperBound(detector.getHeight());
414 
416  detector_item->setDetectorAlignment("Generic");
417 
418  kvector_t normal = detector.getNormalVector();
419  detector_item->item<VectorItem>(RectangularDetectorItem::P_NORMAL)->setVector(normal);
420 
421  kvector_t direction = detector.getDirectionVector();
422  detector_item->item<VectorItem>(RectangularDetectorItem::P_DIRECTION)->setVector(direction);
423 
424  detector_item->setItemValue(RectangularDetectorItem::P_U0, detector.getU0());
425  detector_item->setItemValue(RectangularDetectorItem::P_V0, detector.getV0());
426  }
427 
429  detector_item->setDetectorAlignment("Perpendicular to sample x-axis");
431  detector_item->setItemValue(RectangularDetectorItem::P_U0, detector.getU0());
432  detector_item->setItemValue(RectangularDetectorItem::P_V0, detector.getV0());
433 
434  } else if (detector.getDetectorArrangment()
436  detector_item->setDetectorAlignment("Perpendicular to direct beam");
438  detector_item->setItemValue(RectangularDetectorItem::P_DBEAM_U0, detector.getU0());
439  detector_item->setItemValue(RectangularDetectorItem::P_DBEAM_V0, detector.getV0());
440 
441  } else if (detector.getDetectorArrangment()
443  detector_item->setDetectorAlignment("Perpendicular to reflected beam");
445  detector_item->setItemValue(RectangularDetectorItem::P_U0, detector.getU0());
446  detector_item->setItemValue(RectangularDetectorItem::P_V0, detector.getV0());
447 
448  } else if (detector.getDetectorArrangment()
450  detector_item->setDetectorAlignment("Perpendicular to reflected beam (dpos)");
453  detector.getDirectBeamU0());
455  detector.getDirectBeamV0());
456 
457  } else {
458  throw GUIHelpers::Error(
459  "TransformFromDomain::setItemFromSample(RectangularDetectorItem* detectorItem "
460  "Error. Unknown detector arrangement");
461  }
462 }
void setBinCount(int value)
Definition: AxesItems.cpp:37
const BasicAxisItem * xAxisItem() const
static const QString P_DIRECTION
void setDetectorAlignment(const QString &alignment)
static const QString P_NORMAL
static const QString P_DBEAM_V0
static const QString P_DISTANCE
static const QString P_DBEAM_U0
const BasicAxisItem * yAxisItem() const
EDetectorArrangement getDetectorArrangment() const
double getDirectBeamV0() const
kvector_t getDirectionVector() const
double getDirectBeamU0() const
kvector_t getNormalVector() const

References RectangularDetector::GENERIC, RectangularDetector::getDetectorArrangment(), RectangularDetector::getDirectBeamU0(), RectangularDetector::getDirectBeamV0(), RectangularDetector::getDirectionVector(), RectangularDetector::getDistance(), RectangularDetector::getHeight(), RectangularDetector::getNbinsX(), RectangularDetector::getNbinsY(), RectangularDetector::getNormalVector(), RectangularDetector::getU0(), RectangularDetector::getV0(), RectangularDetector::getWidth(), SessionItem::item(), RectangularDetectorItem::P_DBEAM_U0, RectangularDetectorItem::P_DBEAM_V0, RectangularDetectorItem::P_DIRECTION, RectangularDetectorItem::P_DISTANCE, RectangularDetectorItem::P_NORMAL, RectangularDetectorItem::P_U0, RectangularDetectorItem::P_V0, RectangularDetector::PERPENDICULAR_TO_DIRECT_BEAM, RectangularDetector::PERPENDICULAR_TO_REFLECTED_BEAM, RectangularDetector::PERPENDICULAR_TO_REFLECTED_BEAM_DPOS, RectangularDetector::PERPENDICULAR_TO_SAMPLE, BasicAxisItem::setBinCount(), RectangularDetectorItem::setDetectorAlignment(), SessionItem::setItemValue(), RectangularDetectorItem::xAxisItem(), and RectangularDetectorItem::yAxisItem().

Referenced by setDetectorGeometry().

Here is the call graph for this function:

◆ setRoughnessItem()

void TransformFromDomain::setRoughnessItem ( SessionItem item,
const LayerRoughness sample 
)

Definition at line 196 of file TransformFromDomain.cpp.

References LayerRoughness::getHurstParameter(), LayerRoughness::getLatteralCorrLength(), LayerRoughness::getSigma(), LayerBasicRoughnessItem::P_HURST, LayerBasicRoughnessItem::P_LATERAL_CORR_LENGTH, LayerBasicRoughnessItem::P_SIGMA, and SessionItem::setItemValue().

Referenced by setLayerItem().

Here is the call graph for this function:

◆ setSpecularBeamItem()

void TransformFromDomain::setSpecularBeamItem ( SpecularBeamItem beam_item,
const SpecularSimulation simulation 
)

Definition at line 276 of file TransformFromDomain.cpp.

278 {
279  const Beam& beam = simulation.beam();
280 
281  beam_item->setIntensity(beam.intensity());
282  beam_item->setWavelength(beam.wavelength());
283  beam_item->setInclinationAngle(0.0); // inclination angle is hardcoded
284  beam_item->setAzimuthalAngle(0.0); // azimuthal angle is hardcoded
285 
286  auto axis_item = beam_item->currentInclinationAxisItem();
287  TransformFromDomain::setAxisItem(axis_item, *simulation.coordinateAxis(), 1. / Units::deg);
288 
289  setFootprintFactor(simulation.footprintFactor(), beam_item);
290 
291  const AngularSpecScan* scan = dynamic_cast<const AngularSpecScan*>(simulation.dataHandler());
292  if (!scan)
293  return;
294 
295  auto resolution = scan->wavelengthResolution();
296  if (!resolution->empty()) {
297  double mean = scan->wavelength();
298  double std_dev = resolution->stdDevs(mean, 1).front();
299  addRangedDistributionToItem(beam_item->getItem(SpecularBeamItem::P_WAVELENGTH),
300  *resolution->distribution(), mean, std_dev);
301  }
302 
303  resolution = scan->angleResolution();
304  if (resolution && !resolution->empty()) {
305  double std_dev = resolution->stdDevs(0.0, 1).front();
306  addRangedDistributionToItem(beam_item->getItem(SpecularBeamItem::P_INCLINATION_ANGLE),
307  *resolution->distribution(), 0.0, std_dev);
308  }
309 }
Scan type with inclination angles as coordinate values and a unique wavelength.
const ScanResolution * wavelengthResolution() const
const ScanResolution * angleResolution() const
double wavelength() const
virtual std::vector< double > stdDevs(double mean, size_t n_times) const =0
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
void setInclinationAngle(double value) override
Definition: BeamItems.cpp:148
BasicAxisItem * currentInclinationAxisItem()
Definition: BeamItems.cpp:161
const IAxis * coordinateAxis() const
Returns a pointer to coordinate axis.
const IFootprintFactor * footprintFactor() const
Returns a pointer to footprint factor holder.
const ISpecularScan * dataHandler() const
Returns internal data handler.
void setAxisItem(SessionItem *item, const IAxis &axis, double factor=1.0)
void setFootprintFactor(const IFootprintFactor *footprint, SpecularBeamItem *beam_item)

References AngularSpecScan::angleResolution(), ISimulation::beam(), SpecularSimulation::coordinateAxis(), SpecularBeamItem::currentInclinationAxisItem(), SpecularSimulation::dataHandler(), Units::deg, SpecularSimulation::footprintFactor(), SessionItem::getItem(), Beam::intensity(), BeamItem::P_INCLINATION_ANGLE, BeamItem::P_WAVELENGTH, setAxisItem(), BeamItem::setAzimuthalAngle(), setFootprintFactor(), SpecularBeamItem::setInclinationAngle(), BeamItem::setIntensity(), BeamItem::setWavelength(), ScanResolution::stdDevs(), AngularSpecScan::wavelength(), Beam::wavelength(), and AngularSpecScan::wavelengthResolution().

Here is the call graph for this function:

◆ setSphericalDetector()

void TransformFromDomain::setSphericalDetector ( SphericalDetectorItem detector_item,
const SphericalDetector detector 
)

Definition at line 385 of file TransformFromDomain.cpp.

387 {
388  // Axes
389  const IAxis& phi_axis = detector.axis(0);
390  const IAxis& alpha_axis = detector.axis(1);
391 
392  auto phiAxisItem = detector_item->phiAxisItem();
393  phiAxisItem->setBinCount(phi_axis.size());
394  phiAxisItem->setLowerBound(Units::rad2deg(phi_axis.lowerBound()));
395  phiAxisItem->setUpperBound(Units::rad2deg(phi_axis.upperBound()));
396 
397  auto alphaAxisItem = detector_item->alphaAxisItem();
398  alphaAxisItem->setBinCount(alpha_axis.size());
399  alphaAxisItem->setLowerBound(Units::rad2deg(alpha_axis.lowerBound()));
400  alphaAxisItem->setUpperBound(Units::rad2deg(alpha_axis.upperBound()));
401 }
Interface for one-dimensional axes.
Definition: IAxis.h:25
const IAxis & axis(size_t index) const
Definition: IDetector.cpp:56
const BasicAxisItem * alphaAxisItem() const
const BasicAxisItem * phiAxisItem() const

References SphericalDetectorItem::alphaAxisItem(), IDetector::axis(), IAxis::lowerBound(), SphericalDetectorItem::phiAxisItem(), Units::rad2deg(), BasicAxisItem::setBinCount(), IAxis::size(), and IAxis::upperBound().

Referenced by setDetectorGeometry().

Here is the call graph for this function: