67 if ( interaction->
ProcInfo().
IsEM() ) Q2min = genie::utils::kinematics
68 ::electromagnetic::kMinQ2Limit;
72 double Q2 = Q3*Q3 - Q0*Q0;
73 if ( Q2 < Q2min )
return 0.;
88 int tensor_pdg_susa = target_pdg;
89 int tensor_pdg_crpa = target_pdg;
92 bool need_to_scale_susa =
false;
93 bool need_to_scale_crpa =
false;
136 if(A_request == 40 && Z_request == 18){
181 double Eb_ten_susa=0;
182 double Eb_ten_crpa=0;
184 if ( A_request <= 4 ) {
192 else if (A_request < 9) {
199 else if (A_request >= 9 && A_request < 15) {
206 else if(A_request >= 15 && A_request < 22) {
213 else if(A_request == 40 && Z_request == 18) {
217 tensor_pdg_crpa = 1000180400;
221 else if(A_request >= 22 && A_request < 40) {
228 else if(A_request >= 40 && A_request < 56) {
235 else if(A_request >= 56 && A_request < 119) {
242 else if(A_request >= 119 && A_request < 206) {
249 else if(A_request >= 206) {
257 if (tensor_pdg_susa != target_pdg) need_to_scale_susa =
true;
258 if (tensor_pdg_crpa != target_pdg) need_to_scale_crpa =
true;
270 if ( !tensor_susa ) {
271 LOG(
"SuSAv2QE",
pWARN) <<
"Failed to load a SuSAv2 hadronic tensor for the"
272 " nuclide " << tensor_pdg_susa;
284 if ( !tensor_blen ) {
285 LOG(
"SuSAv2QE",
pWARN) <<
"Failed to load a blending SuSAv2 hadronic tensor for the"
286 " nuclide " << tensor_pdg_crpa;
297 if ( !tensor_crpa ) {
298 LOG(
"SuSAv2QE",
pWARN) <<
"Failed to load a CRPA or HF hadronic tensor for the"
299 " nuclide " << tensor_pdg_crpa;
313 double Delta_Q_value_susa = Eb_tgt-Eb_ten_susa;
314 double Delta_Q_value_crpa = Eb_tgt-Eb_ten_crpa;
315 double Delta_Q_value_blen = Eb_tgt-Eb_ten_crpa;
324 double total_Q_value_susa = tensor_Q_value_susa + Delta_Q_value_susa ;
328 double total_Q_value_crpa = tensor_Q_value_crpa + Delta_Q_value_crpa ;
331 Delta_Q_value_susa += Q_value_shift_susa;
332 Delta_Q_value_crpa += Q_value_shift_crpa;
333 Delta_Q_value_blen += Q_value_shift_crpa;
339 double Q0min = tensor_susa->
q0Min();
340 double Q0max = tensor_susa->
q0Max();
341 double Q3min = tensor_susa->
qMagMin();
342 double Q3max = tensor_susa->
qMagMax();
343 if (Q0-Delta_Q_value_susa < Q0min || Q0-Delta_Q_value_susa > Q0max || Q3 < Q3min || Q3 > Q3max) {
350 double Q0min = tensor_crpa->
q0Min();
351 double Q0max = tensor_crpa->
q0Max();
352 double Q3min = tensor_crpa->
qMagMin();
353 double Q3max = tensor_crpa->
qMagMax();
354 if (Q0-Delta_Q_value_crpa < Q0min || Q0-Delta_Q_value_crpa > Q0max || Q3 < Q3min || Q3 > Q3max) {
360 double Q0min = tensor_blen->
q0Min();
361 double Q0max = tensor_blen->
q0Max();
362 double Q3min = tensor_blen->
qMagMin();
363 double Q3max = tensor_blen->
qMagMax();
364 if (Q0-Delta_Q_value_blen < Q0min || Q0-Delta_Q_value_blen > Q0max || Q3 < Q3min || Q3 > Q3max) {
370 double Q0min = tensor_crpa->
q0Min();
371 double Q0max = tensor_blen->
q0Max();
372 double Q3min = tensor_crpa->
qMagMin();
373 double Q3max = tensor_blen->
qMagMax();
374 if (Q0-Delta_Q_value_crpa < Q0min || Q0-Delta_Q_value_blen > Q0max || Q3 < Q3min || Q3 > Q3max) {
383 double xsec_susa = 0;
384 double xsec_crpa = 0;
385 double xsec_blen = 0;
391 xsec_susa =
XSecScaling(xsec_susa, interaction, target_pdg, tensor_pdg_susa, need_to_scale_susa);
400 LOG(
"SuSAv2QE",
pDEBUG) <<
"SuSAv2 (blending) XSec in cm2 / atom is " << xsec_blen/(
units::cm2);
405 int N_tensor = A_tensor-Z_tensor;
410 xsec_blen =
XSecScaling(xsec_blen, interaction, target_pdg, tensor_pdg_crpa, need_to_scale_crpa);
421 int N_tensor = A_tensor-Z_tensor;
428 xsec_crpa =
XSecScaling(xsec_crpa, interaction, target_pdg, tensor_pdg_crpa, need_to_scale_crpa);
448 double CRPAFrac = 1 - SuSAFrac;
449 xsec = SuSAFrac*xsec_blen + CRPAFrac*xsec_crpa;
450 LOG(
"SuSAv2QE",
pDEBUG) <<
"Q0 is " << Q0;
451 LOG(
"SuSAv2QE",
pDEBUG) <<
"SuSAFrac is " << SuSAFrac;
452 LOG(
"SuSAv2QE",
pDEBUG) <<
"CRPAFrac is " << CRPAFrac;
453 LOG(
"SuSAv2QE",
pDEBUG) <<
"xsec is " << xsec;
457 xsec = TMath::Sin(phi_q)*TMath::Sin(phi_q)*xsec_blen + TMath::Cos(phi_q)*TMath::Cos(phi_q)*xsec_crpa;
458 LOG(
"SuSAv2QE",
pDEBUG) <<
"Q3 is " << Q3;
459 LOG(
"SuSAv2QE",
pDEBUG) <<
"SuSAFrac is " << TMath::Sin(phi_q)*TMath::Sin(phi_q);
460 LOG(
"SuSAv2QE",
pDEBUG) <<
"CRPAFrac is " << TMath::Cos(phi_q)*TMath::Cos(phi_q);
461 LOG(
"SuSAv2QE",
pDEBUG) <<
"xsec is " << xsec;
466 double xsec_scale = 1 ;
475 <<
"Doesn't support transformation from "