GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Static Public Member Functions | List of all members
genie::SppChannel Class Reference

Enumeration of single pion production channels. More...

#include <SppChannel.h>

Static Public Member Functions

static string AsString (SppChannel_t channel)
 
static int InitStateNucleon (SppChannel_t channel)
 
static int FinStateNucleon (SppChannel_t channel)
 
static int FinStatePion (SppChannel_t channel)
 
static int ResonanceCharge (SppChannel_t channel)
 
static int FinStateIsospin (SppChannel_t channel)
 
static double IsospinWeight (SppChannel_t channel, Resonance_t res)
 
static double Isospin3Coefficients (SppChannel_t channel)
 
static double Isospin1Coefficients (SppChannel_t channel)
 
static double BranchingRatio (Resonance_t res)
 
static SppChannel_t FromInteraction (const Interaction *interaction)
 

Detailed Description

Enumeration of single pion production channels.

Authors
Costas Andreopoulos <c.andreopoulos cern.ch> University of Liverpool
Igor Kakorin kakor.nosp@m.in@j.nosp@m.inr.r.nosp@m.u Joint Institute for Nuclear Research
Created:
December 16, 2004

November 12, 2019 Added extra functions for MK model.
Branching ratios are looked in particle database now.

License:
Copyright (c) 2003-2024, The GENIE Collaboration For the full text of the license visit http://copyright.genie-mc.org

Definition at line 71 of file SppChannel.h.

Member Function Documentation

static string genie::SppChannel::AsString ( SppChannel_t  channel)
inlinestatic

Definition at line 76 of file SppChannel.h.

References genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, and genie::kSpp_vp_nc_10010.

Referenced by genie::SPPXSecWithCache::CacheBranchName(), genie::SPPXSecWithCache::CacheResExcitationXSec(), genie::SPPXSec::Integrate(), genie::ReinSehgalSPPXSec::Integrate(), genie::ReinSehgalSPPPXSec::ValidProcess(), and genie::ReinSehgalSPPPXSec::XSecNRES().

77  {
78  switch (channel) {
79 
80  case (kSpp_vp_cc_10100) : return "v p -> l- p pi+"; break;
81  case (kSpp_vn_cc_10010) : return "v n -> l- p pi0"; break;
82  case (kSpp_vn_cc_01100) : return "v n -> l- n pi+"; break;
83 
84  case (kSpp_vp_nc_10010) : return "v p -> v p pi0"; break;
85  case (kSpp_vp_nc_01100) : return "v p -> v n pi+"; break;
86  case (kSpp_vn_nc_01010) : return "v n -> v n pi0"; break;
87  case (kSpp_vn_nc_10001) : return "v n -> v p pi-"; break;
88 
89  case (kSpp_vbn_cc_01001): return "vb n -> l+ n pi-"; break;
90  case (kSpp_vbp_cc_01010): return "vb p -> l+ n pi0"; break;
91  case (kSpp_vbp_cc_10001): return "vb p -> l+ p pi-"; break;
92 
93  case (kSpp_vbp_nc_10010): return "vb p -> vb p pi0"; break;
94  case (kSpp_vbp_nc_01100): return "vb p -> vb n pi+"; break;
95  case (kSpp_vbn_nc_01010): return "vb n -> vb n pi0"; break;
96  case (kSpp_vbn_nc_10001): return "vb n -> vb p pi-"; break;
97 
98  default : return "Unknown"; break;
99  }
100  return "Unknown";
101  }
static double genie::SppChannel::BranchingRatio ( Resonance_t  res)
inlinestatic

Definition at line 357 of file SppChannel.h.

References genie::PDGLibrary::Find(), genie::gAbortingInErr, genie::PDGLibrary::Instance(), genie::pdg::IsNucleon(), genie::pdg::IsPion(), LOG, genie::utils::res::PdgCode(), pFATAL, and genie::units::second.

Referenced by genie::ReinSehgalSPPXSec::Integrate(), genie::MKSPPPXSec2020::XSec(), and genie::ReinSehgalSPPPXSec::XSecNRES().

358  {
359  // return the BR for the decay of the input resonance to the final state: nucleon + pion.
360  // get list of TDecayChannels, match one with the input channel and get
361  // the branching ratio.
362  static std::map<Resonance_t, double> cache ;
363 
364  auto it = cache.find( res ) ;
365  if ( it != cache.end() ) {
366  return it -> second ;
367  }
368 
369  double BR = 0. ;
370 
371  PDGLibrary * pdglib = PDGLibrary::Instance();
372  // the charge of resonance does not matter
373  int pdg = genie::utils::res::PdgCode(res, 0);
374  TParticlePDG * res_pdg = pdglib->Find( pdg );
375  if (res_pdg != 0)
376  {
377  for (int nch = 0; nch < res_pdg->NDecayChannels(); nch++)
378  {
379  TDecayChannel * ch = res_pdg->DecayChannel(nch);
380  if (ch->NDaughters() == 2)
381  {
382  int first_daughter_pdg = ch->DaughterPdgCode (0);
383  int second_daughter_pdg = ch->DaughterPdgCode (1);
384  if ((genie::pdg::IsNucleon(first_daughter_pdg ) && genie::pdg::IsPion(second_daughter_pdg)) ||
385  (genie::pdg::IsNucleon(second_daughter_pdg) && genie::pdg::IsPion(first_daughter_pdg )))
386  {
387  BR += ch->BranchingRatio();
388  }
389  }
390  }
391  cache[res] = BR;
392  return BR;
393  }
394 
395  // should not be here - meaningless to return anything
396  gAbortingInErr = true;
397  LOG("SppChannel", pFATAL) << "Unknown resonance " << res;
398  exit(1);
399 
400  }
bool IsPion(int pdgc)
Definition: PDGUtils.cxx:326
bool IsNucleon(int pdgc)
Definition: PDGUtils.cxx:346
#define pFATAL
Definition: Messenger.h:56
static constexpr double second
Definition: Units.h:37
int PdgCode(Resonance_t res, int Q)
(resonance id, charge) -&gt; PDG code
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
Definition: Messenger.h:96
static PDGLibrary * Instance(void)
Definition: PDGLibrary.cxx:68
bool gAbortingInErr
Definition: Messenger.cxx:34
static int genie::SppChannel::FinStateIsospin ( SppChannel_t  channel)
inlinestatic

Definition at line 211 of file SppChannel.h.

References genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, and genie::kSpp_vp_nc_10010.

Referenced by genie::MKSPPPXSec2020::XSec().

212  {
213  switch (channel) {
214 
215  case (kSpp_vp_cc_10100) : return 3; break;
216  case (kSpp_vn_cc_10010) : return 1; break;
217  case (kSpp_vn_cc_01100) : return 1; break;
218 
219  case (kSpp_vp_nc_10010) : return 1; break;
220  case (kSpp_vp_nc_01100) : return 1; break;
221  case (kSpp_vn_nc_01010) : return 1; break;
222  case (kSpp_vn_nc_10001) : return 1; break;
223 
224  case (kSpp_vbn_cc_01001): return 3; break;
225  case (kSpp_vbp_cc_01010): return 1; break;
226  case (kSpp_vbp_cc_10001): return 1; break;
227 
228  case (kSpp_vbp_nc_10010): return 1; break;
229  case (kSpp_vbp_nc_01100): return 1; break;
230  case (kSpp_vbn_nc_01010): return 1; break;
231  case (kSpp_vbn_nc_10001): return 1; break;
232 
233  default : return 0; break;
234  }
235  return 0;
236  }
static int genie::SppChannel::FinStateNucleon ( SppChannel_t  channel)
inlinestatic

Definition at line 130 of file SppChannel.h.

References genie::kPdgNeutron, genie::kPdgProton, genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, and genie::kSpp_vp_nc_10010.

Referenced by genie::RSPPInteractionListGenerator::AddFinalStateInfo(), genie::RSPPHadronicSystemGenerator::AddResonanceDecayProducts(), and genie::KPhaseSpace::WLim_SPP().

131  {
132  switch (channel) {
133 
134  case (kSpp_vp_cc_10100) : return kPdgProton; break;
135  case (kSpp_vn_cc_10010) : return kPdgProton; break;
136  case (kSpp_vn_cc_01100) : return kPdgNeutron; break;
137 
138  case (kSpp_vp_nc_10010) : return kPdgProton; break;
139  case (kSpp_vp_nc_01100) : return kPdgNeutron; break;
140  case (kSpp_vn_nc_01010) : return kPdgNeutron; break;
141  case (kSpp_vn_nc_10001) : return kPdgProton; break;
142 
143  case (kSpp_vbn_cc_01001): return kPdgNeutron; break;
144  case (kSpp_vbp_cc_01010): return kPdgNeutron; break;
145  case (kSpp_vbp_cc_10001): return kPdgProton; break;
146 
147  case (kSpp_vbp_nc_10010): return kPdgProton; break;
148  case (kSpp_vbp_nc_01100): return kPdgNeutron; break;
149  case (kSpp_vbn_nc_01010): return kPdgNeutron; break;
150  case (kSpp_vbn_nc_10001): return kPdgProton; break;
151 
152  default : return 0; break;
153  }
154  return 0;
155  }
const int kPdgProton
Definition: PDGCodes.h:81
const int kPdgNeutron
Definition: PDGCodes.h:83
static int genie::SppChannel::FinStatePion ( SppChannel_t  channel)
inlinestatic

Definition at line 157 of file SppChannel.h.

References genie::kPdgPi0, genie::kPdgPiM, genie::kPdgPiP, genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, and genie::kSpp_vp_nc_10010.

Referenced by genie::RSPPInteractionListGenerator::AddFinalStateInfo(), genie::RSPPHadronicSystemGenerator::AddResonanceDecayProducts(), and genie::KPhaseSpace::WLim_SPP().

158  {
159  switch (channel) {
160 
161  case (kSpp_vp_cc_10100) : return kPdgPiP; break;
162  case (kSpp_vn_cc_10010) : return kPdgPi0; break;
163  case (kSpp_vn_cc_01100) : return kPdgPiP; break;
164 
165  case (kSpp_vp_nc_10010) : return kPdgPi0; break;
166  case (kSpp_vp_nc_01100) : return kPdgPiP; break;
167  case (kSpp_vn_nc_01010) : return kPdgPi0; break;
168  case (kSpp_vn_nc_10001) : return kPdgPiM; break;
169 
170  case (kSpp_vbn_cc_01001): return kPdgPiM; break;
171  case (kSpp_vbp_cc_01010): return kPdgPi0; break;
172  case (kSpp_vbp_cc_10001): return kPdgPiM; break;
173 
174  case (kSpp_vbp_nc_10010): return kPdgPi0; break;
175  case (kSpp_vbp_nc_01100): return kPdgPiP; break;
176  case (kSpp_vbn_nc_01010): return kPdgPi0; break;
177  case (kSpp_vbn_nc_10001): return kPdgPiM; break;
178 
179  default : return 0; break;
180  }
181  return 0;
182  }
const int kPdgPiP
Definition: PDGCodes.h:158
const int kPdgPi0
Definition: PDGCodes.h:160
const int kPdgPiM
Definition: PDGCodes.h:159
static SppChannel_t genie::SppChannel::FromInteraction ( const Interaction interaction)
inlinestatic

Definition at line 402 of file SppChannel.h.

References genie::Interaction::ExclTag(), genie::Target::HitNucPdg(), genie::Interaction::InitState(), genie::pdg::IsAntiNeutrino(), genie::pdg::IsNeutrino(), genie::pdg::IsNeutronOrProton(), genie::pdg::IsProton(), genie::ProcessInfo::IsSinglePion(), genie::ProcessInfo::IsWeakCC(), genie::ProcessInfo::IsWeakNC(), genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, genie::kSpp_vp_nc_10010, genie::kSppNull, genie::XclsTag::NNeutrons(), genie::XclsTag::NNucleons(), genie::XclsTag::NPi0(), genie::XclsTag::NPiMinus(), genie::XclsTag::NPions(), genie::XclsTag::NPiPlus(), genie::XclsTag::NProtons(), genie::InitialState::ProbePdg(), genie::Interaction::ProcInfo(), and genie::InitialState::Tgt().

Referenced by genie::RSPPHadronicSystemGenerator::AddResonanceDecayProducts(), genie::SPPXSecWithCache::CacheResExcitationXSec(), genie::SPPXSec::Integrate(), genie::ReinSehgalSPPXSec::Integrate(), genie::KPhaseSpace::Q2Lim_W_SPP(), genie::ReinSehgalSPPPXSec::ValidProcess(), genie::MKSPPPXSec2020::ValidProcess(), genie::KPhaseSpace::WLim_SPP(), genie::MKSPPPXSec2020::XSec(), and genie::ReinSehgalSPPPXSec::XSecNRES().

403  {
404  const InitialState & init_state = interaction->InitState();
405  const ProcessInfo & proc_info = interaction->ProcInfo();
406  if ( !proc_info.IsSinglePion() ) return kSppNull;
407 
408  const XclsTag & xcls_tag = interaction->ExclTag();
409  if( xcls_tag.NPions() != 1 ) return kSppNull;
410  if( xcls_tag.NNucleons() != 1 ) return kSppNull;
411 
412  // get struck nucleon
413  int hit_nucl_pdgc = init_state.Tgt().HitNucPdg();
414  if( ! pdg::IsNeutronOrProton(hit_nucl_pdgc) ) return kSppNull;
415  bool hit_p = pdg::IsProton(hit_nucl_pdgc);
416  bool hit_n = !hit_p;
417 
418  // the final state hadronic sytem has 1 pi and 1 nucleon
419  bool fs_pi_plus = ( xcls_tag.NPiPlus() == 1 );
420  bool fs_pi_minus = ( xcls_tag.NPiMinus() == 1 );
421  bool fs_pi_0 = ( xcls_tag.NPi0() == 1 );
422  bool fs_p = ( xcls_tag.NProtons() == 1 );
423  bool fs_n = ( xcls_tag.NNeutrons() == 1 );
424 
425  // get probe
426  int probe = init_state.ProbePdg();
427 
428  // figure out spp channel
429  if( pdg::IsNeutrino(probe) ) {
430 
431  if ( proc_info.IsWeakCC() ) {
432  if (hit_p && fs_p && fs_pi_plus ) return kSpp_vp_cc_10100;
433  else if (hit_n && fs_p && fs_pi_0 ) return kSpp_vn_cc_10010;
434  else if (hit_n && fs_n && fs_pi_plus ) return kSpp_vn_cc_01100;
435  else return kSppNull;
436  } else if ( proc_info.IsWeakNC() ) {
437  if (hit_p && fs_p && fs_pi_0 ) return kSpp_vp_nc_10010;
438  else if (hit_p && fs_n && fs_pi_plus ) return kSpp_vp_nc_01100;
439  else if (hit_n && fs_n && fs_pi_0 ) return kSpp_vn_nc_01010;
440  else if (hit_n && fs_p && fs_pi_minus) return kSpp_vn_nc_10001;
441  else return kSppNull;
442  } else return kSppNull;
443 
444  } else if( pdg::IsAntiNeutrino(probe) ) {
445 
446  if ( proc_info.IsWeakCC() ) {
447  if (hit_n && fs_n && fs_pi_minus) return kSpp_vbn_cc_01001;
448  else if (hit_p && fs_n && fs_pi_0 ) return kSpp_vbp_cc_01010;
449  else if (hit_p && fs_p && fs_pi_minus) return kSpp_vbp_cc_10001;
450  else return kSppNull;
451  } else if ( proc_info.IsWeakNC() ) {
452  if (hit_p && fs_p && fs_pi_0 ) return kSpp_vbp_nc_10010;
453  else if (hit_p && fs_n && fs_pi_plus ) return kSpp_vbp_nc_01100;
454  else if (hit_n && fs_n && fs_pi_0 ) return kSpp_vbn_nc_01010;
455  else if (hit_n && fs_p && fs_pi_minus) return kSpp_vbn_nc_10001;
456  else return kSppNull;
457  } else return kSppNull;
458  }
459 
460  return kSppNull;
461  }
bool IsNeutrino(int pdgc)
Definition: PDGUtils.cxx:110
bool IsProton(int pdgc)
Definition: PDGUtils.cxx:336
bool IsAntiNeutrino(int pdgc)
Definition: PDGUtils.cxx:118
bool IsNeutronOrProton(int pdgc)
Definition: PDGUtils.cxx:351
static int genie::SppChannel::InitStateNucleon ( SppChannel_t  channel)
inlinestatic

Definition at line 103 of file SppChannel.h.

References genie::kPdgNeutron, genie::kPdgProton, genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, and genie::kSpp_vp_nc_10010.

Referenced by genie::RSPPInteractionListGenerator::CreateInteractionList(), genie::SPPXSec::Integrate(), genie::KPhaseSpace::Q2Lim_W_SPP(), and genie::MKSPPPXSec2020::XSec().

104  {
105  switch (channel) {
106 
107  case (kSpp_vp_cc_10100) : return kPdgProton; break;
108  case (kSpp_vn_cc_10010) : return kPdgNeutron; break;
109  case (kSpp_vn_cc_01100) : return kPdgNeutron; break;
110 
111  case (kSpp_vp_nc_10010) : return kPdgProton; break;
112  case (kSpp_vp_nc_01100) : return kPdgProton; break;
113  case (kSpp_vn_nc_01010) : return kPdgNeutron; break;
114  case (kSpp_vn_nc_10001) : return kPdgNeutron; break;
115 
116  case (kSpp_vbn_cc_01001): return kPdgNeutron; break;
117  case (kSpp_vbp_cc_01010): return kPdgProton; break;
118  case (kSpp_vbp_cc_10001): return kPdgProton; break;
119 
120  case (kSpp_vbp_nc_10010): return kPdgProton; break;
121  case (kSpp_vbp_nc_01100): return kPdgProton; break;
122  case (kSpp_vbn_nc_01010): return kPdgNeutron; break;
123  case (kSpp_vbn_nc_10001): return kPdgNeutron; break;
124 
125  default : return 0; break;
126  }
127  return 0;
128  }
const int kPdgProton
Definition: PDGCodes.h:81
const int kPdgNeutron
Definition: PDGCodes.h:83
static double genie::SppChannel::Isospin1Coefficients ( SppChannel_t  channel)
inlinestatic

Definition at line 317 of file SppChannel.h.

References genie::constants::k1_Sqrt3, genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, genie::kSpp_vp_nc_10010, and genie::constants::kSqrt2_3.

Referenced by genie::MKSPPPXSec2020::XSec().

318  {
319  // return the isospin coefficients for the channel
320  // with final state isospin = 1/2
321 
322  // [p,n,pi+,pi0,pi-]
323  switch (channel) {
324 
325  //-- v CC
326  case (kSpp_vp_cc_10100) : return 0.;
327  case (kSpp_vn_cc_10010) : return k1_Sqrt3;
328  case (kSpp_vn_cc_01100) : return kSqrt2_3;
329 
330  //-- v NC
331  case (kSpp_vp_nc_10010) : return -k1_Sqrt3;
332  case (kSpp_vp_nc_01100) : return -kSqrt2_3;
333  case (kSpp_vn_nc_01010) : return k1_Sqrt3;
334  case (kSpp_vn_nc_10001) : return -kSqrt2_3;
335 
336 
337 
338  //-- vbar CC
339  case (kSpp_vbn_cc_01001): return 0.;
340  case (kSpp_vbp_cc_01010): return k1_Sqrt3;
341  case (kSpp_vbp_cc_10001): return kSqrt2_3;
342 
343  //-- vbar NC
344  case (kSpp_vbp_nc_10010): return -k1_Sqrt3;
345  case (kSpp_vbp_nc_01100): return -kSqrt2_3;
346  case (kSpp_vbn_nc_01010): return k1_Sqrt3;
347  case (kSpp_vbn_nc_10001): return -kSqrt2_3;
348 
349  default : return 0;
350  }
351 
352  }
static double genie::SppChannel::Isospin3Coefficients ( SppChannel_t  channel)
inlinestatic

Definition at line 280 of file SppChannel.h.

References genie::constants::k1_Sqrt3, genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, genie::kSpp_vp_nc_10010, genie::constants::kSqrt2_3, and genie::constants::kSqrt3.

Referenced by genie::MKSPPPXSec2020::XSec().

281  {
282  // return the isospin coefficients for the channel
283  // with final state isospin = 3/2
284 
285  // [p,n,pi+,pi0,pi-]
286  switch (channel) {
287 
288  //-- v CC
289  case (kSpp_vp_cc_10100) : return kSqrt3;
290  case (kSpp_vn_cc_10010) : return -kSqrt2_3;
291  case (kSpp_vn_cc_01100) : return k1_Sqrt3;
292 
293  //-- v NC
294  case (kSpp_vp_nc_10010) : return kSqrt2_3;
295  case (kSpp_vp_nc_01100) : return -k1_Sqrt3;
296  case (kSpp_vn_nc_01010) : return kSqrt2_3;
297  case (kSpp_vn_nc_10001) : return k1_Sqrt3;
298 
299 
300 
301  //-- vbar CC
302  case (kSpp_vbn_cc_01001): return kSqrt3;
303  case (kSpp_vbp_cc_01010): return -kSqrt2_3;
304  case (kSpp_vbp_cc_10001): return k1_Sqrt3;
305 
306  //-- vbar NC
307  case (kSpp_vbp_nc_10010): return kSqrt2_3;
308  case (kSpp_vbp_nc_01100): return -k1_Sqrt3;
309  case (kSpp_vbn_nc_01010): return kSqrt2_3;
310  case (kSpp_vbn_nc_10001): return k1_Sqrt3;
311 
312  default : return 0;
313  }
314 
315  }
static double genie::SppChannel::IsospinWeight ( SppChannel_t  channel,
Resonance_t  res 
)
inlinestatic

Definition at line 238 of file SppChannel.h.

References genie::utils::res::IsDelta(), genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, and genie::kSpp_vp_nc_10010.

Referenced by genie::ReinSehgalSPPXSec::Integrate(), and genie::ReinSehgalSPPPXSec::XSecNRES().

239  {
240  // return the square of isospin Glebsch Gordon coefficient for the input resonance
241  // contribution to the input exclusive channel
242 
243  bool is_delta = utils::res::IsDelta(res);
244 
245  double iw_1_3 = 1./3;
246  double iw_2_3 = 2./3;
247 
248  switch (channel) {
249 
250  //-- v CC
251  case (kSpp_vp_cc_10100) : return (is_delta) ? (1.0) : (0.0); break;
252  case (kSpp_vn_cc_10010) : return (is_delta) ? (iw_2_3) : (iw_1_3); break;
253  case (kSpp_vn_cc_01100) : return (is_delta) ? (iw_1_3) : (iw_2_3); break;
254 
255  //-- v NC
256  case (kSpp_vp_nc_10010) : return (is_delta) ? (iw_2_3) : (iw_1_3); break;
257  case (kSpp_vp_nc_01100) : return (is_delta) ? (iw_1_3) : (iw_2_3); break;
258  case (kSpp_vn_nc_01010) : return (is_delta) ? (iw_2_3) : (iw_1_3); break;
259  case (kSpp_vn_nc_10001) : return (is_delta) ? (iw_1_3) : (iw_2_3); break;
260 
261  //-- same as for neutrinos (? - check)
262 
263  //-- vbar CC
264  case (kSpp_vbn_cc_01001): return (is_delta) ? (1.0) : (0.0); break;
265  case (kSpp_vbp_cc_01010): return (is_delta) ? (iw_2_3) : (iw_1_3); break;
266  case (kSpp_vbp_cc_10001): return (is_delta) ? (iw_1_3) : (iw_2_3); break;
267 
268  //-- vbar NC
269  case (kSpp_vbp_nc_10010): return (is_delta) ? (iw_2_3) : (iw_1_3); break;
270  case (kSpp_vbp_nc_01100): return (is_delta) ? (iw_1_3) : (iw_2_3); break;
271  case (kSpp_vbn_nc_01010): return (is_delta) ? (iw_2_3) : (iw_1_3); break;
272  case (kSpp_vbn_nc_10001): return (is_delta) ? (iw_1_3) : (iw_2_3); break;
273 
274  default : return 0; break;
275  }
276 
277  return 0;
278  }
bool IsDelta(Resonance_t res)
is it a Delta resonance?
static int genie::SppChannel::ResonanceCharge ( SppChannel_t  channel)
inlinestatic

Definition at line 184 of file SppChannel.h.

References genie::kSpp_vbn_cc_01001, genie::kSpp_vbn_nc_01010, genie::kSpp_vbn_nc_10001, genie::kSpp_vbp_cc_01010, genie::kSpp_vbp_cc_10001, genie::kSpp_vbp_nc_01100, genie::kSpp_vbp_nc_10010, genie::kSpp_vn_cc_01100, genie::kSpp_vn_cc_10010, genie::kSpp_vn_nc_01010, genie::kSpp_vn_nc_10001, genie::kSpp_vp_cc_10100, genie::kSpp_vp_nc_01100, and genie::kSpp_vp_nc_10010.

185  {
186  switch (channel) {
187 
188  case (kSpp_vp_cc_10100) : return 2; break;
189  case (kSpp_vn_cc_10010) : return 1; break;
190  case (kSpp_vn_cc_01100) : return 1; break;
191 
192  case (kSpp_vp_nc_10010) : return 1; break;
193  case (kSpp_vp_nc_01100) : return 1; break;
194  case (kSpp_vn_nc_01010) : return 0; break;
195  case (kSpp_vn_nc_10001) : return 0; break;
196 
197  case (kSpp_vbn_cc_01001): return -1; break;
198  case (kSpp_vbp_cc_01010): return 0; break;
199  case (kSpp_vbp_cc_10001): return 0; break;
200 
201  case (kSpp_vbp_nc_10010): return 1; break;
202  case (kSpp_vbp_nc_01100): return 1; break;
203  case (kSpp_vbn_nc_01010): return 0; break;
204  case (kSpp_vbn_nc_10001): return 0; break;
205 
206  default : return 0; break;
207  }
208  return 0;
209  }

The documentation for this class was generated from the following file: