[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: standard units in software



I see now. You are right, only the header file should be defined,
and it defines the basic units. The only downside
is nearly twice more typing everywhere and more 
CPU cycles.

Thanks,
Eugene


On Mon, 24 Nov 2008, Matthew Shepherd wrote:

>
> Hi Eugene,
>
> Other routines can use the same global constants.  For example:
>
> suppose showerEnergy is some energy expressed internally in an object in 
> standard units.  Then:
>
> if( checkEnergy( showerEnergy ) ){
> ...
> }
>
> bool checkEnergy( double energy ){
>
> return( energy*k_MeV > 30*k_MeV );
> }
>
> One just needs to be sure:
>
> #include "units.h"
>
> exists wherever the global constants need to be used.
>
> In other words, the numbers are always expressed in standard units.  Having 
> the constants just helps alleviate keeping track of what the units are.  If 
> the standard units are MeV then k_MeV == 1, k_GeV == 0.001, etc..
>
> -Matt
>
>
> On Nov 24, 2008, at 9:53 AM, Eugene Chudakov wrote:
>
>> Hi Matt,
>> 
>> the scheme you suggest is convenient for local
>> calculations, but how do you transfer variables to another
>> routines? You still seem to need a convention or another call
>> parameter to define the unit...
>> 
>> Regards,
>> Eugene
>> 
>> 
>> On Mon, 24 Nov 2008, Matthew Shepherd wrote:
>> 
>>> 
>>> In CLEO we had a set of constants defined in a file called units.h
>>> 
>>> One would then write things like:
>>> 
>>> 0.25*k_GeV, 120*k_MeV, 15*k_m, ...
>>> 
>>> The constants were multiplicative factors to convert the numbers to 
>>> standard units.  This was very nice since one never had to think about 
>>> what the standard units were and the code looks much nicer:
>>> 
>>> if( energy > 30*k_MeV ){
>>> ...
>>> }
>>> 
>>> I would advocate a similar approach for us.
>>> 
>>> -Matt
>>> 
>>> 
>>> On Nov 24, 2008, at 9:13 AM, David Lawrence wrote:
>>> 
>>>> Hi Mark,
>>>> 
>>>> I distinctly remember discussing this at a software meeting a long time 
>>>> ago. However, it does not appear to have made it into the coding 
>>>> conventions and a quick scan of meeting minutes was none too fruitful.
>>>> 
>>>> I think we should add this to the coding conventions with the exact units 
>>>> you suggest using Tesla for the magnetic field. Would you mind adding the 
>>>> entry to the coding conventions wiki page? Then, we can discuss it and 
>>>> ratify it at the software meeting next week.
>>>> Regards,
>>>> -David
>>>> Mark M. Ito wrote:
>>>>> Folks,
>>>>> Do we have an official set of standard units written down somewhere? I 
>>>>> am talking about things like
>>>>> centimeters
>>>>> nanoseconds
>>>>> GeV
>>>>> Tesla? kilogauss?
>>>>> where one can assume a given quantity in the software is in standard 
>>>>> units unless stated otherwise explicitly.
>>>>> -- Mark
>>>> -- 
>>>> ------------------------------------------------------------------------
>>>> David Lawrence Ph.D.
>>>> Staff Scientist                 Office: (757)269-5567   [[[  [   [ [ 
>>>> Jefferson Lab                   Pager:  (757)584-5567   [  [ [ [ [ [ 
>>>> http://www.jlab.org/~davidl     davidl@jlab.org         [[[  [[ [[ [[[
>>>> ------------------------------------------------------------------------
>>> 
>> 
>