Commit 21deb8f5 authored by Simon Spannagel's avatar Simon Spannagel
Browse files

Merge branch 'MCParticle_edep' into 'master'

Add total deposited energy to MCParticle

See merge request allpix-squared/allpix-squared!1144
parents e3851ecf fbc7878d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ G4bool SensitiveDetectorActionG4::ProcessHits(G4Step* step, G4TouchableHistory*)
    // Update current end point with the current last step
    track_end_[trackID] = detector_->getLocalPosition(static_cast<ROOT::Math::XYZPoint>(postStep->GetPosition()));
    track_charge_[trackID] += charge;
    track_deposited_energy_[trackID] += edep;

    // Add new deposit if the charge is more than zero
    if(charge == 0) {
@@ -149,6 +150,7 @@ void SensitiveDetectorActionG4::clearEventInfo() {
    track_pdg_.clear();
    track_time_.clear();
    track_charge_.clear();
    track_deposited_energy_.clear();
    track_total_energy_start_.clear();
    track_kinetic_energy_start_.clear();

@@ -183,6 +185,7 @@ void SensitiveDetectorActionG4::dispatchMessages(Module* module, Messenger* mess
        auto local_end = track_end_.at(track_id);
        auto pdg_code = track_pdg_.at(track_id);
        auto charge = track_charge_.at(track_id);
        auto deposited_energy = track_deposited_energy_.at(track_id);
        auto track_time_global = track_time_.at(track_id);
        auto track_time_local = track_time_global - time_reference;

@@ -192,6 +195,7 @@ void SensitiveDetectorActionG4::dispatchMessages(Module* module, Messenger* mess
            local_begin, global_begin, local_end, global_end, pdg_code, track_time_local, track_time_global);
        // Count electrons and holes:
        mc_particles.back().setTotalDepositedCharge(2 * charge);
        mc_particles.back().setTotalDepositedEnergy(deposited_energy);
        mc_particles.back().setTrack(track_info_manager_->findMCTrack(track_id));
        mc_particles.back().setTotalEnergyStart(track_total_energy_start_.at(track_id));
        mc_particles.back().setKineticEnergyStart(track_kinetic_energy_start_.at(track_id));
+2 −0
Original line number Diff line number Diff line
@@ -151,6 +151,8 @@ namespace allpix {
        std::map<int, double> track_time_;
        // Total charge by track
        std::map<int, unsigned int> track_charge_;
        // Total energy deposited by track
        std::map<int, double> track_deposited_energy_;
        // Total energy by track at start point
        std::map<int, double> track_total_energy_start_;
        // Kinetic energy by track at start point
+2 −0
Original line number Diff line number Diff line
@@ -370,6 +370,8 @@ void DepositionLaserModule::run(Event* event) {
                                                time_entry_global);
        // Count electrons and holes:
        mc_particles[hit.detector].back().setTotalDepositedCharge(2);
        mc_particles[hit.detector].back().setTotalDepositedEnergy(
            is_user_optics_ ? 0 : Units::get(1.2398, "eV*m") / wavelength_);

        // allpix::DepositedCharge for electron
        deposited_charges[hit.detector].emplace_back(hit_local,
+4 −0
Original line number Diff line number Diff line
@@ -64,6 +64,10 @@ unsigned int MCParticle::getTotalDepositedCharge() const { return deposited_char

void MCParticle::setTotalDepositedCharge(unsigned int total_charge) { deposited_charge_ = total_charge; }

double MCParticle::getTotalDepositedEnergy() const { return deposited_energy_; }

void MCParticle::setTotalDepositedEnergy(double total_energy) { deposited_energy_ = total_energy; }

int MCParticle::getParticleID() const { return particle_id_; }

double MCParticle::getGlobalTime() const { return global_time_; }
+14 −1
Original line number Diff line number Diff line
@@ -131,6 +131,18 @@ namespace allpix {
         */
        unsigned int getTotalDepositedCharge() const;

        /**
         * @brief Set the total energy deposited by this particle
         * @param total_energy Total energy deposited by this particle
         */
        void setTotalDepositedEnergy(double total_energy);

        /**
         * @brief Return the total energy deposited by this particle
         * @return Total energy deposited by this particle
         */
        double getTotalDepositedEnergy() const;

        /**
         * @brief Set the Monte-Carlo particle
         * @param mc_particle The Monte-Carlo particle
@@ -169,7 +181,7 @@ namespace allpix {
        /**
         * @brief ROOT class definition
         */
        ClassDefOverride(MCParticle, 10); // NOLINT
        ClassDefOverride(MCParticle, 11); // NOLINT
        /**
         * @brief Default constructor for ROOT I/O
         */
@@ -194,6 +206,7 @@ namespace allpix {
        double local_time_{};
        double global_time_{};
        unsigned int deposited_charge_{};
        double deposited_energy_{};
        double total_energy_start_{};
        double kinetic_energy_start_{};