Commit b194e6a4 authored by Håkan Wennlöf's avatar Håkan Wennlöf
Browse files

Merge branch 'f-field-in-excess' into 'v2.3-stable'

[v2.3-stable] DetectorField: Do Not Extend Into Sensor Excess

See merge request allpix-squared/allpix-squared!851
parents 7e4ab4ad 5a676518
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -54,9 +54,10 @@ void Detector::set_model(std::shared_ptr<DetectorModel> model) {
    model_ = std::move(model);

    // Initialize the detector fields with the model parameters:
    electric_field_.set_model_parameters(model_->getSensorCenter(), model_->getSensorSize(), model_->getPixelSize());
    weighting_potential_.set_model_parameters(model_->getSensorCenter(), model_->getSensorSize(), model_->getPixelSize());
    doping_profile_.set_model_parameters(model_->getSensorCenter(), model_->getSensorSize(), model_->getPixelSize());
    auto matrix_size = model_->getGridSize() + ROOT::Math::XYZVector(0, 0, model_->getSensorSize().z());
    electric_field_.set_model_parameters(model_->getSensorCenter(), matrix_size, model_->getPixelSize());
    weighting_potential_.set_model_parameters(model_->getSensorCenter(), matrix_size, model_->getPixelSize());
    doping_profile_.set_model_parameters(model_->getSensorCenter(), matrix_size, model_->getPixelSize());

    build_transform();
}
+7 −0
Original line number Diff line number Diff line
@@ -92,6 +92,13 @@ namespace allpix {
        if(type_ == FieldType::NONE) {
            return {};
        }
        // Do not extend into sensor excess
        if(pos.x() + pixel_size_.x() / 2.0 < 0 || pos.x() + pixel_size_.x() / 2.0 > sensor_size_.x()) {
            return {};
        }
        if(pos.y() + pixel_size_.y() / 2.0 < 0 || pos.y() + pixel_size_.y() / 2.0 > sensor_size_.y()) {
            return {};
        }

        // Shift the coordinates by the offset configured for the field:
        auto x = pos.x() + offset_[0];