GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
KinePhaseSpace.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::KinePhaseSpace
5 
6 \brief Enumeration of kinematical phase spaces
7 
8 \author Costas Andreopoulos <c.andreopoulos \at cern.ch>
9  University of Liverpool
10 
11 \created May 06, 2004
12 
13 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
14  For the full text of the license visit http://copyright.genie-mc.org
15 */
16 //____________________________________________________________________________
17 
18 #ifndef _KINEMATIC_PHASE_SPACE_ENUM_H_
19 #define _KINEMATIC_PHASE_SPACE_ENUM_H_
20 
21 #include <cassert>
22 #include <string>
23 
24 using std::string;
25 
26 namespace genie {
27 // Note: please attach new phase space enum element to the end of the list .
28 typedef enum EKinePhaseSpace {
29  kPSNull = 0,
66  kPSQELEvGen,// Phase space used by genie::QELEventGenerator for sampling kinematic variables
67  // TODO: rename this value when the correct variables are identified
70  kPSDMELEvGen, // Equivalent to kPSQELEvGen for Dark Matter scattering
73  kPSEDNufE, // Used for Dark Neutrinos, two body final state
80 
82 {
83 public:
84  //__________________________________________________________________________
85  static string AsString(KinePhaseSpace_t kps)
86  {
87  switch (kps) {
88 
89  case(kPSNull) :
90  return "** Undefined kinematic phase space **"; break;
91  case(kPSfE) : return "<|E>"; break;
92  case(kPSxfE) : return "<{x}|E>"; break;
93  case(kPSlogxfE) : return "<{logx}|E>"; break;
94  case(kPSxfEy) : return "<{x}|E,y>"; break;
95  case(kPSlogxfEy) : return "<{logx}|E,y>"; break;
96  case(kPSyfE) : return "<{y}|E>"; break;
97  case(kPSlogyfE) : return "<{logy}|E>"; break;
98  case(kPSyfEx) : return "<{y}|E,x>"; break;
99  case(kPSlogyfEx) : return "<{logy}|E,x>"; break;
100  case(kPSlogxlogyfE) : return "<{logx,logy}|E>"; break;
101  case(kPSxyfE) : return "<{x,y}|E>"; break;
102  case(kPSxQ2fE) : return "<{x,Q2}|E>"; break;
103  case(kPSQ2fE) : return "<{Q2}|E>"; break;
104  case(kPSQD2fE) : return "<{QD2}|E>"; break;
105  case(kPSlogQ2fE) : return "<{logQ2}|E>"; break;
106  case(kPSQ2fEW) : return "<{Q2}|E,W>"; break;
107  case(kPSlogQ2fEW) : return "<{logQ2}|E,W>"; break;
108  case(kPSq2fE) : return "<{q2}|E>"; break;
109  case(kPSq2fEW) : return "<{q2}|E,W>"; break;
110  case(kPSWfE) : return "<{W}|E>"; break;
111  case(kPSWfEQ2) : return "<{W}|E,Q2>"; break;
112  case(kPSWfEq2) : return "<{W}|E,q2>"; break;
113  case(kPSWQ2fE) : return "<{W,Q2}|E>"; break;
114  case(kPSWQD2fE) : return "<{W,QD2}|E>"; break;
115  case(kPSW2Q2fE) : return "<{W2,Q2}|E>"; break;
116  case(kPSWlogQ2fE) : return "<{W,logQ2}|E>"; break;
117  case(kPSW2logQ2fE) : return "<{W2,logQ2}|E>"; break;
118  case(kPSWq2fE) : return "<{W,q2}|E>"; break;
119  case(kPSW2q2fE) : return "<{W2,q2}|E>"; break;
120  case(kPSxytfE) : return "<{x,y,t}|E>"; break;
121  case(kPSQ2yfE) : return "<{Q2,y}|E>"; break;
122  case(kPSlogQ2logyfE): return "<{Q2,y}|E>"; break;
123  case(kPSTlctl) : return "<{Tl,cos(theta_l)}|E>"; break;
124  case(kPSElOlOpifE) : return "<{El,Omega_l,Omega_pi}|E>"; break;
125  case(kPSEgTlOgfE) : return "<{Egamma,Theta_l,Omega_gamma}|E>"; break;
126  case(kPSElOlTpifE) : return "<{El,Omega_l,Theta_pi}|E>"; break;
127  case(kPSTkTlctl) : return "<{Tk,Tl,cos(theta_l)}|E>"; break;
128  case(kPSQ2vfE) : return "<{Q2,v}|E>"; break;
129  case(kPSQ2vpfE) : return "<{Q2,v,p}|E>"; break;
130  // TODO: update this string when the appropriate kinematic variables are known
131  case(kPSQELEvGen) : return "<QELEvGen>"; break;
132  case(kPSDMELEvGen) : return "<DMELEvGen>"; break;
133  case(kPSTAfE) : return "<{TA}|E>"; break;
134  case(kPSlog10xlog10Q2fE) : return "<{log10x,log10Q2}|E>"; break;
135  case(kPSEDNufE) : return "<{EDNu}|E>"; break;
136  case(kPSn1n2fE) : return "<{n1,n2}|E>"; break;
137  case(kPSn1n2n3fE) : return "<{n1,n2,n3}|E>"; break;
138  case(kPSWQ2ctpphipfE): return "<{W, Q2, cost(theta_pion), phi_pion}|E>"; break;
139  case(kPSWQ2ctpfE) : return "<{W, Q2, cost(theta_pion)}|E>"; break;
140  }
141  return "** Undefined kinematic phase space **";
142  }
143  //__________________________________________________________________________
144 };
145 
146 } // genie namespace
147 
148 #endif // _KINEMATIC_PHASE_SPACE_ENUM_H_
enum genie::EKinePhaseSpace KinePhaseSpace_t
static string AsString(KinePhaseSpace_t kps)
Enumeration of kinematical phase spaces.