src/modules/ProjectionPropagation/ProjectionPropagationModule.hpp

Definition of ProjectionPropagation module. More…

Namespaces

Name
allpix
Helper class to hold support layers for a detector model.

Classes

Name
class allpix::ProjectionPropagationModule
Module to project created electrons onto the sensor surface including diffusion.

Detailed Description

Definition of ProjectionPropagation module.

Copyright: Copyright (c) 2017-2024 CERN and the Allpix Squared authors. This software is distributed under the terms of the MIT License, copied verbatim in the file “LICENSE.md”. In applying this license, CERN does not waive the privileges and immunities granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction. SPDX-License-Identifier: MIT

Contains minimal dummy module to use as a start for the development of your own module

Refer to the User’s Manual for more details.

Source code


#include <string>

#include <TH1D.h>

#include "core/config/Configuration.hpp"
#include "core/geometry/DetectorModel.hpp"
#include "core/messenger/Messenger.hpp"
#include "core/module/Event.hpp"
#include "core/module/Module.hpp"

#include "objects/DepositedCharge.hpp"
#include "objects/PropagatedCharge.hpp"

#include "physics/Mobility.hpp"
#include "physics/Recombination.hpp"

#include "tools/ROOT.h"
#include "tools/line_graphs.h"

namespace allpix {
    class ProjectionPropagationModule : public Module {
    public:
        ProjectionPropagationModule(Configuration& config, Messenger* messenger, std::shared_ptr<Detector> detector);

        void initialize() override;

        void run(Event*) override;

        void finalize() override;

    private:
        Messenger* messenger_;
        std::shared_ptr<const Detector> detector_;
        std::shared_ptr<DetectorModel> model_;

        // Config parameters
        bool output_plots_{}, output_linegraphs_{};
        double integration_time_{};
        bool diffuse_deposit_;
        unsigned int charge_per_step_{};
        unsigned int max_charge_groups_{};

        // Carrier type to be propagated
        CarrierType propagate_type_;
        // Side to propagate too
        double top_z_;

        // Precalculated values for electron and hole critical fields
        double hole_Ec_;
        double electron_Ec_;

        // Models for electron and hole mobility and lifetime
        std::unique_ptr<JacoboniCanali> mobility_;
        Recombination recombination_;

        // Precalculated value for Boltzmann constant:
        double boltzmann_kT_;

        // Statistical information
        std::atomic<unsigned int> total_deposits_{}, deposits_exceeding_max_groups_{};
        Histogram<TH1D> drift_time_histo_;
        Histogram<TH1D> diffusion_time_histo_;
        Histogram<TH1D> propagation_time_histo_;
        Histogram<TH1D> initial_position_histo_;
        Histogram<TH1D> recombine_histo_;
        Histogram<TH1D> group_size_histo_;
    };
} // namespace allpix

Updated on 2024-12-13 at 08:31:37 +0000