StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StMCAsymMaker.h
1 //class StMCAsymMaker
2 //author R.Fatemi
3 //date 2007/Feb/04
4 //This class allows the calculation of "asymmetries" in MC data by using partonic kinematic information from the pythia record
5 //along with polarized and unpolarized pdfs and LO partonic asymmetries. Documentation on the Method of Asymmetry Weights (MAW)
6 //can be found in the preprint on SPHINX (hep-0005320)
7 
8 #ifndef STAR_StMCAsymMaker
9 #define STAR_StMCAsymMaker
10 
11 #ifndef StMaker_H
12 #include "StMaker.h"
13 extern "C" void polar_(int*,double*,double*,double*,int*);
14 extern "C" Double_t ctq5pd_(int*,int*,double*,double*,int*);
15 extern "C" void num_(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*);
16 extern "C" void denom_(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*);
17 extern "C" void polpar_(double*,double*,double*,double*,double*,double*,double*,double*);
18 extern "C" void dssvini2009a_(int*);
19 extern "C" void dssvfit2009a_(double*,double*,double*,double*,double*,double*,double*,double*);
20 extern "C" void lss2010_(int*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*);
21 extern "C" { extern struct { int iini; } intini_; }
22 extern "C" void polpdf_(int*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*);
23 extern "C" double dinteg_(double (*)(double&),double&,double&,double&);
24 //extern "C" void parpol_(int*, double*, double*, double* ,double* , double*, double*, double*, double*, double*, double*);
25 //extern "C" void parpol2_(int*, double*, double*, double* ,double* , double*, double*, double*, double*, double*, double*);
26 //extern "C" void unpolar_(int*, double*, double*, double*, int*);
27 //extern "C" void grv98pa_(int*, double*, double*, double*, double*, double*, double*, double*, double*);
28 //extern "C" void grv98f2_(int*, double*, double*, double*, double*, double*, double*);
29 #endif
30 
31 class StChain;
32 class StMuDstMaker;
33 class StMuEvent;
34 class StMcEvent;
35 class StEventInfo;
36 class St_particle;
37 class St_g2t_event;
38 class St_g2t_pythia;
39 
40 #include "StPythiaEvent.h"
41 
42 class StMCAsymMaker : public StMaker
43 {
44 private:
45  StPythiaEvent * mEvent;
46  void fillPythiaEvent(StPythiaEvent * pythia);
47 
48  //pointers to makers
49  StMuDstMaker *muDstMaker;
50  StMuEvent *muEvent;
51  StMcEvent *mcEvent;
52  St_particle *particleTabPtr;
53  St_g2t_event *Pg2t_event;
54  St_g2t_pythia *Pg2t_pythia;
55 
56  int geantPID; //sub process id from GEANT table
57  int geantID; //event number from GEANT table
58  int evtid; //event number from MuDst
59  int pid; //subprocess id
60  Double_t parton1[11],parton2[11]; //pythia record entry of scattered partons
61  int flavor1,flavor2,flavor3,flavor4; //flavor of scattered partons before/after hard interaction
62  float s,t,u,hard_p,cos_th,x1,x2; //partonic kinematics
63  int pol_id_flag, unpol_id_flag; //flags for *.F
64  double partonic_all,Q2; //partonic a_LL from LO calculations and hard scale
65 
66  double df1_NLO_GSA,df1_NLO_GSB,df1_NLO_GSC; //NLO Gehrmann & Stirling Scenario A/B/C PDF
67  double df2_NLO_GSA,df2_NLO_GSB,df2_NLO_GSC; //NLO Gehrmann & Stirling Scenario A/B/C PDF
68  double weight_NLO_GSA,weight_NLO_GSB,weight_NLO_GSC;//NLO Gehrmann & Stirling Scenario A/B/C weight
69 
70  double df1_LO,df2_LO,f1_LO,f2_LO,weight_LO; //Leading Order polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
71  double df1_NLO,df2_NLO,f1_NLO,f2_NLO,weight_NLO; //NLO STD polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
72  double df1_NLO_g0,df2_NLO_g0,weight_NLO_g0; //NLO G0 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
73  double df1_NLO_gmax,df2_NLO_gmax,weight_NLO_gmax; //NLO GMAX polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
74  double df1_NLO_gmin,df2_NLO_gmin,weight_NLO_gmin; //NLO GMIN polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
75  double df1_NLO_m015,df2_NLO_m015,weight_NLO_m015; //NLO M015 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
76  double df1_NLO_m030,df2_NLO_m030,weight_NLO_m030; //NLO M030 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
77  double df1_NLO_m045,df2_NLO_m045,weight_NLO_m045; //NLO M045 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
78  double df1_NLO_m060,df2_NLO_m060,weight_NLO_m060; //NLO M060 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
79  double df1_NLO_m075,df2_NLO_m075,weight_NLO_m075; //NLO M075 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
80  double df1_NLO_m090,df2_NLO_m090,weight_NLO_m090; //NLO M090 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
81  double df1_NLO_m105,df2_NLO_m105,weight_NLO_m105; //NLO M105 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
82  double df1_NLO_p030,df2_NLO_p030,weight_NLO_p030; //NLO P030 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
83  double df1_NLO_p045,df2_NLO_p045,weight_NLO_p045; //NLO P045 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
84  double df1_NLO_p060,df2_NLO_p060,weight_NLO_p060; //NLO P060 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
85  double df1_NLO_p070,df2_NLO_p070,weight_NLO_p070; //NLO P070 polarized pdf, unpolarized pdf and weight = df1*df2*partonic_all/f1/f2
86 
87  double df1_NLO_DSSV,df2_NLO_DSSV,weight_NLO_DSSV; //NLO de Florian, Sassot, Stratman, & Vogelsang PDF
88  double df1_NLO_DSSV2009a,df2_NLO_DSSV2009a,weight_NLO_DSSV2009a; //NLO de Florian, Sassot, Stratman, & Vogelsang PDF with RHIC Run 9 data
89 
90  double df1_NLO_LSS1,df2_NLO_LSS1,weight_NLO_LSS1; //NLO Leader, Sidorov, & Stamenov PDF Scenario 1/2/3
91  double df1_NLO_LSS2,df2_NLO_LSS2,weight_NLO_LSS2; //NLO Leader, Sidorov, & Stamenov PDF Scenario 1/2/3
92  double df1_NLO_LSS3,df2_NLO_LSS3,weight_NLO_LSS3; //NLO Leader, Sidorov, & Stamenov PDF Scenario 1/2/3
93  double df1_NLO_LSS2010_delGpos,df2_NLO_LSS2010_delGpos,weight_NLO_LSS2010_delGpos;
94  double df1_NLO_LSS2010_chsign_delG,df2_NLO_LSS2010_chsign_delG,weight_NLO_LSS2010_chsign_delG;
95 
96  double df1_NLO_AAC1,df2_NLO_AAC1,weight_NLO_AAC1; //NLO Asymmetry Analysis Collaboration PDF Scenario 1/2/3
97  double df1_NLO_AAC2,df2_NLO_AAC2,weight_NLO_AAC2; //NLO Asymmetry Analysis Collaboration PDF Scenario 1/2/3
98  double df1_NLO_AAC3,df2_NLO_AAC3,weight_NLO_AAC3; //NLO Asymmetry Analysis Collaboration PDF Scenario 1/2/3
99 
100  double df1_NLO_BB1,df2_NLO_BB1,weight_NLO_BB1; //NLO Blumlein & Bottcher PDF Scenario 1/2
101  double df1_NLO_BB2,df2_NLO_BB2,weight_NLO_BB2; //NLO Blumlein & Bottcher PDF Scenario 1/2
102  double df1_NLO_BB2010,df2_NLO_BB2010,weight_NLO_BB2010;
103 
104  double df1_NLO_DNS1,df2_NLO_DNS1,weight_NLO_DNS1; //NLO de Florian, Navarro, & Sassot PDF Scenario 1/2
105  double df1_NLO_DNS2,df2_NLO_DNS2,weight_NLO_DNS2; //NLO de Florian, Navarro, & Sassot PDF Scenario 1/2
106 
107 public:
108 
109  //Gehrmann&Stirling pDF
110  static Double_t get_polPDF_NLO_GSA(int flavor, double x1, double Q2);
111  static Double_t get_polPDF_NLO_GSB(int flavor, double x1, double Q2);
112  static Double_t get_polPDF_NLO_GSC(int flavor, double x1, double Q2);
113 
114  //GRSV PDF
115  static Double_t get_polPDF_LO(int flavor, double x1, double Q2);
116  static Double_t get_polPDF_NLO(int flavor, double x1, double Q2);
117  static Double_t get_polPDF_NLO_g0(int flavor, double x1, double Q2);
118  static Double_t get_polPDF_NLO_gmax(int flavor, double x1, double Q2);
119  static Double_t get_polPDF_NLO_gmin(int flavor, double x1, double Q2);
120  static Double_t get_polPDF_NLO_m015(int flavor, double x1, double Q2);
121  static Double_t get_polPDF_NLO_m030(int flavor, double x1, double Q2);
122  static Double_t get_polPDF_NLO_m045(int flavor, double x1, double Q2);
123  static Double_t get_polPDF_NLO_m060(int flavor, double x1, double Q2);
124  static Double_t get_polPDF_NLO_m075(int flavor, double x1, double Q2);
125  static Double_t get_polPDF_NLO_m090(int flavor, double x1, double Q2);
126  static Double_t get_polPDF_NLO_m105(int flavor, double x1, double Q2);
127  static Double_t get_polPDF_NLO_p030(int flavor, double x1, double Q2);
128  static Double_t get_polPDF_NLO_p045(int flavor, double x1, double Q2);
129  static Double_t get_polPDF_NLO_p060(int flavor, double x1, double Q2);
130  static Double_t get_polPDF_NLO_p070(int flavor, double x1, double Q2);
131 
132  //DSSV PDF
133  static Double_t get_polPDF_NLO_DSSV(int flavor, double x1, double Q2);
134 
135  //DSSV 2009a PDF
136  static Double_t get_polPDF_NLO_DSSV2009a(int flavor, double x1, double Q2);
137 
138  //LSS PDF
139  static Double_t get_polPDF_NLO_LSS1(int flavor, double x1, double Q2);
140  static Double_t get_polPDF_NLO_LSS2(int flavor, double x1, double Q2);
141  static Double_t get_polPDF_NLO_LSS3(int flavor, double x1, double Q2);
142  static Double_t get_polPDF_NLO_LSS2010_delGpos(int flavor, double x1, double Q2);
143  static Double_t get_polPDF_NLO_LSS2010_chsign_delG(int flavor, double x1, double Q2);
144 
145  //AAC PDF
146  static Double_t get_polPDF_NLO_AAC1(int flavor, double x1, double Q2);
147  static Double_t get_polPDF_NLO_AAC2(int flavor, double x1, double Q2);
148  static Double_t get_polPDF_NLO_AAC3(int flavor, double x1, double Q2);
149 
150  //BB PDF
151  static Double_t get_polPDF_NLO_BB1(int flavor, double x1, double Q2);
152  static Double_t get_polPDF_NLO_BB2(int flavor, double x1, double Q2);
153  static Double_t get_polPDF_NLO_BB2010(int flavor, double x1, double Q2);
154 
155  //DNS PDF
156  static Double_t get_polPDF_NLO_DNS1(int flavor, double x1, double Q2);
157  static Double_t get_polPDF_NLO_DNS2(int flavor, double x1, double Q2);
158 
159  static Double_t get_unpolPDF_LO(int flavor, double x1, double Q2);
160  static Double_t get_unpolPDF_NLO(int flavor, double x1, double Q2);
161 
162  static Double_t getPartonicALL(double s, double t, double u, int pid, int flavor1, int flavor2, int flavor3, int flavor4);
163 
164  static Double_t getProtonA1(double x, double Q2);
165  static double get_polPDF_firstMoment(int pdf, int flavor, double Q2, double xmin, double xmax, double epsilon = 1.0e-3);
166 
167  StMCAsymMaker(const char *name="MCAsym");
168  virtual ~StMCAsymMaker();
169  virtual Int_t Init();
170  virtual Int_t Make();
171  void Clear(const Option_t* option = "");
172  void Zero();
173 
174  const StPythiaEvent* pythiaEvent() const { return mEvent; }
175 
176  const St_particle* particleTable() const { return particleTabPtr; }
177 
178  virtual const char *GetCVS() const {
179  static const char cvs[]="Tag $Name: $ $Id: StMCAsymMaker.h,v 1.14 2014/08/06 11:43:39 jeromel Exp $ built " __DATE__ " " __TIME__ ;
180  return cvs;
181  }
182 
183  ClassDef(StMCAsymMaker,0) //StAF chain virtual base class for Makers
184 };
185 
186 #endif
virtual Int_t Make()
Make - this method is called in loop for each event.
Event data structure to hold all information from a Monte Carlo simulation. This class is the interfa...
Definition: StMcEvent.hh:169