10 #ifndef HERD_GGSSIMREADER_H_ 11 #define HERD_GGSSIMREADER_H_ 13 #ifndef GGSSMARTLOG_H_ 14 #define HERD_GGSSIMREADER_H_UNDEF_LOGGING 18 #include "montecarlo/readers/GGSTHadrIntReader.h" 19 #include "montecarlo/readers/GGSTHitsReader.h" 20 #include "montecarlo/readers/GGSTMCTruthReader.h" 21 #include "montecarlo/readers/GGSTPrimaryDisReader.h" 22 #include "montecarlo/readers/GGSTRootReader.h" 24 #ifdef HERD_GGSSIMREADER_H_UNDEF_LOGGING 78 GGSSimReader(std::shared_ptr<GGSTRootReader> reader, std::string fileName);
90 virtual bool SetCurrentEvent(
unsigned int)
final;
99 virtual bool IsObjectAvailable(
const std::string &name)
final;
108 virtual bool IsObjectKnown(
const std::string &name)
final;
120 RetrievalResult GetObject(
const std::string &name, ObjectCategory category, ObjectWrapper &wrapper,
121 std::string &actualName)
final;
132 virtual std::vector<std::string> FreeObjects(
const std::vector<std::string> &, Memory::Status)
final;
149 void SetFileName(std::string fileName) { m_fileName = std::move(fileName); }
159 m_caloVolIDFromGGSPos = conversionFunction;
168 void SetFitGeoParamsColl(observer_ptr<FitGeoParamsColl> fitGeoParamsColl);
176 void SetStkGeoParamsColl(observer_ptr<StkGeoParamsColl> stkGeoParamsColl);
184 void SetScdGeoParamsColl(observer_ptr<ScdGeoParamsColl> scdGeoParamsColl);
192 void SetPsdGeoParamsColl(observer_ptr<PsdGeoParamsColl> psdGeoParamsColl);
199 m_sideFitFirstVolumeID = sideFitFirstVolumeID;
226 enum class PsdType : int { NONE = -1, tiles = 0, bars = 1 };
245 GGSTHitsReader *m_hitReader =
nullptr;
246 GGSTMCTruthReader *m_mcReader =
nullptr;
247 GGSTHadrIntReader *m_hadrIntReader =
nullptr;
248 GGSTPrimaryDisReader *m_primDisReader =
nullptr;
250 void CheckAvailableObjects();
251 std::vector<ParticleHit> ConvertParticles(GGSTIntHit &ggsIntHit);
254 bool m_mcGenRead =
false;
257 bool IsMCGenAvailable();
258 ObjectWrapper GetMCGen();
261 bool m_mcTruthRead =
false;
262 bool m_hadrIntChecked =
false;
263 bool m_PrimDisAvailable =
false;
266 bool IsMCTruthAvailable();
267 ObjectWrapper GetMCTruth();
271 int m_caloDetIndex = std::numeric_limits<int>::lowest();
273 bool IsCaloHitsAvailable();
274 ObjectWrapper GetCaloHits();
277 bool m_areFitHitsRead =
false;
278 bool m_readFitParticleHits =
false;
279 bool m_areFitParticleHitsRead =
false;
280 bool m_areFitHitsConverted =
false;
281 bool m_isTopFitDetectorSet =
false;
282 bool m_isSideFitDetectorSet =
false;
284 observer_ptr<FitGeoParamsColl> m_fitGeoParamsColl =
nullptr;
285 int m_topFitDetIndex = std::numeric_limits<int>::lowest();
286 int m_sideFitDetIndex = std::numeric_limits<int>::lowest();
288 bool SetupFitReadout();
291 bool IsFitHitsAvailable();
292 ObjectWrapper GetFitHits();
294 bool IsFitParticleHitsAvailable();
295 ObjectWrapper GetFitParticleHits();
306 bool m_areStkHitsRead =
false;
307 bool m_areStkWaferParticleHitsRead =
false;
308 bool m_isTopStkDetectorSet =
false;
309 bool m_isSideStkDetectorSet =
false;
311 observer_ptr<StkGeoParamsColl> m_stkGeoParamsColl =
nullptr;
312 int m_topStkDetIndex = std::numeric_limits<int>::lowest();
313 int m_sideStkHDetIndex = std::numeric_limits<int>::lowest();
314 int m_sideStkVDetIndex = std::numeric_limits<int>::lowest();
320 bool IsStkWaferHitsAvailable();
321 bool IsStkStripHitsAvailable();
323 return GetSiliconDetectorHits(SiliconDetectorName::STK, SiliconDetectorType::WAFER);
326 return GetSiliconDetectorHits(SiliconDetectorName::STK, SiliconDetectorType::STRIP);
329 bool IsStkWaferParticleHitsAvailable();
334 bool m_areScdHitsRead =
false;
335 bool m_areScdWaferParticleHitsRead =
false;
336 bool m_isTopScdDetectorSet =
false;
337 bool m_isSideScdDetectorSet =
false;
339 observer_ptr<ScdGeoParamsColl> m_scdGeoParamsColl =
nullptr;
340 int m_topScdDetIndex = std::numeric_limits<int>::lowest();
341 int m_sideScdHDetIndex = std::numeric_limits<int>::lowest();
342 int m_sideScdVDetIndex = std::numeric_limits<int>::lowest();
348 bool IsScdWaferHitsAvailable();
349 bool IsScdStripHitsAvailable();
351 return GetSiliconDetectorHits(SiliconDetectorName::SCD, SiliconDetectorType::WAFER);
354 return GetSiliconDetectorHits(SiliconDetectorName::SCD, SiliconDetectorType::STRIP);
357 bool IsScdWaferParticleHitsAvailable();
369 bool m_arePsdHitsRead =
false;
370 bool m_readPsdParticleHits =
false;
371 bool m_arePsdParticleHitsRead =
false;
372 bool m_isTopPsdDetectorSet =
false;
373 bool m_isSidePsdDetectorSet =
false;
376 observer_ptr<PsdGeoParamsColl> m_psdGeoParamsColl =
nullptr;
377 int m_topPsdDetIndex = std::numeric_limits<int>::lowest();
379 bool SetupPsdReadout(
bool readParticleHits);
383 bool IsPsdHitsAvailable();
384 ObjectWrapper GetPsdHits();
386 bool IsPsdParticleHitsAvailable();
387 ObjectWrapper GetPsdParticleHits();
Base class for GGSSimReaders.
Definition: GGSSimReader.h:68
void SetCaloHitIDFromGGSPos(std::function< unsigned int(const float *)> conversionFunction)
Set the volID calculator for the calorimeter.
Definition: GGSSimReader.h:158
std::vector< std::string > aliases
Definition: GGSSimReader.h:232
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:24
PsdHitsColl m_psdHitsColl
Definition: GGSSimReader.h:382
void SetSideStkFirstStripID(std::array< int, 4 > sideStkFirstStripID)
Set the GGS volID of the first strip for each side STK detector.
Definition: GGSSimReader.h:212
PsdParticleHitsColl m_psdParticleHitsColl
Definition: GGSSimReader.h:385
void SetSideScdFirstStripID(std::array< int, 4 > sideScdFirstStripID)
Set the GGS volID of the first strip for each side SCD detector.
Definition: GGSSimReader.h:224
SiliconDetectorType
Definition: GGSSimReader.h:297
std::string name
Definition: GGSSimReader.h:231
std::shared_ptr< GGSTRootReader > m_ggsreader
Definition: GGSSimReader.h:244
Definition: GGSSimReader.h:363
ObjectWrapper GetScdWaferHits()
Definition: GGSSimReader.h:350
ObjectWrapper GetScdWaferParticleHits()
Definition: GGSSimReader.h:358
ObjectWrapper GetStkStripHits()
Definition: GGSSimReader.h:325
unsigned int m_currEv
Definition: GGSSimReader.h:240
ScdParticleHitsColl m_scdWaferParticleHitsColl
Definition: GGSSimReader.h:355
Side
Aliases for the five sides. RefFrame.h common/RefFrame.h.
Definition: RefFrame.h:104
std::array< int, 4 > m_sideStkFirstStripID
Definition: GGSSimReader.h:316
ObjectWrapper GetStkWaferParticleHits()
Definition: GGSSimReader.h:330
std::function< ObjectWrapper(GGSSimReader *)> retriever
Definition: GGSSimReader.h:234
std::vector< int > m_sidePsdDetIndexes
Definition: GGSSimReader.h:378
void SetSideFitFirstVolumeID(std::array< int, 4 > sideFitFirstVolumeID)
Set the GGS volID of the first volume for each side FIT detector.
Definition: GGSSimReader.h:198
PsdType
Definition: GGSSimReader.h:226
SidePsdSegmentation
Definition: GGSSimReader.h:361
std::array< int, 4 > m_sideFitFirstVolumeID
Definition: GGSSimReader.h:287
std::vector< ObjDescriptor > m_knownObjects
Definition: GGSSimReader.h:238
ScdHitsColl m_scdHitsColl
Definition: GGSSimReader.h:347
RefFrame::Side _side
Definition: GGSSimReader.h:366
void SetPsdType(PsdType type)
Definition: GGSSimReader.h:227
bool isOnSource
Definition: GGSSimReader.h:233
void SetSideScdFirstWaferID(std::array< int, 4 > sideScdFirstWaferID)
Set the GGS volID of the first wafer for each side SCD detector.
Definition: GGSSimReader.h:218
FitHitsColl m_fitHitsColl
Definition: GGSSimReader.h:290
unsigned int _ID
Definition: GGSSimReader.h:364
std::string m_fileName
Definition: GGSSimReader.h:243
unsigned int m_currReadEv
Definition: GGSSimReader.h:241
MCTruth m_mcTruth
Definition: GGSSimReader.h:265
FitParticleHitsColl m_fitParticleHitsColl
Definition: GGSSimReader.h:293
CaloHits m_caloHits
Definition: GGSSimReader.h:272
std::array< int, 4 > m_sideScdFirstWaferID
Definition: GGSSimReader.h:343
std::function< bool(GGSSimReader *)> checker
Definition: GGSSimReader.h:235
std::array< int, 4 > m_sideStkFirstWaferID
Definition: GGSSimReader.h:315
bool IsFileValid()
Check if reader is connected to a valid simulation file.
Definition: GGSSimReader.h:140
Information about particle generation in MC simulation.
Definition: MCGenerationInfo.h:27
std::function< unsigned int(const float *)> m_caloVolIDFromGGSPos
Definition: GGSSimReader.h:270
Data structure for the Monte Carlo truth of each event.
Definition: MCTruth.h:24
SiliconDetectorName
Definition: GGSSimReader.h:299
MCGenerationInfo m_mcGenInfo
Definition: GGSSimReader.h:256
void SetSideStkFirstWaferID(std::array< int, 4 > sideStkFirstWaferID)
Set the GGS volID of the first wafer for each side STK detector.
Definition: GGSSimReader.h:206
ObjectWrapper GetScdStripHits()
Definition: GGSSimReader.h:353
ObjectWrapper GetStkWaferHits()
Definition: GGSSimReader.h:322
StkHitsColl m_stkHitsColl
Definition: GGSSimReader.h:319
Base class for DataReaders.
Definition: DataReader.h:38
void SetFileName(std::string fileName)
Set the filename of the current DataSource of the dataprovider.
Definition: GGSSimReader.h:149
StkParticleHitsColl m_stkWaferParticleHitsColl
Definition: GGSSimReader.h:327
Container for the hits of a single CALO detector.
std::array< int, 4 > m_sideScdFirstStripID
Definition: GGSSimReader.h:344
unsigned int _layer
Definition: GGSSimReader.h:365
Definition: GGSSimReader.h:230