Loading src/objects/Linkdef.h +4 −4 Original line number Diff line number Diff line Loading @@ -54,13 +54,13 @@ #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelCharge> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelCharge> + ; #pragma link C++ class allpix::PixelHit + ; #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelHit> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelHit> + ; #pragma link C++ class allpix::PixelPulse + ; #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelPulse> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelPulse> + ; #pragma link C++ class allpix::PixelHit + ; #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelHit> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelHit> + ; // Vector of Object for internal storage #pragma link C++ class std::vector < allpix::Object*> + ; src/objects/PixelHit.cpp +20 −1 Original line number Diff line number Diff line Loading @@ -19,9 +19,15 @@ using namespace allpix; PixelHit::PixelHit(Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge) PixelHit::PixelHit(Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge, const PixelPulse* pixel_pulse) : pixel_(std::move(pixel)), local_time_(local_time), global_time_(global_time), signal_(signal) { pixel_pulse_ = PointerWrapper<PixelPulse>(pixel_pulse); pixel_charge_ = PointerWrapper<PixelCharge>(pixel_charge); if(pixel_charge != nullptr) { // Get the unique set of MC particles Loading Loading @@ -57,6 +63,19 @@ const PixelCharge* PixelHit::getPixelCharge() const { return pixel_charge; } /** * @throws MissingReferenceException If the pointed object is not in scope * * Object is stored as TRef and can only be accessed if pointed object is in scope */ const PixelPulse* PixelHit::getPixelPulse() const { auto* pixel_pulse = pixel_pulse_.get(); if(pixel_pulse == nullptr) { throw MissingReferenceException(typeid(*this), typeid(PixelPulse)); } return pixel_pulse; } /** * @throws MissingReferenceException If the pointed object is not in scope * Loading src/objects/PixelHit.hpp +16 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include "MCParticle.hpp" #include "Object.hpp" #include "PixelCharge.hpp" #include "PixelPulse.hpp" #include "Pixel.hpp" Loading @@ -36,9 +37,14 @@ namespace allpix { * @param global_time Timing of the occurrence of the hit in global reference frame * @param signal Signal data produced by the digitizer * @param pixel_charge Optional pointer to the related pixel charge * @param pixel_pulse Optional pointer to the related pixel pulse this his might have been derived from */ PixelHit( Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge = nullptr); PixelHit(Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge = nullptr, const PixelPulse* pixel_pulse = nullptr); /** * @brief Get the pixel hit Loading Loading @@ -76,6 +82,12 @@ namespace allpix { */ const PixelCharge* getPixelCharge() const; /** * @brief Get related pixel pulse * @return Possible related pixel pulse */ const PixelPulse* getPixelPulse() const; /** * @brief Get the Monte-Carlo particles resulting in this pixel hit * @return List of all related Monte-Carlo particles Loading @@ -98,7 +110,7 @@ namespace allpix { /** * @brief ROOT class definition */ ClassDefOverride(PixelHit, 6); // NOLINT ClassDefOverride(PixelHit, 7); // NOLINT /** * @brief Default constructor for ROOT I/O */ Loading @@ -114,6 +126,7 @@ namespace allpix { double signal_{}; PointerWrapper<PixelCharge> pixel_charge_; PointerWrapper<PixelPulse> pixel_pulse_; std::vector<PointerWrapper<MCParticle>> mc_particles_; }; Loading Loading
src/objects/Linkdef.h +4 −4 Original line number Diff line number Diff line Loading @@ -54,13 +54,13 @@ #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelCharge> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelCharge> + ; #pragma link C++ class allpix::PixelHit + ; #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelHit> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelHit> + ; #pragma link C++ class allpix::PixelPulse + ; #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelPulse> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelPulse> + ; #pragma link C++ class allpix::PixelHit + ; #pragma link C++ class allpix::Object::PointerWrapper < allpix::PixelHit> + ; #pragma link C++ class allpix::Object::BaseWrapper < allpix::PixelHit> + ; // Vector of Object for internal storage #pragma link C++ class std::vector < allpix::Object*> + ;
src/objects/PixelHit.cpp +20 −1 Original line number Diff line number Diff line Loading @@ -19,9 +19,15 @@ using namespace allpix; PixelHit::PixelHit(Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge) PixelHit::PixelHit(Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge, const PixelPulse* pixel_pulse) : pixel_(std::move(pixel)), local_time_(local_time), global_time_(global_time), signal_(signal) { pixel_pulse_ = PointerWrapper<PixelPulse>(pixel_pulse); pixel_charge_ = PointerWrapper<PixelCharge>(pixel_charge); if(pixel_charge != nullptr) { // Get the unique set of MC particles Loading Loading @@ -57,6 +63,19 @@ const PixelCharge* PixelHit::getPixelCharge() const { return pixel_charge; } /** * @throws MissingReferenceException If the pointed object is not in scope * * Object is stored as TRef and can only be accessed if pointed object is in scope */ const PixelPulse* PixelHit::getPixelPulse() const { auto* pixel_pulse = pixel_pulse_.get(); if(pixel_pulse == nullptr) { throw MissingReferenceException(typeid(*this), typeid(PixelPulse)); } return pixel_pulse; } /** * @throws MissingReferenceException If the pointed object is not in scope * Loading
src/objects/PixelHit.hpp +16 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include "MCParticle.hpp" #include "Object.hpp" #include "PixelCharge.hpp" #include "PixelPulse.hpp" #include "Pixel.hpp" Loading @@ -36,9 +37,14 @@ namespace allpix { * @param global_time Timing of the occurrence of the hit in global reference frame * @param signal Signal data produced by the digitizer * @param pixel_charge Optional pointer to the related pixel charge * @param pixel_pulse Optional pointer to the related pixel pulse this his might have been derived from */ PixelHit( Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge = nullptr); PixelHit(Pixel pixel, double local_time, double global_time, double signal, const PixelCharge* pixel_charge = nullptr, const PixelPulse* pixel_pulse = nullptr); /** * @brief Get the pixel hit Loading Loading @@ -76,6 +82,12 @@ namespace allpix { */ const PixelCharge* getPixelCharge() const; /** * @brief Get related pixel pulse * @return Possible related pixel pulse */ const PixelPulse* getPixelPulse() const; /** * @brief Get the Monte-Carlo particles resulting in this pixel hit * @return List of all related Monte-Carlo particles Loading @@ -98,7 +110,7 @@ namespace allpix { /** * @brief ROOT class definition */ ClassDefOverride(PixelHit, 6); // NOLINT ClassDefOverride(PixelHit, 7); // NOLINT /** * @brief Default constructor for ROOT I/O */ Loading @@ -114,6 +126,7 @@ namespace allpix { double signal_{}; PointerWrapper<PixelCharge> pixel_charge_; PointerWrapper<PixelPulse> pixel_pulse_; std::vector<PointerWrapper<MCParticle>> mc_particles_; }; Loading