Commit 78b5647c authored by Paul Schütze's avatar Paul Schütze
Browse files

TransientPropagation: add graphs for induced charge vs depth, time and in-pixel position

parent f963e506
Loading
Loading
Loading
Loading
+76 −0
Original line number Diff line number Diff line
@@ -151,6 +151,10 @@ void TransientPropagationModule::initialize() {
    }

    if(output_plots_) {

        auto pitch_x = static_cast<double>(Units::convert(model_->getPixelSize().x(), "um"));
        auto pitch_y = static_cast<double>(Units::convert(model_->getPixelSize().y(), "um"));

        potential_difference_ = CreateHistogram<TH1D>(
            "potential_difference",
            "Weighting potential difference between two steps;#left|#Delta#phi_{w}#right| [a.u.];events",
@@ -174,6 +178,61 @@ void TransientPropagationModule::initialize() {
                                  static_cast<int>(integration_time_ / timestep_),
                                  0,
                                  static_cast<double>(Units::convert(integration_time_, "ns")));
        induced_charge_vs_depth_histo_ =
            CreateHistogram<TH2D>("induced_charge_vs_depth_histo",
                                  "Induced charge per time vs depth, all pixels;Drift time [ns];depth [mm];charge [e]",
                                  static_cast<int>(integration_time_ / timestep_),
                                  0,
                                  static_cast<double>(Units::convert(integration_time_, "ns")),
                                  100,
                                  -model_->getSensorSize().z() / 2.,
                                  model_->getSensorSize().z() / 2.);
        induced_charge_e_vs_depth_histo_ = CreateHistogram<TH2D>(
            "induced_charge_e_vs_depth_histo",
            "Induced charge per time vs depth, electrons only, all pixels;Drift time [ns];depth [mm];charge [e]",
            static_cast<int>(integration_time_ / timestep_),
            0,
            static_cast<double>(Units::convert(integration_time_, "ns")),
            100,
            -model_->getSensorSize().z() / 2.,
            model_->getSensorSize().z() / 2.);
        induced_charge_h_vs_depth_histo_ = CreateHistogram<TH2D>(
            "induced_charge_h_vs_depth_histo",
            "Induced charge per time vs depth, holes only, all pixels;Drift time [ns];depth [mm];charge [e]",
            static_cast<int>(integration_time_ / timestep_),
            0,
            static_cast<double>(Units::convert(integration_time_, "ns")),
            100,
            -model_->getSensorSize().z() / 2.,
            model_->getSensorSize().z() / 2.);
        induced_charge_map_ = CreateHistogram<TH2D>(
            "induced_charge_map",
            "Induced charge as a function of in-pixel carrier position;x%pitch [#mum];y%pitch [#mum];charge [e]",
            static_cast<int>(pitch_x),
            -pitch_x / 2,
            pitch_x / 2,
            static_cast<int>(pitch_y),
            -pitch_y / 2,
            pitch_y / 2);
        induced_charge_e_map_ = CreateHistogram<TH2D>("induced_charge_e_map",
                                                      "Induced charge as a function of in-pixel carrier position, electrons "
                                                      "only;x%pitch [#mum];y%pitch [#mum];charge [e]",
                                                      static_cast<int>(pitch_x),
                                                      -pitch_x / 2,
                                                      pitch_x / 2,
                                                      static_cast<int>(pitch_y),
                                                      -pitch_y / 2,
                                                      pitch_y / 2);
        induced_charge_h_map_ = CreateHistogram<TH2D>(
            "induced_charge_h_map",
            "Induced charge as a function of in-pixel carrier position, holes only;x%pitch [#mum];y%pitch [#mum];charge [e]",
            static_cast<int>(pitch_x),
            -pitch_x / 2,
            pitch_x / 2,
            static_cast<int>(pitch_y),
            -pitch_y / 2,
            pitch_y / 2);

        step_length_histo_ =
            CreateHistogram<TH1D>("step_length_histo",
                                  "Step length;length [#mum];integration steps",
@@ -555,12 +614,23 @@ TransientPropagationModule::propagate(Event* event,
            }

            if(output_plots_) {
                auto inPixel_um_x =
                    static_cast<double>(Units::convert(position.x() - model_->getPixelCenter(xpixel, ypixel).x(), "um"));
                auto inPixel_um_y =
                    static_cast<double>(Units::convert(position.y() - model_->getPixelCenter(xpixel, ypixel).y(), "um"));

                potential_difference_->Fill(std::fabs(ramo - last_ramo));
                induced_charge_histo_->Fill(initial_time + runge_kutta.getTime(), induced);
                induced_charge_vs_depth_histo_->Fill(initial_time + runge_kutta.getTime(), position.z(), induced);
                induced_charge_map_->Fill(inPixel_um_x, inPixel_um_y, induced);
                if(type == CarrierType::ELECTRON) {
                    induced_charge_e_histo_->Fill(initial_time + runge_kutta.getTime(), induced);
                    induced_charge_e_vs_depth_histo_->Fill(initial_time + runge_kutta.getTime(), position.z(), induced);
                    induced_charge_e_map_->Fill(inPixel_um_x, inPixel_um_y, induced);
                } else {
                    induced_charge_h_histo_->Fill(initial_time + runge_kutta.getTime(), induced);
                    induced_charge_h_vs_depth_histo_->Fill(initial_time + runge_kutta.getTime(), position.z(), induced);
                    induced_charge_h_map_->Fill(inPixel_um_x, inPixel_um_y, induced);
                }
            }
        }
@@ -596,5 +666,11 @@ void TransientPropagationModule::finalize() {
        induced_charge_histo_->Write();
        induced_charge_e_histo_->Write();
        induced_charge_h_histo_->Write();
        induced_charge_vs_depth_histo_->Write();
        induced_charge_e_vs_depth_histo_->Write();
        induced_charge_h_vs_depth_histo_->Write();
        induced_charge_map_->Write();
        induced_charge_e_map_->Write();
        induced_charge_h_map_->Write();
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -128,6 +128,8 @@ namespace allpix {

        // Output plots
        Histogram<TH1D> potential_difference_, induced_charge_histo_, induced_charge_e_histo_, induced_charge_h_histo_;
        Histogram<TH2D> induced_charge_vs_depth_histo_, induced_charge_e_vs_depth_histo_, induced_charge_h_vs_depth_histo_;
        Histogram<TH2D> induced_charge_map_, induced_charge_e_map_, induced_charge_h_map_;
        Histogram<TH1D> step_length_histo_, group_size_histo_;
        Histogram<TH1D> drift_time_histo_;
        Histogram<TH1D> recombine_histo_;