ATLAS Offline Software
ITileCalculator.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 // Filename : TileGeoG4SDCalc.hh
7 // Author : Sergey Karpov <Sergey.Karpov@cern.ch>
8 // Created : July, 2013
9 //
10 // DESCRIPTION:
11 // Sensitive Detector initialisation for TileCal G4 simulations
12 // of both ordinary Hits and CalibHits
13 //
14 // HISTORY:
15 // Nov 2013 - Work with U-shape was added (Sasha Solodkov)
16 //
17 //************************************************************
18 
19 #ifndef TILEG4INTERFACES_ITILECALCULATOR_H
20 #define TILEG4INTERFACES_ITILECALCULATOR_H
21 
22 // Geant4 headers
23 #include "G4Types.hh"
24 
25 #include "GaudiKernel/IService.h"
26 #include "Identifier/Identifier.h"
27 
28 class G4Step;
29 class TileGeoG4Section;
30 class TileGeoG4Cell;
31 class TileGeoG4LookupBuilder;
32 class TileSDOptions;
33 
34 struct TileMicroHit {
37  G4double e_up;
38  G4double e_down;
39  double time_up;
40  double time_down;
41  //int period, tilerow; // prepared for future use
42 };
43 
45 struct TileHitData {
46  TileGeoG4Section *section = nullptr;
47  TileGeoG4Cell *cell = nullptr;
48  int nModule = 0;
49  int nDetector = 0;
50  int nTower = 0;
51  int nSample = 0;
52  int nSide = 0;
53  int nrOfPMT = 0;
54  int tileSize = 0;
55  int tilePeriod = 0;
56  double totalTimeUp = 0.0;
57  double totalTimeDown = 0.0;
58  bool isNegative = false;
61  G4double edep_up = 0.0;
62  G4double edep_down = 0.0;
63  double scin_Time_up = 0.0;
64  double scin_Time_down = 0.0;
65 };
66 
67 class ITileCalculator : virtual public IService {
68  public:
72  virtual ~ITileCalculator() {}
75 
77  virtual G4bool FindTileScinSection(const G4Step*, TileHitData& hitData) const = 0;
79  virtual G4bool MakePmtEdepTime(const G4Step*, TileHitData& hitData, double& deltaTime) const = 0;
81  virtual G4bool ManageScintHit(TileHitData& hitData, double deltaTime) const = 0;
83  virtual TileMicroHit GetTileMicroHit(const G4Step*, TileHitData& hitData) const = 0;
85  virtual TileGeoG4LookupBuilder* GetLookupBuilder() const = 0;
87  virtual const TileSDOptions* GetOptions() const = 0;
89  virtual void pmtEdepFromFCS_StepInfo(TileHitData& hitData, double ene, double yLocal, double halfYLocal, double zLocal, int Ushape) const = 0;
90 
91 };
92 //class ITileCalculator
93 
94 #endif // not TILEG4INTERFACES_ITILECALCULATOR_H
TileHitData::edep_down
G4double edep_down
Definition: ITileCalculator.h:62
TileHitData::nSide
int nSide
Definition: ITileCalculator.h:52
TileMicroHit::pmt_up
Identifier pmt_up
Definition: ITileCalculator.h:35
TileHitData::nrOfPMT
int nrOfPMT
Definition: ITileCalculator.h:53
ITileCalculator::GetOptions
virtual const TileSDOptions * GetOptions() const =0
pointer to class with all options
TileMicroHit::e_up
G4double e_up
Definition: ITileCalculator.h:37
TileHitData::nSample
int nSample
Definition: ITileCalculator.h:51
TileMicroHit::time_down
double time_down
Definition: ITileCalculator.h:40
ITileCalculator
Definition: ITileCalculator.h:67
ITileCalculator::~ITileCalculator
virtual ~ITileCalculator()
Definition: ITileCalculator.h:72
TileMicroHit
Definition: ITileCalculator.h:34
ITileCalculator::ManageScintHit
virtual G4bool ManageScintHit(TileHitData &hitData, double deltaTime) const =0
Calculation of pmtID, edep and scin_Time with aStep (Sergey)
ITileCalculator::GetLookupBuilder
virtual TileGeoG4LookupBuilder * GetLookupBuilder() const =0
ITileCalculator::pmtEdepFromFCS_StepInfo
virtual void pmtEdepFromFCS_StepInfo(TileHitData &hitData, double ene, double yLocal, double halfYLocal, double zLocal, int Ushape) const =0
Method used by TileFastCaloSim/TileFCSmStepToTileHitVec.
TileHitData
Variables to identify Hit objects.
Definition: ITileCalculator.h:45
TileHitData::tilePeriod
int tilePeriod
Definition: ITileCalculator.h:55
ITileCalculator::GetTileMicroHit
virtual TileMicroHit GetTileMicroHit(const G4Step *, TileHitData &hitData) const =0
Used by FastCaloSimParamAction.
TileMicroHit::pmt_down
Identifier pmt_down
Definition: ITileCalculator.h:36
ITileCalculator::FindTileScinSection
virtual G4bool FindTileScinSection(const G4Step *, TileHitData &hitData) const =0
Search for the tilecal sub-section, its module and some identifiers.
TileHitData::section
TileGeoG4Section * section
Definition: ITileCalculator.h:46
TileHitData::nModule
int nModule
Definition: ITileCalculator.h:48
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
TileHitData::nDetector
int nDetector
Definition: ITileCalculator.h:49
TileHitData::nTower
int nTower
Definition: ITileCalculator.h:50
TileHitData::edep_up
G4double edep_up
Definition: ITileCalculator.h:61
TileHitData::isNegative
bool isNegative
Definition: ITileCalculator.h:58
TileHitData::totalTimeUp
double totalTimeUp
Definition: ITileCalculator.h:56
TileSDOptions
Definition: TileSDOptions.h:18
TileHitData::tileSize
int tileSize
Definition: ITileCalculator.h:54
TileHitData::pmtID_down
Identifier pmtID_down
Definition: ITileCalculator.h:60
TileHitData::scin_Time_up
double scin_Time_up
Definition: ITileCalculator.h:63
TileHitData::totalTimeDown
double totalTimeDown
Definition: ITileCalculator.h:57
ITileCalculator::ITileCalculator
ITileCalculator()
Definition: ITileCalculator.h:70
TileHitData::scin_Time_down
double scin_Time_down
Definition: ITileCalculator.h:64
TileMicroHit::e_down
G4double e_down
Definition: ITileCalculator.h:38
TileHitData::cell
TileGeoG4Cell * cell
Definition: ITileCalculator.h:47
TileHitData::pmtID_up
Identifier pmtID_up
Definition: ITileCalculator.h:59
TileMicroHit::time_up
double time_up
Definition: ITileCalculator.h:39
ITileCalculator::DeclareInterfaceID
DeclareInterfaceID(ITileCalculator, 1, 0)
ITileCalculator::MakePmtEdepTime
virtual G4bool MakePmtEdepTime(const G4Step *, TileHitData &hitData, double &deltaTime) const =0
Calculation of pmtID, edep and scin_Time with aStep (Sergey)