ATLAS Offline Software
Loading...
Searching...
No Matches
LArG4CalibSD.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef LARG4CALIBSD_H
6#define LARG4CALIBSD_H
7
8#include "G4VSensitiveDetector.hh"
9
13#include <gtest/gtest_prod.h>
14
15#include <vector>
16
17// Forward declarations
18class G4Step;
19class G4HCofThisEvent;
20
21class LArEM_ID;
22class LArFCAL_ID;
23class LArHEC_ID;
24class CaloDM_ID;
25class AtlasDetectorID;
26
28
38class LArG4CalibSD : public G4VSensitiveDetector
39{
40FRIEND_TEST( LArG4CalibSDtest, ProcessHits );
41FRIEND_TEST( LArG4CalibSDtest, setupHelpers );
42FRIEND_TEST( LArG4CalibSDtest, addDetectorHelper );
43FRIEND_TEST( LArG4CalibSDtest, SpecialHit );
44FRIEND_TEST( LArG4CalibSDtest, SimpleHit );
45FRIEND_TEST( LArG4CalibSDtest, ConvertID );
46public:
47
49 LArG4CalibSD(G4String a_name, ILArCalibCalculatorSvc* calc,
50 std::string hitCollectionName,
51 std::string deadHitCollectionName,
52 std::string srHitCollectionName,
53 bool doPID=false);
54
56 virtual ~LArG4CalibSD();
57
59 void Initialize(G4HCofThisEvent*) override;
60
62 G4bool ProcessHits(G4Step* a_step,G4TouchableHistory*) override;
63
65 void setupHelpers( const LArEM_ID* EM ,
66 const LArFCAL_ID* FCAL ,
67 const LArHEC_ID* HEC ,
68 const CaloDM_ID* caloDm ) {
69 m_larEmID = EM;
70 m_larFcalID = FCAL;
71 m_larHecID = HEC;
72 m_caloDmID = caloDm;
73 }
74
75 void addDetectorHelper( const AtlasDetectorID* id_helper) { m_id_helper=id_helper; }
76
78 G4bool SpecialHit(G4Step* a_step, const std::vector<G4double>& a_energies);
79
80protected:
82 G4bool SimpleHit(const LArG4Identifier& a_ident,
83 const std::vector<double>& energies,
84 bool deadMaterialHit = false);
85
86 G4bool SrHit(const LArG4Identifier& a_ident, const LArG4Identifier& sr_id,
87 const std::vector<double>& energies);
90
93
95 G4bool m_doPID;
96
98 Identifier ConvertID(const LArG4Identifier& a_ident) const;
99
100 Identifier ConvertSRID(const LArG4Identifier& sr_id, const LArG4Identifier& lr_id) const;
107
110
111private:
115 std::string m_hitSourceName;
116};
117
118#endif
LArCalibrationHitContainerBuilderBase< CaloCalibrationHitContainer > LArCalibrationHitContainerBuilder
LArCalibrationHitContainerBuilderBase< SrCaloCalibrationHitContainer > LArSrCalibrationHitContainerBuilder
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Helper class for Calo Dead Material offline identifiers.
Definition CaloDM_ID.h:102
Helper class for LArEM offline identifiers.
Definition LArEM_ID.h:111
Helper class for LArFCAL offline identifiers.
Definition LArFCAL_ID.h:49
FRIEND_TEST(LArG4CalibSDtest, addDetectorHelper)
Identifier ConvertID(const LArG4Identifier &a_ident) const
Helper function for making "real" identifiers from LArG4Identifiers.
std::string m_deadHitCollectionName
FRIEND_TEST(LArG4CalibSDtest, SimpleHit)
LArCalibrationHitContainerBuilder * getCalibrationHits(bool deadMaterialHit) const
LArSrCalibrationHitContainerBuilder * getSrCalibrationHits() const
FRIEND_TEST(LArG4CalibSDtest, ProcessHits)
LArG4CalibSD(G4String a_name, ILArCalibCalculatorSvc *calc, std::string hitCollectionName, std::string deadHitCollectionName, std::string srHitCollectionName, bool doPID=false)
Constructor.
G4bool SimpleHit(const LArG4Identifier &a_ident, const std::vector< double > &energies, bool deadMaterialHit=false)
Constructs the calibration hit and saves it to the appropriate builder.
std::string m_hitCollectionName
FRIEND_TEST(LArG4CalibSDtest, setupHelpers)
const AtlasDetectorID * m_id_helper
Identifier ConvertSRID(const LArG4Identifier &sr_id, const LArG4Identifier &lr_id) const
void Initialize(G4HCofThisEvent *) override
Register this regular SD with the event-owned builders.
const CaloDM_ID * m_caloDmID
void addDetectorHelper(const AtlasDetectorID *id_helper)
ILArCalibCalculatorSvc * m_calculator
Member variable - the calculator we'll use.
G4bool m_doPID
Are we set up to run with PID hits?
G4bool SrHit(const LArG4Identifier &a_ident, const LArG4Identifier &sr_id, const std::vector< double > &energies)
G4bool ProcessHits(G4Step *a_step, G4TouchableHistory *) override
Main processing method.
G4bool SpecialHit(G4Step *a_step, const std::vector< G4double > &a_energies)
For other classes that need to call into us...
std::string m_hitSourceName
FRIEND_TEST(LArG4CalibSDtest, ConvertID)
G4int m_numberInvalidHits
Count the number of invalid hits.
void setupHelpers(const LArEM_ID *EM, const LArFCAL_ID *FCAL, const LArHEC_ID *HEC, const CaloDM_ID *caloDm)
Sets the ID helper pointers.
FRIEND_TEST(LArG4CalibSDtest, SpecialHit)
virtual ~LArG4CalibSD()
Destructor.
const LArHEC_ID * m_larHecID
const LArFCAL_ID * m_larFcalID
std::string m_srHitCollectionName
const LArEM_ID * m_larEmID
Pointers to the identifier helpers.
Helper class for LArHEC offline identifiers.
Definition LArHEC_ID.h:76