PandaRoot
PndSdsDigi.h
Go to the documentation of this file.
1 // --------------------------------------------------------
2 // ---- PndSdsDigi header file ---
3 // ---- Created 19.10.07 by T.Stockmanns ---
4 // --------------------------------------------------------
5 
14 #ifndef PNDSDSDIGI_H
15 #define PNDSDSDIGI_H
16 
17 #include "FairTimeStamp.h"
18 
19 #include "TObject.h"
20 #include "TString.h"
21 #include "PndDetectorList.h"
22 #include <iostream>
23 #include <vector>
24 
25 #ifndef __CINT__ // for BOOST serialization
26 #include <boost/serialization/void_cast.hpp>
27 #include <boost/serialization/serialization.hpp>
28 #include <boost/serialization/vector.hpp>
29 #endif // for BOOST serialization
30 
31 class PndSdsDigi : public FairTimeStamp {
32  friend std::ostream &operator<<(std::ostream &out, PndSdsDigi &digi)
33  {
34  out << "PndSds Digi in sensor: " << digi.GetSensorID() << " FE: " << digi.GetFE() << " "
35  << " charge: " << digi.GetCharge() << " e"
36  << " timestamp: " << digi.GetTimeStamp() << ", from Point(s): ";
37  std::vector<Int_t> indices = digi.GetIndices();
38  for (unsigned int i = 0; i < indices.size(); i++) {
39  std::cout << digi.GetIndex(i) << " " << std::endl;
40  }
41  return out;
42  }
43 
44  public:
45  PndSdsDigi();
46  PndSdsDigi(std::vector<Int_t> index, Int_t detID, Int_t sensorID, Int_t fe, Double_t charge, Double_t timestamp = -1);
47  PndSdsDigi(Int_t index, Int_t detID, Int_t fSensorID, Int_t fe, Double_t charge, Double_t timestamp = -1);
55  virtual ~PndSdsDigi(){};
56 
57  Int_t GetFE() const { return fFE; }
58  // TString GetDetName() const { return fDetName; }
59  Int_t GetSensorID() const { return fSensorID; }
60  Double_t GetCharge() const { return fCharge; }
61  Int_t GetDetID() const { return fDetID; }
62  std::vector<Int_t> GetIndices() const { return fIndex; }
63  Int_t GetIndex(int i = 0) const { return fIndex[i]; }
64  Int_t GetNIndices() const { return fIndex.size(); }
65 
66  virtual void AddIndex(int index)
67  {
68  fIndex.push_back(index);
69  AddLink(FairLink(fDetID, index));
70  }
71 
72  virtual void AddIndex(std::vector<Int_t> index)
73  {
74  fIndex = index;
75  AddLinks(FairMultiLinkedData(fDetID, index));
76  }
77  void SetCharge(double charge) { fCharge = charge; }
78  void AddCharge(double charge) { fCharge += charge; }
79 
80  virtual bool operator<(const PndSdsDigi &myDigi) const
81  {
82  if (fDetID < myDigi.GetDetID())
83  return true;
84  else if (fDetID > myDigi.GetDetID())
85  return false;
86  if (fSensorID < myDigi.GetSensorID())
87  return true;
88  else if (fSensorID > myDigi.GetSensorID())
89  return false;
90  if (fFE < myDigi.GetFE())
91  return true;
92  else if (fFE > myDigi.GetFE())
93  return false;
94  return false;
95  }
96 
97  virtual void Print() { std::cout << *this; }
98 
99 #ifndef __CINT__ // for BOOST serialization
100  template <class Archive>
101  void serialize(Archive &ar, const unsigned int version)
102  {
103  boost::serialization::void_cast_register<PndSdsDigi, FairTimeStamp>();
104 
105  ar &boost::serialization::base_object<FairTimeStamp>(*this);
106  ar &fDetID;
107  ar &fSensorID;
108  ar &fFE;
109  ar &fCharge;
110  }
111 #endif // for BOOST serialization
112 
113  protected:
114 #ifndef __CINT__ // for BOOST serialization
116 
117 #endif // for BOOST serialization
118  std::vector<Int_t> fIndex; // indice of mc points contributing to this digi
119  Int_t fDetID; // branch ID of mc point array
120  Int_t fSensorID; // Geometry ID for sensor volume
121  Int_t fFE; // Frontend number
122  Double_t fCharge; // collected charge
123 
124  ClassDef(PndSdsDigi, 4);
125 };
126 
127 #endif
friend std::ostream & operator<<(std::ostream &out, PndSdsDigi &digi)
Definition: PndSdsDigi.h:32
virtual void AddIndex(int index)
Definition: PndSdsDigi.h:66
Base class for Digi information.
Definition: PndSdsDigi.h:31
Int_t fSensorID
Definition: PndSdsDigi.h:120
friend class boost::serialization::access
Definition: PndSdsDigi.h:115
virtual void AddIndex(std::vector< Int_t > index)
Definition: PndSdsDigi.h:72
void AddCharge(double charge)
Definition: PndSdsDigi.h:78
std::vector< Int_t > GetIndices() const
Definition: PndSdsDigi.h:62
Double_t GetCharge() const
Definition: PndSdsDigi.h:60
Int_t GetIndex(int i=0) const
Definition: PndSdsDigi.h:63
unsigned int i
Definition: P4_F32vec4.h:21
virtual void Print()
Definition: PndSdsDigi.h:97
Int_t fDetID
Definition: PndSdsDigi.h:119
ClassDef(PndSdsDigi, 4)
Int_t GetNIndices() const
Definition: PndSdsDigi.h:64
virtual bool operator<(const PndSdsDigi &myDigi) const
Definition: PndSdsDigi.h:80
std::vector< Int_t > fIndex
Definition: PndSdsDigi.h:118
void SetCharge(double charge)
Definition: PndSdsDigi.h:77
Int_t GetDetID() const
Definition: PndSdsDigi.h:61
Int_t fFE
Definition: PndSdsDigi.h:121
Int_t GetSensorID() const
Definition: PndSdsDigi.h:59
Double_t fCharge
Definition: PndSdsDigi.h:122
void serialize(Archive &ar, const unsigned int version)
Definition: PndSdsDigi.h:101
virtual ~PndSdsDigi()
Definition: PndSdsDigi.h:55
Int_t GetFE() const
Definition: PndSdsDigi.h:57