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 <iostream>
20#include <utility>
21#include <vector>
22
23class R3BNeulandCluster : public TObject
24{
25 public:
26 R3BNeulandCluster() = default;
27 explicit R3BNeulandCluster(const R3BNeulandHit& hit)
28 : fHits({ hit })
29 {
30 }
31 R3BNeulandCluster(std::vector<R3BNeulandHit>::iterator begin, std::vector<R3BNeulandHit>::iterator end)
32 : fHits(begin, end)
33 {
34 }
35 explicit R3BNeulandCluster(std::vector<R3BNeulandHit> hits)
36 : fHits(std::move(hits))
37 {
38 }
39
40 void Clear(Option_t*) override
41 {
42 fHits.clear();
43 fHits.shrink_to_fit();
44 }
45
46 const std::vector<R3BNeulandHit>& GetHits() const { return fHits; }
51 TVector3 GetPosition() const;
52 Double_t GetT() const;
53 Double_t GetE() const;
54 Double_t GetBeta() const { return GetFirstHit().GetBeta(); }
55 Double_t GetEToF() const { return GetFirstHit().GetEToF(); }
56 Size_t GetSize() const { return fHits.size(); }
57 TVector3 GetEnergyCentroid() const;
58 Double_t GetEnergyMoment() const;
59 Double_t GetRCluster(Double_t beta) const;
60 Double_t GetRECluster(Double_t ekin) const;
61
62 void Print(const Option_t*) const override;
63
64 bool operator==(const R3BNeulandCluster& b) const { return this->GetHits() == b.GetHits(); }
65
66 private:
67 std::vector<R3BNeulandHit> fHits;
68
69 ClassDefOverride(R3BNeulandCluster, 1)
70};
71
72std::ostream& operator<<(std::ostream&, const R3BNeulandCluster&); // Support easy printing
73
74#endif // R3BNEULANDCLUSTER_H
std::ostream & operator<<(std::ostream &, const R3BNeulandCluster &)
R3BNeulandCluster(const R3BNeulandHit &hit)
R3BNeulandCluster(std::vector< R3BNeulandHit > hits)
R3BNeulandCluster(std::vector< R3BNeulandHit >::iterator begin, std::vector< R3BNeulandHit >::iterator end)
Double_t GetE() const
R3BNeulandHit GetFirstHit() const
TVector3 GetEnergyCentroid() const
void Print(const Option_t *) const override
void Clear(Option_t *) override
Double_t GetRCluster(Double_t beta) const
Size_t GetSize() const
R3BNeulandHit GetMaxEnergyHit() const
Double_t GetT() const
Double_t GetBeta() const
Double_t GetEToF() const
Double_t GetRECluster(Double_t ekin) const
R3BNeulandCluster()=default
bool operator==(const R3BNeulandCluster &b) const
TVector3 GetPosition() const
const std::vector< R3BNeulandHit > & GetHits() const
Double_t GetEnergyMoment() const
R3BNeulandHit GetLastHit() const
R3BNeulandHit GetForemostHit() const
auto GetBeta() const -> double
auto GetEToF(double mass=NEUTRON_MASS_MEV) const -> double