ATLAS Offline Software
SctSensorSD.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /****************************************************************
6  SCT Sensitive Detector class
7 ****************************************************************/
8 
9 #ifndef SCT_G4_SD_SCTSENSORSD_H
10 #define SCT_G4_SD_SCTSENSORSD_H
11 
12 // Base class
13 #include "G4VSensitiveDetector.hh"
14 
15 // For the hits
17 #include <gtest/gtest_prod.h>
18 
19 // G4 needed classes
20 class G4Step;
21 class G4TouchableHistory;
22 
23 class SctSensorSD : public G4VSensitiveDetector
24 {
25  FRIEND_TEST( SctSensorSDtest, ProcessHits );
26  FRIEND_TEST( SctSensorSDtest, indexMethod );
27  FRIEND_TEST( SctSensorSDtest, AddHit );
28 public:
29  // Constructor
30  SctSensorSD(const std::string& name, const std::string& hitCollectionName);
31 
32  // Destructor
33  ~SctSensorSD() { /* If all goes well we do not own myHitColl here */ }
34 
35  // Deal with each G4 hit
36  G4bool ProcessHits(G4Step*, G4TouchableHistory*) override;
37 
38  // For setting up the hit collection
39  void Initialize(G4HCofThisEvent*) override final;
40 
44  template <class... Args> void AddHit(Args&&... args){ m_HitColl->Emplace( args... ); }
45 
46 private:
47  void indexMethod(const G4TouchableHistory *myTouch, double coord1z, int &brlEcap, int &layerDisk, int &etaMod, int &phiMod, int &side);
48 protected:
49  // The hits collection
50  std::string m_HitCollName;
52 };
53 
54 #endif //SCT_G4_SD_SCTSENSORSD_H
SctSensorSD::ProcessHits
G4bool ProcessHits(G4Step *, G4TouchableHistory *) override
Definition: SctSensorSD.cxx:51
SctSensorSD::m_HitColl
SiHitCollection * m_HitColl
Definition: SctSensorSD.h:51
python.CaloAddPedShiftConfig.args
args
Definition: CaloAddPedShiftConfig.py:47
SctSensorSD::SctSensorSD
SctSensorSD(const std::string &name, const std::string &hitCollectionName)
Definition: SctSensorSD.cxx:31
AtlasHitsVector< SiHit >
SctSensorSD::FRIEND_TEST
FRIEND_TEST(SctSensorSDtest, ProcessHits)
Args
Definition: test_lwtnn_fastgraph.cxx:12
SctSensorSD::FRIEND_TEST
FRIEND_TEST(SctSensorSDtest, indexMethod)
TRT::Hit::side
@ side
Definition: HitInfo.h:83
SctSensorSD::m_HitCollName
std::string m_HitCollName
Definition: SctSensorSD.h:50
AtlasHitsVector::Emplace
void Emplace(Args &&... args)
Definition: AtlasHitsVector.h:80
SctSensorSD::~SctSensorSD
~SctSensorSD()
Definition: SctSensorSD.h:33
SctSensorSD
Definition: SctSensorSD.h:24
SctSensorSD::Initialize
void Initialize(G4HCofThisEvent *) override final
Definition: SctSensorSD.cxx:39
SctSensorSD::indexMethod
void indexMethod(const G4TouchableHistory *myTouch, double coord1z, int &brlEcap, int &layerDisk, int &etaMod, int &phiMod, int &side)
Definition: SctSensorSD.cxx:118
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
SctSensorSD::AddHit
void AddHit(Args &&... args)
Templated method to stuff a single hit into the sensitive detector class.
Definition: SctSensorSD.h:44
fillSCTHists.etaMod
etaMod
Definition: fillSCTHists.py:23
SctSensorSD::FRIEND_TEST
FRIEND_TEST(SctSensorSDtest, AddHit)
SiHitCollection.h