NSCL DDAS  1.0
Support for XIA DDAS at the NSCL
 All Classes Namespaces Files Functions Variables Macros Pages
MySpecTclApp.h
1 /*
2  GNU GENERAL PUBLIC LICENSE
3  Version 2, June 1991
4 
5  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
6  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
7  Everyone is permitted to copy and distribute verbatim copies
8  of this license document, but changing it is not allowed.
9 
10  Preamble
11 
12  The licenses for most software are designed to take away your
13  freedom to share and change it. By contrast, the GNU General Public
14  License is intended to guarantee your freedom to share and change free
15  software--to make sure the software is free for all its users. This
16  General Public License applies to most of the Free Software
17  Foundation's software and to any other program whose authors commit to
18  using it. (Some other Free Software Foundation software is covered by
19  the GNU Library General Public License instead.) You can apply it to
20  your programs, too.
21 
22  When we speak of free software, we are referring to freedom, not
23  price. Our General Public Licenses are designed to make sure that you
24  have the freedom to distribute copies of free software (and charge for
25  this service if you wish), that you receive source code or can get it
26  if you want it, that you can change the software or use pieces of it
27  in new free programs; and that you know you can do these things.
28 
29  To protect your rights, we need to make restrictions that forbid
30  anyone to deny you these rights or to ask you to surrender the rights.
31  These restrictions translate to certain responsibilities for you if you
32  distribute copies of the software, or if you modify it.
33 
34  For example, if you distribute copies of such a program, whether
35  gratis or for a fee, you must give the recipients all the rights that
36  you have. You must make sure that they, too, receive or can get the
37  source code. And you must show them these terms so they know their
38  rights.
39 
40  We protect your rights with two steps: (1) copyright the software, and
41  (2) offer you this license which gives you legal permission to copy,
42  distribute and/or modify the software.
43 
44  Also, for each author's protection and ours, we want to make certain
45  that everyone understands that there is no warranty for this free
46  software. If the software is modified by someone else and passed on, we
47  want its recipients to know that what they have is not the original, so
48  that any problems introduced by others will not reflect on the original
49  authors' reputations.
50 
51  Finally, any free program is threatened constantly by software
52  patents. We wish to avoid the danger that redistributors of a free
53  program will individually obtain patent licenses, in effect making the
54  program proprietary. To prevent this, we have made it clear that any
55  patent must be licensed for everyone's free use or not licensed at all.
56 
57  The precise terms and conditions for copying, distribution and
58  modification follow.
59 
60  GNU GENERAL PUBLIC LICENSE
61  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
62 
63  0. This License applies to any program or other work which contains
64  a notice placed by the copyright holder saying it may be distributed
65  under the terms of this General Public License. The "Program", below,
66  refers to any such program or work, and a "work based on the Program"
67  means either the Program or any derivative work under copyright law:
68  that is to say, a work containing the Program or a portion of it,
69  either verbatim or with modifications and/or translated into another
70  language. (Hereinafter, translation is included without limitation in
71  the term "modification".) Each licensee is addressed as "you".
72 
73  Activities other than copying, distribution and modification are not
74  covered by this License; they are outside its scope. The act of
75  running the Program is not restricted, and the output from the Program
76  is covered only if its contents constitute a work based on the
77  Program (independent of having been made by running the Program).
78  Whether that is true depends on what the Program does.
79 
80  1. You may copy and distribute verbatim copies of the Program's
81  source code as you receive it, in any medium, provided that you
82  conspicuously and appropriately publish on each copy an appropriate
83  copyright notice and disclaimer of warranty; keep intact all the
84  notices that refer to this License and to the absence of any warranty;
85  and give any other recipients of the Program a copy of this License
86  along with the Program.
87 
88  You may charge a fee for the physical act of transferring a copy, and
89  you may at your option offer warranty protection in exchange for a fee.
90 
91  2. You may modify your copy or copies of the Program or any portion
92  of it, thus forming a work based on the Program, and copy and
93  distribute such modifications or work under the terms of Section 1
94  above, provided that you also meet all of these conditions:
95 
96  a) You must cause the modified files to carry prominent notices
97  stating that you changed the files and the date of any change.
98 
99  b) You must cause any work that you distribute or publish, that in
100  whole or in part contains or is derived from the Program or any
101  part thereof, to be licensed as a whole at no charge to all third
102  parties under the terms of this License.
103 
104  c) If the modified program normally reads commands interactively
105  when run, you must cause it, when started running for such
106  interactive use in the most ordinary way, to print or display an
107  announcement including an appropriate copyright notice and a
108  notice that there is no warranty (or else, saying that you provide
109  a warranty) and that users may redistribute the program under
110  these conditions, and telling the user how to view a copy of this
111  License. (Exception: if the Program itself is interactive but
112  does not normally print such an announcement, your work based on
113  the Program is not required to print an announcement.)
114 
115  These requirements apply to the modified work as a whole. If
116  identifiable sections of that work are not derived from the Program,
117  and can be reasonably considered independent and separate works in
118  themselves, then this License, and its terms, do not apply to those
119  sections when you distribute them as separate works. But when you
120  distribute the same sections as part of a whole which is a work based
121  on the Program, the distribution of the whole must be on the terms of
122  this License, whose permissions for other licensees extend to the
123  entire whole, and thus to each and every part regardless of who wrote it.
124 
125  Thus, it is not the intent of this section to claim rights or contest
126  your rights to work written entirely by you; rather, the intent is to
127  exercise the right to control the distribution of derivative or
128  collective works based on the Program.
129 
130  In addition, mere aggregation of another work not based on the Program
131  with the Program (or with a work based on the Program) on a volume of
132  a storage or distribution medium does not bring the other work under
133  the scope of this License.
134 
135  3. You may copy and distribute the Program (or a work based on it,
136  under Section 2) in object code or executable form under the terms of
137  Sections 1 and 2 above provided that you also do one of the following:
138 
139  a) Accompany it with the complete corresponding machine-readable
140  source code, which must be distributed under the terms of Sections
141  1 and 2 above on a medium customarily used for software interchange; or,
142 
143  b) Accompany it with a written offer, valid for at least three
144  years, to give any third party, for a charge no more than your
145  cost of physically performing source distribution, a complete
146  machine-readable copy of the corresponding source code, to be
147  distributed under the terms of Sections 1 and 2 above on a medium
148  customarily used for software interchange; or,
149 
150  c) Accompany it with the information you received as to the offer
151  to distribute corresponding source code. (This alternative is
152  allowed only for noncommercial distribution and only if you
153  received the program in object code or executable form with such
154  an offer, in accord with Subsection b above.)
155 
156  The source code for a work means the preferred form of the work for
157  making modifications to it. For an executable work, complete source
158  code means all the source code for all modules it contains, plus any
159  associated interface definition files, plus the scripts used to
160  control compilation and installation of the executable. However, as a
161  special exception, the source code distributed need not include
162  anything that is normally distributed (in either source or binary
163  form) with the major components (compiler, kernel, and so on) of the
164  operating system on which the executable runs, unless that component
165  itself accompanies the executable.
166 
167  If distribution of executable or object code is made by offering
168  access to copy from a designated place, then offering equivalent
169  access to copy the source code from the same place counts as
170  distribution of the source code, even though third parties are not
171  compelled to copy the source along with the object code.
172 
173  4. You may not copy, modify, sublicense, or distribute the Program
174  except as expressly provided under this License. Any attempt
175  otherwise to copy, modify, sublicense or distribute the Program is
176  void, and will automatically terminate your rights under this License.
177  However, parties who have received copies, or rights, from you under
178  this License will not have their licenses terminated so long as such
179  parties remain in full compliance.
180 
181  5. You are not required to accept this License, since you have not
182  signed it. However, nothing else grants you permission to modify or
183  distribute the Program or its derivative works. These actions are
184  prohibited by law if you do not accept this License. Therefore, by
185  modifying or distributing the Program (or any work based on the
186  Program), you indicate your acceptance of this License to do so, and
187  all its terms and conditions for copying, distributing or modifying
188  the Program or works based on it.
189 
190  6. Each time you redistribute the Program (or any work based on the
191  Program), the recipient automatically receives a license from the
192  original licensor to copy, distribute or modify the Program subject to
193  these terms and conditions. You may not impose any further
194  restrictions on the recipients' exercise of the rights granted herein.
195  You are not responsible for enforcing compliance by third parties to
196  this License.
197 
198  7. If, as a consequence of a court judgment or allegation of patent
199  infringement or for any other reason (not limited to patent issues),
200  conditions are imposed on you (whether by court order, agreement or
201  otherwise) that contradict the conditions of this License, they do not
202  excuse you from the conditions of this License. If you cannot
203  distribute so as to satisfy simultaneously your obligations under this
204  License and any other pertinent obligations, then as a consequence you
205  may not distribute the Program at all. For example, if a patent
206  license would not permit royalty-free redistribution of the Program by
207  all those who receive copies directly or indirectly through you, then
208  the only way you could satisfy both it and this License would be to
209  refrain entirely from distribution of the Program.
210 
211  If any portion of this section is held invalid or unenforceable under
212  any particular circumstance, the balance of the section is intended to
213  apply and the section as a whole is intended to apply in other
214  circumstances.
215 
216  It is not the purpose of this section to induce you to infringe any
217  patents or other property right claims or to contest validity of any
218  such claims; this section has the sole purpose of protecting the
219  integrity of the free software distribution system, which is
220  implemented by public license practices. Many people have made
221  generous contributions to the wide range of software distributed
222  through that system in reliance on consistent application of that
223  system; it is up to the author/donor to decide if he or she is willing
224  to distribute software through any other system and a licensee cannot
225  impose that choice.
226 
227  This section is intended to make thoroughly clear what is believed to
228  be a consequence of the rest of this License.
229 
230  8. If the distribution and/or use of the Program is restricted in
231  certain countries either by patents or by copyrighted interfaces, the
232  original copyright holder who places the Program under this License
233  may add an explicit geographical distribution limitation excluding
234  those countries, so that distribution is permitted only in or among
235  countries not thus excluded. In such case, this License incorporates
236  the limitation as if written in the body of this License.
237 
238  9. The Free Software Foundation may publish revised and/or new versions of the
239  General Public License from time to time. Such new versions will be similar
240  in spirit to the present version, but may differ in detail to address new
241  problems or concerns.
242 
243  Each version is given a distinguishing version number. If the Program
244  specifies a version number of this License which applies to it and "any
245  later version", you have the option of following the terms and conditions
246  either of that version or of any later version published by the Free Software
247  Foundation. If the Program does not specify a version number of this License,
248  you may choose any version ever published by the Free Software Foundation.
249 
250  10. If you wish to incorporate parts of the Program into other free
251  programs whose distribution conditions are different, write to the author to
252  ask for permission. For software which is copyrighted by the Free Software
253  Foundation, write to the Free Software Foundation; we sometimes make
254  exceptions for this. Our decision will be guided by the two goals of
255  preserving the free status of all derivatives of our free software and of
256  promoting the sharing and reuse of software generally.
257 
258  NO WARRANTY
259 
260  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
261  THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262  OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE
263  THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
264  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
265  FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
266  PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
267  YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
268 
269  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
270  WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
271  REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
272  INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
273  OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
274  LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
275  THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
276  EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
277  DAMAGES.
278 
279  END OF TERMS AND CONDITIONS '
280 */
281 
282 // Class: CMySpecTclApp //ANSI C++
283 // File: MySpecTclApp.h
284 /*
285  The user creates this subclass and fills in the appropriate overrides for any
286  additions they want to make. The class is a self contained example which
287  registers two event processors. One which unpacks a simple fixed length
288  event and another which produces a pseudo parameter from the sum of
289  the first two parameters in an event.
290 */
291 // Author:
292 // Ron Fox
293 // NSCL
294 // Michigan State University
295 // East Lansing, MI 48824-1321
296 // mailto:fox@nscl.msu.edu
297 //
298 // Copyright
299 
300 #ifndef __MYSPECTCLAPP_H //Required for current class
301 #define __MYSPECTCLAPP_H
302 
303 // Include files:
304 // Required for base classes
305 #ifndef __TCLGRAMMERAPP_H //CTclGrammerApp
306 #include "TclGrammerApp.h"
307 #endif
308 
309 class CMySpecTclApp : public CTclGrammerApp {
310  public:
311  // Constructors:
312  CMySpecTclApp(); //Default constructor alternative to compiler provided default constructor.
313  ~CMySpecTclApp(); //Destructor - Delete any pointer data members that used new in constructors
314  //Destructor should be virtual if and only if class contains at least one virtual function
315  //Objects destroyed in the reverse order of the construction order
316  private:
317  CMySpecTclApp(const CMySpecTclApp& aCMySpecTclApp ); // Copy Constructor.
318 
319  // Operators:
320  CMySpecTclApp& operator=(const CMySpecTclApp& aCMySpecTclApp);
321  int operator==(const CMySpecTclApp& aCMySpecTclApp) const;
322 
323  // Class operations:
324  public:
325  virtual void BindTCLVariables(CTCLInterpreter& rInterp);
326  virtual void SourceLimitScripts(CTCLInterpreter& rInterpreter);
327  virtual void SetLimits();
328  virtual void CreateHistogrammer();
329  virtual void SelectDisplayer(UInt_t nDisplaySize,
330  CHistogrammer& rHistogrammer);
331  virtual void SetupTestDataSource();
332  virtual void CreateAnalyzer(CEventSink* pSink);
333  virtual void SelectDecoder(CAnalyzer& rAnalyzer);
334  virtual void CreateAnalysisPipeline(CAnalyzer& rAnalyzer);
335  virtual void AddCommands(CTCLInterpreter& rInterp);
336  virtual void SetupRunControl();
337  virtual void SourceFunctionalScripts(CTCLInterpreter& rInterp);
338  virtual int operator()();
339 };
340 
341 #endif
Definition: MySpecTclApp.h:309