/* This file is part of MAUS: http://micewww.pp.rl.ac.uk/projects/maus * * MAUS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MAUS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MAUS. If not, see . */ #ifndef _SRC_COMMON_CPP_DATASTRUCTURE_EMREVENTTRACK_HH_ #define _SRC_COMMON_CPP_DATASTRUCTURE_EMREVENTTRACK_HH_ #include #include #include "Utils/VersionNumber.hh" #include "DataStructure/EMRPlaneHit.hh" #include "DataStructure/EMRSpacePoint.hh" #include "DataStructure/EMRTrack.hh" namespace MAUS { typedef std::vector EMRPlaneHitArray; typedef std::vector EMRSpacePointArray; /** @class EMREventTrack comment * * @var emrplanehits <-- array of planes hit by the track --> * @var emrspacepoints <-- array of reconstructed space points --> * @var track <-- fitted track of the particle --> * @var type <-- type of particle: mother, daughter, candidate --> * @var id <-- unique identifier of the track of type "type" --> * @var time <-- global time of the event track [ns] --> * @var plane_density <-- density of planes hit on the path of the particle --> * @var total_charge <-- integrated charge over all of the space points --> * @var charge_ratio <-- ratio of charge density of the core over the tail --> */ class EMREventTrack { public: /** @brief Default constructor - initialises to 0/NULL */ EMREventTrack(); /** @brief Copy constructor - any pointers are deep copied */ EMREventTrack(const EMREventTrack& emret); /** @brief Equality operator - any pointers are deep copied */ EMREventTrack& operator=(const EMREventTrack& emret); /** @brief Destructor - any member pointers are deleted */ virtual ~EMREventTrack(); /** @brief Returns the array of planes hit **/ EMRPlaneHitArray GetEMRPlaneHitArray() const { return _emrplanehits; } /** @brief Sets the array of planes hit **/ void SetEMRPlaneHitArray(EMRPlaneHitArray emrplanehits); /** @brief Adds a plane hit to the array **/ void AddEMRPlaneHit(EMRPlaneHit* emrph) { _emrplanehits.push_back(emrph); } /** @brief Returns the amount of planes hit **/ size_t GetEMRPlaneHitArraySize() { return _emrplanehits.size(); } /** @brief Returns the array of reconstructed space points **/ EMRSpacePointArray GetEMRSpacePointArray() const { return _emrspacepoints; } /** @brief Sets the array of planes hit **/ void SetEMRSpacePointArray(EMRSpacePointArray emrspacepoints); /** @brief Adds a space point to the array **/ void AddEMRSpacePoint(EMRSpacePoint* emrsp) { _emrspacepoints.push_back(emrsp); } /** @brief Returns the amount of space points **/ size_t GetEMRSpacePointArraySize() { return _emrspacepoints.size(); } /** @brief Returns the particle's track **/ EMRTrack GetEMRTrack() const { return _track; } /** @brief Returns the particle's track **/ EMRTrack* GetEMRTrackPtr() { return &_track; } /** @brief Sets the particle's track **/ void SetEMRTrack(EMRTrack track) { _track = track; } /** @brief Returns type of particle **/ std::string GetType() const { return _type; } /** @brief Sets the type of particle **/ void SetType(std::string type) { _type = type; } /** @brief Returns the identifier of the track **/ int GetTrackId() const { return _id; } /** @brief Sets the identifier of the track **/ void SetTrackId(int id) { _id = id; } /** @brief Returns the global time of the event track **/ double GetTime() const { return _time; } /** @brief Sets the global time of the event track **/ void SetTime(double time) { _time = time; } /** @brief Returns the plane density in the MAPMT */ double GetPlaneDensityMA() const { return _plane_density_ma; } /** @brief Sets the plane density in the MAPMT */ void SetPlaneDensityMA(double plane_density_ma) { _plane_density_ma = plane_density_ma; } /** @brief Returns the plane density in the SAPMT */ double GetPlaneDensitySA() const { return _plane_density_sa; } /** @brief Sets the plane density in the SAPMT */ void SetPlaneDensitySA(double plane_density_sa) { _plane_density_sa = plane_density_sa; } /** @brief Returns the total charge in the MAPMT */ double GetTotalChargeMA() const { return _total_charge_ma; } /** @brief Sets the total charge in the MAPMT */ void SetTotalChargeMA(double total_charge_ma) { _total_charge_ma = total_charge_ma; } /** @brief Returns the total charge in the SAPMT */ double GetTotalChargeSA() const { return _total_charge_sa; } /** @brief Sets the total charge in the SAPMT */ void SetTotalChargeSA(double total_charge_sa) { _total_charge_sa = total_charge_sa; } /** @brief Returns the charge ratio in the SAPMT */ double GetChargeRatioMA() const { return _charge_ratio_ma; } /** @brief Sets the charge ratio in the SAPMT */ void SetChargeRatioMA(double charge_ratio_ma) { _charge_ratio_ma = charge_ratio_ma; } /** @brief Returns the charge ratio in the MAPMT */ double GetChargeRatioSA() const { return _charge_ratio_sa; } /** @brief Sets the charge ratio in the MAPMT */ void SetChargeRatioSA(double charge_ratio_sa) { _charge_ratio_sa = charge_ratio_sa; } private: EMRPlaneHitArray _emrplanehits; EMRSpacePointArray _emrspacepoints; EMRTrack _track; std::string _type; int _id; double _time; double _plane_density_ma; double _plane_density_sa; double _total_charge_ma; double _total_charge_sa; double _charge_ratio_ma; double _charge_ratio_sa; MAUS_VERSIONED_CLASS_DEF(EMREventTrack) }; } // namespace MAUS #endif // #define _SRC_COMMON_CPP_DATASTRUCTURE_EMREVENTTRACK_HH_