00001
00002
00003
00004
00005
00006
00007
00008 #ifndef STAR_StMCAsymMaker
00009 #define STAR_StMCAsymMaker
00010
00011 #ifndef StMaker_H
00012 #include "StMaker.h"
00013 extern "C" void polar_(int*,double*,double*,double*,int*);
00014 extern "C" Double_t ctq5pd_(int*,int*,double*,double*,int*);
00015 extern "C" void num_(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*);
00016 extern "C" void denom_(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*);
00017 extern "C" void polpar_(double*,double*,double*,double*,double*,double*,double*,double*);
00018 extern "C" void dssvini2009a_(int*);
00019 extern "C" void dssvfit2009a_(double*,double*,double*,double*,double*,double*,double*,double*);
00020 extern "C" double dinteg_(double (*)(double&),double&,double&,double&);
00021
00022
00023
00024
00025
00026 #endif
00027
00028 class StChain;
00029 class StMuDstMaker;
00030 class StMuEvent;
00031 class StMcEvent;
00032 class StEventInfo;
00033 class St_particle;
00034 class St_g2t_event;
00035 class St_g2t_pythia;
00036
00037 #include "StPythiaEvent.h"
00038
00039 class StMCAsymMaker : public StMaker
00040 {
00041 private:
00042 StPythiaEvent * mEvent;
00043 void fillPythiaEvent(StPythiaEvent * pythia);
00044
00045
00046 StMuDstMaker *muDstMaker;
00047 StMuEvent *muEvent;
00048 StMcEvent *mcEvent;
00049 St_particle *particleTabPtr;
00050 St_g2t_event *Pg2t_event;
00051 St_g2t_pythia *Pg2t_pythia;
00052
00053 int geantPID;
00054 int geantID;
00055 int evtid;
00056 int pid;
00057 Double_t parton1[11],parton2[11];
00058 int flavor1,flavor2,flavor3,flavor4;
00059 float s,t,u,hard_p,cos_th,x1,x2;
00060 int pol_id_flag, unpol_id_flag;
00061 double partonic_all,Q2;
00062
00063 double df1_NLO_GSA,df1_NLO_GSB,df1_NLO_GSC;
00064 double df2_NLO_GSA,df2_NLO_GSB,df2_NLO_GSC;
00065 double weight_NLO_GSA,weight_NLO_GSB,weight_NLO_GSC;
00066
00067 double df1_LO,df2_LO,f1_LO,f2_LO,weight_LO;
00068 double df1_NLO,df2_NLO,f1_NLO,f2_NLO,weight_NLO;
00069 double df1_NLO_g0,df2_NLO_g0,weight_NLO_g0;
00070 double df1_NLO_gmax,df2_NLO_gmax,weight_NLO_gmax;
00071 double df1_NLO_gmin,df2_NLO_gmin,weight_NLO_gmin;
00072 double df1_NLO_m015,df2_NLO_m015,weight_NLO_m015;
00073 double df1_NLO_m030,df2_NLO_m030,weight_NLO_m030;
00074 double df1_NLO_m045,df2_NLO_m045,weight_NLO_m045;
00075 double df1_NLO_m060,df2_NLO_m060,weight_NLO_m060;
00076 double df1_NLO_m075,df2_NLO_m075,weight_NLO_m075;
00077 double df1_NLO_m090,df2_NLO_m090,weight_NLO_m090;
00078 double df1_NLO_m105,df2_NLO_m105,weight_NLO_m105;
00079 double df1_NLO_p030,df2_NLO_p030,weight_NLO_p030;
00080 double df1_NLO_p045,df2_NLO_p045,weight_NLO_p045;
00081 double df1_NLO_p060,df2_NLO_p060,weight_NLO_p060;
00082 double df1_NLO_p070,df2_NLO_p070,weight_NLO_p070;
00083
00084 double df1_NLO_DSSV,df2_NLO_DSSV,weight_NLO_DSSV;
00085 double df1_NLO_DSSV2009a,df2_NLO_DSSV2009a,weight_NLO_DSSV2009a;
00086
00087 double df1_NLO_LSS1,df2_NLO_LSS1,weight_NLO_LSS1;
00088 double df1_NLO_LSS2,df2_NLO_LSS2,weight_NLO_LSS2;
00089 double df1_NLO_LSS3,df2_NLO_LSS3,weight_NLO_LSS3;
00090
00091 double df1_NLO_AAC1,df2_NLO_AAC1,weight_NLO_AAC1;
00092 double df1_NLO_AAC2,df2_NLO_AAC2,weight_NLO_AAC2;
00093 double df1_NLO_AAC3,df2_NLO_AAC3,weight_NLO_AAC3;
00094
00095 double df1_NLO_BB1,df2_NLO_BB1,weight_NLO_BB1;
00096 double df1_NLO_BB2,df2_NLO_BB2,weight_NLO_BB2;
00097
00098 double df1_NLO_DNS1,df2_NLO_DNS1,weight_NLO_DNS1;
00099 double df1_NLO_DNS2,df2_NLO_DNS2,weight_NLO_DNS2;
00100
00101 public:
00102
00103
00104 static Double_t get_polPDF_NLO_GSA(int flavor, double x1, double Q2);
00105 static Double_t get_polPDF_NLO_GSB(int flavor, double x1, double Q2);
00106 static Double_t get_polPDF_NLO_GSC(int flavor, double x1, double Q2);
00107
00108
00109 static Double_t get_polPDF_LO(int flavor, double x1, double Q2);
00110 static Double_t get_polPDF_NLO(int flavor, double x1, double Q2);
00111 static Double_t get_polPDF_NLO_g0(int flavor, double x1, double Q2);
00112 static Double_t get_polPDF_NLO_gmax(int flavor, double x1, double Q2);
00113 static Double_t get_polPDF_NLO_gmin(int flavor, double x1, double Q2);
00114 static Double_t get_polPDF_NLO_m015(int flavor, double x1, double Q2);
00115 static Double_t get_polPDF_NLO_m030(int flavor, double x1, double Q2);
00116 static Double_t get_polPDF_NLO_m045(int flavor, double x1, double Q2);
00117 static Double_t get_polPDF_NLO_m060(int flavor, double x1, double Q2);
00118 static Double_t get_polPDF_NLO_m075(int flavor, double x1, double Q2);
00119 static Double_t get_polPDF_NLO_m090(int flavor, double x1, double Q2);
00120 static Double_t get_polPDF_NLO_m105(int flavor, double x1, double Q2);
00121 static Double_t get_polPDF_NLO_p030(int flavor, double x1, double Q2);
00122 static Double_t get_polPDF_NLO_p045(int flavor, double x1, double Q2);
00123 static Double_t get_polPDF_NLO_p060(int flavor, double x1, double Q2);
00124 static Double_t get_polPDF_NLO_p070(int flavor, double x1, double Q2);
00125
00126
00127 static Double_t get_polPDF_NLO_DSSV(int flavor, double x1, double Q2);
00128
00129
00130 static Double_t get_polPDF_NLO_DSSV2009a(int flavor, double x1, double Q2);
00131
00132
00133 static Double_t get_polPDF_NLO_LSS1(int flavor, double x1, double Q2);
00134 static Double_t get_polPDF_NLO_LSS2(int flavor, double x1, double Q2);
00135 static Double_t get_polPDF_NLO_LSS3(int flavor, double x1, double Q2);
00136
00137
00138 static Double_t get_polPDF_NLO_AAC1(int flavor, double x1, double Q2);
00139 static Double_t get_polPDF_NLO_AAC2(int flavor, double x1, double Q2);
00140 static Double_t get_polPDF_NLO_AAC3(int flavor, double x1, double Q2);
00141
00142
00143 static Double_t get_polPDF_NLO_BB1(int flavor, double x1, double Q2);
00144 static Double_t get_polPDF_NLO_BB2(int flavor, double x1, double Q2);
00145
00146
00147 static Double_t get_polPDF_NLO_DNS1(int flavor, double x1, double Q2);
00148 static Double_t get_polPDF_NLO_DNS2(int flavor, double x1, double Q2);
00149
00150 static Double_t get_unpolPDF_LO(int flavor, double x1, double Q2);
00151 static Double_t get_unpolPDF_NLO(int flavor, double x1, double Q2);
00152
00153 static Double_t getPartonicALL(double s, double t, double u, int pid, int flavor1, int flavor2, int flavor3, int flavor4);
00154
00155 static Double_t getProtonA1(double x, double Q2);
00156 static double get_polPDF_firstMoment(int pdf, int flavor, double Q2, double xmin, double xmax, double epsilon = 1.0e-3);
00157
00158 StMCAsymMaker(const char *name="MCAsym");
00159 virtual ~StMCAsymMaker();
00160 virtual Int_t Init();
00161 virtual Int_t Make();
00162 void Clear(const Option_t* option = "");
00163 void Zero();
00164
00165 const StPythiaEvent* pythiaEvent() const { return mEvent; }
00166
00167 const St_particle* particleTable() const { return particleTabPtr; }
00168
00169 virtual const char *GetCVS() const {
00170 static const char cvs[]="Tag $Name: $ $Id: StMCAsymMaker.h,v 1.12 2011/09/19 18:58:39 pibero Exp $ built "__DATE__" "__TIME__ ;
00171 return cvs;
00172 }
00173
00174 ClassDef(StMCAsymMaker,0)
00175 };
00176
00177 #endif