Diana Software
QPulse.cc
Go to the documentation of this file.
1 #include "QPulse.hh"
2 #include "QPulseFiller.hh"
3 
4 using std::endl;
5 
7 
8 
9 QPulse::QPulse() : fSamples(0),fSamplesAreSet(false),fSamplesADC(),fFiller_ptr(0)
10 {
11 }
12 
14 {
15  if(fSamples) fSamples->Clear();
16  fSamplesADC.Clear();
17  fSamplesAreSet = false;
19 }
20 
21 QPulse::QPulse(const QPulse& other): fSamples(0),fSamplesAreSet(false),fSamplesADC(),fFiller_ptr(0)
22 {
23  Clear();
24  this->operator=(other);
25 }
26 
27 
29 {
30  if(fSamples) delete fSamples;
31  fSamples = 0;
32  if(fFiller_ptr) delete fFiller_ptr;
33 }
34 
35 const QPulse& QPulse::operator=(const QPulse& other)
36 {
37  fSamplesAreSet = false;
38  fSamplesADC = other.fSamplesADC;
39  if(other.fFiller_ptr && other.fFiller_ptr->IsValid()) {
40  if(!fFiller_ptr) fFiller_ptr = dynamic_cast<QPulseFiller*>(other.fFiller_ptr->Duplicate());
42  } else if(fFiller_ptr) {
43  fFiller_ptr->Clear();
44  }
45  this->QObject::operator=(other);
46  return *this;
47 }
48 
49 const Diana::QVector& QPulse::GetSamples() const
50 {
51  if(!fSamplesAreSet) {
52  if(!fSamples) fSamples = new Diana::QVector();
53  if(fSamplesADC.IsValid() ) {
55  } else if(fFiller_ptr && fFiller_ptr->IsValid()) {
58  } else {
60  err.SetDescription(__FILE__,__LINE__,"fSamplesADC and fFillerPointer are empty!");
62  }
63  fSamplesAreSet = true;
64  }
65  return *fSamples;
66 }
67 
68 
69 const Diana::QVectorI& QPulse::GetSamplesADC() const
70 {
71  return fSamplesADC;
72 }
73 
74 void QPulse::SetSamplesADC(const Diana::QVectorI& samples)
75 {
76  fSamplesADC = samples;
77  fSamplesADC.Validate();
78  fSamplesAreSet = false;
79 }
80 
82 {
83  Clear();
84  if(!fFiller_ptr) fFiller_ptr = dynamic_cast<QPulseFiller*>(filler.Duplicate());
85  filler.Fill(fFiller_ptr);
86  fFiller_ptr->Validate();
87  fSamplesADC.InValidate();
88 }
89 
91 {
92  if(!fFiller_ptr || !fFiller_ptr->IsValid()) return;
94  fSamplesADC.Validate();
96 }
97 
99 {
100  fSamplesADC.Clear();
101  fSamplesADC.InValidate();
102 }
103 
104 
105 
106 void QPulse::Dump(std::ostream& o) const
107 {
108  if(fSamplesADC.IsValid()) {
109  o<<"ADC samples size: "<<fSamplesADC.Size()<<endl;
110  if(fSamplesADC.Size() > 0) {
111  o<<"ADC first sample: "<<fSamplesADC[0]<<endl;
112  }
113  } else {
114  o<<"ADC samples not valid"<<endl;
115  }
116 }
err
Definition: CheckOF.C:114
#define DianaThrow(obj)
Definition: QDianaDebug.hh:26
@ QERR_OUT_OF_RANGE
Definition: QError.hh:28
@ QERR_SUCCESS
Definition: QError.hh:27
QObjectImp(QPulse) QPulse
Definition: QPulse.cc:6
error class with error type and description
Definition: QError.hh:115
QObject & operator=(const QObject &rhs)
operator=
Definition: QObject.cc:32
coordinates to filla QPulse from a continuous file
Definition: QPulseFiller.hh:19
void Clear()
clear members
Definition: QPulseFiller.cc:39
virtual QError Fill(Diana::QVectorI &samples) const
Definition: QPulseFiller.cc:32
Raw event: sampled waveform.
Definition: QPulse.hh:22
void Dump(std::ostream &o) const
Definition: QPulse.cc:106
QPulse()
default constructor
Diana::QVectorI fSamplesADC
Acquired Samples.
Definition: QPulse.hh:74
const QPulse & operator=(const QPulse &)
Definition: QPulse.cc:35
bool fSamplesAreSet
boolean for samples caching mechanism
Definition: QPulse.hh:71
void DeleteADC()
Consolidate. Store samples from the fFiller into fSamplesADC
Definition: QPulse.cc:98
const Diana::QVectorI & GetSamplesADC() const
Get Samples acquired from ADC. Beware that fSamplesADC may by empty if fFiller is valid
Definition: QPulse.cc:69
void Clear()
Clear()
Definition: QPulse.cc:13
void SetSamplesADC(const Diana::QVectorI &samples)
Set Samples acquired from ADC.
Definition: QPulse.cc:74
Diana::QVector * fSamples
Acquired Samples casted to double.
Definition: QPulse.hh:68
const Diana::QVector & GetSamples() const
Get Samples casted to double (QVector instead of QVectorI). Use this method in place of GetSamplesADC...
Definition: QPulse.cc:49
void Consolidate()
Consolidate. Store samples from the fFiller into fSamplesADC
Definition: QPulse.cc:90
QPulseFiller * fFiller_ptr
pulse filler
Definition: QPulse.hh:77
virtual ~QPulse()
destructor
Definition: QPulse.cc:28
void SetPulseFiller(const QPulseFiller &filler)
Set QPulseFiller as input from continuous files.
Definition: QPulse.cc:81