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 G4Track;
20class G4HCofThisEvent;
21
22class LArEM_ID;
23class LArFCAL_ID;
24class LArHEC_ID;
25class CaloDM_ID;
26class AtlasDetectorID;
27
29
39class LArG4CalibSD : public G4VSensitiveDetector
40{
41FRIEND_TEST( LArG4CalibSDtest, ProcessHits );
42FRIEND_TEST( LArG4CalibSDtest, setupHelpers );
43FRIEND_TEST( LArG4CalibSDtest, addDetectorHelper );
44FRIEND_TEST( LArG4CalibSDtest, SpecialHit );
45FRIEND_TEST( LArG4CalibSDtest, SimpleHit );
46FRIEND_TEST( LArG4CalibSDtest, ConvertID );
47public:
48
50 LArG4CalibSD(G4String a_name, ILArCalibCalculatorSvc* calc,
51 std::string hitCollectionName,
52 std::string deadHitCollectionName,
53 std::string srHitCollectionName,
54 bool doPID=false);
55
57 virtual ~LArG4CalibSD();
58
60 void Initialize(G4HCofThisEvent*) override;
61
63 G4bool ProcessHits(G4Step* a_step,G4TouchableHistory*) override;
64
66 void setupHelpers( const LArEM_ID* EM ,
67 const LArFCAL_ID* FCAL ,
68 const LArHEC_ID* HEC ,
69 const CaloDM_ID* caloDm ) {
70 m_larEmID = EM;
71 m_larFcalID = FCAL;
72 m_larHecID = HEC;
73 m_caloDmID = caloDm;
74 }
75
76 void addDetectorHelper( const AtlasDetectorID* id_helper) { m_id_helper=id_helper; }
77
79 G4bool SpecialHit(G4Step* a_step, const std::vector<G4double>& a_energies);
80
81protected:
83 G4bool SimpleHit(const LArG4Identifier& a_ident,
84 const std::vector<double>& energies,
85 bool deadMaterialHit = false,
86 const G4Track* track = nullptr);
87
88 G4bool SrHit(const LArG4Identifier& a_ident, const LArG4Identifier& sr_id,
89 const std::vector<double>& energies,
90 const G4Track* track = nullptr);
93
96
98 G4bool m_doPID;
99
101 Identifier ConvertID(const LArG4Identifier& a_ident) const;
102
103 Identifier ConvertSRID(const LArG4Identifier& sr_id, const LArG4Identifier& lr_id) const;
110
113
114private:
118 std::string m_hitSourceName;
119};
120
121#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.
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.
G4bool SimpleHit(const LArG4Identifier &a_ident, const std::vector< double > &energies, bool deadMaterialHit=false, const G4Track *track=nullptr)
Constructs the calibration hit and saves it to the appropriate builder.
G4bool SrHit(const LArG4Identifier &a_ident, const LArG4Identifier &sr_id, const std::vector< double > &energies, const G4Track *track=nullptr)
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 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