Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:23

0001 //
0002 //  VVIObjF.h (v2.0)
0003 //
0004 //  Vavilov density and distribution functions
0005 //
0006 //
0007 // Created by Morris Swartz on 1/14/10.
0008 // 2010 __TheJohnsHopkinsUniversity__.
0009 //
0010 // V1.1 - make dzero call both fcns with a switch
0011 // V1.2 - remove inappriate initializers and add methods to return non-zero/normalized region
0012 // V2.0 - restructuring and speed improvements by V. Innocente
0013 // V3.0 - further simplification and speedup by Tamas Vami
0014 //
0015 
0016 #ifndef VVIObjF_h
0017 #define VVIObjF_h 1
0018 
0019 // ***********************************************************************************************************************
0020 //! \class VVIObjF
0021 //!
0022 //!  Port of CERNLIB routines vvidis/vviden (G116) to calculate higher quality Vavilov density and distribution functions
0023 //!
0024 // ***********************************************************************************************************************
0025 class VVIObjF {
0026 public:
0027   VVIObjF(float kappa, float beta2, int mode);  //!< Constructor
0028   VVIObjF(float kappa);                         //!< Constructor with kappa only
0029 
0030   float fcn(float x) const;  //! density (mode=0) or distribution (mode=1) function
0031   void limits(float& xl,
0032               float& xu) const;  //! returns the limits on the non-zero (mode=0) or normalized region (mode=1)
0033 
0034 private:
0035   // Vavilov distribution parameters (inputs and common block /G116C1/)
0036   const int mode_;  //!< set to 0 to calculate the density function and to 1 to calculate the distribution function
0037   float t0_;
0038   float t1_;
0039   float t_;
0040   float omega_;
0041   float x0_;
0042   float a_[155];
0043   float b_[155];
0044 };
0045 
0046 #endif