Integrate.h
1 //-*-C++-*-
2 /***************************************************************************
3  *
4  * Copyright (C) 2007 by Willem van Straten
5  * Licensed under the Academic Free License version 2.1
6  *
7  ***************************************************************************/
8 
9 // psrchive/More/General/Pulsar/Integrate.h
10 
11 #ifndef __Pulsar_Integrate_h
12 #define __Pulsar_Integrate_h
13 
14 #include "Pulsar/Transformation.h"
15 
16 namespace Pulsar {
17 
19 
35  template<class Container>
36  class Integrate : public Transformation<Container> {
37 
38  public:
39 
41  class RangePolicy;
42 
44  class Divided;
45 
47  virtual void set_range_policy (RangePolicy* rp) { range_policy = rp; }
48 
49  protected:
50 
53 
55  class EvenlySpaced;
56 
58  class NonlinearlySpaced;
59 
61  class EvenlyWeighted;
62 
63  };
64 
67  template<class Container>
68  class Integrate<Container>::RangePolicy : public Reference::Able {
69 
70  public:
71 
73  virtual void initialize (Integrate*, Container*) = 0;
74 
76  virtual unsigned get_nrange () = 0;
77 
79  virtual void get_range (unsigned irange,
80  unsigned& istart,
81  unsigned& istop) = 0;
82 
83  };
84 
85 }
86 
87 #endif
Data storage implementations.
Definition: Container.h:24
Definition: Integrate.h:73
Reference::To< RangePolicy > range_policy
The frequency channel range selection policy.
Definition: Integrate.h:62
Profile integration algorithms.
Definition: Integrate.h:41
Defines the PSRCHIVE library.
Definition: CalSource.h:17
virtual void set_range_policy(RangePolicy *rp)
Set the range division policy.
Definition: Integrate.h:57

Generated using doxygen 1.8.17