Difference between revisions of "Coding Conventions"
From GlueXWiki
(add rule on header file multiple inclusion prevention) |
(add standard units section) |
||
Line 66: | Line 66: | ||
</li> | </li> | ||
</ol> | </ol> | ||
+ | |||
+ | =Standard Units= | ||
+ | |||
+ | Unless explicity indicated otherwise, software will use the following standard units: | ||
+ | |||
+ | <table> | ||
+ | <tr><th>Quantity</th><th>Unit</th></tr> | ||
+ | <tr><td>length</td><td>centimeters</td></tr> | ||
+ | <tr><td>time</td><td>nanoseconds</td></tr> | ||
+ | <tr><td>energy</td><td>GeV</td></tr> | ||
+ | <tr><td>momentum</td><td>GeV/c</td></tr> | ||
+ | <tr><td>mass</td><td>GeV/c<sup>2</sup></td></tr> | ||
+ | <tr><td>magnetic field</td><td>Tesla</td></tr> | ||
+ | <tr><td>electric potential</td><td>Volts</td></tr> | ||
+ | <tr><td>angles</td><td>radians</td></tr> | ||
+ | <tr><td>currency</td><td>Dollars (U. S.)</td></tr> | ||
+ | <tr><td>happiness</td><td>Francs (Swiss)</td></tr> | ||
+ | <tr><td>true happiness</td><td>:-)'s</td></tr> | ||
+ | </table> |
Revision as of 14:21, 3 December 2008
Contents
Hall-D Coding and Use Conventions
C++
- Classes specific to Hall-D/GlueX reconstruction will have names starting with the letter "D".
- Classes specific to a subsystem should include the subsystem name in the first part of the class name. For example, all classes in the CDC package should have names starting with "DCDC"
- The suffix for C++ source files should be .cc
- The suffix for C source files should be .c
- The suffix for both C++ and C header files should be .h
- The suffix .C will be used for ROOT macros and will therefore be ignored by the make system.
- The suffix for FOTRAN files should be .F
- The suffix .f will be used for PAW macros and will therefore be ignored by the make system.
- C++ source files will be named using the classname they provide.
- Multiple classes should be defined in a single header only under special circumstances.
- Classes should have a brief description of their purpose in a doxygen recognizable format(i.e. with three forwardslashes ///) inside the class definition in the header files.
- #include preprocessor directives should use double quotes for headers specific to Hall-D/GlueX code and angle brackets for all others. e.g.
* #include <JANA/JEventLoop.h> * #include "DCDCHit.h"
- Factory classes derived from JFactory will have names that start with the data class (subclass of DObject) which they provide with "_factory" appended. For example:
DCDCHit_factory
- Tagged factory classes (factories with a tag other than an empty string) will have an underscore and the tag appended to the class name. For example, a factory with the tag "ALT1" :
DCDCHit_factory_ALT1
- Configuration Parameters in JANA should start with a common prefix and a colon to indicate the package where they are being implemented. For example, all configuration parameters implemented in the TRACKING package start with the prefix "TRK:" like this:
TRK:MAX_HIT_R_FDC
Header Files (files included by the pre-processor)
-
Content of all header files should be enclosed in a pre-processor #ifndef statement to prevent multiple inclusion. For example, a header file called "DMCTrackHit.h" should look like:
#ifndef _DMCTRACKHIT_H_ /* check for definition (and thus inclusion) */ #define _DMCTRACKHIT_H_ /* define it if not previously defined */ #include <JANA/JObject.h> /* start of actual header file content */ using namespace jana; #include "GlueX.h" class DMCTrackHit:public JObject{ public: JOBJECT_PUBLIC(DMCTrackHit); . . . #endif // _DMCTRACKHIT_H_ /* close definition-check if-block */
Standard Units
Unless explicity indicated otherwise, software will use the following standard units:
Quantity | Unit |
---|---|
length | centimeters |
time | nanoseconds |
energy | GeV |
momentum | GeV/c |
mass | GeV/c2 |
magnetic field | Tesla |
electric potential | Volts |
angles | radians |
currency | Dollars (U. S.) |
happiness | Francs (Swiss) |
true happiness | :-)'s |