File indexing completed on 2024-09-27 07:03:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
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
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
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