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