HerdSoftware  0.4.0
GGSFitHitsReader.h
Go to the documentation of this file.
1 /*
2  * GGSFitHitsReader.h
3  *
4  * Created on: 31 May 2021
5  * Author: Valerio Formato
6  */
7 
10 #ifndef HERD_GGSFITHITSREADER_H_
11 #define HERD_GGSFITHITSREADER_H_
12 
13 #ifndef GGSSMARTLOG_H_
14 #define HERD_GGSFITHITSREADER_H_UNDEF_LOGGING
15 #endif
16 
17 // GGS headers
18 #include "montecarlo/readers/GGSTHitsReader.h"
19 #include "montecarlo/readers/GGSTRootReader.h"
20 
21 #ifdef HERD_GGSFITHITSREADER_H_UNDEF_LOGGING
22 // Remove the definitions of GGS output macros (would conflict with the same macros defined in EventAnalysis)
23 // We only do this if GGSSmartLog.h is being parsed in this TU, otherwise there would be nothing to undef
24 // (or we could even be undefining the EA macros)
25 #undef COUT
26 #undef CCOUT
27 #undef ENDL
28 #endif
29 
30 // EA headers
31 #include "core/ObjectWrapper.h"
32 #include "core/RetrievalResult.h"
33 #include "utils/Memory.h"
34 
35 // HerdSoftware headers
40 
41 // c++ headers
42 #include <functional>
43 #include <string>
44 #include <utility>
45 
46 namespace Herd::Readers {
47 // clang-format off
53 // clang-format on
55 public:
56  explicit GGSFitHitsReader(std::shared_ptr<GGSTRootReader> ggsReader)
57  : m_ggsReader{std::move(ggsReader)}, m_hitReader{m_ggsReader->GetReader<GGSTHitsReader>()} {};
58 
68 
75  EA::RetrievalResult GetFitHitsColl(EA::ObjectWrapper &wrapper) { return GetHitsHelper(wrapper, true); }
76 
86 
93  EA::RetrievalResult GetFitParticleHitsColl(EA::ObjectWrapper &wrapper) { return GetHitsHelper(wrapper, false); }
94 
107  std::vector<std::string> FreeObjects(const std::vector<std::string> &objs, EA::Memory::Status memStatus);
108 
115  void SetFitGeoParamsColl(EA::observer_ptr<FitGeoParamsColl> fitGeoParamsColl);
116 
121  void SetSideDetectorFirstVolumeID(std::array<int, 4> sideFitFirstVolumeID) {
122  m_sideFitFirstVolumeID = sideFitFirstVolumeID;
123  }
124 
125 private:
126  std::shared_ptr<GGSTRootReader> m_ggsReader;
127  GGSTHitsReader *m_hitReader = nullptr;
128  long long int m_lastHitsReadEvent = std::numeric_limits<long long int>::max();
129  long long int m_lastPartHitsReadEvent = std::numeric_limits<long long int>::max();
130 
131  EA::observer_ptr<FitGeoParamsColl> m_fitGeoParamsColl = nullptr;
132  std::array<int, 2> m_topFitDetIndex = {std::numeric_limits<int>::lowest(), std::numeric_limits<int>::lowest()};
133  std::array<int, 2> m_sideFitDetIndex = {std::numeric_limits<int>::lowest(), std::numeric_limits<int>::lowest()};
134  std::array<int, 4>
135  m_sideFitFirstVolumeID{}; // ID of the first even/odd layer on each lateral FIT, indexed as in GGS files.
136 
139 
140  bool m_pre04 = false;
141 
142  bool SetupFitReadout();
143  // Helper function that reads both integrated and particle hits depending on the value of the intHits parameter (true:
144  // integrated, false: particle).
145  EA::RetrievalResult GetHitsHelper(EA::ObjectWrapper &wrapper, bool intHits);
146 };
147 } // namespace Herd::Readers
148 
149 #endif
Herd::Readers::GGSFitHitsReader
CaloHits reader class.
Definition: GGSFitHitsReader.h:54
FitHitsColl.h
Herd::Readers::GGSFitHitsReader::GetFitHitsColl
EA::RetrievalResult GetFitHitsColl(EA::ObjectWrapper &wrapper)
Get the FIT Hits.
Definition: GGSFitHitsReader.h:75
Herd::Readers::GGSFitHitsReader::m_sideFitFirstVolumeID
std::array< int, 4 > m_sideFitFirstVolumeID
Definition: GGSFitHitsReader.h:135
Herd::Readers::GGSFitHitsReader::m_fitHitsColl
FitHitsColl m_fitHitsColl
Definition: GGSFitHitsReader.h:137
FitGeoParamsColl.h
Herd::Readers::GGSFitHitsReader::m_topFitDetIndex
std::array< int, 2 > m_topFitDetIndex
Definition: GGSFitHitsReader.h:132
Herd::Readers::GGSFitHitsReader::SetupFitReadout
bool SetupFitReadout()
Definition: GGSFitHitsReader.cpp:47
Herd::Readers::GGSFitHitsReader::m_fitGeoParamsColl
EA::observer_ptr< FitGeoParamsColl > m_fitGeoParamsColl
Definition: GGSFitHitsReader.h:131
Herd::Readers::GGSFitHitsReader::m_ggsReader
std::shared_ptr< GGSTRootReader > m_ggsReader
Definition: GGSFitHitsReader.h:126
Herd::Readers
Definition: GGSCaloHitsReader.h:43
Herd::Readers::GGSFitHitsReader::IsFitParticleHitsCollAvailable
bool IsFitParticleHitsCollAvailable()
Checks if FIT particle hits are available in the simulation file.
Definition: GGSFitHitsReader.cpp:32
Herd::Readers::GGSFitHitsReader::FreeObjects
std::vector< std::string > FreeObjects(const std::vector< std::string > &objs, EA::Memory::Status memStatus)
Free the memory of unneeded objects.
Definition: GGSFitHitsReader.cpp:228
Herd::Readers::GGSFitHitsReader::m_lastHitsReadEvent
long long int m_lastHitsReadEvent
Definition: GGSFitHitsReader.h:128
Herd::Readers::GGSFitHitsReader::SetSideDetectorFirstVolumeID
void SetSideDetectorFirstVolumeID(std::array< int, 4 > sideFitFirstVolumeID)
Set the GGS volID of the first wafer for each side FIT detector.
Definition: GGSFitHitsReader.h:121
Herd::Readers::GGSFitHitsReader::m_sideFitDetIndex
std::array< int, 2 > m_sideFitDetIndex
Definition: GGSFitHitsReader.h:133
Herd::Readers::GGSFitHitsReader::SetFitGeoParamsColl
void SetFitGeoParamsColl(EA::observer_ptr< FitGeoParamsColl > fitGeoParamsColl)
Set the reference for the FIT geometric parameters.
Definition: GGSFitHitsReader.cpp:13
FitParticleHitsColl.h
Herd::Readers::GGSFitHitsReader::m_lastPartHitsReadEvent
long long int m_lastPartHitsReadEvent
Definition: GGSFitHitsReader.h:129
Herd::Readers::GGSFitHitsReader::m_hitReader
GGSTHitsReader * m_hitReader
Definition: GGSFitHitsReader.h:127
Herd::Readers::GGSFitHitsReader::GetHitsHelper
EA::RetrievalResult GetHitsHelper(EA::ObjectWrapper &wrapper, bool intHits)
Definition: GGSFitHitsReader.cpp:106
Herd::Readers::GGSFitHitsReader::m_pre04
bool m_pre04
Definition: GGSFitHitsReader.h:140
Herd::Readers::GGSFitHitsReader::IsFitHitsCollAvailable
bool IsFitHitsCollAvailable()
Checks if FIT hits are available in the simulation file.
Definition: GGSFitHitsReader.cpp:22
Herd::Readers::GGSFitHitsReader::GetFitParticleHitsColl
EA::RetrievalResult GetFitParticleHitsColl(EA::ObjectWrapper &wrapper)
Get the FIT Particle Hits.
Definition: GGSFitHitsReader.h:93
Herd::Readers::GGSFitHitsReader::m_fitParticleHitsColl
FitParticleHitsColl m_fitParticleHitsColl
Definition: GGSFitHitsReader.h:138
DefaultValues.h
Herd::Readers::GGSFitHitsReader::GGSFitHitsReader
GGSFitHitsReader(std::shared_ptr< GGSTRootReader > ggsReader)
Definition: GGSFitHitsReader.h:56
Herd::SidesArray< FitHits >