ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtPatternEvent.h
Go to the documentation of this file.
1 #ifndef ATPATTERNEVENT_H
2 #define ATPATTERNEVENT_H
3 
4 #include "AtBaseEvent.h"
5 #include "AtTrack.h"
6 
7 #include <Rtypes.h>
8 
9 #include <algorithm>
10 #include <memory> // for make_unique, unique_ptr
11 #include <utility>
12 #include <vector>
13 
14 class AtHit;
15 class TBuffer;
16 class TClass;
17 class TMemberInspector;
18 
19 class AtPatternEvent : public AtBaseEvent {
20 protected:
21  using HitPtr = std::unique_ptr<AtHit>;
22  using HitVector = std::vector<HitPtr>;
23 
24  std::vector<AtTrack> fTrackCand; // Candidate tracks
26 
27 public:
28  AtPatternEvent(const char *name = "AtPatternEvent");
29  AtPatternEvent(const AtPatternEvent &copy);
30  AtPatternEvent(const AtBaseEvent &copy) : AtBaseEvent(copy) { SetName("AtPatternEvent"); }
31  AtPatternEvent(AtPatternEvent &&copy) = default;
33  virtual ~AtPatternEvent() = default;
34 
35  void Clear(Option_t *opt = nullptr) override;
36 
37  friend void swap(AtPatternEvent &first, AtPatternEvent &second)
38  {
39  using std::swap;
40  swap(dynamic_cast<AtBaseEvent &>(first), dynamic_cast<AtBaseEvent &>(second));
41  swap(first.fTrackCand, second.fTrackCand);
42  swap(first.fNoise, second.fNoise);
43  };
44 
45  void SetTrackCand(std::vector<AtTrack> tracks) { fTrackCand = std::move(tracks); }
46  void AddTrack(const AtTrack &track) { fTrackCand.push_back(track); }
47  void AddTrack(AtTrack &&track) { fTrackCand.push_back(track); }
48 
49  template <typename... Ts>
50  void AddNoise(Ts &&...params)
51  {
52  fNoise.emplace_back(std::make_unique<AtHit>(std::forward<Ts>(params)...));
53  }
54  const HitVector &GetNoiseHits() { return fNoise; }
55 
56  std::vector<AtTrack> &GetTrackCand() { return fTrackCand; }
57  const std::vector<AtTrack> &GetTrackCand() const { return fTrackCand; }
58 
60 };
61 
62 #endif
swap
void swap(AtPad &a, AtPad &b) noexcept
Definition: AtPad.cxx:22
AtBaseEvent.h
AtPatternEvent
Definition: AtPatternEvent.h:19
AtPatternEvent::AddTrack
void AddTrack(AtTrack &&track)
Definition: AtPatternEvent.h:47
AtPatternEvent::AddTrack
void AddTrack(const AtTrack &track)
Definition: AtPatternEvent.h:46
AtPatternEvent::swap
friend void swap(AtPatternEvent &first, AtPatternEvent &second)
Definition: AtPatternEvent.h:37
AtPatternEvent::AtPatternEvent
AtPatternEvent(AtPatternEvent &&copy)=default
AtPatternEvent::SetTrackCand
void SetTrackCand(std::vector< AtTrack > tracks)
Definition: AtPatternEvent.h:45
AtPatternEvent::GetNoiseHits
const HitVector & GetNoiseHits()
Definition: AtPatternEvent.h:54
AtPatternEvent::~AtPatternEvent
virtual ~AtPatternEvent()=default
AtPatternEvent::operator=
AtPatternEvent & operator=(const AtPatternEvent object)
Definition: AtPatternEvent.cxx:19
AtPatternEvent::AtPatternEvent
AtPatternEvent(const char *name="AtPatternEvent")
Definition: AtPatternEvent.cxx:11
AtPatternEvent::GetTrackCand
std::vector< AtTrack > & GetTrackCand()
Definition: AtPatternEvent.h:56
AtPatternEvent::AtPatternEvent
AtPatternEvent(const AtBaseEvent &copy)
Definition: AtPatternEvent.h:30
AtTrack
Definition: AtTrack.h:25
AtBaseEvent
Base class for all event types in ATTPCROOT.
Definition: AtBaseEvent.h:20
AtTrack.h
AtPatternEvent::fNoise
HitVector fNoise
Definition: AtPatternEvent.h:25
AtPatternEvent::AddNoise
void AddNoise(Ts &&...params)
Definition: AtPatternEvent.h:50
AtPatternEvent::GetTrackCand
const std::vector< AtTrack > & GetTrackCand() const
Definition: AtPatternEvent.h:57
AtPatternEvent::Clear
void Clear(Option_t *opt=nullptr) override
Definition: AtPatternEvent.cxx:25
AtPatternEvent::HitVector
std::vector< HitPtr > HitVector
Definition: AtPatternEvent.h:22
AtPatternEvent::ClassDefOverride
ClassDefOverride(AtPatternEvent, 3)
AtPatternEvent::HitPtr
std::unique_ptr< AtHit > HitPtr
Definition: AtPatternEvent.h:21
AtPatternEvent::fTrackCand
std::vector< AtTrack > fTrackCand
Definition: AtPatternEvent.h:24
AtHit
Point in space with charge.
Definition: AtHit.h:27