HerdSoftware  0.4.0
GGSScdHitsReader.h
Go to the documentation of this file.
1 /*
2  * GGSScdHitsReader.h
3  *
4  * Created on: 27 May 2021
5  * Author: Valerio Formato
6  */
7 
10 #ifndef HERD_GGSSCDHITSREADER_H_
11 #define HERD_GGSSCDHITSREADER_H_
12 
13 #ifndef GGSSMARTLOG_H_
14 #define HERD_GGSSCDHITSREADER_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_GGSSCDHITSREADER_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 <string>
43 #include <utility>
44 
45 namespace Herd::Readers {
46 // clang-format off
52 // clang-format on
54 public:
55  explicit GGSScdHitsReader(std::shared_ptr<GGSTRootReader> ggsReader)
56  : m_ggsReader{std::move(ggsReader)}, m_hitReader{m_ggsReader->GetReader<GGSTHitsReader>()} {};
57 
72  EA::RetrievalResult GetScdHitsColl(EA::ObjectWrapper &wrapper);
73 
84 
91  EA::RetrievalResult GetScdWaferParticleHitsColl(EA::ObjectWrapper &wrapper);
92 
105  std::vector<std::string> FreeObjects(const std::vector<std::string> &objs, EA::Memory::Status memStatus);
106 
113  void SetScdGeoParamsColl(EA::observer_ptr<ScdGeoParamsColl> sdGeoParamsColl);
114 
119  void SetSideDetectorFirstWaferID(std::array<int, 4> sideScdFirstWaferID) {
120  m_sideScdFirstWaferID = sideScdFirstWaferID;
121  }
122 
123 private:
124  std::shared_ptr<GGSTRootReader> m_ggsReader;
125  GGSTHitsReader *m_hitReader = nullptr;
126  long long int m_lastHitsReadEvent = std::numeric_limits<long long int>::max();
127  long long int m_lastPartHitsReadEvent = std::numeric_limits<long long int>::max();
128 
129  EA::observer_ptr<ScdGeoParamsColl> m_sdGeoParamsColl = nullptr;
130  int m_topScdDetIndex = std::numeric_limits<int>::lowest();
131  int m_sideScdHDetIndex = std::numeric_limits<int>::lowest();
132  int m_sideScdVDetIndex = std::numeric_limits<int>::lowest();
133  std::array<int, 4> m_sideScdFirstWaferID{}; // ID of the first Wafer on each lateral Scd, indexed as in GGS files
134 
137 
138  bool m_firstRun = true;
139  bool SetupScdReadout();
140 };
141 } // namespace Herd::Readers
142 
143 #endif
Herd::Readers::GGSScdHitsReader::m_sdHitsColl
ScdHitsColl m_sdHitsColl
Definition: GGSScdHitsReader.h:135
Herd::Readers::GGSScdHitsReader::m_sdWaferParticleHitsColl
ScdParticleHitsColl m_sdWaferParticleHitsColl
Definition: GGSScdHitsReader.h:136
Herd::Readers::GGSScdHitsReader::m_sdGeoParamsColl
EA::observer_ptr< ScdGeoParamsColl > m_sdGeoParamsColl
Definition: GGSScdHitsReader.h:129
Herd::Readers::GGSScdHitsReader::m_ggsReader
std::shared_ptr< GGSTRootReader > m_ggsReader
Definition: GGSScdHitsReader.h:124
Herd::Readers::GGSScdHitsReader::m_hitReader
GGSTHitsReader * m_hitReader
Definition: GGSScdHitsReader.h:125
Herd::Readers::GGSScdHitsReader::IsScdWaferParticleHitsCollAvailable
bool IsScdWaferParticleHitsCollAvailable()
Checks if Scd particle hits are available in the simulation file.
Definition: GGSScdHitsReader.h:83
Herd::Readers::GGSScdHitsReader::GetScdWaferParticleHitsColl
EA::RetrievalResult GetScdWaferParticleHitsColl(EA::ObjectWrapper &wrapper)
Get the Scd Particle Hits.
Definition: GGSScdHitsReader.cpp:196
Herd::Readers::GGSScdHitsReader::m_sideScdHDetIndex
int m_sideScdHDetIndex
Definition: GGSScdHitsReader.h:131
Herd::Readers::GGSScdHitsReader::m_lastPartHitsReadEvent
long long int m_lastPartHitsReadEvent
Definition: GGSScdHitsReader.h:127
Herd::Readers
Definition: GGSCaloHitsReader.h:43
Herd::Readers::GGSScdHitsReader
ScdHits reader class.
Definition: GGSScdHitsReader.h:53
Herd::Readers::GGSScdHitsReader::m_sideScdVDetIndex
int m_sideScdVDetIndex
Definition: GGSScdHitsReader.h:132
Herd::Readers::GGSScdHitsReader::m_sideScdFirstWaferID
std::array< int, 4 > m_sideScdFirstWaferID
Definition: GGSScdHitsReader.h:133
Herd::Readers::GGSScdHitsReader::m_firstRun
bool m_firstRun
Definition: GGSScdHitsReader.h:138
Herd::Readers::GGSScdHitsReader::GetScdHitsColl
EA::RetrievalResult GetScdHitsColl(EA::ObjectWrapper &wrapper)
Get the Scd Hits.
Definition: GGSScdHitsReader.cpp:95
Herd::Readers::GGSScdHitsReader::SetupScdReadout
bool SetupScdReadout()
Definition: GGSScdHitsReader.cpp:34
Herd::Readers::GGSScdHitsReader::SetSideDetectorFirstWaferID
void SetSideDetectorFirstWaferID(std::array< int, 4 > sideScdFirstWaferID)
Set the GGS volID of the first wafer for each side Scd detector.
Definition: GGSScdHitsReader.h:119
Herd::Readers::GGSScdHitsReader::m_lastHitsReadEvent
long long int m_lastHitsReadEvent
Definition: GGSScdHitsReader.h:126
Herd::Readers::GGSScdHitsReader::FreeObjects
std::vector< std::string > FreeObjects(const std::vector< std::string > &objs, EA::Memory::Status memStatus)
Free the memory of unneeded objects.
Definition: GGSScdHitsReader.cpp:280
ScdGeoParamsColl.h
Herd::Readers::GGSScdHitsReader::SetScdGeoParamsColl
void SetScdGeoParamsColl(EA::observer_ptr< ScdGeoParamsColl > sdGeoParamsColl)
Set the reference for the Scd geometric parameters.
Definition: GGSScdHitsReader.cpp:22
ScdHitsColl.h
Herd::Readers::GGSScdHitsReader::GGSScdHitsReader
GGSScdHitsReader(std::shared_ptr< GGSTRootReader > ggsReader)
Definition: GGSScdHitsReader.h:55
Herd::Readers::GGSScdHitsReader::IsScdHitsCollAvailable
bool IsScdHitsCollAvailable()
Checks if Scd hits are available in the simulation file.
Definition: GGSScdHitsReader.cpp:16
ScdParticleHitsColl.h
DefaultValues.h
Herd::Readers::GGSScdHitsReader::m_topScdDetIndex
int m_topScdDetIndex
Definition: GGSScdHitsReader.h:130
Herd::SidesArray< ScdHits >