ATLAS Offline Software
Loading...
Searching...
No Matches
FCALFastSimDedicatedSD Class Reference

NEEDS DOCUMENTATION. More...

#include <FCALFastSimDedicatedSD.h>

Inheritance diagram for FCALFastSimDedicatedSD:
Collaboration diagram for FCALFastSimDedicatedSD:

Public Types

enum  LArHitTimeBins { HitTimeBinDefault = 0 , HitTimeBinUniform = 1 }

Public Member Functions

 FCALFastSimDedicatedSD (StoreGateSvc *, std::string hitCollectionName, bool verbose)
 ~FCALFastSimDedicatedSD ()
virtual void ProcessSpot (const EnergySpot &spot, double weight) override final
 ProcessHitsMethod.
void Initialize (G4HCofThisEvent *) override
 Register this regular SD with the event-owned builder.
G4bool ProcessHits (G4Step *a_step, G4TouchableHistory *) override
 Main processing method.
G4bool SimpleHit (const LArG4Identifier &lar_id, G4double time, G4double energy)
 First method translates to this - also for fast sims.
void setupHelpers (const LArEM_ID *EM, const LArFCAL_ID *FCAL, const LArHEC_ID *HEC)
 Sets the ID helper pointers.
Identifier ConvertID (const LArG4Identifier &a_ident) const
 Helper function for making "real" identifiers from LArG4Identifiers.

Protected Member Functions

G4int getTimeBin (G4double time) const
 Helper method for time info.
LArHitContainerBuildergetHitContainer () const

Protected Attributes

ILArCalculatorSvcm_calculator
 Member variable - the calculator we'll use.
G4int m_numberInvalidHits
 Count the number of invalid hits.
LArG4SimpleSD::LArHitTimeBins m_timeBinType
G4float m_timeBinWidth
 Width of the time bins for summing hits - for the uniform binning.
const LArEM_IDm_larEmID
 Pointers to the identifier helpers.
const LArFCAL_IDm_larFcalID
const LArHEC_IDm_larHecID

Private Member Functions

 FRIEND_TEST (LArG4SimpleSDtest, ProcessHits)
 FRIEND_TEST (LArG4SimpleSDtest, setupHelpers)
 FRIEND_TEST (LArG4SimpleSDtest, getTimeBin)
 FRIEND_TEST (LArG4SimpleSDtest, SimpleHit)
 FRIEND_TEST (LArG4SimpleSDtest, ConvertID)

Private Attributes

FCALDetectorManagerm_fcalManager
LArG4Identifier m_larID
 My LAr identifier.
std::string m_hitCollectionName
std::string m_hitSourceName

Detailed Description

NEEDS DOCUMENTATION.

Definition at line 21 of file FCALFastSimDedicatedSD.h.

Member Enumeration Documentation

◆ LArHitTimeBins

Enumerator
HitTimeBinDefault 
HitTimeBinUniform 

Definition at line 46 of file LArG4SimpleSD.h.

47 {
50 };

Constructor & Destructor Documentation

◆ FCALFastSimDedicatedSD()

FCALFastSimDedicatedSD::FCALFastSimDedicatedSD ( StoreGateSvc * detStore,
std::string hitCollectionName,
bool verbose )

Definition at line 23 of file FCALFastSimDedicatedSD.cxx.

26 : IFastSimDedicatedSD("FCALFastSimDedicatedSD", detStore,
27 std::move(hitCollectionName))
28 , m_fcalManager(nullptr)
29{
30 if (verbose) { G4cout << GetName() << "::initialize()" << G4endl; }
31 if ( detStore->retrieve(m_fcalManager).isFailure() ){
32 throw std::runtime_error("Could not retrieve FCAL manager");
33 }
34}
FCALDetectorManager * m_fcalManager
IFastSimDedicatedSD(const std::string &name, StoreGateSvc *detStore, std::string hitCollectionName)
Simple constructor and destructor.
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
bool verbose
Definition hcg.cxx:75

◆ ~FCALFastSimDedicatedSD()

FCALFastSimDedicatedSD::~FCALFastSimDedicatedSD ( )
inline

Definition at line 30 of file FCALFastSimDedicatedSD.h.

30{}

Member Function Documentation

◆ ConvertID()

Identifier LArG4SimpleSD::ConvertID ( const LArG4Identifier & a_ident) const
inherited

Helper function for making "real" identifiers from LArG4Identifiers.

◆ FRIEND_TEST() [1/5]

LArG4SimpleSD::FRIEND_TEST ( LArG4SimpleSDtest ,
ConvertID  )
privateinherited

◆ FRIEND_TEST() [2/5]

LArG4SimpleSD::FRIEND_TEST ( LArG4SimpleSDtest ,
getTimeBin  )
privateinherited

◆ FRIEND_TEST() [3/5]

LArG4SimpleSD::FRIEND_TEST ( LArG4SimpleSDtest ,
ProcessHits  )
privateinherited

◆ FRIEND_TEST() [4/5]

LArG4SimpleSD::FRIEND_TEST ( LArG4SimpleSDtest ,
setupHelpers  )
privateinherited

◆ FRIEND_TEST() [5/5]

LArG4SimpleSD::FRIEND_TEST ( LArG4SimpleSDtest ,
SimpleHit  )
privateinherited

◆ getHitContainer()

LArHitContainerBuilder * LArG4SimpleSD::getHitContainer ( ) const
protectedinherited

◆ getTimeBin()

G4int LArG4SimpleSD::getTimeBin ( G4double time) const
protectedinherited

Helper method for time info.

◆ Initialize()

void LArG4SimpleSD::Initialize ( G4HCofThisEvent * )
overrideinherited

Register this regular SD with the event-owned builder.

◆ ProcessHits()

G4bool LArG4SimpleSD::ProcessHits ( G4Step * a_step,
G4TouchableHistory *  )
overrideinherited

Main processing method.

◆ ProcessSpot()

void FCALFastSimDedicatedSD::ProcessSpot ( const EnergySpot & spot,
double weight )
finaloverridevirtual

ProcessHitsMethod.

Process a single energy spot from a frozen shower. The appropriate region of the sensitive detector is calculated and a LArIdentifier is constructed

Implements IFastSimDedicatedSD.

Definition at line 37 of file FCALFastSimDedicatedSD.cxx.

37 {
38 // Fill the identifier.
39
40 static const Transform3D xfNeg[3] = {
41 Amg::EigenTransformToCLHEP(m_fcalManager->getFCAL(FCALModule::Module(1),FCALModule::Endcap(0))->getAbsoluteTransform().inverse()),
42 Amg::EigenTransformToCLHEP(m_fcalManager->getFCAL(FCALModule::Module(2),FCALModule::Endcap(0))->getAbsoluteTransform().inverse()),
43 Amg::EigenTransformToCLHEP(m_fcalManager->getFCAL(FCALModule::Module(3),FCALModule::Endcap(0))->getAbsoluteTransform().inverse())};
44
45 static const Transform3D xfPos[3] = {
46 Amg::EigenTransformToCLHEP(m_fcalManager->getFCAL(FCALModule::Module(1),FCALModule::Endcap(1))->getAbsoluteTransform().inverse()),
47 Amg::EigenTransformToCLHEP(m_fcalManager->getFCAL(FCALModule::Module(2),FCALModule::Endcap(1))->getAbsoluteTransform().inverse()),
48 Amg::EigenTransformToCLHEP(m_fcalManager->getFCAL(FCALModule::Module(3),FCALModule::Endcap(1))->getAbsoluteTransform().inverse())};
49
50 static const GeoTubs * const fcalTubs[3] = {
51 (const GeoTubs *) m_fcalManager->getFCAL(FCALModule::Module(1),FCALModule::Endcap(0))->getMaterialGeom()->getLogVol()->getShape(),
52 (const GeoTubs *) m_fcalManager->getFCAL(FCALModule::Module(2),FCALModule::Endcap(0))->getMaterialGeom()->getLogVol()->getShape(),
53 (const GeoTubs *) m_fcalManager->getFCAL(FCALModule::Module(3),FCALModule::Endcap(0))->getMaterialGeom()->getLogVol()->getShape()};
54
55
56 // Fill the identifier.
57 Point3D<double> globalPosition=spot.GetPosition();
58
59 // Figure out if it is in the positive endcap or the netative endcap:
60 bool iAmPositive=globalPosition.z()>0.;
61 int module=1;
62 Point3D<double> localPosition= iAmPositive ? (xfPos[0]*globalPosition) : (xfNeg[0]*globalPosition);
63 if (fabs(localPosition.z()) > fcalTubs[0]->getZHalfLength()) {
64 module=2;
65 localPosition= iAmPositive ? (xfPos[1]*globalPosition) : (xfNeg[1]*globalPosition);
66 if (fabs(localPosition.z()) > fcalTubs[1]->getZHalfLength()) {
67 module=3;
68 localPosition= iAmPositive ? (xfPos[2]*globalPosition) : (xfNeg[2]*globalPosition);
69 if (fabs(localPosition.z()) > fcalTubs[2]->getZHalfLength()) {
70 module=0;
71 }
72 }
73 }
74
75 if (!module) {
76 // std::cout << "Warning in FCALFastSimDedicatedSD: Cannot locate module" << std::endl;
77 return;
78 }
79
80 const FCAL_ChannelMap *cmap = m_fcalManager->getChannelMap();
81 int sampling=module;
82 int etaIndex=0, phiIndex=0;
83 bool ok = cmap->getTileID(sampling,
84 localPosition.x(),
85 localPosition.y(),
86 etaIndex,
87 phiIndex);
88
89
90 // zSide is negative if z<0.
91 int zSide = iAmPositive ? 2:-2;
92 //static LArG4Identifier id;
93 m_larID.clear();
94 if (ok){
95 m_larID << 4 // LArCalorimeter
96 << 3 // LArFCAL
97 << zSide // EndCap
98 << sampling // FCal Module #
99 << etaIndex
100 << phiIndex;
101 } else {
102 return;
103 }
104
105 // call process to add this to the collection
106 SimpleHit(m_larID, spot.GetTime(), spot.GetEnergy()*weight);
107 return;
108}
Eigen::Affine3d Transform3D
G4ThreeVector GetPosition() const
Definition EnergySpot.h:40
G4double GetEnergy() const
Definition EnergySpot.h:37
G4double GetTime() const
Definition EnergySpot.h:43
LArG4Identifier m_larID
My LAr identifier.
bool getTileID(int isam, float x, float y, int &eta, int &phi) const
-— For the new LArFCAL_ID Identifier
G4bool SimpleHit(const LArG4Identifier &lar_id, G4double time, G4double energy)
First method translates to this - also for fast sims.
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition EtaPhiLUT.cxx:23

◆ setupHelpers()

void LArG4SimpleSD::setupHelpers ( const LArEM_ID * EM,
const LArFCAL_ID * FCAL,
const LArHEC_ID * HEC )
inlineinherited

Sets the ID helper pointers.

Definition at line 75 of file LArG4SimpleSD.h.

77 {
78 m_larEmID = EM;
81 }
const LArHEC_ID * m_larHecID
const LArFCAL_ID * m_larFcalID
const LArEM_ID * m_larEmID
Pointers to the identifier helpers.

◆ SimpleHit()

G4bool LArG4SimpleSD::SimpleHit ( const LArG4Identifier & lar_id,
G4double time,
G4double energy )
inherited

First method translates to this - also for fast sims.

Member Data Documentation

◆ m_calculator

ILArCalculatorSvc* LArG4SimpleSD::m_calculator
protectedinherited

Member variable - the calculator we'll use.

Definition at line 91 of file LArG4SimpleSD.h.

◆ m_fcalManager

FCALDetectorManager* FCALFastSimDedicatedSD::m_fcalManager
private

Definition at line 37 of file FCALFastSimDedicatedSD.h.

◆ m_hitCollectionName

std::string LArG4SimpleSD::m_hitCollectionName
privateinherited

Definition at line 122 of file LArG4SimpleSD.h.

◆ m_hitSourceName

std::string LArG4SimpleSD::m_hitSourceName
privateinherited

Definition at line 123 of file LArG4SimpleSD.h.

◆ m_larEmID

const LArEM_ID* LArG4SimpleSD::m_larEmID
protectedinherited

Pointers to the identifier helpers.

Definition at line 115 of file LArG4SimpleSD.h.

◆ m_larFcalID

const LArFCAL_ID* LArG4SimpleSD::m_larFcalID
protectedinherited

Definition at line 116 of file LArG4SimpleSD.h.

◆ m_larHecID

const LArHEC_ID* LArG4SimpleSD::m_larHecID
protectedinherited

Definition at line 117 of file LArG4SimpleSD.h.

◆ m_larID

LArG4Identifier FCALFastSimDedicatedSD::m_larID
private

My LAr identifier.

Definition at line 40 of file FCALFastSimDedicatedSD.h.

◆ m_numberInvalidHits

G4int LArG4SimpleSD::m_numberInvalidHits
protectedinherited

Count the number of invalid hits.

Definition at line 94 of file LArG4SimpleSD.h.

◆ m_timeBinType

LArG4SimpleSD::LArHitTimeBins LArG4SimpleSD::m_timeBinType
protectedinherited

Definition at line 109 of file LArG4SimpleSD.h.

◆ m_timeBinWidth

G4float LArG4SimpleSD::m_timeBinWidth
protectedinherited

Width of the time bins for summing hits - for the uniform binning.

Definition at line 112 of file LArG4SimpleSD.h.


The documentation for this class was generated from the following files: