src/objects/PropagatedCharge.hpp

Definition of propagated charge object. More…

Namespaces

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

Classes

Name
class allpix::PropagatedCharge
Set of charges propagated through the sensor.

Types

Name
enum class CarrierState { UNKNOWN = 0, MOTION, RECOMBINED, TRAPPED, HALTED}
State of the charge carrier.
using Message< PropagatedCharge > PropagatedChargeMessage
Typedef for message carrying propagated charges.

Detailed Description

Definition of propagated charge object.

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

Types Documentation

enum CarrierState

Enumerator Value Description
UNKNOWN 0 State of the propagated charge carrier is unknown.
MOTION The propagated charge carrier is in motion.
RECOMBINED The propagated charge carrier has recombined with the lattice.
TRAPPED The propagated charge carrier is trapped temporarily.
HALTED The carrier has come to a halt because it, for example, has reached the sensor surface or an implant.

State of the charge carrier.

using PropagatedChargeMessage

using allpix::PropagatedChargeMessage = typedef Message<PropagatedCharge>;

Typedef for message carrying propagated charges.

Source code


#ifndef ALLPIX_PROPAGATED_CHARGE_H
#define ALLPIX_PROPAGATED_CHARGE_H

#include <map>

#include "DepositedCharge.hpp"
#include "MCParticle.hpp"
#include "Pixel.hpp"
#include "Pulse.hpp"
#include "SensorCharge.hpp"

namespace allpix {

    enum class CarrierState {
        UNKNOWN = 0, 
        MOTION,      
        RECOMBINED,  
        TRAPPED,     
        HALTED, 
    };

    class PropagatedCharge : public SensorCharge {
        friend class PixelCharge;

    public:
        PropagatedCharge(ROOT::Math::XYZPoint local_position,
                         ROOT::Math::XYZPoint global_position,
                         CarrierType type,
                         unsigned int charge,
                         double local_time,
                         double global_time,
                         CarrierState state = CarrierState::UNKNOWN,
                         const DepositedCharge* deposited_charge = nullptr);

        PropagatedCharge(ROOT::Math::XYZPoint local_position,
                         ROOT::Math::XYZPoint global_position,
                         CarrierType type,
                         std::map<Pixel::Index, Pulse> pulses,
                         double local_time,
                         double global_time,
                         CarrierState state = CarrierState::UNKNOWN,
                         const DepositedCharge* deposited_charge = nullptr);

        const DepositedCharge* getDepositedCharge() const;

        const MCParticle* getMCParticle() const;

        std::map<Pixel::Index, Pulse> getPulses() const;

        CarrierState getState() const;

        void print(std::ostream& out) const override;

        ClassDefOverride(PropagatedCharge, 7); // NOLINT
        PropagatedCharge() = default;

        void loadHistory() override;
        void petrifyHistory() override;

    private:
        PointerWrapper<DepositedCharge> deposited_charge_;
        PointerWrapper<MCParticle> mc_particle_;

        std::map<Pixel::Index, Pulse> pulses_;

        CarrierState state_{CarrierState::UNKNOWN};
    };

    using PropagatedChargeMessage = Message<PropagatedCharge>;
} // namespace allpix

#endif /* ALLPIX_PROPAGATED_CHARGE_H */

Updated on 2025-02-27 at 14:14:46 +0000