RSHelicityAmplModelNCp.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::RSHelicityAmplModelNCp")
34 {
35 
36 }
37 //____________________________________________________________________________
39 RSHelicityAmplModelI("genie::RSHelicityAmplModelNCp", 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 xr = 3*xi*fkr.R;
74  double xt = 2*xi*fkr.T;
75  double Tm2xiT = fkr.Tminus + xt;
76  double Tp2xiT = fkr.Tplus + xt;
77  double LRm3xiR = fkr.Lamda * (fkr.Rminus + xr);
78  double LRp3xiR = 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 = kSqrt3 * Tm2xiT + kSqrt2_3 * LRm3xiR;
83  fAmpl.fPlus1 = -1.*kSqrt3 * Tp2xiT - kSqrt2_3 * LRp3xiR;
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 xr = 3*xi*fkr.R;
93  double xt = 2*xi*fkr.T;
94  double Tm2xiT = fkr.Tminus + xt;
95  double Tp2xiT = fkr.Tplus + xt;
96  double LRm3xiR = fkr.Lamda * (fkr.Rminus + xr);
97  double LRp3xiR = fkr.Lamda * (fkr.Rplus + xr);
98  double a = kSqrt3 * (1-2*xi) * fkr.Lamda * fkr.S;
99  double b = (2./kSqrt3) * fkr.Lamda * fkr.C;
100 
101  fAmpl.fMinus1 = kSqrt3_2 * Tm2xiT - k2_Sqrt3 * LRm3xiR;
102  fAmpl.fPlus1 = kSqrt3_2 * Tp2xiT - k2_Sqrt3 * LRp3xiR;
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  fAmpl.fMinus1 = k1_Sqrt24 * fkr.Lamda * fkr.Rminus;
112  fAmpl.fPlus1 = -k1_Sqrt24 * fkr.Lamda * fkr.Rplus;
113  fAmpl.fMinus3 = 0.;
114  fAmpl.fPlus3 = 0.;
115  fAmpl.f0Minus = -k1_Sqrt6 * (fkr.Lamda * fkr.C - 3*fkr.B);
117  break;
118  }
119  case (kD13_1700) :
120  {
121  double LRm = fkr.Lamda * fkr.Rminus;
122  double LRp = fkr.Lamda * fkr.Rplus;
123 
124  fAmpl.fMinus1 = k1_Sqrt120 * LRm;
125  fAmpl.fPlus1 = k1_Sqrt120 * LRp;
126  fAmpl.fMinus3 = k3_Sqrt40 * LRm;
127  fAmpl.fPlus3 = k3_Sqrt40 * LRp;
128  fAmpl.f0Minus = k1_Sqrt30 * fkr.Lamda * fkr.C;
129  fAmpl.f0Plus = -1.* fAmpl.f0Minus;
130  break;
131  }
132  case (kD15_1675) :
133  {
134  double LRm = fkr.Lamda * fkr.Rminus;
135  double LRp = fkr.Lamda * fkr.Rplus;
136 
137  fAmpl.fMinus1 = -kSqrt3_40 * LRm;
138  fAmpl.fPlus1 = kSqrt3_40 * LRp;
139  fAmpl.fMinus3 = -kSqrt3_20 * LRm;
140  fAmpl.fPlus3 = kSqrt3_20 * LRp;
141  fAmpl.f0Minus = kSqrt3_10 * fkr.Lamda * fkr.C;
143  break;
144  }
145  case (kS31_1620) :
146  {
147  double xt = 2*xi*fkr.T;
148  double xr = 2*xi*fkr.R;
149  double Tm2xiT = fkr.Tminus + xt;
150  double Tp2xiT = fkr.Tplus + xt;
151  double LRm2xiR = fkr.Lamda * (fkr.Rminus + xr);
152  double LRp2xiR = fkr.Lamda * (fkr.Rplus + xr);
153  double a = kSqrt3_2 * (1-2*xi) * fkr.Lamda * fkr.S;
154  double b = k1_Sqrt6 * (fkr.Lamda * fkr.C - 3*fkr.B);
155 
156  fAmpl.fMinus1 = kSqrt3 * Tm2xiT - k1_Sqrt6 * LRm2xiR;
157  fAmpl.fPlus1 = -kSqrt3 * Tp2xiT + k1_Sqrt6 * LRp2xiR;
158  fAmpl.fMinus3 = 0.;
159  fAmpl.fPlus3 = 0.;
160  fAmpl.f0Minus = -a-b;
161  fAmpl.f0Plus = a-b;
162  break;
163  }
164  case (kD33_1700) :
165  {
166  double xt = 2*xi*fkr.T;
167  double xr = 2*xi*fkr.R;
168  double Tm2xiT = fkr.Tminus + xt;
169  double Tp2xiT = fkr.Tplus + xt;
170  double LRm2xiR = fkr.Lamda * (fkr.Rminus + xr);
171  double LRp2xiR = fkr.Lamda * (fkr.Rplus + xr);
172  double a = kSqrt3 * (1-2*xi) * fkr.Lamda * fkr.S;
173  double b = k1_Sqrt3 * fkr.Lamda * fkr.C;
174 
175  fAmpl.fMinus1 = kSqrt3_2 * Tm2xiT + k1_Sqrt3 * LRm2xiR;
176  fAmpl.fPlus1 = kSqrt3_2 * Tp2xiT + k1_Sqrt3 * LRp2xiR;
177  fAmpl.fMinus3 = k3_Sqrt2 * Tm2xiT;
178  fAmpl.fPlus3 = k3_Sqrt2 * Tp2xiT;
179  fAmpl.f0Minus = -a-b;
180  fAmpl.f0Plus = -a+b;
181  break;
182  }
183  case (kP11_1440) :
184  {
185  double c = (5./12.)*kSqrt3;
186  double xr = (12./5.)*xi*fkr.R;
187  double L2 = TMath::Power(fkr.Lamda, 2);
188  double L2RmxiR = L2 * (fkr.Rminus + xr);
189  double L2RpxiR = L2 * (fkr.Rplus + xr);
190  double a = 0.25 * kSqrt3 * (1-4*xi) * L2 * fkr.S;
191  double b = c * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
192 
193  fAmpl.fMinus1 = -c * L2RmxiR;
194  fAmpl.fPlus1 = -c * L2RpxiR;
195  fAmpl.fMinus3 = 0.;
196  fAmpl.fPlus3 = 0.;
197  fAmpl.f0Minus = -a+b;
198  fAmpl.f0Plus = -a-b;
199  break;
200  }
201  case (kP33_1600) :
202  {
203  double xr = 2*xi*fkr.R;
204  double L2 = TMath::Power(fkr.Lamda, 2);
205  double L2RmxiR = L2 * (fkr.Rminus + xr);
206  double L2RpxiR = L2 * (fkr.Rplus + xr);
207 
208  fAmpl.fMinus1 = k1_Sqrt6 * L2RmxiR;
209  fAmpl.fPlus1 = -k1_Sqrt6 * L2RmxiR;
210  fAmpl.fMinus3 = k1_Sqrt2 * L2RmxiR;
211  fAmpl.fPlus3 = -k1_Sqrt2 * L2RpxiR;
212  fAmpl.f0Minus = -kSqrt2_3 * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
214  break;
215  }
216  case (kP13_1720) :
217  {
218  double xt = 4*xi*fkr.T;
219  double xr = (12./5.)*xi*fkr.R;
220  double L2 = TMath::Power(fkr.Lamda, 2);
221  double LTm4xiT = fkr.Lamda * (fkr.Tminus + xt);
222  double LTp4xiT = fkr.Lamda * (fkr.Tplus + xt);
223  double L2RmxiR = L2 * (fkr.Rminus + xr);
224  double L2RpxiR = L2 * (fkr.Rplus + xr);
225  double a = kSqrt3_20 * (1-4*xi) * L2 * fkr.S;
226  double b = kSqrt5_12 * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
227 
228  fAmpl.fMinus1 = -kSqrt27_40 * LTm4xiT - kSqrt5_12 * L2RmxiR;
229  fAmpl.fPlus1 = kSqrt27_40 * LTp4xiT + kSqrt5_12 * L2RpxiR;
230  fAmpl.fMinus3 = k3_Sqrt40 * LTm4xiT;
231  fAmpl.fPlus3 = -k3_Sqrt40 * LTp4xiT;
232  fAmpl.f0Minus = a-b;
233  fAmpl.f0Plus = -a-b;
234  break;
235  }
236  case (kF15_1680) :
237  {
238  double xt = 4. * xi *fkr.T;
239  double xr = (12./5.) * xi * fkr.R;
240  double L2 = TMath::Power(fkr.Lamda, 2);
241  double LTm4xiT = fkr.Lamda * (fkr.Tminus + xt);
242  double LTp4xiT = fkr.Lamda * (fkr.Tplus + xt);
243  double L2RmxiR = L2 * (fkr.Rminus + xr);
244  double L2RpxiR = L2 * (fkr.Rplus + xr);
245  double a = k3_Sqrt40 * (1-4*xi)* L2 * fkr.S;
246  double b = kSqrt5_8 * L2 * fkr.C;
247 
248  fAmpl.fMinus1 = -k3_Sqrt20 * LTm4xiT + kSqrt5_8 * L2RmxiR;
249  fAmpl.fPlus1 = -k3_Sqrt20 * LTp4xiT + kSqrt5_8 * L2RpxiR;
250  fAmpl.fMinus3 = -kSqrt18_20 * LTm4xiT;
251  fAmpl.fPlus3 = -kSqrt18_20 * LTp4xiT;
252  fAmpl.f0Minus = a - b;
253  fAmpl.f0Plus = a + b;
254  break;
255  }
256  case (kP31_1910) :
257  {
258  double xr = 2*xi*fkr.R;
259  double L2 = TMath::Power(fkr.Lamda, 2);
260 
261  fAmpl.fMinus1 = -k1_Sqrt15 * L2 * (fkr.Rminus + xr);
262  fAmpl.fPlus1 = -k1_Sqrt15 * L2 * (fkr.Rplus + xr);
263  fAmpl.fMinus3 = 0.;
264  fAmpl.fPlus3 = 0.;
265  fAmpl.f0Minus = -kSqrt4_15 * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
266  fAmpl.f0Plus = -1.* fAmpl.f0Minus;
267  break;
268  }
269  case (kP33_1920) :
270  {
271  double xr = 2*xi*fkr.R;
272  double L2 = TMath::Power(fkr.Lamda, 2);
273  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
274  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
275 
276  fAmpl.fMinus1 = k1_Sqrt15 * L2Rm2xiR;
277  fAmpl.fPlus1 = -k1_Sqrt15 * L2Rp2xiR;
278  fAmpl.fMinus3 = -k1_Sqrt5 * L2Rm2xiR;
279  fAmpl.fPlus3 = k1_Sqrt5 * L2Rp2xiR;
280  fAmpl.f0Minus = -(2./kSqrt15) * (L2 * fkr.C - 5 * fkr.Lamda * fkr.B);
282  break;
283  }
284  case (kF35_1905) :
285  {
286  double xr = 2*xi*fkr.R;
287  double L2 = TMath::Power(fkr.Lamda, 2);
288  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
289  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
290 
291  fAmpl.fMinus1 = k1_Sqrt35 * L2Rm2xiR;
292  fAmpl.fPlus1 = k1_Sqrt35 * L2Rp2xiR;
293  fAmpl.fMinus3 = kSqrt18_35 * L2Rm2xiR;
294  fAmpl.fPlus3 = kSqrt18_35 * L2Rp2xiR;
295  fAmpl.f0Minus = k2_Sqrt35 * L2 * fkr.C;
296  fAmpl.f0Plus = -1. * fAmpl.f0Minus;
297  break;
298  }
299  case (kF37_1950) :
300  {
301  double xr = 2*xi*fkr.R;
302  double L2 = TMath::Power(fkr.Lamda, 2);
303  double L2Rm2xiR = L2 * (fkr.Rminus + xr);
304  double L2Rp2xiR = L2 * (fkr.Rplus + xr);
305 
306  fAmpl.fMinus1 = -kSqrt6_35 * L2Rm2xiR;
307  fAmpl.fPlus1 = kSqrt6_35 * L2Rp2xiR;
308  fAmpl.fMinus3 = -kSqrt2_7 * L2Rm2xiR;
309  fAmpl.fPlus3 = kSqrt2_7 * L2Rp2xiR;
310  fAmpl.f0Minus = 2*kSqrt6_35 * L2 * fkr.C;
312  break;
313  }
314  case (kP11_1710) :
315  {
316  double L2 = TMath::Power(fkr.Lamda, 2);
317  double Rm3xiR = fkr.Rminus + 3*xi*fkr.R;
318  double Rp3xiR = fkr.Rplus + 3*xi*fkr.R;
319  double a = kSqrt3_8 * (1-2*xi) * L2 * fkr.S;
320  double b = k1_Sqrt6 * (L2 * fkr.C - 2 * fkr.Lamda * fkr.B);
321 
322  fAmpl.fMinus1 = k1_Sqrt6 * L2 * Rm3xiR;
323  fAmpl.fPlus1 = k1_Sqrt6 * L2 * Rp3xiR;
324  fAmpl.fMinus3 = 0.;
325  fAmpl.fPlus3 = 0.;
326  fAmpl.f0Minus = a-b;
327  fAmpl.f0Plus = a+b;
328  break;
329  }
330  case (kF17_1970) :
331  {
332  fAmpl.fMinus1 = 0.;
333  fAmpl.fPlus1 = 0.;
334  fAmpl.fMinus3 = 0.;
335  fAmpl.fPlus3 = 0.;
336  fAmpl.f0Minus = 0.;
337  fAmpl.f0Plus = 0.;
338  break;
339  }
340  default:
341  {
342  LOG("RSHAmpl", pWARN) << "*** UNRECOGNIZED RESONANCE!";
343  fAmpl.fMinus1 = 0.;
344  fAmpl.fPlus1 = 0.;
345  fAmpl.fMinus3 = 0.;
346  fAmpl.fPlus3 = 0.;
347  fAmpl.f0Minus = 0.;
348  fAmpl.f0Plus = 0.;
349  break;
350  }
351 
352  }//switch
353 
354  return fAmpl;
355 }
356 //____________________________________________________________________________
358 {
359  Algorithm::Configure(config);
360  this->LoadConfig();
361 }
362 //____________________________________________________________________________
364 {
365  Algorithm::Configure(config);
366  this->LoadConfig();
367 }
368 //____________________________________________________________________________
370 {
371  double thw ;
372  GetParam( "WeinbergAngle", thw ) ;
373  fSin28w = TMath::Power( TMath::Sin(thw), 2 );
374 }
375 //____________________________________________________________________________
376 
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 k1_Sqrt3
Definition: Constants.h:137
static const double k1_Sqrt6
Definition: Constants.h:139
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
const RSHelicityAmpl & Compute(Resonance_t res, const FKR &fkr) const
Pure abstract base class. Defines the RSHelicityAmplModelI interface.
static const double k1_Sqrt24
Definition: Constants.h:143
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
void Configure(const Registry &config)