RSHelicityAmplModelNCn.cxx
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*
3  Copyright (c) 2003-2020, The GENIE Collaboration
4  For the full text of the license visit http://copyright.genie-mc.org
5 
6  Costas Andreopoulos <constantinos.andreopoulos \at cern.ch>
7  University of Liverpool & STFC Rutherford Appleton Laboratory
8 */
9 //____________________________________________________________________________
10 
11 #include <TMath.h>
12 
18 
19 using namespace genie;
20 using namespace genie::constants;
21 
22 //____________________________________________________________________________
24 RSHelicityAmplModelI("genie::RSHelicityAmplModelNCn")
25 {
26 
27 }
28 //____________________________________________________________________________
30 RSHelicityAmplModelI("genie::RSHelicityAmplModelNCn", config)
31 {
32 
33 }
34 //____________________________________________________________________________
36 {
37 
38 }
39 //____________________________________________________________________________
40 const RSHelicityAmpl &
42  Resonance_t res, const FKR & fkr) const
43 {
44  double xi = fSin28w;
45 
46  switch(res) {
47 
48  case (kP33_1232) :
49  {
50  double rx = 2 * xi * fkr.R;
51  double Rm2xiR = fkr.Rminus + rx;
52  double Rp2xiR = fkr.Rplus + rx;
53 
54  fAmpl.fMinus1 = -kSqrt2 * Rm2xiR;
55  fAmpl.fPlus1 = kSqrt2 * Rp2xiR;
56  fAmpl.fMinus3 = -kSqrt6 * Rm2xiR;
57  fAmpl.fPlus3 = kSqrt6 * Rp2xiR;
58  fAmpl.f0Minus = 2*kSqrt2 * fkr.C;
60  break;
61  }
62  case (kS11_1535) :
63  {
64  double xt = 2*xi*fkr.T;
65  double xr = xi*fkr.R;
66  double Tm2xiT = fkr.Tminus + xt;
67  double Tp2xiT = fkr.Tplus + xt;
68  double LRmxiR = fkr.Lamda * (fkr.Rminus + xr);
69  double LRpxiR = fkr.Lamda * (fkr.Rplus + xr);
70  double a = kSqrt3_2 * (1-2*xi) * fkr.Lamda * fkr.S;
71  double b = kSqrt2_3 * (fkr.Lamda * fkr.C - 3*fkr.B);
72 
73  fAmpl.fMinus1 = -1*kSqrt3 * Tm2xiT - kSqrt2_3 * LRmxiR;
74  fAmpl.fPlus1 = kSqrt3 * Tp2xiT + kSqrt2_3 * LRpxiR;
75  fAmpl.fMinus3 = 0.;
76  fAmpl.fPlus3 = 0.;
77  fAmpl.f0Minus = a-b;
78  fAmpl.f0Plus = -a-b;
79  break;
80  }
81  case (kD13_1520) :
82  {
83  double xt = 2* xi * fkr.T;
84  double xr = xi * fkr.R;
85  double Tm2xiT = fkr.Tminus + xt;
86  double Tp2xiT = fkr.Tplus + xt;
87  double LRmxiR = fkr.Lamda * (fkr.Rminus + xr);
88  double LRpxiR = fkr.Lamda * (fkr.Rplus + xr);
89  double a = kSqrt3 * (1-2*xi) * fkr.Lamda * fkr.S;
90  double b = k2_Sqrt3 * fkr.Lamda * fkr.C;
91 
92  fAmpl.fMinus1 = -kSqrt3_2 * Tm2xiT + k2_Sqrt3 * LRmxiR;
93  fAmpl.fPlus1 = -kSqrt3_2 * Tp2xiT + k2_Sqrt3 * LRpxiR;
94  fAmpl.fMinus3 = -k3_Sqrt2 * Tm2xiT;
95  fAmpl.fPlus3 = -k3_Sqrt2 * Tp2xiT;
96  fAmpl.f0Minus = a - b;
97  fAmpl.f0Plus = a + b;
98  break;
99  }
100  case (kS11_1650) :
101  {
102  double xr = 4* xi * fkr.R;
103  double LRm4xiR = fkr.Lamda * (fkr.Rminus + xr);
104  double LRp4xiR = fkr.Lamda * (fkr.Rplus + xr);
105 
106  fAmpl.fMinus1 = -k1_Sqrt24 * LRm4xiR;
107  fAmpl.fPlus1 = k1_Sqrt24 * LRp4xiR;
108  fAmpl.fMinus3 = 0.;
109  fAmpl.fPlus3 = 0.;
110  fAmpl.f0Minus = k1_Sqrt6 * (fkr.Lamda * fkr.C - 3*fkr.B);
112  break;
113  }
114  case (kD13_1700) :
115  {
116  double xr = 4* xi * fkr.R;
117  double LRm4xiR = fkr.Lamda * (fkr.Rminus + xr);
118  double LRp4xiR = fkr.Lamda * (fkr.Rplus + xr);
119 
120  fAmpl.fMinus1 = -k1_Sqrt120 * LRm4xiR;
121  fAmpl.fPlus1 = -k1_Sqrt120 * LRp4xiR;
122  fAmpl.fMinus3 = -k3_Sqrt40 * LRm4xiR;
123  fAmpl.fPlus3 = -k3_Sqrt40 * LRp4xiR;
124  fAmpl.f0Minus = -k1_Sqrt30 * fkr.Lamda * fkr.C;
125  fAmpl.f0Plus = -1.* fAmpl.f0Minus;
126  break;
127  }
128  case (kD15_1675) :
129  {
130  double xr = 4* xi * fkr.R;
131  double LRm4xiR = fkr.Lamda * (fkr.Rminus + xr);
132  double LRp4xiR = fkr.Lamda * (fkr.Rplus + xr);
133 
134  fAmpl.fMinus1 = kSqrt3_40 * LRm4xiR;
135  fAmpl.fPlus1 = -kSqrt3_40 * LRp4xiR;
136  fAmpl.fMinus3 = kSqrt3_20 * LRm4xiR;
137  fAmpl.fPlus3 = -kSqrt3_20 * LRp4xiR;
138  fAmpl.f0Minus = -kSqrt3_10 * (fkr.Lamda * fkr.C);
140  break;
141  }
142  case (kS31_1620) :
143  {
144  double xt = 2*xi*fkr.T;
145  double xr = 2*xi*fkr.R;
146  double Tm2xiT = fkr.Tminus + xt;
147  double Tp2xiT = fkr.Tplus + xt;
148  double LRm2xiR = fkr.Lamda * (fkr.Rminus + xr);
149  double LRp2xiR = fkr.Lamda * (fkr.Rplus + xr);
150  double a = kSqrt3_2 * (1-2*xi) * fkr.Lamda * fkr.S;
151  double b = k1_Sqrt6 * (fkr.Lamda * fkr.C - 3*fkr.B);
152 
153  fAmpl.fMinus1 = kSqrt3 * Tm2xiT - k1_Sqrt6 * LRm2xiR;
154  fAmpl.fPlus1 = -kSqrt3 * Tp2xiT + k1_Sqrt6 * LRp2xiR;
155  fAmpl.fMinus3 = 0.;
156  fAmpl.fPlus3 = 0.;
157  fAmpl.f0Minus = -a-b;
158  fAmpl.f0Plus = a-b;
159  break;
160  }
161  case (kD33_1700) :
162  {
163  double xt = 2*xi*fkr.T;
164  double xr = 2*xi*fkr.R;
165  double Tm2xiT = fkr.Tminus + xt;
166  double Tp2xiT = fkr.Tplus + xt;
167  double LRm2xiR = fkr.Lamda * (fkr.Rminus + xr);
168  double LRp2xiR = fkr.Lamda * (fkr.Rplus + xr);
169  double a = kSqrt3 * (1-2*xi) * fkr.Lamda * fkr.S;
170  double b = k1_Sqrt3 * fkr.Lamda * fkr.C;
171 
172  fAmpl.fMinus1 = kSqrt3_2 * Tm2xiT + k1_Sqrt3 * LRm2xiR;
173  fAmpl.fPlus1 = kSqrt3_2 * Tp2xiT + k1_Sqrt3 * LRp2xiR;
174  fAmpl.fMinus3 = k3_Sqrt2 * Tm2xiT;
175  fAmpl.fPlus3 = k3_Sqrt2 * Tp2xiT;
176  fAmpl.f0Minus = -a-b;
177  fAmpl.f0Plus = -a+b;
178  break;
179  }
180  case (kP11_1440) :
181  {
182  double c = (5./12.)*kSqrt3;
183  double xr = (8./5.)* xi * fkr.R;
184  double L2 = TMath::Power(fkr.Lamda, 2);
185  double L2RmxiR = L2 * (fkr.Rminus + xr);
186  double L2RpxiR = L2 * (fkr.Rplus + xr);
187  double a = 0.25*kSqrt3 * L2 * fkr.S;
188  double b = c * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
189 
190  fAmpl.fMinus1 = c * L2RmxiR;
191  fAmpl.fPlus1 = c * L2RpxiR;
192  fAmpl.fMinus3 = 0.;
193  fAmpl.fPlus3 = 0.;
194  fAmpl.f0Minus = a - b;
195  fAmpl.f0Plus = a + b;
196  break;
197  }
198  case (kP33_1600) :
199  {
200  double xr = 2*xi*fkr.R;
201  double L2 = TMath::Power(fkr.Lamda, 2);
202  double L2RmxiR = L2 * (fkr.Rminus + xr);
203  double L2RpxiR = L2 * (fkr.Rplus + xr);
204 
205  fAmpl.fMinus1 = k1_Sqrt6 * L2RmxiR;
206  fAmpl.fPlus1 = -k1_Sqrt6 * L2RpxiR;
207  fAmpl.fMinus3 = k1_Sqrt2 * L2RmxiR;
208  fAmpl.fPlus3 = -k1_Sqrt2 * L2RpxiR;
209  fAmpl.f0Minus = -kSqrt2_3 * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
211  break;
212  }
213  case (kP13_1720) :
214  {
215  double L2 = TMath::Power(fkr.Lamda, 2);
216  double xr = (8./5.)*xi*fkr.R;
217  double LTm = fkr.Lamda * fkr.Tminus;
218  double LTp = fkr.Lamda * fkr.Tplus;
219  double L2RmxiR = L2 * (fkr.Rminus + xr);
220  double L2RpxiR = L2 * (fkr.Rplus + xr);
221  double a = kSqrt3_20 * L2 * fkr.S;
222  double b = kSqrt5_12 * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
223 
224  fAmpl.fMinus1 = kSqrt27_40 * LTm + kSqrt5_12 * L2RmxiR;
225  fAmpl.fPlus1 = -kSqrt27_40 * LTp - kSqrt5_12 * L2RpxiR;
226  fAmpl.fMinus3 = -kSqrt9_40 * LTm;
227  fAmpl.fPlus3 = kSqrt9_40 * LTp;
228  fAmpl.f0Minus = -a+b;
229  fAmpl.f0Plus = a+b;
230  break;
231  }
232  case (kF15_1680) :
233  {
234  double L2 = TMath::Power(fkr.Lamda, 2);
235  double xr = (8./5.)*xi*fkr.R;
236  double LTm = fkr.Lamda * fkr.Tminus;
237  double LTp = fkr.Lamda * fkr.Tplus;
238  double L2RmxiR = L2 * (fkr.Rminus + xr);
239  double L2RpxiR = L2 * (fkr.Rplus + xr);
240  double a = k3_Sqrt40 * L2 * fkr.S;
241  double b = kSqrt5_8 * L2 * fkr.C;
242 
243  fAmpl.fMinus1 = k3_Sqrt20 * LTm - kSqrt5_8 * L2RmxiR;
244  fAmpl.fPlus1 = k3_Sqrt20 * LTp - kSqrt5_8 * L2RpxiR;
245  fAmpl.fMinus3 = kSqrt18_20 * LTm;
246  fAmpl.fPlus3 = kSqrt18_20 * LTp;
247  fAmpl.f0Minus = -a+b;
248  fAmpl.f0Plus = -a-b;
249  break;
250  }
251  case (kP31_1910) :
252  {
253  double xr = 2*xi*fkr.R;
254  double L2 = TMath::Power(fkr.Lamda, 2);
255 
256  fAmpl.fMinus1 = -k1_Sqrt15 * L2 * (fkr.Rminus + xr);
257  fAmpl.fPlus1 = -k1_Sqrt15 * L2 * (fkr.Rplus + xr);
258  fAmpl.fMinus3 = 0.;
259  fAmpl.fPlus3 = 0.;
260  fAmpl.f0Minus = -kSqrt4_15 * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
261  fAmpl.f0Plus = -1.* fAmpl.f0Minus;
262  break;
263  }
264  case (kP33_1920) :
265  {
266  double xr = 2*xi*fkr.R;
267  double L2 = TMath::Power(fkr.Lamda, 2);
268  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
269  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
270 
271  fAmpl.fMinus1 = k1_Sqrt15 * L2Rm2xiR;
272  fAmpl.fPlus1 = -k1_Sqrt15 * L2Rp2xiR;
273  fAmpl.fMinus3 = -k1_Sqrt5 * L2Rm2xiR;
274  fAmpl.fPlus3 = k1_Sqrt5 * L2Rp2xiR;
275  fAmpl.f0Minus = -(2./kSqrt15) * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
277  break;
278  }
279  case (kF35_1905) :
280  {
281  double xr = 2*xi*fkr.R;
282  double L2 = TMath::Power(fkr.Lamda, 2);
283  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
284  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
285 
286  fAmpl.fMinus1 = k1_Sqrt35 * L2Rm2xiR;
287  fAmpl.fPlus1 = k1_Sqrt35 * L2Rp2xiR;
288  fAmpl.fMinus3 = kSqrt18_35 * L2Rm2xiR;
289  fAmpl.fPlus3 = kSqrt18_35 * L2Rp2xiR;
290  fAmpl.f0Minus = k2_Sqrt35 * L2 * fkr.C;
291  fAmpl.f0Plus = -1. * fAmpl.f0Minus;
292  break;
293  }
294  case (kF37_1950) :
295  {
296  double xr = 2*xi*fkr.R;
297  double L2 = TMath::Power(fkr.Lamda, 2);
298  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
299  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
300 
301  fAmpl.fMinus1 = -kSqrt6_35 * L2Rm2xiR;
302  fAmpl.fPlus1 = kSqrt6_35 * L2Rp2xiR;
303  fAmpl.fMinus3 = -kSqrt2_7 * L2Rm2xiR;
304  fAmpl.fPlus3 = kSqrt2_7 * L2Rp2xiR;
305  fAmpl.f0Minus = 2*kSqrt6_35 * L2 * fkr.C;
307  break;
308  }
309  case (kP11_1710) :
310  {
311  double L2 = TMath::Power(fkr.Lamda, 2);
312  double xr = xi*fkr.R;
313  double L2RmxiR = L2 * (fkr.Rminus + xr);
314  double L2RpxiR = L2 * (fkr.Rplus + xr);
315  double a = kSqrt3_8 * (1-2*xi) * L2 * fkr.S;
316  double b = k1_Sqrt6 * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
317 
318  fAmpl.fMinus1 = -k1_Sqrt6 * L2RmxiR;
319  fAmpl.fPlus1 = -k1_Sqrt6 * L2RpxiR;
320  fAmpl.fMinus3 = 0.;
321  fAmpl.fPlus3 = 0.;
322  fAmpl.f0Minus = -a+b;
323  fAmpl.f0Plus = -a-b;
324  break;
325  }
326  case (kF17_1970) :
327  {
328  fAmpl.fMinus1 = 0.;
329  fAmpl.fPlus1 = 0.;
330  fAmpl.fMinus3 = 0.;
331  fAmpl.fPlus3 = 0.;
332  fAmpl.f0Minus = 0.;
333  fAmpl.f0Plus = 0.;
334  break;
335  }
336  default:
337  {
338  LOG("RSHAmpl", pWARN) << "*** UNRECOGNIZED RESONANCE!";
339  fAmpl.fMinus1 = 0.;
340  fAmpl.fPlus1 = 0.;
341  fAmpl.fMinus3 = 0.;
342  fAmpl.fPlus3 = 0.;
343  fAmpl.f0Minus = 0.;
344  fAmpl.f0Plus = 0.;
345  break;
346  }
347 
348  }//switch
349 
350  return fAmpl;
351 }
352 //____________________________________________________________________________
354 {
355  Algorithm::Configure(config);
356  this->LoadConfig();
357 }
358 //____________________________________________________________________________
360 {
361  Algorithm::Configure(config);
362  this->LoadConfig();
363 }
364 //____________________________________________________________________________
366 {
367  double thw ;
368  GetParam( "WeinbergAngle", thw ) ;
369  fSin28w = TMath::Power( TMath::Sin(thw), 2 );
370 }
371 //____________________________________________________________________________
static const double kSqrt3_40
Definition: Constants.h:169
static const double kSqrt3
Definition: Constants.h:116
Basic constants.
static const double kSqrt2
Definition: Constants.h:115
static const double kSqrt15
Definition: Constants.h:125
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
double Rminus
Definition: FKR.h:50
static const double kSqrt6
Definition: Constants.h:119
Simple struct-like class holding the Feynmann-Kislinger-Ravndall (FKR) baryon excitation model parame...
Definition: FKR.h:31
static const double k1_Sqrt5
Definition: Constants.h:137
double Lamda
Definition: FKR.h:37
double R
Definition: FKR.h:45
static const double kSqrt9_40
Definition: Constants.h:178
static const double k1_Sqrt3
Definition: Constants.h:136
static const double k1_Sqrt6
Definition: Constants.h:138
const RSHelicityAmpl & Compute(Resonance_t res, const FKR &fkr) const
enum genie::EResonance Resonance_t
static const double kSqrt27_40
Definition: Constants.h:184
static const double kSqrt5_12
Definition: Constants.h:174
static const double k3_Sqrt2
Definition: Constants.h:151
A class holding the Rein-Sehgal&#39;s helicity amplitudes.
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
Definition: Messenger.h:96
static const double k1_Sqrt120
Definition: Constants.h:146
static Config * config
Definition: config.cpp:1054
const double a
static const double kSqrt18_20
Definition: Constants.h:180
double T
Definition: FKR.h:46
static const double kSqrt2_7
Definition: Constants.h:159
virtual void Configure(const Registry &config)
Definition: Algorithm.cxx:62
static const double k3_Sqrt40
Definition: Constants.h:155
static const double k1_Sqrt35
Definition: Constants.h:144
static const double kSqrt3_10
Definition: Constants.h:165
Pure abstract base class. Defines the RSHelicityAmplModelI interface.
static const double k1_Sqrt24
Definition: Constants.h:142
void Configure(const Registry &config)
static const double kSqrt3_8
Definition: Constants.h:164
static const double kSqrt3_2
Definition: Constants.h:161
static const double k2_Sqrt3
Definition: Constants.h:147
#define pWARN
Definition: Messenger.h:60
static const double kSqrt4_15
Definition: Constants.h:170
static const double k1_Sqrt15
Definition: Constants.h:141
double C
Definition: FKR.h:44
double Tplus
Definition: FKR.h:47
static const double kSqrt5_8
Definition: Constants.h:173
double B
Definition: FKR.h:43
double Rplus
Definition: FKR.h:49
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
double Tminus
Definition: FKR.h:48
static const double kSqrt2_3
Definition: Constants.h:156
static bool * b
Definition: config.cpp:1043
static const double k3_Sqrt20
Definition: Constants.h:154
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
static const double k2_Sqrt35
Definition: Constants.h:150
static const double k1_Sqrt2
Definition: Constants.h:135
static const double k1_Sqrt30
Definition: Constants.h:143
static const double kSqrt3_20
Definition: Constants.h:167
double S
Definition: FKR.h:40
static const double kSqrt6_35
Definition: Constants.h:176
static const double kSqrt18_35
Definition: Constants.h:181