Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-09-27 07:03:37

0001 ///////////////////////////////////////////////////////////////////////////
0002 //
0003 //    Copyright 2010
0004 //
0005 //    This file is part of starlight.
0006 //
0007 //    starlight is free software: you can redistribute it and/or modify
0008 //    it under the terms of the GNU General Public License as published by
0009 //    the Free Software Foundation, either version 3 of the License, or
0010 //    (at your option) any later version.
0011 //
0012 //    starlight is distributed in the hope that it will be useful,
0013 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
0014 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0015 //    GNU General Public License for more details.
0016 //
0017 //    You should have received a copy of the GNU General Public License
0018 //    along with starlight. If not, see <http://www.gnu.org/licenses/>.
0019 //
0020 ///////////////////////////////////////////////////////////////////////////
0021 //
0022 // File and Version Information:
0023 // $Rev:: 276                         $: revision of last commit
0024 // $Author:: jnystrand                $: author of last commit
0025 // $Date:: 2016-09-13 19:54:42 +0100 #$: date of last commit
0026 //
0027 // Description:
0028 //
0029 //
0030 //
0031 ///////////////////////////////////////////////////////////////////////////
0032 
0033 
0034 #ifndef GAMMAAVM_H
0035 #define GAMMAAVM_H
0036 
0037 
0038 #include <vector>
0039 
0040 #include "starlightconstants.h"
0041 #include "readinluminosity.h"
0042 #include "beambeamsystem.h"
0043 #include "randomgenerator.h"
0044 #include "eventchannel.h"
0045 #include "eXevent.h"
0046 #include "nBodyPhaseSpaceGen.h"
0047 //Now here for eSTARlight
0048 #include "photonNucleusCrossSection.h"
0049 
0050 class Gammaavectormeson : public eventChannel
0051 {
0052   
0053  public:
0054   Gammaavectormeson(const inputParameters& ipnut, beamBeamSystem& bbsystem);
0055   virtual ~Gammaavectormeson();
0056   
0057   eXEvent e_produceEvent();
0058 
0059   void pickwy(double &W, double &Y);
0060   void pickwEgamq2(double &W, double &cmsEgamma, double &targetEgamma, 
0061         double &Q2, double &gamma_pz, double & gamma_pt, 
0062         double &E_prime, double &cos_theta_e);
0063   void momenta(double W,double Y,double &E,double &px,double &py,double &pz,int &tcheck);
0064   void momenta(double W,double Egam,double Q2, double gamma_pz, double gamma_pt,
0065            double &rapidity, double &E,double &px,double &py,double &pz,
0066            double &t_px, double &t_py, double &t_pz, double &t_E,
0067            double &e_phi,int &tcheck);
0068   double pTgamma(double E); 
0069   void vmpt(double W,double Y,double &E,double &px,double &py, double &pz,int &tcheck);
0070   void twoBodyDecay(starlightConstants::particleTypeEnum &ipid,double W,double px0,double py0,double pz0,double &px1,double &py1,double&pz1,double &px2,double &py2,double &pz2,int &iFbadevent);
0071   void twoBodyDecay(starlightConstants::particleTypeEnum &ipid,double W,double px0,double py0,double pz0,double spin_element,
0072             double &px1,double &py1,double&pz1,double &px2,double &py2,double &pz2,int &iFbadevent);
0073   bool fourBodyDecay(starlightConstants::particleTypeEnum& ipid, const double E, const double W, const double* p, lorentzVector* decayMoms, int& iFbadevent);
0074   void pi0Decay(double& px_pi0, double& py_pi0, double& pz_pi0,double& e_g1, double& px_g1, double& py_g1, double& pz_g1,double& e_g2, double& px_g2, double& py_g2, double& pz_g2,int& iFbadevent);
0075   double getMass();
0076   double getWidth();
0077   virtual double getTheta(starlightConstants::particleTypeEnum ipid, double r_04_00);
0078   double getSpinMatrixElement(double W, double Q2, double epsilon);
0079   double getSpin();
0080   double _VMbslope;
0081   virtual double getDaughterMass(starlightConstants::particleTypeEnum &ipid);                
0082   double pseudoRapidity(double px, double py, double pz);
0083   
0084  private:
0085   std::string gammaTableParse(int ii, int jj);
0086   starlightConstants::particleTypeEnum _VMpidtest;
0087   int _VMnumw;
0088   int _VMnumy;
0089   int _VMnumega;
0090   int _VMnumQ2;
0091   int _VMinterferencemode;
0092   int _ProductionMode;
0093   double _targetMaxPhotonEnergy;
0094   double _targetMinPhotonEnergy;
0095   double _cmsMaxPhotonEnergy;
0096   double _cmsMinPhotonEnergy;
0097   double _beamLorentzGamma;
0098   double _targetBeamLorentzGamma;
0099   double _rap_CM;
0100   double _targetRadius;
0101   int _TargetBeam; 
0102   int N0;
0103   int N1;
0104   int N2; 
0105   double _VMgamma_em;
0106   double _VMNPT;
0107   double _VMWmax;
0108   double _VMWmin;
0109   double _VMYmax;
0110   double _VMYmin;
0111   double _mass;
0112   double _width;
0113   double _VMptmax;
0114   double _VMdpt;
0115   int    _bslopeDef;
0116   double _bslopeVal;
0117   double _pEnergy;
0118   int _beamNucleus;
0119   double _eEnergy;
0120   nBodyPhaseSpaceGen* _phaseSpaceGen;
0121   // eSTARlight
0122   photonNucleusCrossSection* _dummy_pncs;
0123   double _angular_max[100][200];
0124   bool _backwardsProduction;
0125 };
0126 
0127 class Gammaanarrowvm : public Gammaavectormeson
0128 {
0129  public:
0130   Gammaanarrowvm(const inputParameters& input, beamBeamSystem& bbsystem);
0131   virtual ~Gammaanarrowvm();
0132 };
0133 
0134 class Gammaawidevm : public Gammaavectormeson
0135 {  
0136  public:
0137   Gammaawidevm(const inputParameters& input, beamBeamSystem& bbsystem);
0138   virtual ~Gammaawidevm();
0139 };
0140 
0141 class Gammaaincoherentvm : public Gammaavectormeson
0142 {  
0143  public:
0144   Gammaaincoherentvm(const inputParameters& input, beamBeamSystem& bbsystem);
0145   virtual ~Gammaaincoherentvm();
0146 };
0147 class e_Gammaanarrowvm : public Gammaavectormeson
0148 {
0149  public:
0150   e_Gammaanarrowvm(const inputParameters& input, beamBeamSystem& bbsystem);
0151   virtual ~e_Gammaanarrowvm();
0152 };
0153 
0154 class e_Gammaawidevm : public Gammaavectormeson
0155 {  
0156  public:
0157   e_Gammaawidevm(const inputParameters& input, beamBeamSystem& bbsystem);
0158   virtual ~e_Gammaawidevm();
0159 };
0160 
0161 #endif  // GAMMAAVM_H