/** * @file * @brief Definition of module Tracking4D * * @copyright Copyright (c) 2017-2020 CERN and the Corryvreckan 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. */ #ifndef TRACKING4D_H #define TRACKING4D_H 1 #include #include #include #include #include "core/module/Module.hpp" #include "objects/Cluster.hpp" #include "objects/Pixel.hpp" #include "objects/Track.hpp" namespace corryvreckan { /** @ingroup Modules */ class Tracking4D : public Module { public: // Constructors and destructors Tracking4D(Configuration& config, std::vector> detectors); ~Tracking4D() {} // Functions void initialize() override; StatusCode run(const std::shared_ptr& clipboard) override; private: // Histograms TH1F* trackChi2; TH1F* clustersPerTrack; TH1F* trackChi2ndof; TH1F* tracksPerEvent; TH1F* trackAngleX; TH1F* trackAngleY; std::map residualsX_local; std::map residualsXwidth1_local; std::map residualsXwidth2_local; std::map residualsXwidth3_local; std::map pullY_local; std::map residualsY_local; std::map residualsYwidth1_local; std::map residualsYwidth2_local; std::map residualsYwidth3_local; std::map pullX_local; std::map residualsX_global; std::map residualsXwidth1_global; std::map residualsXwidth2_global; std::map residualsXwidth3_global; std::map pullX_global; std::map residualsY_global; std::map residualsYwidth1_global; std::map residualsYwidth2_global; std::map residualsYwidth3_global; std::map pullY_global; std::map residualsZ_global; std::map kinkX; std::map kinkY; // Cuts for tracking double momentum_; double volume_radiation_length_; size_t min_hits_on_track_; bool exclude_DUT_; bool use_volume_scatterer_; bool reject_by_ROI_; bool uinque_cluster_usage_; std::vector require_detectors_; std::map, double> time_cuts_; std::map, XYVector> spatial_cuts_; std::string timestamp_from_; std::string track_model_; // Function to calculate the weighted average timestamp from the clusters of a track double calculate_average_timestamp(const Track* track); }; } // namespace corryvreckan #endif // TRACKING4D_H