IPlaneImpactResponse.h
Go to the documentation of this file.
1 /** A plane impact response provides information about a collection of
2  * impact responses for a plane. An impact response is a complex
3  * Fourier spectrum of some response (eg, field and possibly also
4  * electronics) to a point charge on a drift path that starts at the
5  * given impact position. Impact positions provide a regular
6  * subdivision along the pitch direction for a wire plane. Typically
7  * ten impact positions per wire region are used and with one impact
8  * position exactly aligned to a wire position.
9  */
10 
11 #ifndef WIRECELL_IFACE_IPLANEIMPACTRESPONSE
12 #define WIRECELL_IFACE_IPLANEIMPACTRESPONSE
13 
16 #include "WireCellUtil/Waveform.h"
17 
18 namespace WireCell {
19 
20  class IImpactResponse : public IComponent<IImpactResponse> {
21  public:
22 
23  virtual ~IImpactResponse() ;
24 
25  /// Frequency-domain spectrum of response
26  virtual const Waveform::compseq_t& spectrum() = 0;
27  /// Time-domain waveform of the response
28  virtual const Waveform::realseq_t& waveform() const = 0;
29  // minimum padding for the response
30  virtual int waveform_pad() const = 0;
31 
32  // Frequency-domain spectrum of the auxillary long-range response
33  virtual const Waveform::compseq_t& long_aux_spectrum() = 0;
34  // Time-domain waveform of the auxillary long-range response
35  virtual const Waveform::realseq_t& long_aux_waveform() const = 0;
36  // minimum padding for the auxillary long-range response
37  virtual int long_aux_waveform_pad() const = 0;
38 
39 
40  /// Corresponding impact number
41  virtual int impact() const = 0;
42  };
43 
44  // A pair of IRs
45  typedef std::pair<IImpactResponse::pointer,IImpactResponse::pointer>
47 
48  class IPlaneImpactResponse : public IComponent<IPlaneImpactResponse> {
49  public:
50 
51  virtual ~IPlaneImpactResponse();
52 
53  /// Return the response at the impact position closest to
54  /// the given relative pitch location (measured relative
55  /// to the wire of interest).
56  virtual IImpactResponse::pointer closest(double relpitch) const = 0;
57 
58 
59  /// Return the two responses which are associated with the
60  /// impact positions on either side of the given pitch
61  /// location (measured relative to the wire of interest).
62  virtual TwoImpactResponses bounded(double relpitch) const = 0;
63 
64 
65  /// The extent in pitch covered by the impact positions. This
66  /// extent is relative to and centered on the "wire of
67  /// interest" for which the PIR is associated.
68  virtual double pitch_range() const = 0;
69 
70  /// The number of wires that span the pitch range.
71  virtual int nwires() const = 0;
72 
73  // /// Return the distance between wires along the wire pitch direction.
74  virtual double pitch() const = 0;
75 
76  // /// Return the distance between impact positions along the
77  // /// wire pitch direction.
78  virtual double impact() const = 0;
79 
80  // /// Return the number of bins in the impact response spectra.
81  virtual size_t nbins() const = 0;
82 
83  };
84 }
85 
86 #endif
const int nwires
virtual int waveform_pad() const =0
Sequence< real_t > realseq_t
Definition: Waveform.h:31
virtual const Waveform::realseq_t & waveform() const =0
Time-domain waveform of the response.
virtual const Waveform::compseq_t & long_aux_spectrum()=0
virtual const Waveform::compseq_t & spectrum()=0
Frequency-domain spectrum of response.
virtual const Waveform::realseq_t & long_aux_waveform() const =0
virtual int impact() const =0
Corresponding impact number.
std::pair< IImpactResponse::pointer, IImpactResponse::pointer > TwoImpactResponses
std::shared_ptr< Interface > pointer
Definition: Interface.h:16
Definition: Main.h:22
virtual int long_aux_waveform_pad() const =0
Sequence< complex_t > compseq_t
A complex-valued sequence, eg for discrete spectrum powers.
Definition: Waveform.h:34