GET library
GETObject.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GETObject.hh
3  *
4  * Include file for the GETObject class.
5  */
6 //======================================================================
7 
8 #ifndef GET_OBJECT_HH
9 #define GET_OBJECT_HH
10 
11 //----------------------------------------------------------------------
12 
13 #include "GETCommon.hh"
14 #include "GETProcessLink.hh"
15 #include "GETProcess.hh"
16 #include "GETProcessSerie.hh"
17 #include "GETSignalModifier.hh"
18 #include "GETResponse.hh"
19 #include "GETFilter.hh"
20 #include "GETNoise.hh"
21 
22 
23 //======================================================================
24 /*! \class GETObject
25  *
26  * This class defines base properties for GET system core objects.
27  * The GET objects, at any level, define the signal processing
28  * information, based on 4 GETProcessingData objects:
29  * - the response function
30  * - the filter for reconstruction of the input signal
31  * - an noise process to a apply on input signal
32  * - an noise process to a apply on output signal
33  *
34  * The use of GETProcessingData objects allow to define these processes
35  * (if needed) either locally, either externally for sharing the
36  * same process for several GET objects (see GETProcessingData).
37  */
38 class GETObject
39 {
40  //------------------------------------------------------------
41  /*! \object_doc */
43  //------------------------------------------------------------
44 
45  friend class GETSystem;
46 
47  protected:
48  int id; ///< Object identifier number (set by the parent, in filiation)
49  GETObject * parent; ///< Parent AGet chip
50  bool is_read; ///< Flag indicating some data was read for the object (from exp. raw data)
51 
52  GETProcessLink response; ///< Signal response function
53  GETProcessLink filter; ///< Signal processing filter
54  GETProcessLink noise_in; ///< Simulation input noise generator
55  GETProcessLink noise_out; ///< Simulation output noise generator
56  GETProcessLink output_corr; ///< Output signal correction before reconstruction of input
57 
58  public:
59  //----------------------------------------------------------
60  /** @name Constructors, affectation, destructor */
61  //@{
62  GETObject ( );
63  virtual ~GETObject ( );
64  //@}
65 
66  //----------------------------------------------------------
67  /** @name GET system core objects functions */
68  //@{
69  int GetId ( ) const; // inline
70 
71  /*! Return the object string identifier.*/
72  virtual string GetObjectId ( ) const = 0;
73 
74  virtual string GetFullId ( ) const;
75  virtual u_int GetSignalChannelCount ( ) const;
76  virtual u_int GetTotalChannelCount ( ) const;
77  virtual u_int GetChannelCount ( ) const; // inline
78  virtual GETChannel * GetSignalChannel ( u_int n );
79  virtual GETChannel * GetTotalChannel ( u_int n );
80  virtual GETChannel * GetChannel ( u_int n ); // inline
81 
82  const GETObject * GetParent ( ) const; // inline
83  GETObject * GetParent ( ); // inline
84 
85  virtual void SetTimeStep ( double dt );
86  u_int GetSampleDim ( );
87  double GetTimeStep ( );
88 
89  /*! Return the number of children objects.*/
90  virtual u_int GetChildrenNumber ( ) const = 0;
91 
92  /*! Return the pointer of a child objects.*/
93  virtual const GETObject * GetChild ( u_int i ) const = 0;
94 
95  /*! Return the pointer of a child objects.*/
96  virtual GETObject * GetChild ( u_int i ) = 0;
97 
98  virtual void SetReadoutFlag ( bool b = true ); // inline
99  bool GetReadoutFlag ( ) const; // inline
100  virtual u_int GetReadoutMultiplicity ( bool fpn = true ) const;
101  virtual double GetSignalSum ( u_short info = GET::signalOut );
102 
103  //@}
104 
105  //----------------------------------------------------------
106  /** @name Initialization and signal related functions */
107  //@{
108  virtual void InitLocalData ( u_int n, double dt );
109 
110  virtual void ValidDataSet ( );
111  virtual void ValidSimulSet ( );
112 
113  virtual void ClearEvent ( );
114  //@}
115 
116  //----------------------------------------------------------
117  /** @name Common processing data: response function, filter, noise */
118  //@{
119  virtual void SetResponse ( GETResponse * ptr, bool recur = true, bool fpn = false );
120  virtual void SetResponse ( GETResponse & obj, bool recur = true, bool fpn = false );
121  virtual void SetFilter ( GETFilter * ptr, bool recur = true, bool fpn = false );
122  virtual void SetFilter ( GETFilter & obj, bool recur = true, bool fpn = false );
123  virtual void SetNoiseIn ( GETSignalModifier * ptr, bool recur = true, bool fpn = false );
124  virtual void SetNoiseIn ( GETSignalModifier & obj, bool recur = true, bool fpn = false );
125  virtual void SetNoiseOut ( GETSignalModifier * ptr, bool recur = true, bool fpn = false );
126  virtual void SetNoiseOut ( GETSignalModifier & obj, bool recur = true, bool fpn = false );
127 
128  // set simple output correction process
129  virtual void SetOutputCorrection ( GETProcess * ptr, bool recur = true, bool fpn = false );
130  virtual void SetOutputCorrection ( GETProcess & obj, bool recur = true, bool fpn = false );
131 
132  // set output correction process list
133  virtual void RemoveOutputCorrection ( );
134  virtual void SetOutputCorrectionList ( bool warn = true );
135  virtual void AddOutputCorrection ( GETProcess * ptr, bool recur = true, bool fpn = false );
136  virtual void AddOutputCorrection ( GETProcess & obj, bool recur = true, bool fpn = false );
137 
138  GETResponse * GetResponse ( bool force = true );
139  GETFilter * GetFilter ( bool force = true );
140  GETSignalModifier * GetNoiseIn ( bool force = true );
141  GETSignalModifier * GetNoiseOut ( bool force = true );
142  GETProcess * GetOutputCorrection ( bool force = true );
143 
144  //@}
145 
146  //----------------------------------------------------------
147  /** @name Samples processing */
148  //@{
149  virtual int ProcessData ( bool in_noise = true );
150  virtual int ProcessOutFromTst ( bool in_noise = true, bool out_noise = true );
151  virtual int ProcessRecFromOut ( bool out_corr = true );
152 
153  virtual int ProcessOutputCorrection ( );
154  //@}
155 
156 
157  //----------------------------------------------------------
158  /** @name ROOT related functions */
159  //@{
160  public:
161 
162  /*! for use within ROOT.*/
163  ClassDef(GETObject,0);
164  //@}
165 };
166 
167 
168 //----------------------------------------------------------------------
169 // Inline functions
170 #include "icc/GETObject.icc"
171 
172 
173 //======================================================================
174 #endif
virtual void SetNoiseOut(GETSignalModifier *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:390
virtual void SetNoiseIn(GETSignalModifier *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:348
GETProcessLink response
Signal response function.
Definition: GETObject.hh:52
static const u_short signalOut
Output (experimental data) signal sample.
Definition: GETCommon.hh:110
GETResponse * GetResponse(bool force=true)
Definition: GETObject.cpp:607
Definition: GETResponse.hh:23
virtual int ProcessRecFromOut(bool out_corr=true)
Definition: GETObject.cpp:761
virtual int ProcessOutputCorrection()
Definition: GETObject.cpp:775
int GetId() const
Definition: GETObject.icc:10
Definition: GETFilter.hh:21
virtual void ClearEvent()
Definition: GETObject.cpp:245
Definition: GETChannel.hh:41
bool GetReadoutFlag() const
Definition: GETObject.icc:68
GETProcessLink noise_out
Simulation output noise generator.
Definition: GETObject.hh:55
virtual const GETObject * GetChild(u_int i) const =0
virtual void SetOutputCorrection(GETProcess *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:432
GObjectV(GETObject)
virtual double GetSignalSum(u_short info=GET::signalOut)
Definition: GETObject.cpp:189
virtual GETChannel * GetChannel(u_int n)
Definition: GETObject.icc:37
GETProcessLink output_corr
Output signal correction before reconstruction of input.
Definition: GETObject.hh:56
virtual void SetTimeStep(double dt)
Definition: GETObject.cpp:161
virtual u_int GetSignalChannelCount() const
Definition: GETObject.cpp:61
virtual void InitLocalData(u_int n, double dt)
Definition: GETObject.cpp:227
ClassDef(GETObject, 0)
virtual int ProcessData(bool in_noise=true)
Definition: GETObject.cpp:714
virtual void ValidDataSet()
Definition: GETObject.icc:47
virtual u_int GetChannelCount() const
Definition: GETObject.icc:27
int id
Object identifier number (set by the parent, in filiation)
Definition: GETObject.hh:48
GETProcessLink filter
Signal processing filter.
Definition: GETObject.hh:53
virtual ~GETObject()
Definition: GETObject.cpp:34
bool is_read
Flag indicating some data was read for the object (from exp. raw data)
Definition: GETObject.hh:50
Definition: GETObject.hh:38
GETFilter * GetFilter(bool force=true)
Definition: GETObject.cpp:626
double GetTimeStep()
Definition: GETObject.cpp:179
virtual void AddOutputCorrection(GETProcess *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:540
GETObject()
Definition: GETObject.cpp:21
virtual GETChannel * GetTotalChannel(u_int n)
Definition: GETObject.cpp:129
virtual void ValidSimulSet()
Definition: GETObject.icc:56
virtual void SetOutputCorrectionList(bool warn=true)
Definition: GETObject.cpp:502
virtual void SetReadoutFlag(bool b=true)
Definition: GETObject.icc:64
virtual GETChannel * GetSignalChannel(u_int n)
Definition: GETObject.cpp:89
GETSignalModifier * GetNoiseOut(bool force=true)
Definition: GETObject.cpp:664
GETProcess * GetOutputCorrection(bool force=true)
Definition: GETObject.cpp:683
virtual string GetObjectId() const =0
GETProcessLink noise_in
Simulation input noise generator.
Definition: GETObject.hh:54
u_int GetSampleDim()
Definition: GETObject.cpp:175
Definition: GETSignalModifier.hh:22
GETSignalModifier * GetNoiseIn(bool force=true)
Definition: GETObject.cpp:645
virtual int ProcessOutFromTst(bool in_noise=true, bool out_noise=true)
Definition: GETObject.cpp:741
GETObject * parent
Parent AGet chip.
Definition: GETObject.hh:49
virtual u_int GetReadoutMultiplicity(bool fpn=true) const
Definition: GETObject.cpp:205
Definition: GETProcess.hh:32
virtual u_int GetChildrenNumber() const =0
const GETObject * GetParent() const
Definition: GETObject.icc:15
virtual void SetResponse(GETResponse *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:264
virtual void SetFilter(GETFilter *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:306
virtual u_int GetTotalChannelCount() const
Definition: GETObject.cpp:72
virtual string GetFullId() const
Definition: GETObject.cpp:48
Definition: GETSystem.hh:147
virtual void RemoveOutputCorrection()
Definition: GETObject.cpp:472