HerdSoftware  0.4.0
GGSMCTruthReader.h
Go to the documentation of this file.
1 /*
2  * GGSMCTruthReader.h
3  *
4  * Created on: 19 May 2021
5  * Author: Valerio Formato
6  */
7 
10 #ifndef HERD_MCTRUTHREADER_H_
11 #define HERD_MCTRUTHREADER_H_
12 
13 #ifndef GGSSMARTLOG_H_
14 #define HERD_MCTRUTHREADER_H_UNDEF_LOGGING
15 #endif
16 
17 // GGS headers
18 #include "montecarlo/readers/GGSTHadrIntReader.h"
19 #include "montecarlo/readers/GGSTMCTruthReader.h"
20 #include "montecarlo/readers/GGSTPrimaryDisReader.h"
21 #include "montecarlo/readers/GGSTRootReader.h"
22 
23 #ifdef HERD_MCTRUTHREADER_H_UNDEF_LOGGING
24 // Remove the definitions of GGS output macros (would conflict with the same macros defined in EventAnalysis)
25 // We only do this if GGSSmartLog.h is being parsed in this TU, otherwise there would be nothing to undef
26 // (or we could even be undefining the EA macros)
27 #undef COUT
28 #undef CCOUT
29 #undef ENDL
30 #endif
31 
32 // EA headers
33 #include "core/ObjectWrapper.h"
34 #include "core/RetrievalResult.h"
35 #include "utils/Memory.h"
36 
37 // HerdSoftware headers
40 
41 // c++ headers
42 #include <string>
43 
44 namespace Herd::Readers {
45 // clang-format off
51 // clang-format on
53 public:
54  GGSMCTruthReader(std::shared_ptr<GGSTRootReader> ggsReader)
55  : m_ggsReader{ggsReader}, m_mcReader{m_ggsReader->GetReader<GGSTMCTruthReader>()} {};
56 
65  bool IsMCTruthAvailable();
66 
73  EA::RetrievalResult GetMCTruth(EA::ObjectWrapper &wrapper);
74 
75 private:
76  std::shared_ptr<GGSTRootReader> m_ggsReader;
77  GGSTMCTruthReader *m_mcReader = nullptr;
78  GGSTHadrIntReader *m_hadrIntReader = nullptr;
79  GGSTPrimaryDisReader *m_primDisReader = nullptr;
80  long long int m_lastReadEvent = std::numeric_limits<unsigned long long>::max();
81 
83  bool m_mcTruthRead = false;
84  bool m_hadrIntChecked = false;
85  bool m_PrimDisAvailable = false;
86 };
87 } // namespace Herd::Readers
88 
89 #endif
Herd::Readers::GGSMCTruthReader::m_hadrIntReader
GGSTHadrIntReader * m_hadrIntReader
Definition: GGSMCTruthReader.h:78
Herd::Readers::GGSMCTruthReader::IsMCTruthAvailable
bool IsMCTruthAvailable()
Checks if the MCTruth info is available in the simulation file.
Definition: GGSMCTruthReader.cpp:11
Herd::Readers
Definition: GGSCaloHitsReader.h:43
MCTruth.h
Herd::Readers::GGSMCTruthReader::m_hadrIntChecked
bool m_hadrIntChecked
Definition: GGSMCTruthReader.h:84
Herd::Readers::GGSMCTruthReader::GetMCTruth
EA::RetrievalResult GetMCTruth(EA::ObjectWrapper &wrapper)
Get the MCTruth.
Definition: GGSMCTruthReader.cpp:29
Herd::Readers::GGSMCTruthReader::m_PrimDisAvailable
bool m_PrimDisAvailable
Definition: GGSMCTruthReader.h:85
Herd::Readers::GGSMCTruthReader::m_lastReadEvent
long long int m_lastReadEvent
Definition: GGSMCTruthReader.h:80
Herd::Readers::GGSMCTruthReader::m_primDisReader
GGSTPrimaryDisReader * m_primDisReader
Definition: GGSMCTruthReader.h:79
Herd::Readers::GGSMCTruthReader::m_mcReader
GGSTMCTruthReader * m_mcReader
Definition: GGSMCTruthReader.h:77
Herd::Readers::GGSMCTruthReader::m_mcTruth
MCTruth m_mcTruth
Definition: GGSMCTruthReader.h:82
Herd::Readers::GGSMCTruthReader::GGSMCTruthReader
GGSMCTruthReader(std::shared_ptr< GGSTRootReader > ggsReader)
Definition: GGSMCTruthReader.h:54
DefaultValues.h
Herd::MCTruth
Data structure for the Monte Carlo truth of each event.
Definition: MCTruth.h:24
Herd::Readers::GGSMCTruthReader
MCTruth reader class.
Definition: GGSMCTruthReader.h:52
Herd::Readers::GGSMCTruthReader::m_ggsReader
std::shared_ptr< GGSTRootReader > m_ggsReader
Definition: GGSMCTruthReader.h:76
Herd::Readers::GGSMCTruthReader::m_mcTruthRead
bool m_mcTruthRead
Definition: GGSMCTruthReader.h:83