HerdSoftware  0.4.0
ParametricGeoCaloReader.h
Go to the documentation of this file.
1 /*
2  * ParametricGeoCaloReader.h
3  *
4  * Created on: 24 May 2021
5  * Author: Valerio Formato
6  */
7 
10 #ifndef HERD_PARAMETRICGEOCALOREADER_H_
11 #define HERD_PARAMETRICGEOCALOREADER_H_
12 
13 #ifndef GGSSMARTLOG_H_
14 #define HERD_PARAMETRICGEOCALOREADER_H_UNDEF_LOGGING
15 #endif
16 
17 // GGS headers
18 #include "montecarlo/readers/GGSTRootReader.h"
19 
20 #ifdef HERD_PARAMETRICGEOCALOREADER_H_UNDEF_LOGGING
21 // Remove the definitions of GGS output macros (would conflict with the same macros defined in EventAnalysis)
22 // We only do this if GGSSmartLog.h is being parsed in this TU, otherwise there would be nothing to undef
23 // (or we could even be undefining the EA macros)
24 #undef COUT
25 #undef CCOUT
26 #undef ENDL
27 #endif
28 
29 // EA headers
30 #include "core/ObjectWrapper.h"
31 #include "core/RetrievalResult.h"
32 #include "utils/Memory.h"
33 
34 // HerdSoftware headers
37 
38 // c++ headers
39 #include <functional>
40 #include <string>
41 
42 namespace Herd::Readers {
43 // clang-format off
49 // clang-format on
51 public:
52  ParametricGeoCaloReader(std::shared_ptr<GGSTRootReader> ggsReader) : m_ggsReader{ggsReader}, m_sameIDs{false} {};
53 
55  EA::RetrievalResult CaloGeoParams(EA::ObjectWrapper &wrapper);
56 
65  std::function<unsigned int(const float *)> CaloHitIDFromGGSPos() { return m_caloVolIDFromGGSPos; };
66  std::function<unsigned int(const float *)> CaloLpdHitIDFromGGSPos() { return m_caloLpdVolIDFromGGSPos; };
67  std::function<unsigned int(const float *)> CaloSpdHitIDFromGGSPos() { return m_caloSpdVolIDFromGGSPos; };
68 
73  bool SameIDs() { return m_sameIDs; };
74 
75 private:
77 
78  std::shared_ptr<GGSTRootReader> m_ggsReader;
79 
81  std::function<unsigned int(const float *)> m_caloVolIDFromGGSPos;
82  std::function<unsigned int(const float *)> m_caloLpdVolIDFromGGSPos;
83  std::function<unsigned int(const float *)> m_caloSpdVolIDFromGGSPos;
84 
85  bool m_geoParamsRead = false;
86  bool m_sameIDs; // If true then the GGS volume IDs are equal to HS IDs
87 
88  // Methods used for cube mask, which contains the GGS ID
89  unsigned int CaloHitIDFromGGSID(int iGGSCubeID, CaloGeoParamsHelpValues caloValues);
90  unsigned int CaloLpdHitIDFromGGSID(int iGGSLpdID, CaloGeoParamsHelpValues caloValues);
91  unsigned int CaloSpdHitIDFromGGSID(int iGGSSpdID, CaloGeoParamsHelpValues caloValues);
92 };
93 } // namespace Herd::Readers
94 
95 #endif
Herd::Readers::ParametricGeoCaloReader::CaloGeoParams
EA::RetrievalResult CaloGeoParams(EA::ObjectWrapper &wrapper)
Definition: ParametricGeoCaloReader.cpp:62
Herd::Readers::ParametricGeoCaloReader::CaloHitIDFromGGSID
unsigned int CaloHitIDFromGGSID(int iGGSCubeID, CaloGeoParamsHelpValues caloValues)
Definition: ParametricGeoCaloReader.cpp:390
Herd::Readers::ParametricGeoCaloReader::CaloSpdHitIDFromGGSID
unsigned int CaloSpdHitIDFromGGSID(int iGGSSpdID, CaloGeoParamsHelpValues caloValues)
Herd::Readers::ParametricGeoCaloReader
CaloGeoParams reader class.
Definition: ParametricGeoCaloReader.h:50
Herd::Readers
Definition: GGSCaloHitsReader.h:43
Herd::Readers::ParametricGeoCaloReader::ParametricGeoCaloReader
ParametricGeoCaloReader(std::shared_ptr< GGSTRootReader > ggsReader)
Definition: ParametricGeoCaloReader.h:52
Herd::Readers::ParametricGeoCaloReader::CaloHitIDFromGGSPos
std::function< unsigned int(const float *)> CaloHitIDFromGGSPos()
Get the volID calculator for the calorimeter.
Definition: ParametricGeoCaloReader.h:65
Herd::Readers::ParametricGeoCaloReader::m_caloSpdVolIDFromGGSPos
std::function< unsigned int(const float *)> m_caloSpdVolIDFromGGSPos
Definition: ParametricGeoCaloReader.h:83
Herd::Readers::ParametricGeoCaloReader::m_ggsReader
std::shared_ptr< GGSTRootReader > m_ggsReader
Definition: ParametricGeoCaloReader.h:76
Herd::Readers::ParametricGeoCaloReader::CaloGeoParamsHelpValues
Definition: ParametricGeoCaloReader.cpp:6
Herd::CaloGeoParams
Data structure for the Calo geometry parameters.
Definition: CaloGeoParams.h:35
CaloGeoParams.h
Herd::Readers::ParametricGeoCaloReader::CaloLpdHitIDFromGGSID
unsigned int CaloLpdHitIDFromGGSID(int iGGSLpdID, CaloGeoParamsHelpValues caloValues)
Herd::Readers::ParametricGeoCaloReader::m_geoParamsRead
bool m_geoParamsRead
Definition: ParametricGeoCaloReader.h:85
Herd::Readers::ParametricGeoCaloReader::m_caloGeoParams
Herd::CaloGeoParams m_caloGeoParams
Definition: ParametricGeoCaloReader.h:80
Herd::Readers::ParametricGeoCaloReader::m_sameIDs
bool m_sameIDs
Definition: ParametricGeoCaloReader.h:86
Herd::Readers::ParametricGeoCaloReader::CaloLpdHitIDFromGGSPos
std::function< unsigned int(const float *)> CaloLpdHitIDFromGGSPos()
Definition: ParametricGeoCaloReader.h:66
DefaultValues.h
Herd::Readers::ParametricGeoCaloReader::m_caloLpdVolIDFromGGSPos
std::function< unsigned int(const float *)> m_caloLpdVolIDFromGGSPos
Definition: ParametricGeoCaloReader.h:82
Herd::Readers::ParametricGeoCaloReader::IsCaloGeoParamsAvailable
bool IsCaloGeoParamsAvailable()
Definition: ParametricGeoCaloReader.cpp:46
Herd::Readers::ParametricGeoCaloReader::SameIDs
bool SameIDs()
Tells if GGS and HS volume IDs are the same for the current CALO geometry.
Definition: ParametricGeoCaloReader.h:73
Herd::Readers::ParametricGeoCaloReader::CaloSpdHitIDFromGGSPos
std::function< unsigned int(const float *)> CaloSpdHitIDFromGGSPos()
Definition: ParametricGeoCaloReader.h:67
Herd::Readers::ParametricGeoCaloReader::m_caloVolIDFromGGSPos
std::function< unsigned int(const float *)> m_caloVolIDFromGGSPos
Definition: ParametricGeoCaloReader.h:81