ProcessInfo.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::ProcessInfo
5 
6 \brief A class encapsulating an enumeration of interaction types (EM,
7  Weak-CC, Weak-NC) and scattering types (Elastic, Quasi Elastic,
8  Deep Inelastic, Resonant Single Pion Production, Coherent Pion
9  Production).
10 
11 \author Costas Andreopoulos <constantinos.andreopoulos \at cern.ch>
12  University of Liverpool & STFC Rutherford Appleton Laboratory
13 
14  Changes required to implement the GENIE Boosted Dark Matter module
15  were installed by Josh Berger (Univ. of Wisconsin)
16 
17  Changes required to implement the GENIE Dark Neutrino module
18  were installed by Iker de Icaza (Univ. of Sussex)
19 
20 \created May 04, 2004
21 
22 \cpright Copyright (c) 2003-2020, The GENIE Collaboration
23  For the full text of the license visit http://copyright.genie-mc.org
24 */
25 //____________________________________________________________________________
26 
27 #ifndef _PROCESS_INFO_H_
28 #define _PROCESS_INFO_H_
29 
30 #include <iostream>
31 #include <string>
32 
33 #include <TObject.h>
34 
37 
38 using std::ostream;
39 using std::string;
40 
41 namespace genie {
42 
43 class ProcessInfo;
44 ostream & operator << (ostream& stream, const ProcessInfo & proc);
45 
46 class ProcessInfo : public TObject {
47 
48 public:
49  using TObject::Print; // suppress clang 'hides overloaded virtual function [-Woverloaded-virtual]' warnings
50  using TObject::Copy;
51  using TObject::Compare;
52 
53  ProcessInfo();
55  ProcessInfo(const ProcessInfo & proc);
56  ~ProcessInfo();
57 
58  // Set process information
59  void Set(ScatteringType_t sc_type, InteractionType_t int_type);
60 
61  // Query for process information
62  bool IsQuasiElastic (void) const;
63  bool IsDarkMatterElastic (void) const;
64  bool IsDeepInelastic (void) const;
65  bool IsDarkMatterDeepInelastic (void) const;
66  bool IsResonant (void) const;
67  bool IsCoherentProduction (void) const;
68  bool IsCoherentElastic (void) const;
69  bool IsSingleKaon (void) const;
70  bool IsElectronScattering (void) const;
71  bool IsNuElectronElastic (void) const;
72  bool IsInverseMuDecay (void) const;
73  bool IsIMDAnnihilation (void) const;
74  bool IsDarkMatterElectronElastic (void) const;
75  bool IsInverseBetaDecay (void) const;
76  bool IsGlashowResonance (void) const;
77  bool IsAMNuGamma (void) const;
78  bool IsMEC (void) const;
79  bool IsDiffractive (void) const;
80  bool IsEM (void) const;
81  bool IsWeak (void) const;
82  bool IsWeakCC (void) const;
83  bool IsWeakNC (void) const;
84  bool IsWeakMix (void) const;
85  bool IsDarkMatter (void) const;
86  bool IsDarkNeutralCurrent (void) const;
87  bool IsKnown (void) const;
88 
89  // Get scattering and interaction type enumerations
92 
93  // Get scattering and interaction types as strings
94  string ScatteringTypeAsString (void) const;
95  string InteractionTypeAsString (void) const;
96 
97  // Copy, reset, compare, print itself and build string code
98  void Reset (void);
99  void Copy (const ProcessInfo & proc);
100  bool Compare (const ProcessInfo & proc) const;
101  string AsString (void) const;
102  void Print (ostream & stream) const;
103 
104  bool operator == (const ProcessInfo & proc) const;
105  ProcessInfo & operator = (const ProcessInfo & proc);
106  friend ostream & operator << (ostream& stream, const ProcessInfo & proc);
107 
108 private:
109 
110  ScatteringType_t fScatteringType; ///< scattering type (QEL, RES, DIS, ...)
111  InteractionType_t fInteractionType; ///< interaction type (Weak CC/NC, E/M, ...)
112 
114 };
115 
116 } // genie namespace
117 
118 #endif // _PROCESS_INFO_H_
bool IsResonant(void) const
Definition: ProcessInfo.cxx:94
ScatteringType_t fScatteringType
scattering type (QEL, RES, DIS, ...)
Definition: ProcessInfo.h:110
bool IsWeak(void) const
bool IsWeakMix(void) const
bool IsWeakCC(void) const
bool Compare(const ProcessInfo &proc) const
InteractionType_t InteractionTypeId(void) const
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
bool IsDarkMatterElectronElastic(void) const
string ScatteringTypeAsString(void) const
bool IsDarkNeutralCurrent(void) const
std::string string
Definition: nybbler.cc:12
void Print(ostream &stream) const
bool IsInverseMuDecay(void) const
bool IsQuasiElastic(void) const
Definition: ProcessInfo.cxx:69
bool IsElectronScattering(void) const
bool IsInverseBetaDecay(void) const
bool IsDiffractive(void) const
bool IsCoherentProduction(void) const
Definition: ProcessInfo.cxx:99
bool IsIMDAnnihilation(void) const
InteractionType_t fInteractionType
interaction type (Weak CC/NC, E/M, ...)
Definition: ProcessInfo.h:111
void Set(ScatteringType_t sc_type, InteractionType_t int_type)
bool IsKnown(void) const
bool IsSingleKaon(void) const
Definition: ProcessInfo.cxx:79
ProcessInfo & operator=(const ProcessInfo &proc)
bool IsWeakNC(void) const
bool IsCoherentElastic(void) const
bool IsNuElectronElastic(void) const
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
Definition: ProcessInfo.h:46
bool IsAMNuGamma(void) const
string AsString(void) const
string InteractionTypeAsString(void) const
bool IsDarkMatterElastic(void) const
Definition: ProcessInfo.cxx:74
ScatteringType_t ScatteringTypeId(void) const
friend ostream & operator<<(ostream &stream, const ProcessInfo &proc)
bool IsMEC(void) const
bool IsEM(void) const
bool IsDeepInelastic(void) const
Definition: ProcessInfo.cxx:84
enum genie::EScatteringType ScatteringType_t
ostream & operator<<(ostream &stream, const AlgConfigPool &config_pool)
bool IsDarkMatter(void) const
bool operator==(const ProcessInfo &proc) const
bool IsGlashowResonance(void) const
bool IsDarkMatterDeepInelastic(void) const
Definition: ProcessInfo.cxx:89
enum genie::EInteractionType InteractionType_t
void Copy(const ProcessInfo &proc)