GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RSHelicityAmplModelNCp.cxx
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*
3  Copyright (c) 2003-2024, The GENIE Collaboration
4  For the full text of the license visit http://copyright.genie-mc.org
5 
6  Costas Andreopoulos <c.andreopoulos \at cern.ch>
7  University of Liverpool
8 */
9 //____________________________________________________________________________
10 
11 #include <TMath.h>
12 
18 
19 using namespace genie;
20 using namespace genie::constants;
21 
22 //____________________________________________________________________________
24 RSHelicityAmplModelI("genie::RSHelicityAmplModelNCp")
25 {
26 
27 }
28 //____________________________________________________________________________
30 RSHelicityAmplModelI("genie::RSHelicityAmplModelNCp", 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 xr = 3*xi*fkr.R;
65  double xt = 2*xi*fkr.T;
66  double Tm2xiT = fkr.Tminus + xt;
67  double Tp2xiT = fkr.Tplus + xt;
68  double LRm3xiR = fkr.Lamda * (fkr.Rminus + xr);
69  double LRp3xiR = 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 = kSqrt3 * Tm2xiT + kSqrt2_3 * LRm3xiR;
74  fAmpl.fPlus1 = -1.*kSqrt3 * Tp2xiT - kSqrt2_3 * LRp3xiR;
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 xr = 3*xi*fkr.R;
84  double xt = 2*xi*fkr.T;
85  double Tm2xiT = fkr.Tminus + xt;
86  double Tp2xiT = fkr.Tplus + xt;
87  double LRm3xiR = fkr.Lamda * (fkr.Rminus + xr);
88  double LRp3xiR = fkr.Lamda * (fkr.Rplus + xr);
89  double a = kSqrt3 * (1-2*xi) * fkr.Lamda * fkr.S;
90  double b = (2./kSqrt3) * fkr.Lamda * fkr.C;
91 
92  fAmpl.fMinus1 = kSqrt3_2 * Tm2xiT - k2_Sqrt3 * LRm3xiR;
93  fAmpl.fPlus1 = kSqrt3_2 * Tp2xiT - k2_Sqrt3 * LRp3xiR;
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  fAmpl.fMinus1 = k1_Sqrt24 * fkr.Lamda * fkr.Rminus;
103  fAmpl.fPlus1 = -k1_Sqrt24 * fkr.Lamda * fkr.Rplus;
104  fAmpl.fMinus3 = 0.;
105  fAmpl.fPlus3 = 0.;
106  fAmpl.f0Minus = -k1_Sqrt6 * (fkr.Lamda * fkr.C - 3*fkr.B);
108  break;
109  }
110  case (kD13_1700) :
111  {
112  double LRm = fkr.Lamda * fkr.Rminus;
113  double LRp = fkr.Lamda * fkr.Rplus;
114 
115  fAmpl.fMinus1 = k1_Sqrt120 * LRm;
116  fAmpl.fPlus1 = k1_Sqrt120 * LRp;
117  fAmpl.fMinus3 = k3_Sqrt40 * LRm;
118  fAmpl.fPlus3 = k3_Sqrt40 * LRp;
119  fAmpl.f0Minus = k1_Sqrt30 * fkr.Lamda * fkr.C;
120  fAmpl.f0Plus = -1.* fAmpl.f0Minus;
121  break;
122  }
123  case (kD15_1675) :
124  {
125  double LRm = fkr.Lamda * fkr.Rminus;
126  double LRp = fkr.Lamda * fkr.Rplus;
127 
128  fAmpl.fMinus1 = -kSqrt3_40 * LRm;
129  fAmpl.fPlus1 = kSqrt3_40 * LRp;
130  fAmpl.fMinus3 = -kSqrt3_20 * LRm;
131  fAmpl.fPlus3 = kSqrt3_20 * LRp;
132  fAmpl.f0Minus = kSqrt3_10 * fkr.Lamda * fkr.C;
134  break;
135  }
136  case (kS31_1620) :
137  {
138  double xt = 2*xi*fkr.T;
139  double xr = 2*xi*fkr.R;
140  double Tm2xiT = fkr.Tminus + xt;
141  double Tp2xiT = fkr.Tplus + xt;
142  double LRm2xiR = fkr.Lamda * (fkr.Rminus + xr);
143  double LRp2xiR = fkr.Lamda * (fkr.Rplus + xr);
144  double a = kSqrt3_2 * (1-2*xi) * fkr.Lamda * fkr.S;
145  double b = k1_Sqrt6 * (fkr.Lamda * fkr.C - 3*fkr.B);
146 
147  fAmpl.fMinus1 = kSqrt3 * Tm2xiT - k1_Sqrt6 * LRm2xiR;
148  fAmpl.fPlus1 = -kSqrt3 * Tp2xiT + k1_Sqrt6 * LRp2xiR;
149  fAmpl.fMinus3 = 0.;
150  fAmpl.fPlus3 = 0.;
151  fAmpl.f0Minus = -a-b;
152  fAmpl.f0Plus = a-b;
153  break;
154  }
155  case (kD33_1700) :
156  {
157  double xt = 2*xi*fkr.T;
158  double xr = 2*xi*fkr.R;
159  double Tm2xiT = fkr.Tminus + xt;
160  double Tp2xiT = fkr.Tplus + xt;
161  double LRm2xiR = fkr.Lamda * (fkr.Rminus + xr);
162  double LRp2xiR = fkr.Lamda * (fkr.Rplus + xr);
163  double a = kSqrt3 * (1-2*xi) * fkr.Lamda * fkr.S;
164  double b = k1_Sqrt3 * fkr.Lamda * fkr.C;
165 
166  fAmpl.fMinus1 = kSqrt3_2 * Tm2xiT + k1_Sqrt3 * LRm2xiR;
167  fAmpl.fPlus1 = kSqrt3_2 * Tp2xiT + k1_Sqrt3 * LRp2xiR;
168  fAmpl.fMinus3 = k3_Sqrt2 * Tm2xiT;
169  fAmpl.fPlus3 = k3_Sqrt2 * Tp2xiT;
170  fAmpl.f0Minus = -a-b;
171  fAmpl.f0Plus = -a+b;
172  break;
173  }
174  case (kP11_1440) :
175  {
176  double c = (5./12.)*kSqrt3;
177  double xr = (12./5.)*xi*fkr.R;
178  double L2 = TMath::Power(fkr.Lamda, 2);
179  double L2RmxiR = L2 * (fkr.Rminus + xr);
180  double L2RpxiR = L2 * (fkr.Rplus + xr);
181  double a = 0.25 * kSqrt3 * (1-4*xi) * L2 * fkr.S;
182  double b = c * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
183 
184  fAmpl.fMinus1 = -c * L2RmxiR;
185  fAmpl.fPlus1 = -c * L2RpxiR;
186  fAmpl.fMinus3 = 0.;
187  fAmpl.fPlus3 = 0.;
188  fAmpl.f0Minus = -a+b;
189  fAmpl.f0Plus = -a-b;
190  break;
191  }
192  case (kP33_1600) :
193  {
194  double xr = 2*xi*fkr.R;
195  double L2 = TMath::Power(fkr.Lamda, 2);
196  double L2RmxiR = L2 * (fkr.Rminus + xr);
197  double L2RpxiR = L2 * (fkr.Rplus + xr);
198 
199  fAmpl.fMinus1 = k1_Sqrt6 * L2RmxiR;
200  fAmpl.fPlus1 = -k1_Sqrt6 * L2RpxiR;
201  fAmpl.fMinus3 = k1_Sqrt2 * L2RmxiR;
202  fAmpl.fPlus3 = -k1_Sqrt2 * L2RpxiR;
203  fAmpl.f0Minus = -kSqrt2_3 * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
205  break;
206  }
207  case (kP13_1720) :
208  {
209  double xt = 4*xi*fkr.T;
210  double xr = (12./5.)*xi*fkr.R;
211  double L2 = TMath::Power(fkr.Lamda, 2);
212  double LTm4xiT = fkr.Lamda * (fkr.Tminus + xt);
213  double LTp4xiT = fkr.Lamda * (fkr.Tplus + xt);
214  double L2RmxiR = L2 * (fkr.Rminus + xr);
215  double L2RpxiR = L2 * (fkr.Rplus + xr);
216  double a = kSqrt3_20 * (1-4*xi) * L2 * fkr.S;
217  double b = kSqrt5_12 * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
218 
219  fAmpl.fMinus1 = -kSqrt27_40 * LTm4xiT - kSqrt5_12 * L2RmxiR;
220  fAmpl.fPlus1 = kSqrt27_40 * LTp4xiT + kSqrt5_12 * L2RpxiR;
221  fAmpl.fMinus3 = k3_Sqrt40 * LTm4xiT;
222  fAmpl.fPlus3 = -k3_Sqrt40 * LTp4xiT;
223  fAmpl.f0Minus = a-b;
224  fAmpl.f0Plus = -a-b;
225  break;
226  }
227  case (kF15_1680) :
228  {
229  double xt = 4. * xi *fkr.T;
230  double xr = (12./5.) * xi * fkr.R;
231  double L2 = TMath::Power(fkr.Lamda, 2);
232  double LTm4xiT = fkr.Lamda * (fkr.Tminus + xt);
233  double LTp4xiT = fkr.Lamda * (fkr.Tplus + xt);
234  double L2RmxiR = L2 * (fkr.Rminus + xr);
235  double L2RpxiR = L2 * (fkr.Rplus + xr);
236  double a = k3_Sqrt40 * (1-4*xi)* L2 * fkr.S;
237  double b = kSqrt5_8 * L2 * fkr.C;
238 
239  fAmpl.fMinus1 = -k3_Sqrt20 * LTm4xiT + kSqrt5_8 * L2RmxiR;
240  fAmpl.fPlus1 = -k3_Sqrt20 * LTp4xiT + kSqrt5_8 * L2RpxiR;
241  fAmpl.fMinus3 = -kSqrt18_20 * LTm4xiT;
242  fAmpl.fPlus3 = -kSqrt18_20 * LTp4xiT;
243  fAmpl.f0Minus = a - b;
244  fAmpl.f0Plus = a + b;
245  break;
246  }
247  case (kP31_1910) :
248  {
249  double xr = 2*xi*fkr.R;
250  double L2 = TMath::Power(fkr.Lamda, 2);
251 
252  fAmpl.fMinus1 = -k1_Sqrt15 * L2 * (fkr.Rminus + xr);
253  fAmpl.fPlus1 = -k1_Sqrt15 * L2 * (fkr.Rplus + xr);
254  fAmpl.fMinus3 = 0.;
255  fAmpl.fPlus3 = 0.;
256  fAmpl.f0Minus = -kSqrt4_15 * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
257  fAmpl.f0Plus = -1.* fAmpl.f0Minus;
258  break;
259  }
260  case (kP33_1920) :
261  {
262  double xr = 2*xi*fkr.R;
263  double L2 = TMath::Power(fkr.Lamda, 2);
264  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
265  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
266 
267  fAmpl.fMinus1 = k1_Sqrt15 * L2Rm2xiR;
268  fAmpl.fPlus1 = -k1_Sqrt15 * L2Rp2xiR;
269  fAmpl.fMinus3 = -k1_Sqrt5 * L2Rm2xiR;
270  fAmpl.fPlus3 = k1_Sqrt5 * L2Rp2xiR;
271  fAmpl.f0Minus = -(2./kSqrt15) * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
273  break;
274  }
275  case (kF35_1905) :
276  {
277  double xr = 2*xi*fkr.R;
278  double L2 = TMath::Power(fkr.Lamda, 2);
279  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
280  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
281 
282  fAmpl.fMinus1 = k1_Sqrt35 * L2Rm2xiR;
283  fAmpl.fPlus1 = k1_Sqrt35 * L2Rp2xiR;
284  fAmpl.fMinus3 = kSqrt18_35 * L2Rm2xiR;
285  fAmpl.fPlus3 = kSqrt18_35 * L2Rp2xiR;
286  fAmpl.f0Minus = k2_Sqrt35 * L2 * fkr.C;
287  fAmpl.f0Plus = -1. * fAmpl.f0Minus;
288  break;
289  }
290  case (kF37_1950) :
291  {
292  double xr = 2*xi*fkr.R;
293  double L2 = TMath::Power(fkr.Lamda, 2);
294  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
295  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
296 
297  fAmpl.fMinus1 = -kSqrt6_35 * L2Rm2xiR;
298  fAmpl.fPlus1 = kSqrt6_35 * L2Rp2xiR;
299  fAmpl.fMinus3 = -kSqrt2_7 * L2Rm2xiR;
300  fAmpl.fPlus3 = kSqrt2_7 * L2Rp2xiR;
301  fAmpl.f0Minus = 2*kSqrt6_35 * L2 * fkr.C;
303  break;
304  }
305  case (kP11_1710) :
306  {
307  double L2 = TMath::Power(fkr.Lamda, 2);
308  double Rm3xiR = fkr.Rminus + 3*xi*fkr.R;
309  double Rp3xiR = fkr.Rplus + 3*xi*fkr.R;
310  double a = kSqrt3_8 * (1-2*xi) * L2 * fkr.S;
311  double b = k1_Sqrt6 * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
312 
313  fAmpl.fMinus1 = k1_Sqrt6 * L2 * Rm3xiR;
314  fAmpl.fPlus1 = k1_Sqrt6 * L2 * Rp3xiR;
315  fAmpl.fMinus3 = 0.;
316  fAmpl.fPlus3 = 0.;
317  fAmpl.f0Minus = a-b;
318  fAmpl.f0Plus = a+b;
319  break;
320  }
321  case (kF17_1970) :
322  {
323  fAmpl.fMinus1 = 0.;
324  fAmpl.fPlus1 = 0.;
325  fAmpl.fMinus3 = 0.;
326  fAmpl.fPlus3 = 0.;
327  fAmpl.f0Minus = 0.;
328  fAmpl.f0Plus = 0.;
329  break;
330  }
331  default:
332  {
333  LOG("RSHAmpl", pWARN) << "*** UNRECOGNIZED RESONANCE!";
334  fAmpl.fMinus1 = 0.;
335  fAmpl.fPlus1 = 0.;
336  fAmpl.fMinus3 = 0.;
337  fAmpl.fPlus3 = 0.;
338  fAmpl.f0Minus = 0.;
339  fAmpl.f0Plus = 0.;
340  break;
341  }
342 
343  }//switch
344 
345  return fAmpl;
346 }
347 //____________________________________________________________________________
349 {
350  Algorithm::Configure(config);
351  this->LoadConfig();
352 }
353 //____________________________________________________________________________
355 {
356  Algorithm::Configure(config);
357  this->LoadConfig();
358 }
359 //____________________________________________________________________________
361 {
362  double thw ;
363  GetParam( "WeinbergAngle", thw ) ;
364  fSin28w = TMath::Power( TMath::Sin(thw), 2 );
365 }
366 //____________________________________________________________________________
double Rminus
Definition: FKR.h:50
Simple struct-like class holding the Feynmann-Kislinger-Ravndall (FKR) baryon excitation model parame...
Definition: FKR.h:31
double Lamda
Definition: FKR.h:37
double R
Definition: FKR.h:45
enum genie::EResonance Resonance_t
static constexpr double b
Definition: Units.h:78
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
const double a
double T
Definition: FKR.h:46
virtual void Configure(const Registry &config)
Definition: Algorithm.cxx:62
const RSHelicityAmpl & Compute(Resonance_t res, const FKR &fkr) const
Pure abstract base class. Defines the RSHelicityAmplModelI interface.
#define pWARN
Definition: Messenger.h:60
double C
Definition: FKR.h:44
double Tplus
Definition: FKR.h:47
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
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
double S
Definition: FKR.h:40
void Configure(const Registry &config)