PandaRoot
BSEmcGeoItem.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 #ifndef BSEMCGEOITEM_HH
14 #define BSEMCGEOITEM_HH
15 
16 #include <vector>
17 
18 #include "Rtypes.h"
19 #include "RtypesCore.h"
20 #include "TObject.h"
21 
22 #include "BSEmcDigi.h"
23 
24 class BSEmcDigi;
25 class TBuffer;
26 class TClass;
27 class TMemberInspector;
28 
37 class BSEmcGeoItem : public TObject {
38  public:
39  BSEmcGeoItem();
40  virtual ~BSEmcGeoItem();
41 
42  Bool_t IsSameItem(const BSEmcGeoItem *t_item) const { return GetID() == t_item->GetID(); }
43 
44  Bool_t IsNeighbour(const BSEmcGeoItem *t_item) const;
45  Bool_t HasNeighbours() const { return !fNeighbours.empty(); }
46  Bool_t IsAdded() const { return fIsAdded; }
47  Bool_t IsDigiPresent() const { return fDigis.size() > 0; }
48  Int_t NumberOfNeighbours() const { return fNeighbourCount; }
49 
50  void AddNeighbour(BSEmcGeoItem *t_item);
51  void SetID(Int_t t_uniqueId) { fUniqueID = t_uniqueId; }
52  Int_t GetID() const { return fUniqueID; }
53  const std::vector<BSEmcGeoItem *> &GetNeighbours() const { return fNeighbours; }
54  const BSEmcGeoItem *GetNeighbour(Int_t t_index) const { return fNeighbours.at(t_index); }
55  BSEmcGeoItem *GetNeighbour(Int_t t_index) { return fNeighbours.at(t_index); }
56  void ClearNeighbourList() { fNeighbours.clear(); }
57  void FindClusterCrystals(std::vector<BSEmcGeoItem *> &t_clusterCrystals);
58 
59  void Reset();
60  void AddDigi(const BSEmcDigi *t_digi) { fDigis.push_back(t_digi); }
61  const std::vector<const BSEmcDigi *> &GetDigis() const { return fDigis; }
62  void AddDigiIndex(Int_t t_digiindex) { fDigiIndices.push_back(t_digiindex); }
63  const std::vector<Int_t> &GetDigiIndices() const { return fDigiIndices; }
64 
65  private:
66  Int_t fUniqueID{-1};
67  std::vector<BSEmcGeoItem *> fNeighbours{};
68  Int_t fNeighbourCount{-1};
69  std::vector<const BSEmcDigi *> fDigis{};
70  std::vector<Int_t> fDigiIndices{};
71  Bool_t fIsAdded{kFALSE};
72  ClassDef(BSEmcGeoItem, 1);
73 };
74 
75 #endif /*BSEMCGEOITEM_HH*/
Bool_t IsAdded() const
Definition: BSEmcGeoItem.h:46
const std::vector< Int_t > & GetDigiIndices() const
Definition: BSEmcGeoItem.h:63
Int_t GetID() const
Definition: BSEmcGeoItem.h:52
Bool_t IsDigiPresent() const
Definition: BSEmcGeoItem.h:47
Bool_t IsSameItem(const BSEmcGeoItem *t_item) const
Definition: BSEmcGeoItem.h:42
void ClearNeighbourList()
Definition: BSEmcGeoItem.h:56
Bool_t HasNeighbours() const
Definition: BSEmcGeoItem.h:45
void AddDigi(const BSEmcDigi *t_digi)
Definition: BSEmcGeoItem.h:60
BSEmcGeoItem * GetNeighbour(Int_t t_index)
Definition: BSEmcGeoItem.h:55
const std::vector< BSEmcGeoItem * > & GetNeighbours() const
Definition: BSEmcGeoItem.h:53
const std::vector< const BSEmcDigi * > & GetDigis() const
Definition: BSEmcGeoItem.h:61
void FindClusterCrystals(std::vector< BSEmcGeoItem *> &t_clusterCrystals)
Convenience object for neighbouring relations used by BSEmcRecursiveClustering.
Definition: BSEmcGeoItem.h:37
Bool_t IsNeighbour(const BSEmcGeoItem *t_item) const
virtual ~BSEmcGeoItem()
represents the reconstructed hit of one emc crystal
Definition: BSEmcDigi.h:59
void AddDigiIndex(Int_t t_digiindex)
Definition: BSEmcGeoItem.h:62
void SetID(Int_t t_uniqueId)
Definition: BSEmcGeoItem.h:51
Int_t NumberOfNeighbours() const
Definition: BSEmcGeoItem.h:48
void AddNeighbour(BSEmcGeoItem *t_item)
const BSEmcGeoItem * GetNeighbour(Int_t t_index) const
Definition: BSEmcGeoItem.h:54