HerdSoftware  0.3.2
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
38 #include "common/DefaultValues.h"
39 #include "dataobjects/MCTruth.h"
40 
41 // c++ headers
42 #include <string>
43 
44 using namespace EA;
45 
46 namespace Herd {
47 
48 // TODO: write doxygen doc
49 
50 namespace Readers {
51 // clang-format off
57 // clang-format on
59 public:
60  GGSMCTruthReader(std::shared_ptr<GGSTRootReader> ggsReader)
61  : m_ggsReader{ggsReader}, m_mcReader{m_ggsReader->GetReader<GGSTMCTruthReader>()} {};
62 
71  bool IsMCTruthAvailable();
72 
79  RetrievalResult GetMCTruth(ObjectWrapper &wrapper);
80 
81 private:
82  std::shared_ptr<GGSTRootReader> m_ggsReader;
83  GGSTMCTruthReader *m_mcReader = nullptr;
84  GGSTHadrIntReader *m_hadrIntReader = nullptr;
85  GGSTPrimaryDisReader *m_primDisReader = nullptr;
86  long long int m_lastReadEvent = std::numeric_limits<unsigned long long>::max();
87 
89  bool m_mcTruthRead = false;
90  bool m_hadrIntChecked = false;
91  bool m_PrimDisAvailable = false;
92 };
93 } // namespace Readers
94 } // namespace Herd
95 
96 #endif
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:24
GGSMCTruthReader(std::shared_ptr< GGSTRootReader > ggsReader)
Definition: GGSMCTruthReader.h:60
std::shared_ptr< GGSTRootReader > m_ggsReader
Definition: GGSMCTruthReader.h:82
Data structure for the Monte Carlo truth of each event.
Definition: MCTruth.h:24
MCTruth reader class.
Definition: GGSMCTruthReader.h:58
MCTruth m_mcTruth
Definition: GGSMCTruthReader.h:88