R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BNeulandCluster.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (C) 2019 GSI Helmholtzzentrum für Schwerionenforschung GmbH *
3 * Copyright (C) 2019-2025 Members of R3B Collaboration *
4 * *
5 * This software is distributed under the terms of the *
6 * GNU General Public Licence (GPL) version 3, *
7 * copied verbatim in the file "LICENSE". *
8 * *
9 * In applying this license GSI does not waive the privileges and immunities *
10 * granted to it by virtue of its status as an Intergovernmental Organization *
11 * or submit itself to any jurisdiction. *
12 ******************************************************************************/
13
14#ifndef R3BNEULANDCLUSTER_H
15#define R3BNEULANDCLUSTER_H
16
17#include "R3BNeulandHit.h"
18#include "TObject.h"
19#include <Math/Vector3Dfwd.h>
20#include <Rtypes.h>
21#include <RtypesCore.h>
22#include <cstddef>
23#include <iostream>
24#include <utility>
25#include <vector>
26
27class R3BNeulandCluster : public TObject
28{
29 public:
30 R3BNeulandCluster() = default;
31 explicit R3BNeulandCluster(const R3BNeulandHit& hit)
32 : fHits({ hit })
33 {
34 }
35 R3BNeulandCluster(std::vector<R3BNeulandHit>::iterator begin, std::vector<R3BNeulandHit>::iterator end)
36 : fHits(begin, end)
37 {
38 }
39 explicit R3BNeulandCluster(std::vector<R3BNeulandHit> hits)
40 : fHits(std::move(hits))
41 {
42 }
43
44 void Clear(Option_t* /*unused*/) override
45 {
46 fHits.clear();
47 fHits.shrink_to_fit();
48 }
49
50 [[nodiscard]] auto GetHits() const -> const std::vector<R3BNeulandHit>& { return fHits; }
51 [[nodiscard]] auto GetFirstHit() const -> R3BNeulandHit;
52 [[nodiscard]] auto GetLastHit() const -> R3BNeulandHit;
53 [[nodiscard]] auto GetMaxEnergyHit() const -> R3BNeulandHit;
54 [[nodiscard]] auto GetForemostHit() const -> R3BNeulandHit;
55 [[nodiscard]] auto GetPosition() const -> ROOT::Math::XYZVector;
56 [[nodiscard]] auto GetT() const -> double;
57 [[nodiscard]] auto GetE() const -> double;
58 [[nodiscard]] auto GetBeta() const -> double { return GetFirstHit().GetBeta(); }
59 [[nodiscard]] auto GetEToF() const -> double { return GetFirstHit().GetEToF(); }
60 [[nodiscard]] auto GetSize() const -> std::size_t { return fHits.size(); }
61 [[nodiscard]] auto GetEnergyCentroid() const -> ROOT::Math::XYZVector;
62 [[nodiscard]] auto GetEnergyMoment() const -> double;
63 [[nodiscard]] auto GetRCluster(double beta) const -> double;
64 [[nodiscard]] auto GetRECluster(double ekin) const -> double;
65
66 void Print(const Option_t* /*option*/) const override;
67
68 auto operator==(const R3BNeulandCluster& cluster) const -> bool { return this->GetHits() == cluster.GetHits(); }
69
70 private:
71 std::vector<R3BNeulandHit> fHits;
72
73 ClassDefOverride(R3BNeulandCluster, 1)
74};
75
76auto operator<<(std::ostream&, const R3BNeulandCluster&) -> std::ostream&; // Support easy printing
77
78#endif // R3BNEULANDCLUSTER_H
auto operator<<(std::ostream &, const R3BNeulandCluster &) -> std::ostream &
R3BNeulandCluster(const R3BNeulandHit &hit)
auto GetEToF() const -> double
R3BNeulandCluster(std::vector< R3BNeulandHit > hits)
R3BNeulandCluster(std::vector< R3BNeulandHit >::iterator begin, std::vector< R3BNeulandHit >::iterator end)
void Print(const Option_t *) const override
auto GetForemostHit() const -> R3BNeulandHit
void Clear(Option_t *) override
auto GetT() const -> double
auto GetBeta() const -> double
auto GetFirstHit() const -> R3BNeulandHit
std::vector< R3BNeulandHit > fHits
auto GetRECluster(double ekin) const -> double
auto GetSize() const -> std::size_t
auto GetHits() const -> const std::vector< R3BNeulandHit > &
auto GetEnergyCentroid() const -> ROOT::Math::XYZVector
auto GetMaxEnergyHit() const -> R3BNeulandHit
auto GetPosition() const -> ROOT::Math::XYZVector
auto GetLastHit() const -> R3BNeulandHit
R3BNeulandCluster()=default
auto GetRCluster(double beta) const -> double
auto GetE() const -> double
auto GetEnergyMoment() const -> double