Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-13 10:29:16

0001 #ifndef PHASIC_Main_Phase_Space_Integrator_H
0002 #define PHASIC_Main_Phase_Space_Integrator_H
0003 
0004 #include <stddef.h>
0005 
0006 namespace PHASIC {class Phase_Space_Handler;}
0007 
0008 namespace PHASIC {
0009 
0010   class Phase_Space_Integrator {
0011   private:
0012     static long unsigned int m_nrawmax;
0013     long unsigned int m_nopt, m_iter, m_itmin, m_nexpected;
0014 
0015     long unsigned int m_n, m_nstep, m_ncstep;
0016     long unsigned int m_mn, m_mnstep, m_mncstep;
0017     long unsigned int m_ncontrib, m_maxopt, m_stopopt, m_nlo;
0018 
0019     bool m_fin_opt;
0020 
0021     double m_starttime, m_lotime, m_addtime, m_lrtime;
0022     double m_maxerror, m_maxabserror, m_npower;
0023 
0024     size_t m_lastrss;
0025 
0026     double m_stepstart, m_timestep, m_timeslope;
0027 
0028     Phase_Space_Handler *p_psh;
0029 
0030     void RegisterDefaults() const;
0031 
0032   public:
0033 
0034     Phase_Space_Integrator(Phase_Space_Handler*);
0035 
0036     ~Phase_Space_Integrator();
0037 
0038     double Calculate(double,double,bool);
0039     double CalculateDecay(double);
0040 
0041     void MPISync();
0042 
0043     bool AddPoint(const double value);
0044 
0045   };
0046   /*!
0047     To perform the phase space integral. Its main task is to
0048     call the integration channel repeatedly and to sample the process
0049     over the resulting points. In doing so, the Phase_Space_Integrator
0050     optimizes the Multi_Channel (if this type of integration is
0051     employed). It should be noted that the Phase_Space_Integrator
0052     calls the Channels via the Phase_Space_Handler, since it
0053     contains the links to both channels and processes.
0054     In that respect, the Integrator is a mere tool, initialized and
0055     steered by the handler.
0056   */
0057   /*! 
0058     Global results of the integration:
0059     Value of the results, its actual error and the maximal value 
0060     given by the combination of matrixelement and phase space point
0061     so far.
0062   */
0063   /*!
0064     Parameters for steering the integration
0065   */
0066   /*!
0067     Constructor initializes the steering parameters and the
0068     channel(s) for the integration.
0069   */
0070   /*!
0071     Calculate the total cross section of a 2->N process up to
0072     an error given externally by the Phase_Space_Handler.
0073   */
0074 }
0075 #endif