ATLAS Offline Software
MinBiasScintillatorSD.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //************************************************************
6 //
7 // Class MinBiasScintillatorSD
8 // Sensitive detector for the Minimum Bias Scintillator
9 //
10 // Author: A. Solodkov
11 // April 01, 2006.
12 //
13 //************************************************************
14 
15 #ifndef MINBIASSCINTILLATOR_MINBIASSCINTILLATORSD_H
16 #define MINBIASSCINTILLATOR_MINBIASSCINTILLATORSD_H
17 
18 // Base class
19 #include "G4VSensitiveDetector.hh"
20 
21 // For the hits
23 #include "StoreGate/WriteHandle.h"
24 
25 #include "MinBiasScintSDOptions.h"
26 
27 // STL headers
28 #include <vector>
29 
30 // G4 needed classes
31 class G4Step;
32 class G4TouchableHistory;
33 
34 class TileTBID;
35 
36 class MinBiasScintillatorSD: public G4VSensitiveDetector {
37  public:
38  MinBiasScintillatorSD(const G4String& name, const std::string& hitCollectionName,
41 
42  virtual void Initialize(G4HCofThisEvent*) override final;
43 
44  virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*) override final;
45 
47 
48  private:
49  // Options for the SD configuration
51 
52  // The hits collection
54 
56 
57  static const int N_SIDE = 2;
58  static const int N_PHI = 8;
59  static const int N_ETA = 2;
60  static const int N_CELLS = N_SIDE * N_PHI * N_ETA;
61  static const int N_DIST = N_SIDE * N_ETA;
62 
63  inline int cell_index(int side, int phi, int eta) const {
64  return (side * N_PHI + phi) * N_ETA + eta;
65  }
66  inline int dist_index(int side, int eta) const {
67  return side * N_ETA + eta;
68  }
69 
73  std::vector<int> m_numberOfHitsInCell;
74 
77  std::vector<TileSimHit*> m_tempSimHit;
78 
83 
86  double m_deltaT;
87  std::vector<double> m_deltaTvec;
88 
91  double m_timeCut;
92 
96  double m_lateHitTime;
97 
99 
100  G4double BirkLaw(const G4Step* aStep) const;
101 
106  inline double deltaT(double time) const {
107  unsigned int i = 0;
108  double delta = m_deltaTvec[i++];
109  while (i < m_deltaTvec.size()) {
110  if (time > m_deltaTvec[i++] && time < m_deltaTvec[i++]) break;
111  delta = m_deltaTvec[i++];
112  }
113  return delta;
114  }
115 };
116 
117 #endif //MINBIASSCINTILLATOR_MINBIASSCINTILLATORSD_H
MinBiasScintillatorSD::m_deltaT
double m_deltaT
granularity in time for hits
Definition: MinBiasScintillatorSD.h:86
MinBiasScintillatorSD::m_HitColl
SG::WriteHandle< TileHitVector > m_HitColl
Definition: MinBiasScintillatorSD.h:53
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
MinBiasScintillatorSD::Initialize
virtual void Initialize(G4HCofThisEvent *) override final
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
MinBiasScintillatorSD::N_PHI
static const int N_PHI
Definition: MinBiasScintillatorSD.h:58
MinBiasScintillatorSD::m_tileTBID
const TileTBID * m_tileTBID
Definition: MinBiasScintillatorSD.h:55
MinBiasScintillatorSD::m_timeCut
double m_timeCut
max allowed time for hits
Definition: MinBiasScintillatorSD.h:91
MinBiasScintillatorSD::m_channelID
Identifier m_channelID[N_CELLS]
array to cache look-ups of Identifiers for each cell (size=nCell).
Definition: MinBiasScintillatorSD.h:82
TRT::Hit::side
@ side
Definition: HitInfo.h:83
MinBiasScintillatorSD::m_numberOfHitsInCell
std::vector< int > m_numberOfHitsInCell
number of contributions to the energy in each cell (size=nCell).
Definition: MinBiasScintillatorSD.h:73
MinBiasScintillatorSD::BirkLaw
G4double BirkLaw(const G4Step *aStep) const
WriteHandle.h
Handle class for recording to StoreGate.
MinBiasScintillatorSD::dist_index
int dist_index(int side, int eta) const
Definition: MinBiasScintillatorSD.h:66
MinBiasScintillatorSD::N_SIDE
static const int N_SIDE
Definition: MinBiasScintillatorSD.h:57
MinBiasScintSDOptions.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
MinBiasScintillatorSD::~MinBiasScintillatorSD
~MinBiasScintillatorSD()
MinBiasScintillatorSD::EndOfAthenaEvent
void EndOfAthenaEvent()
MinBiasScintSDOptions
Definition: MinBiasScintSDOptions.h:20
MinBiasScintillatorSD
Definition: MinBiasScintillatorSD.h:36
TileHitVector.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
MinBiasScintillatorSD::m_deltaT_cell
double m_deltaT_cell[N_DIST]
Definition: MinBiasScintillatorSD.h:98
MinBiasScintillatorSD::m_options
const MinBiasScintSDOptions m_options
Definition: MinBiasScintillatorSD.h:50
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
MinBiasScintillatorSD::m_tempSimHit
std::vector< TileSimHit * > m_tempSimHit
local temporary TileSimHit for each cell (size=nCell).
Definition: MinBiasScintillatorSD.h:77
MinBiasScintillatorSD::N_DIST
static const int N_DIST
Definition: MinBiasScintillatorSD.h:61
MinBiasScintillatorSD::MinBiasScintillatorSD
MinBiasScintillatorSD(const G4String &name, const std::string &hitCollectionName, const MinBiasScintSDOptions &opts)
TileTBID
Helper class for TileCal offline identifiers of ancillary testbeam detectors and MBTS.
Definition: Calorimeter/CaloIdentifier/CaloIdentifier/TileTBID.h:65
MinBiasScintillatorSD::m_deltaTvec
std::vector< double > m_deltaTvec
Definition: MinBiasScintillatorSD.h:87
MinBiasScintillatorSD::cell_index
int cell_index(int side, int phi, int eta) const
Definition: MinBiasScintillatorSD.h:63
MinBiasScintillatorSD::N_CELLS
static const int N_CELLS
Definition: MinBiasScintillatorSD.h:60
athena.opts
opts
Definition: athena.py:86
MinBiasScintillatorSD::ProcessHits
virtual G4bool ProcessHits(G4Step *, G4TouchableHistory *) override final
MinBiasScintillatorSD::N_ETA
static const int N_ETA
Definition: MinBiasScintillatorSD.h:59
MinBiasScintillatorSD::deltaT
double deltaT(double time) const
function to provide correct deltaT bin width for given time
Definition: MinBiasScintillatorSD.h:106
MinBiasScintillatorSD::m_lateHitTime
double m_lateHitTime
time for hits which are above m_timeCut threshold it is equal to m_tilesize_deltaT - m_deltaT
Definition: MinBiasScintillatorSD.h:96