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  protected:
46  int id; ///< Object identifier number (set by the parent, in filiation)
47  GETObject * parent; ///< Parent AGet chip
48 
49  GETProcessLink response; ///< Signal response function
50  GETProcessLink filter; ///< Signal processing filter
51  GETProcessLink noise_in; ///< Simulation input noise generator
52  GETProcessLink noise_out; ///< Simulation output noise generator
53  GETProcessLink output_corr; ///< Output signal correction before reconstruction of input
54 
55  public:
56  //----------------------------------------------------------
57  /** @name Constructors, affectation, destructor */
58  //@{
59  GETObject ( );
60  virtual ~GETObject ( );
61  //@}
62 
63  //----------------------------------------------------------
64  /** @name GET system core objects functions */
65  //@{
66  int GetId ( ) const; // inline
67 
68  /*! Return the object string identifier.*/
69  virtual string GetObjectId ( ) const = 0;
70 
71  virtual string GetFullId ( ) const;
72  virtual u_int GetSignalChannelCount ( ) const;
73  virtual u_int GetTotalChannelCount ( ) const;
74  virtual u_int GetChannelCount ( ) const; // inline
75  virtual GETChannel * GetSignalChannel ( u_int n );
76  virtual GETChannel * GetTotalChannel ( u_int n );
77  virtual GETChannel * GetChannel ( u_int n ); // inline
78 
79  const GETObject * GetParent ( ) const; // inline
80  GETObject * GetParent ( ); // inline
81 
82  virtual void SetTimeStep ( double dt );
83  u_int GetSampleDim ( );
84  double GetTimeStep ( );
85 
86  /*! Return the number of children objects.*/
87  virtual u_int GetChildrenNumber ( ) const = 0;
88 
89  /*! Return the pointer of a child objects.*/
90  virtual const GETObject * GetChild ( u_int i ) const = 0;
91 
92  /*! Return the pointer of a child objects.*/
93  virtual GETObject * GetChild ( u_int i ) = 0;
94 
95  virtual u_int GetReadoutMultiplicity ( bool fpn = true ) const;
96  virtual double GetSignalSum ( u_short info = GET::signalOut );
97 
98  //@}
99 
100  //----------------------------------------------------------
101  /** @name Initialization and signal related functions */
102  //@{
103  virtual void InitLocalData ( u_int n, double dt );
104 
105  virtual void ValidDataSet ( );
106  virtual void ValidSimulSet ( );
107 
108  //@}
109 
110  //----------------------------------------------------------
111  /** @name Common processing data: response function, filter, noise */
112  //@{
113  virtual void SetResponse ( GETResponse * ptr, bool recur = true, bool fpn = false );
114  virtual void SetResponse ( GETResponse & obj, bool recur = true, bool fpn = false );
115  virtual void SetFilter ( GETFilter * ptr, bool recur = true, bool fpn = false );
116  virtual void SetFilter ( GETFilter & obj, bool recur = true, bool fpn = false );
117  virtual void SetNoiseIn ( GETSignalModifier * ptr, bool recur = true, bool fpn = false );
118  virtual void SetNoiseIn ( GETSignalModifier & obj, bool recur = true, bool fpn = false );
119  virtual void SetNoiseOut ( GETSignalModifier * ptr, bool recur = true, bool fpn = false );
120  virtual void SetNoiseOut ( GETSignalModifier & obj, bool recur = true, bool fpn = false );
121 
122  // set simple output correction process
123  virtual void SetOutputCorrection ( GETProcess * ptr, bool recur = true, bool fpn = false );
124  virtual void SetOutputCorrection ( GETProcess & obj, bool recur = true, bool fpn = false );
125 
126  // set output correction process list
127  virtual void RemoveOutputCorrection ( );
128  virtual void SetOutputCorrectionList ( bool warn = true );
129  virtual void AddOutputCorrection ( GETProcess * ptr, bool recur = true, bool fpn = false );
130  virtual void AddOutputCorrection ( GETProcess & obj, bool recur = true, bool fpn = false );
131 
132  GETResponse * GetResponse ( bool force = true );
133  GETFilter * GetFilter ( bool force = true );
134  GETSignalModifier * GetNoiseIn ( bool force = true );
135  GETSignalModifier * GetNoiseOut ( bool force = true );
136  GETProcess * GetOutputCorrection ( bool force = true );
137 
138  //@}
139 
140  //----------------------------------------------------------
141  /** @name Samples processing */
142  //@{
143  virtual int ProcessData ( bool in_noise = true );
144  virtual int ProcessOutFromTst ( bool in_noise = true, bool out_noise = true );
145  virtual int ProcessRecFromOut ( bool out_corr = true );
146 
147  virtual int ProcessOutputCorrection ( );
148  //@}
149 
150 
151  //----------------------------------------------------------
152  /** @name ROOT related functions */
153  //@{
154  public:
155 
156  /*! for use within ROOT.*/
157  ClassDef(GETObject,0);
158  //@}
159 };
160 
161 
162 //----------------------------------------------------------------------
163 // Inline functions
164 #include "icc/GETObject.icc"
165 
166 
167 //======================================================================
168 #endif
virtual void SetNoiseOut(GETSignalModifier *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:381
virtual void SetNoiseIn(GETSignalModifier *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:339
GETProcessLink response
Signal response function.
Definition: GETObject.hh:49
static const u_short signalOut
Output (experimental data) signal sample.
Definition: GETCommon.hh:104
GETResponse * GetResponse(bool force=true)
Definition: GETObject.cpp:598
Definition: GETResponse.hh:23
virtual int ProcessRecFromOut(bool out_corr=true)
Definition: GETObject.cpp:752
virtual int ProcessOutputCorrection()
Definition: GETObject.cpp:766
int GetId() const
Definition: GETObject.icc:10
Definition: GETFilter.hh:21
Definition: GETChannel.hh:41
GETProcessLink noise_out
Simulation output noise generator.
Definition: GETObject.hh:52
virtual const GETObject * GetChild(u_int i) const =0
virtual void SetOutputCorrection(GETProcess *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:423
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:53
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:705
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:46
GETProcessLink filter
Signal processing filter.
Definition: GETObject.hh:50
virtual ~GETObject()
Definition: GETObject.cpp:34
Definition: GETObject.hh:38
GETFilter * GetFilter(bool force=true)
Definition: GETObject.cpp:617
double GetTimeStep()
Definition: GETObject.cpp:179
virtual void AddOutputCorrection(GETProcess *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:531
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:493
virtual GETChannel * GetSignalChannel(u_int n)
Definition: GETObject.cpp:89
GETSignalModifier * GetNoiseOut(bool force=true)
Definition: GETObject.cpp:655
GETProcess * GetOutputCorrection(bool force=true)
Definition: GETObject.cpp:674
virtual string GetObjectId() const =0
GETProcessLink noise_in
Simulation input noise generator.
Definition: GETObject.hh:51
u_int GetSampleDim()
Definition: GETObject.cpp:175
Definition: GETSignalModifier.hh:22
GETSignalModifier * GetNoiseIn(bool force=true)
Definition: GETObject.cpp:636
virtual int ProcessOutFromTst(bool in_noise=true, bool out_noise=true)
Definition: GETObject.cpp:732
GETObject * parent
Parent AGet chip.
Definition: GETObject.hh:47
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:255
virtual void SetFilter(GETFilter *ptr, bool recur=true, bool fpn=false)
Definition: GETObject.cpp:297
virtual u_int GetTotalChannelCount() const
Definition: GETObject.cpp:72
virtual string GetFullId() const
Definition: GETObject.cpp:48
virtual void RemoveOutputCorrection()
Definition: GETObject.cpp:463