ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
FCS_Param::FCS_StepInfoSDTool Class Reference

A base class for tools that manage FCS_StepInfoSDs. More...

#include <FCS_StepInfoSDTool.h>

Inheritance diagram for FCS_Param::FCS_StepInfoSDTool:
Collaboration diagram for FCS_Param::FCS_StepInfoSDTool:

Public Member Functions

 FCS_StepInfoSDTool (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor. More...
 
StatusCode initialize () override final
 Initialize the tool. More...
 
StatusCode Gather () override final
 Calls down to all the SDs to pack their hits into one collection. More...
 
StatusCode initializeSD () override
 Setup an SD in the current thread. More...
 
virtual StatusCode SetupEvent () override
 Beginning of an athena event. More...
 

Protected Member Functions

StatusCode assignSD (G4VSensitiveDetector *sd, const std::vector< std::string > &volumes) const
 Assign SD to a list of volumes. More...
 
G4VSensitiveDetector * getSD ()
 Retrieve the current SD. More...
 
void SetSensitiveDetector (G4LogicalVolume *, G4VSensitiveDetector *) const
 Method stolen from G4VUserDetectorConstruction in G4 10.2. More...
 

Protected Attributes

Gaudi::Property< std::vector< std::string > > m_volumeNames {this, "LogicalVolumeNames", {}}
 All the volumes to which this SD is assigned. More...
 
Gaudi::Property< std::vector< std::string > > m_outputCollectionNames {this, "OutputCollectionNames", {}}
 Names of all output collections written out by this SD. More...
 
Gaudi::Property< bool > m_noVolumes {this, "NoVolumes", false}
 This SensitiveDetector has no volumes associated with it. More...
 

Private Member Functions

G4VSensitiveDetector * makeSD () const override final
 Create the SD wrapper for current worker thread. More...
 
virtual StatusCode initializeCalculators ()
 Initialize Calculator Services. More...
 
std::unique_ptr< FCS_StepInfoSDmakeOneLArSD (const std::string &name, ILArCalculatorSvc *calc, const std::vector< std::string > &volumes) const
 Helper method to create one SD. More...
 
std::unique_ptr< FCS_StepInfoSDmakeOneTileSD (const std::string &name, ITileCalculator *calc, const std::vector< std::string > &volumes) const
 Helper method to create one SD. More...
 
void setSD (G4VSensitiveDetector *)
 Set the current SD. More...
 

Static Private Member Functions

static bool matchStrings (const char *first, const char *second)
 Match two strings with wildcard support. More...
 

Private Attributes

std::string m_hitCollName
 Hit collection name. More...
 
ServiceHandle< ILArCalculatorSvcm_bpsmodcalc
 
ServiceHandle< ILArCalculatorSvcm_embcalc
 
ServiceHandle< ILArCalculatorSvcm_emepiwcalc
 
ServiceHandle< ILArCalculatorSvcm_emeniwcalc
 
ServiceHandle< ILArCalculatorSvcm_emepowcalc
 
ServiceHandle< ILArCalculatorSvcm_emenowcalc
 
ServiceHandle< ILArCalculatorSvcm_emepscalc
 
ServiceHandle< ILArCalculatorSvcm_emepobarcalc
 
ServiceHandle< ILArCalculatorSvcm_emenobarcalc
 
ServiceHandle< ILArCalculatorSvcm_heccalc
 
ServiceHandle< ILArCalculatorSvcm_fcal1calc
 
ServiceHandle< ILArCalculatorSvcm_fcal2calc
 
ServiceHandle< ILArCalculatorSvcm_fcal3calc
 
ServiceHandle< ITileCalculatorm_tileCalculator
 
FCS_Param::Config m_config
 
G4VSensitiveDetector * m_SD {}
 The sensitive detector to which this thing corresponds. More...
 
SD volumes
std::vector< std::string > m_stacVolumes
 
std::vector< std::string > m_presBarVolumes
 
std::vector< std::string > m_posIWVolumes
 
std::vector< std::string > m_negIWVolumes
 
std::vector< std::string > m_posOWVolumes
 
std::vector< std::string > m_negOWVolumes
 
std::vector< std::string > m_presECVolumes
 
std::vector< std::string > m_pBOBVolumes
 
std::vector< std::string > m_nBOBVolumes
 
std::vector< std::string > m_fcal1Volumes
 
std::vector< std::string > m_fcal2Volumes
 
std::vector< std::string > m_fcal3Volumes
 
std::vector< std::string > m_sliceVolumes
 
std::vector< std::string > m_tileVolumes
 
Calo identifier helpers
const LArEM_IDm_larEmID
 
const LArFCAL_IDm_larFcalID
 
const LArHEC_IDm_larHecID
 
const TileIDm_tileID
 

Detailed Description

A base class for tools that manage FCS_StepInfoSDs.

Todo:
Add more details.
Author
Steve Farrell Steve.nosp@m.n.Fa.nosp@m.rrell.nosp@m.@cer.nosp@m.n.ch

Definition at line 41 of file FCS_StepInfoSDTool.h.

Constructor & Destructor Documentation

◆ FCS_StepInfoSDTool()

FCS_Param::FCS_StepInfoSDTool::FCS_StepInfoSDTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Constructor.

Definition at line 36 of file FCS_StepInfoSDTool.cxx.

39  , m_hitCollName("MergedEventSteps")
40  , m_bpsmodcalc("EMBPresamplerCalculator", name)
41  , m_embcalc("EMBCalculator", name)
42  , m_emepiwcalc("EMECPosInnerWheelCalculator", name)
43  , m_emeniwcalc("EMECNegInnerWheelCalculator", name)
44  , m_emepowcalc("EMECPosOuterWheelCalculator", name)
45  , m_emenowcalc("EMECNegOuterWheelCalculator", name)
46  , m_emepscalc("EMECPresamplerCalculator", name)
47  , m_emepobarcalc("EMECPosBackOuterBarretteCalculator", name)
48  , m_emenobarcalc("EMECNegBackOuterBarretteCalculator", name)
49  , m_heccalc("HECWheelCalculator", name)
50  , m_fcal1calc("FCAL1Calculator", name)
51  , m_fcal2calc("FCAL2Calculator", name)
52  , m_fcal3calc("FCAL3Calculator", name)
53  , m_tileCalculator("TileGeoG4SDCalc", name)
54  , m_larEmID(nullptr)
55  , m_larFcalID(nullptr)
56  , m_larHecID(nullptr)
57  , m_tileID(nullptr)
58  , m_config()
59  {
60  declareProperty("HitCollectionName", m_hitCollName);
61  declareProperty("StacVolumes", m_stacVolumes);
62  declareProperty("PresamplerVolumes", m_presBarVolumes);
63  declareProperty("PosIWVolumes", m_posIWVolumes);
64  declareProperty("NegIWVolumes", m_negIWVolumes);
65  declareProperty("PosOWVolumes", m_posOWVolumes);
66  declareProperty("NegOWVolumes", m_negOWVolumes);
67  declareProperty("PresVolumes", m_presECVolumes);
68  declareProperty("PosBOBarretteVolumes", m_pBOBVolumes);
69  declareProperty("NegBOBarretteVolumes", m_nBOBVolumes);
70  declareProperty("FCAL1Volumes", m_fcal1Volumes);
71  declareProperty("FCAL2Volumes", m_fcal2Volumes);
72  declareProperty("FCAL3Volumes", m_fcal3Volumes);
73  declareProperty("SliceVolumes", m_sliceVolumes);
74  declareProperty("TileVolumes", m_tileVolumes);
75 
76  declareProperty("EMBPSCalculator",m_bpsmodcalc);
77  declareProperty("EMBCalculator",m_embcalc);
78  declareProperty("EMECPosIWCalculator",m_emepiwcalc);
79  declareProperty("EMECNegIWCalculator",m_emeniwcalc);
80  declareProperty("EMECPosOWCalculator",m_emepowcalc);
81  declareProperty("EMECNegOWCalculator",m_emenowcalc);
82  declareProperty("EMECPSCalculator",m_emepscalc);
83  declareProperty("EMECPosBOBCalculator",m_emepobarcalc);
84  declareProperty("EMECNegBOBCalculator",m_emenobarcalc);
85  declareProperty("HECWActiveCalculator",m_heccalc);
86  declareProperty("FCAL1Calculator",m_fcal1calc);
87  declareProperty("FCAL2Calculator",m_fcal2calc);
88  declareProperty("FCAL3Calculator",m_fcal3calc);
89  declareProperty("TileCalculator", m_tileCalculator);
90 
91  declareProperty("shift_lar_subhit",m_config.shift_lar_subhit, "");
92  declareProperty("shorten_lar_step",m_config.shorten_lar_step, "");
93 
94  declareProperty("maxRadius",m_config.m_maxRadius, "");
95  declareProperty("maxRadiusFine",m_config.m_maxRadiusFine, "");
96  declareProperty("maxRadiusLAr",m_config.m_maxRadiusLAr, "");
97  declareProperty("maxRadiusHEC",m_config.m_maxRadiusHEC, "");
98  declareProperty("maxRadiusFCAL",m_config.m_maxRadiusFCAL, "");
99  declareProperty("maxRadiusTile",m_config.m_maxRadiusTile, "");
100 
101  declareProperty("maxTime",m_config.m_maxTime, "");
102  declareProperty("maxTimeLAr",m_config.m_maxTimeLAr, "");
103  declareProperty("maxTimeHEC",m_config.m_maxTimeHEC, "");
104  declareProperty("maxTimeFCAL",m_config.m_maxTimeFCAL, "");
105  declareProperty("maxTimeTile",m_config.m_maxTimeTile, "");
106 
107  declareProperty("maxEtaPS", m_config.m_maxEtaPS, "");
108  declareProperty("maxPhiPS", m_config.m_maxPhiPS, "");
109  declareProperty("maxrPS", m_config.m_maxrPS, "");
110 
111  declareProperty("maxEtaEM1", m_config.m_maxEtaEM1, "");
112  declareProperty("maxPhiEM1", m_config.m_maxPhiEM1, "");
113  declareProperty("maxrEM1", m_config.m_maxrEM1, "");
114 
115  declareProperty("maxEtaEM2", m_config.m_maxEtaEM2, "");
116  declareProperty("maxPhiEM2", m_config.m_maxPhiEM2, "");
117  declareProperty("maxrEM2", m_config.m_maxrEM2, "");
118 
119  declareProperty("maxEtaEM3", m_config.m_maxEtaEM3, "");
120  declareProperty("maxPhiEM3", m_config.m_maxPhiEM3, "");
121  declareProperty("maxrEM3", m_config.m_maxrEM3, "");
122  }

Member Function Documentation

◆ assignSD()

StatusCode SensitiveDetectorBase::assignSD ( G4VSensitiveDetector *  sd,
const std::vector< std::string > &  volumes 
) const
protectedinherited

Assign SD to a list of volumes.

This method supports wild card matching

Definition at line 69 of file SensitiveDetectorBase.cxx.

71 {
72  // Propagate verbosity setting to the SD
73  if(msgLvl(MSG::VERBOSE)) sd->SetVerboseLevel(10);
74  else if(msgLvl(MSG::DEBUG)) sd->SetVerboseLevel(5);
75 
76  // Add the sensitive detector to the SD manager in G4 for SDs,
77  // even if it has no volumes associated to it.
78  auto sdMgr = G4SDManager::GetSDMpointer();
79  sdMgr->AddNewDetector(sd);
80 
81  if(!volumes.empty()) {
82  bool gotOne = false;
83  auto logicalVolumeStore = G4LogicalVolumeStore::GetInstance();
84  for(const auto& volumeName : volumes) {
85  // Keep track of how many volumes we find with this name string.
86  // We allow for multiple matches.
87  int numFound = 0;
88 
89  // Find volumes with this name
90  for(auto* logVol : *logicalVolumeStore) {
91 
92  ATH_MSG_VERBOSE("Check whether "<<logVol->GetName()<<" belongs to the set of sensitive detectors "<<volumeName);
93  if( matchStrings( volumeName.data(), logVol->GetName() ) ){
94  ++numFound;
95  SetSensitiveDetector(logVol, sd);
96  }
97 
98  }
99  // Warn if no volumes were found
100  if(numFound == 0) {
101  ATH_MSG_WARNING("Volume " << volumeName <<
102  " not found in G4LogicalVolumeStore.");
103  }
104  else {
105  ATH_MSG_VERBOSE("Found " << numFound << " copies of LV " << volumeName <<
106  "; SD " << sd->GetName() << " assigned.");
107  gotOne = true;
108  }
109 
110  }
111 
112  // Abort if we have failed to assign any volume
113  if(!gotOne) {
114  ATH_MSG_ERROR( "Failed to assign *any* volume to SD " << name() <<
115  " and expected at least one. Size of the volume store "<<G4LogicalVolumeStore::GetInstance()->size() );
116  return StatusCode::FAILURE;
117  }
118  }
119 
120  return StatusCode::SUCCESS;
121 }

◆ Gather()

StatusCode FCS_Param::FCS_StepInfoSDTool::Gather ( )
finaloverridevirtual

Calls down to all the SDs to pack their hits into one collection.

Reimplemented from SensitiveDetectorBase.

Definition at line 189 of file FCS_StepInfoSDTool.cxx.

190  {
191  ATH_MSG_DEBUG("Gathering hits to write out in " << name());
192  auto *sdWrapper = dynamic_cast<FCS_StepInfoSDWrapper*>( getSD() );
193  if(!sdWrapper) {
194  ATH_MSG_ERROR("Failed to cast SD to FCS_StepInfoSDWrapper");
195  return StatusCode::FAILURE;
196  }
197  sdWrapper->EndOfAthenaEvent();
198  return StatusCode::SUCCESS;
199  }

◆ getSD()

G4VSensitiveDetector * SensitiveDetectorBase::getSD ( )
protectedinherited

Retrieve the current SD.

In AthenaMT, this means the thread-local SD. Otherwise, it is simply the single SD.

Definition at line 123 of file SensitiveDetectorBase.cxx.

124 {
125 #ifdef G4MULTITHREADED
126  // Get current thread-ID
127  const auto tid = std::this_thread::get_id();
128  // Retrieve it from the SD map
129  auto sdPair = m_sdThreadMap.find(tid);
130  if(sdPair == m_sdThreadMap.end()) return nullptr;
131  return sdPair->second;
132 #else
133  return m_SD;
134 #endif
135 }

◆ initialize()

StatusCode FCS_Param::FCS_StepInfoSDTool::initialize ( )
finaloverride

Initialize the tool.

Definition at line 127 of file FCS_StepInfoSDTool.cxx.

128  {
129  ATH_MSG_DEBUG( "Initializing " << name() );
130 
131  const CaloIdManager* idMgr = nullptr;
132  CHECK( detStore()->retrieve(idMgr) );
133  m_larEmID = idMgr->getEM_ID();
134  if(m_larEmID == nullptr) {
135  ATH_MSG_ERROR("Invalid LAr EM ID helper");
136  return StatusCode::FAILURE;
137  }
138  m_larFcalID = idMgr->getFCAL_ID();
139  if(m_larFcalID == nullptr) {
140  ATH_MSG_ERROR("Invalid LAr FCAL ID helper");
141  return StatusCode::FAILURE;
142  }
143  m_larHecID = idMgr->getHEC_ID();
144  if(m_larHecID == nullptr) {
145  ATH_MSG_ERROR("Invalid LAr HEC ID helper");
146  return StatusCode::FAILURE;
147  }
148  m_tileID = idMgr->getTileID();
149  if(m_tileID == nullptr) {
150  ATH_MSG_ERROR("Invalid Tile ID helper");
151  return StatusCode::FAILURE;
152  }
153 
154  // No general volume list for SensitiveDetectorBase
155  m_noVolumes = true;
156 
158 
159  return StatusCode::SUCCESS;
160  }

◆ initializeCalculators()

StatusCode FCS_Param::FCS_StepInfoSDTool::initializeCalculators ( )
privatevirtual

Initialize Calculator Services.

Definition at line 165 of file FCS_StepInfoSDTool.cxx.

166  {
167  // Lots of calculators !!!
168  ATH_CHECK(m_bpsmodcalc.retrieve());
169  ATH_CHECK(m_embcalc.retrieve());
170  ATH_CHECK(m_emepiwcalc.retrieve());
171  ATH_CHECK(m_emeniwcalc.retrieve());
172  ATH_CHECK(m_emepowcalc.retrieve());
173  ATH_CHECK(m_emenowcalc.retrieve());
174  ATH_CHECK(m_emepscalc.retrieve());
175  ATH_CHECK(m_emepobarcalc.retrieve());
176  ATH_CHECK(m_emenobarcalc.retrieve());
177  ATH_CHECK(m_heccalc.retrieve());
178  ATH_CHECK(m_fcal1calc.retrieve());
179  ATH_CHECK(m_fcal2calc.retrieve());
180  ATH_CHECK(m_fcal3calc.retrieve());
181  ATH_CHECK(m_tileCalculator.retrieve());
182 
183  return StatusCode::SUCCESS;
184  }

◆ initializeSD()

StatusCode SensitiveDetectorBase::initializeSD ( )
overrideinherited

Setup an SD in the current thread.

Separate from the AthAlgTool initialize() method because it needs to be called once per worker thread in AthenaMT. Don't confuse this with the G4 SD method Initialize which is called at the beginning of every G4 event.

Definition at line 30 of file SensitiveDetectorBase.cxx.

31 {
32  ATH_MSG_VERBOSE( name() << "::initializeSD()" );
33 
34  // Sanity check for volume configuration problems.
35  // It would be better to have a more robust solution for this.
36  if(m_volumeNames.empty() != m_noVolumes) {
37  ATH_MSG_ERROR("Initializing SD from " << name() << ", NoVolumes = "
38  << (m_noVolumes? "true" : "false") << ", but LogicalVolumeNames = "
39  << m_volumeNames.value());
40  return StatusCode::FAILURE;
41  }
42 
43  // Make sure SD isn't already registered
44  if(getSD())
45  {
46  ATH_MSG_ERROR("Trying to create a SD which already exists!");
47  return StatusCode::FAILURE;
48  }
49 
50  // Make the SD stored by this tool
51  auto* sd = makeSD();
52  if(!sd)
53  {
54  ATH_MSG_ERROR("Failed to create SD!");
55  return StatusCode::FAILURE;
56  }
57  setSD(sd);
58 
59  // Assign the SD to our list of volumes
60  ATH_CHECK( assignSD( getSD(), m_volumeNames.value() ) );
61 
62  ATH_MSG_DEBUG( "Initialized and added SD " << name() );
63  return StatusCode::SUCCESS;
64 }

◆ makeOneLArSD()

std::unique_ptr< FCS_StepInfoSD > FCS_Param::FCS_StepInfoSDTool::makeOneLArSD ( const std::string &  name,
ILArCalculatorSvc calc,
const std::vector< std::string > &  volumes 
) const
private

Helper method to create one SD.

Definition at line 232 of file FCS_StepInfoSDTool.cxx.

234  {
235  ATH_MSG_VERBOSE( name() << " makeOneSD" );
236 
237  // Parse the wildcard patterns for existing volume names
238  auto parsedVolumes = LArG4::findLogicalVolumes(volumes, msg()); // from LArG4Code/VolumeUtils.h
239 
240  // Inject the Calculator into m_config
242  config.m_LArCalculator = calc;
243  if(!calc) {
244  throw GaudiException("nullptr for ILArCalculatorSvc provided to constructor for: " + sdName,
245  name(), StatusCode::FAILURE);
246  }
247  if(msgLvl(MSG::VERBOSE)) { config.verboseLevel = 10; }
248  else if(msgLvl(MSG::DEBUG)) { config.verboseLevel = 5; }
249  // Create the simple SD
250  std::unique_ptr<FCS_StepInfoSD> sd =
251  std::make_unique<LArFCS_StepInfoSD>(sdName, config);
252  sd->setupHelpers(m_larEmID, m_larFcalID, m_larHecID, m_tileID);
253 
254  // Assign the volumes to the SD
255  if( this->assignSD( sd.get(), parsedVolumes ).isFailure() ) {
256  // TODO: can I just return NULL here?
257  throw GaudiException("Failed to assign sd: " + sdName,
258  name(), StatusCode::FAILURE);
259  }
260  return sd;
261  }

◆ makeOneTileSD()

std::unique_ptr< FCS_StepInfoSD > FCS_Param::FCS_StepInfoSDTool::makeOneTileSD ( const std::string &  name,
ITileCalculator calc,
const std::vector< std::string > &  volumes 
) const
private

Helper method to create one SD.

Definition at line 267 of file FCS_StepInfoSDTool.cxx.

269  {
270  ATH_MSG_VERBOSE( name() << " makeOneSD" );
271 
272  // Inject the Calculator into m_config
274  config.m_TileCalculator = calc;
275  if(!calc) {
276  throw GaudiException("nullptr for ITileCalculator provided to constructor for: " + sdName,
277  name(), StatusCode::FAILURE);
278  }
279  if(msgLvl(MSG::VERBOSE)) { config.verboseLevel = 10; }
280  else if(msgLvl(MSG::DEBUG)) { config.verboseLevel = 5; }
281  // Create the simple SD
282  std::unique_ptr<FCS_StepInfoSD> sd =
283  std::make_unique<TileFCS_StepInfoSD>(sdName, config);
284  sd->setupHelpers(m_larEmID, m_larFcalID, m_larHecID, m_tileID);
285 
286  // Assign the volumes to the SD
287  if( this->assignSD( sd.get(), volumes ).isFailure() ) {
288  // TODO: can I just return NULL here?
289  throw GaudiException("Failed to assign sd: " + sdName,
290  name(), StatusCode::FAILURE);
291  }
292  return sd;
293  }

◆ makeSD()

G4VSensitiveDetector * FCS_Param::FCS_StepInfoSDTool::makeSD ( ) const
finaloverrideprivate

Create the SD wrapper for current worker thread.

Definition at line 204 of file FCS_StepInfoSDTool.cxx.

205  {
206  // Create the wrapper
207  auto *sdWrapper = new FCS_StepInfoSDWrapper("FCS_StepInfoSDWrapper", m_hitCollName);
208 
209  // Create the SDs.
210  sdWrapper->addSD( makeOneLArSD( "Barrel::Presampler::Module::StepInfo", &*m_bpsmodcalc, m_presBarVolumes ) );
211  sdWrapper->addSD( makeOneLArSD( "EMB::STAC::StepInfo", &*m_embcalc, m_stacVolumes ) );
212  sdWrapper->addSD( makeOneLArSD( "EMEC::Pos::InnerWheel::StepInfo", &*m_emepiwcalc, m_posIWVolumes ) );
213  sdWrapper->addSD( makeOneLArSD( "EMEC::Neg::InnerWheel::StepInfo", &*m_emeniwcalc, m_negIWVolumes ) );
214  sdWrapper->addSD( makeOneLArSD( "EMEC::Pos::OuterWheel::StepInfo", &*m_emepowcalc, m_posOWVolumes ) );
215  sdWrapper->addSD( makeOneLArSD( "EMEC::Neg::OuterWheel::StepInfo", &*m_emenowcalc, m_negOWVolumes ) );
216  sdWrapper->addSD( makeOneLArSD( "Endcap::Presampler::LiquidArgon::StepInfo", &*m_emepscalc, m_presECVolumes ) );
217  sdWrapper->addSD( makeOneLArSD( "EMEC::Pos::BackOuterBarrette::StepInfo", &*m_emepobarcalc, m_pBOBVolumes ) );
218  sdWrapper->addSD( makeOneLArSD( "EMEC::Neg::BackOuterBarrette::StepInfo", &*m_emenobarcalc, m_nBOBVolumes ) );
219  sdWrapper->addSD( makeOneLArSD( "FCAL::Module1::Gap::StepInfo", &*m_fcal1calc, m_fcal1Volumes ) );
220  sdWrapper->addSD( makeOneLArSD( "FCAL::Module2::Gap::StepInfo", &*m_fcal2calc, m_fcal2Volumes ) );
221  sdWrapper->addSD( makeOneLArSD( "FCAL::Module3::Gap::StepInfo", &*m_fcal3calc, m_fcal3Volumes ) );
222  sdWrapper->addSD( makeOneLArSD( "HEC::Module::Depth::Slice::Wheel::StepInfo", &*m_heccalc, m_sliceVolumes ) );
223  sdWrapper->addSD( makeOneTileSD( "Tile::Scintillator::StepInfo", &*m_tileCalculator, m_tileVolumes ) );
224 
225  return sdWrapper;
226  }

◆ matchStrings()

bool SensitiveDetectorBase::matchStrings ( const char *  first,
const char *  second 
)
staticprivateinherited

Match two strings with wildcard support.

Compares two strings character by character with optional * wildcard in the first argument

Definition at line 150 of file SensitiveDetectorBase.cxx.

151 {
152  // If we reach at the end of both strings, we are done
153  if (*first == '\0' && *second == '\0')
154  return true;
155 
156  // If there are consecutive '*' present in the first string
157  // advance to the next character
158  if(*first == '*' && *(first + 1) == '*')
159  return matchStrings(first + 1, second);
160 
161  // Make sure that the characters after '*' are present in second string.
162  if (*first == '*' && *(first + 1) != '\0' && *second == '\0')
163  return false;
164 
165  // If the current characters of both strings match
166  if (*first == *second)
167  return matchStrings(first + 1, second + 1);
168 
169  // If there is *, then there are two possibilities
170  // a) We consider current character of second string
171  // b) We ignore current character of second string.
172  if (*first == '*')
173  return matchStrings(first + 1, second) || matchStrings(first, second + 1);
174  return false;
175 }

◆ setSD()

void SensitiveDetectorBase::setSD ( G4VSensitiveDetector *  sd)
privateinherited

Set the current SD.

In hive, this gets assigned as the thread-local SD.

Definition at line 137 of file SensitiveDetectorBase.cxx.

138 {
139 #ifdef G4MULTITHREADED
140  const auto tid = std::this_thread::get_id();
141  ATH_MSG_DEBUG("Creating and registering SD " << sd << " in thread " << tid);
142  m_sdThreadMap.insert( std::make_pair(tid, sd) );
143 #else
144  m_SD = sd;
145 #endif
146 }

◆ SetSensitiveDetector()

void SensitiveDetectorBase::SetSensitiveDetector ( G4LogicalVolume *  logVol,
G4VSensitiveDetector *  aSD 
) const
protectedinherited

Method stolen from G4VUserDetectorConstruction in G4 10.2.

Definition at line 177 of file SensitiveDetectorBase.cxx.

179 {
180  // New Logic: allow for "multiple" SDs being attached to a single LV.
181  // To do that we use a special proxy SD called G4MultiSensitiveDetector
182 
183  // Get existing SD if already set and check if it is of the special type
184  G4VSensitiveDetector* originalSD = logVol->GetSensitiveDetector();
185  if ( originalSD == nullptr )
186  {
187  logVol->SetSensitiveDetector(aSD);
188  }
189  else
190  {
191  G4MultiSensitiveDetector* msd = dynamic_cast<G4MultiSensitiveDetector*>(originalSD);
192  if ( msd != nullptr )
193  {
194  msd->AddSD(aSD);
195  }
196  else
197  {
198  // Construct a unique name using the volume address
199  std::stringstream ss;
200  ss << static_cast<const void*>(logVol);
201  const G4String msdname = "/MultiSD_" + logVol->GetName() + ss.str();
202  //ATH_MSG_INFO("MultiSD name: " << msdname);
203  msd = new G4MultiSensitiveDetector(msdname);
204  // We need to register the proxy to have correct handling of IDs
205  G4SDManager::GetSDMpointer()->AddNewDetector(msd);
206  msd->AddSD(originalSD);
207  msd->AddSD(aSD);
208  logVol->SetSensitiveDetector(msd);
209  }
210  }
211 }

◆ SetupEvent()

virtual StatusCode SensitiveDetectorBase::SetupEvent ( )
inlineoverridevirtualinherited

Beginning of an athena event.

This is where collection initialization should happen. If we are using a WriteHandle, then this could be empty.

Reimplemented in MuonWallSDTool, AFP_SensitiveDetectorTool, AFP_SiDSensitiveDetectorTool, AFP_TDSensitiveDetectorTool, CaloCellContainerSDTool, and ALFA_SensitiveDetectorTool.

Definition at line 62 of file SensitiveDetectorBase.h.

62 { return StatusCode::SUCCESS; }

Member Data Documentation

◆ m_bpsmodcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_bpsmodcalc
private

Definition at line 95 of file FCS_StepInfoSDTool.h.

◆ m_config

FCS_Param::Config FCS_Param::FCS_StepInfoSDTool::m_config
private

Definition at line 117 of file FCS_StepInfoSDTool.h.

◆ m_embcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_embcalc
private

Definition at line 96 of file FCS_StepInfoSDTool.h.

◆ m_emeniwcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_emeniwcalc
private

Definition at line 98 of file FCS_StepInfoSDTool.h.

◆ m_emenobarcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_emenobarcalc
private

Definition at line 103 of file FCS_StepInfoSDTool.h.

◆ m_emenowcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_emenowcalc
private

Definition at line 100 of file FCS_StepInfoSDTool.h.

◆ m_emepiwcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_emepiwcalc
private

Definition at line 97 of file FCS_StepInfoSDTool.h.

◆ m_emepobarcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_emepobarcalc
private

Definition at line 102 of file FCS_StepInfoSDTool.h.

◆ m_emepowcalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_emepowcalc
private

Definition at line 99 of file FCS_StepInfoSDTool.h.

◆ m_emepscalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_emepscalc
private

Definition at line 101 of file FCS_StepInfoSDTool.h.

◆ m_fcal1calc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_fcal1calc
private

Definition at line 105 of file FCS_StepInfoSDTool.h.

◆ m_fcal1Volumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_fcal1Volumes
private

Definition at line 88 of file FCS_StepInfoSDTool.h.

◆ m_fcal2calc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_fcal2calc
private

Definition at line 106 of file FCS_StepInfoSDTool.h.

◆ m_fcal2Volumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_fcal2Volumes
private

Definition at line 89 of file FCS_StepInfoSDTool.h.

◆ m_fcal3calc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_fcal3calc
private

Definition at line 107 of file FCS_StepInfoSDTool.h.

◆ m_fcal3Volumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_fcal3Volumes
private

Definition at line 90 of file FCS_StepInfoSDTool.h.

◆ m_heccalc

ServiceHandle<ILArCalculatorSvc> FCS_Param::FCS_StepInfoSDTool::m_heccalc
private

Definition at line 104 of file FCS_StepInfoSDTool.h.

◆ m_hitCollName

std::string FCS_Param::FCS_StepInfoSDTool::m_hitCollName
private

Hit collection name.

Definition at line 75 of file FCS_StepInfoSDTool.h.

◆ m_larEmID

const LArEM_ID* FCS_Param::FCS_StepInfoSDTool::m_larEmID
private

Definition at line 112 of file FCS_StepInfoSDTool.h.

◆ m_larFcalID

const LArFCAL_ID* FCS_Param::FCS_StepInfoSDTool::m_larFcalID
private

Definition at line 113 of file FCS_StepInfoSDTool.h.

◆ m_larHecID

const LArHEC_ID* FCS_Param::FCS_StepInfoSDTool::m_larHecID
private

Definition at line 114 of file FCS_StepInfoSDTool.h.

◆ m_nBOBVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_nBOBVolumes
private

Definition at line 87 of file FCS_StepInfoSDTool.h.

◆ m_negIWVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_negIWVolumes
private

Definition at line 82 of file FCS_StepInfoSDTool.h.

◆ m_negOWVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_negOWVolumes
private

Definition at line 84 of file FCS_StepInfoSDTool.h.

◆ m_noVolumes

Gaudi::Property<bool> SensitiveDetectorBase::m_noVolumes {this, "NoVolumes", false}
protectedinherited

This SensitiveDetector has no volumes associated with it.

Definition at line 87 of file SensitiveDetectorBase.h.

◆ m_outputCollectionNames

Gaudi::Property<std::vector<std::string> > SensitiveDetectorBase::m_outputCollectionNames {this, "OutputCollectionNames", {}}
protectedinherited

Names of all output collections written out by this SD.

Definition at line 84 of file SensitiveDetectorBase.h.

◆ m_pBOBVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_pBOBVolumes
private

Definition at line 86 of file FCS_StepInfoSDTool.h.

◆ m_posIWVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_posIWVolumes
private

Definition at line 81 of file FCS_StepInfoSDTool.h.

◆ m_posOWVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_posOWVolumes
private

Definition at line 83 of file FCS_StepInfoSDTool.h.

◆ m_presBarVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_presBarVolumes
private

Definition at line 80 of file FCS_StepInfoSDTool.h.

◆ m_presECVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_presECVolumes
private

Definition at line 85 of file FCS_StepInfoSDTool.h.

◆ m_SD

G4VSensitiveDetector* SensitiveDetectorBase::m_SD {}
privateinherited

The sensitive detector to which this thing corresponds.

Definition at line 111 of file SensitiveDetectorBase.h.

◆ m_sliceVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_sliceVolumes
private

Definition at line 91 of file FCS_StepInfoSDTool.h.

◆ m_stacVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_stacVolumes
private

Definition at line 79 of file FCS_StepInfoSDTool.h.

◆ m_tileCalculator

ServiceHandle<ITileCalculator> FCS_Param::FCS_StepInfoSDTool::m_tileCalculator
private

Definition at line 108 of file FCS_StepInfoSDTool.h.

◆ m_tileID

const TileID* FCS_Param::FCS_StepInfoSDTool::m_tileID
private

Definition at line 115 of file FCS_StepInfoSDTool.h.

◆ m_tileVolumes

std::vector<std::string> FCS_Param::FCS_StepInfoSDTool::m_tileVolumes
private

Definition at line 92 of file FCS_StepInfoSDTool.h.

◆ m_volumeNames

Gaudi::Property<std::vector<std::string> > SensitiveDetectorBase::m_volumeNames {this, "LogicalVolumeNames", {}}
protectedinherited

All the volumes to which this SD is assigned.

Definition at line 82 of file SensitiveDetectorBase.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
FCS_Param::FCS_StepInfoSDTool::m_fcal1calc
ServiceHandle< ILArCalculatorSvc > m_fcal1calc
Definition: FCS_StepInfoSDTool.h:105
FCS_Param::FCS_StepInfoSDTool::makeOneTileSD
std::unique_ptr< FCS_StepInfoSD > makeOneTileSD(const std::string &name, ITileCalculator *calc, const std::vector< std::string > &volumes) const
Helper method to create one SD.
Definition: FCS_StepInfoSDTool.cxx:267
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
FCS_Param::FCS_StepInfoSDTool::m_larHecID
const LArHEC_ID * m_larHecID
Definition: FCS_StepInfoSDTool.h:114
FCS_Param::FCS_StepInfoSDTool::m_fcal1Volumes
std::vector< std::string > m_fcal1Volumes
Definition: FCS_StepInfoSDTool.h:88
FCS_Param::Config::m_maxEtaEM3
double m_maxEtaEM3
Definition: FCS_StepInfoSD.h:76
FCS_Param::FCS_StepInfoSDTool::m_fcal2Volumes
std::vector< std::string > m_fcal2Volumes
Definition: FCS_StepInfoSDTool.h:89
SensitiveDetectorBase::m_SD
G4VSensitiveDetector * m_SD
The sensitive detector to which this thing corresponds.
Definition: SensitiveDetectorBase.h:111
FCS_Param::FCS_StepInfoSDTool::m_negOWVolumes
std::vector< std::string > m_negOWVolumes
Definition: FCS_StepInfoSDTool.h:84
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
FCS_Param::FCS_StepInfoSDTool::initializeCalculators
virtual StatusCode initializeCalculators()
Initialize Calculator Services.
Definition: FCS_StepInfoSDTool.cxx:165
FCS_Param::Config::m_maxRadius
double m_maxRadius
property, see LArG4GenShowerLib::LArG4GenShowerLib
Definition: FCS_StepInfoSD.h:50
FCS_Param::FCS_StepInfoSDTool::m_posOWVolumes
std::vector< std::string > m_posOWVolumes
Definition: FCS_StepInfoSDTool.h:83
python.base_data.config
config
Definition: base_data.py:21
CaloIdManager::getEM_ID
const LArEM_ID * getEM_ID(void) const
Definition: CaloIdManager.cxx:80
FCS_Param::FCS_StepInfoSDTool::m_fcal2calc
ServiceHandle< ILArCalculatorSvc > m_fcal2calc
Definition: FCS_StepInfoSDTool.h:106
LArG4::findLogicalVolumes
std::set< std::string > findLogicalVolumes(const std::string &pattern)
Search for logical volumes in the G4 volume store.
FCS_Param::Config::shift_lar_subhit
bool shift_lar_subhit
Definition: FCS_StepInfoSD.h:45
FCS_Param::FCS_StepInfoSDTool::m_emepobarcalc
ServiceHandle< ILArCalculatorSvc > m_emepobarcalc
Definition: FCS_StepInfoSDTool.h:102
FCS_Param::Config::m_maxRadiusFine
double m_maxRadiusFine
property, see LArG4GenShowerLib::LArG4GenShowerLib
Definition: FCS_StepInfoSD.h:51
SensitiveDetectorBase::SensitiveDetectorBase
SensitiveDetectorBase(const std::string &type, const std::string &name, const IInterface *parent)
Standard constructor.
Definition: SensitiveDetectorBase.cxx:22
FCS_Param::Config::m_maxEtaPS
double m_maxEtaPS
Definition: FCS_StepInfoSD.h:64
FCS_Param::FCS_StepInfoSDTool::m_embcalc
ServiceHandle< ILArCalculatorSvc > m_embcalc
Definition: FCS_StepInfoSDTool.h:96
FCS_Param::Config::m_maxrEM3
double m_maxrEM3
Definition: FCS_StepInfoSD.h:78
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
FCS_Param::FCS_StepInfoSDTool::m_presECVolumes
std::vector< std::string > m_presECVolumes
Definition: FCS_StepInfoSDTool.h:85
FCS_Param::Config::m_maxrEM1
double m_maxrEM1
Definition: FCS_StepInfoSD.h:70
FCS_Param::Config::m_maxrEM2
double m_maxrEM2
Definition: FCS_StepInfoSD.h:74
SensitiveDetectorBase::getSD
G4VSensitiveDetector * getSD()
Retrieve the current SD.
Definition: SensitiveDetectorBase.cxx:123
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
FCS_Param::FCS_StepInfoSDTool::m_stacVolumes
std::vector< std::string > m_stacVolumes
Definition: FCS_StepInfoSDTool.h:79
FCS_Param::FCS_StepInfoSDTool::m_presBarVolumes
std::vector< std::string > m_presBarVolumes
Definition: FCS_StepInfoSDTool.h:80
FCS_Param::Config::m_maxPhiPS
double m_maxPhiPS
Definition: FCS_StepInfoSD.h:65
FCS_Param::FCS_StepInfoSDTool::m_negIWVolumes
std::vector< std::string > m_negIWVolumes
Definition: FCS_StepInfoSDTool.h:82
python.selector.AtlRunQuerySelectorLhcOlc.sd
sd
Definition: AtlRunQuerySelectorLhcOlc.py:612
FCS_Param::Config::m_maxPhiEM3
double m_maxPhiEM3
Definition: FCS_StepInfoSD.h:77
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
FCS_Param::FCS_StepInfoSDTool::m_emenobarcalc
ServiceHandle< ILArCalculatorSvc > m_emenobarcalc
Definition: FCS_StepInfoSDTool.h:103
FCS_Param::Config::m_maxrPS
double m_maxrPS
Definition: FCS_StepInfoSD.h:66
FCS_Param::FCS_StepInfoSDTool::m_larFcalID
const LArFCAL_ID * m_larFcalID
Definition: FCS_StepInfoSDTool.h:113
FCS_Param::FCS_StepInfoSDTool::m_emepowcalc
ServiceHandle< ILArCalculatorSvc > m_emepowcalc
Definition: FCS_StepInfoSDTool.h:99
CaloIdManager::getTileID
const TileID * getTileID(void) const
Definition: CaloIdManager.cxx:100
FCS_Param::FCS_StepInfoSDTool::makeOneLArSD
std::unique_ptr< FCS_StepInfoSD > makeOneLArSD(const std::string &name, ILArCalculatorSvc *calc, const std::vector< std::string > &volumes) const
Helper method to create one SD.
Definition: FCS_StepInfoSDTool.cxx:232
CaloIdManager::getHEC_ID
const LArHEC_ID * getHEC_ID(void) const
Definition: CaloIdManager.cxx:95
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CaloIdManager
This class initializes the Calo (LAr and Tile) offline identifiers.
Definition: CaloIdManager.h:45
FCS_Param::FCS_StepInfoSDTool::m_fcal3calc
ServiceHandle< ILArCalculatorSvc > m_fcal3calc
Definition: FCS_StepInfoSDTool.h:107
FCS_Param::FCS_StepInfoSDTool::m_tileVolumes
std::vector< std::string > m_tileVolumes
Definition: FCS_StepInfoSDTool.h:92
FCS_Param::Config::m_maxTimeTile
double m_maxTimeTile
Definition: FCS_StepInfoSD.h:61
FCS_Param::FCS_StepInfoSDTool::m_bpsmodcalc
ServiceHandle< ILArCalculatorSvc > m_bpsmodcalc
Definition: FCS_StepInfoSDTool.h:95
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloIdManager::getFCAL_ID
const LArFCAL_ID * getFCAL_ID(void) const
Definition: CaloIdManager.cxx:85
FCS_Param::FCS_StepInfoSDTool::m_hitCollName
std::string m_hitCollName
Hit collection name.
Definition: FCS_StepInfoSDTool.h:75
FCS_Param::Config::m_maxTime
double m_maxTime
Definition: FCS_StepInfoSD.h:57
FCS_Param::FCS_StepInfoSDTool::m_config
FCS_Param::Config m_config
Definition: FCS_StepInfoSDTool.h:117
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
FCS_Param::Config::m_maxTimeFCAL
double m_maxTimeFCAL
Definition: FCS_StepInfoSD.h:60
FCS_Param::FCS_StepInfoSDTool::m_tileCalculator
ServiceHandle< ITileCalculator > m_tileCalculator
Definition: FCS_StepInfoSDTool.h:108
FCS_Param::Config::m_maxPhiEM1
double m_maxPhiEM1
Definition: FCS_StepInfoSD.h:69
FCS_Param::FCS_StepInfoSDWrapper
detail::SDWrapper< FCS_StepInfoSD, ISF_FCS_Parametrization::FCS_StepInfoCollection > FCS_StepInfoSDWrapper
Template instantiation for LArG4SimpleSD.
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimSD/src/SDWrapper.h:90
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
FCS_Param::FCS_StepInfoSDTool::m_sliceVolumes
std::vector< std::string > m_sliceVolumes
Definition: FCS_StepInfoSDTool.h:91
FCS_Param::Config::m_maxRadiusLAr
double m_maxRadiusLAr
property, see LArG4GenShowerLib::LArG4GenShowerLib
Definition: FCS_StepInfoSD.h:52
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
FCS_Param::FCS_StepInfoSDTool::m_tileID
const TileID * m_tileID
Definition: FCS_StepInfoSDTool.h:115
FCS_Param::FCS_StepInfoSDTool::m_larEmID
const LArEM_ID * m_larEmID
Definition: FCS_StepInfoSDTool.h:112
SensitiveDetectorBase::SetSensitiveDetector
void SetSensitiveDetector(G4LogicalVolume *, G4VSensitiveDetector *) const
Method stolen from G4VUserDetectorConstruction in G4 10.2.
Definition: SensitiveDetectorBase.cxx:178
FCS_Param::Config::m_maxTimeHEC
double m_maxTimeHEC
Definition: FCS_StepInfoSD.h:59
FCS_Param::FCS_StepInfoSDTool::m_heccalc
ServiceHandle< ILArCalculatorSvc > m_heccalc
Definition: FCS_StepInfoSDTool.h:104
FCS_Param::FCS_StepInfoSDTool::m_emepscalc
ServiceHandle< ILArCalculatorSvc > m_emepscalc
Definition: FCS_StepInfoSDTool.h:101
FCS_Param::Config::m_maxRadiusTile
double m_maxRadiusTile
property, see LArG4GenShowerLib::LArG4GenShowerLib
Definition: FCS_StepInfoSD.h:55
SensitiveDetectorBase::matchStrings
static bool matchStrings(const char *first, const char *second)
Match two strings with wildcard support.
Definition: SensitiveDetectorBase.cxx:150
SensitiveDetectorBase::m_volumeNames
Gaudi::Property< std::vector< std::string > > m_volumeNames
All the volumes to which this SD is assigned.
Definition: SensitiveDetectorBase.h:82
FCS_Param::Config::m_maxTimeLAr
double m_maxTimeLAr
Definition: FCS_StepInfoSD.h:58
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SensitiveDetectorBase::m_noVolumes
Gaudi::Property< bool > m_noVolumes
This SensitiveDetector has no volumes associated with it.
Definition: SensitiveDetectorBase.h:87
FCS_Param::FCS_StepInfoSDTool::m_emepiwcalc
ServiceHandle< ILArCalculatorSvc > m_emepiwcalc
Definition: FCS_StepInfoSDTool.h:97
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DeMoScan.first
bool first
Definition: DeMoScan.py:536
DEBUG
#define DEBUG
Definition: page_access.h:11
FCS_Param::Config::m_maxEtaEM2
double m_maxEtaEM2
Definition: FCS_StepInfoSD.h:72
FCS_Param::detail::SDWrapper
A template class which wraps multiple sensitive detectors.
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimSD/src/SDWrapper.h:51
SensitiveDetectorBase::setSD
void setSD(G4VSensitiveDetector *)
Set the current SD.
Definition: SensitiveDetectorBase.cxx:137
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
FCS_Param::Config
Definition: FCS_StepInfoSD.h:42
FCS_Param::Config::shorten_lar_step
bool shorten_lar_step
Definition: FCS_StepInfoSD.h:46
FCS_Param::FCS_StepInfoSDTool::m_posIWVolumes
std::vector< std::string > m_posIWVolumes
Definition: FCS_StepInfoSDTool.h:81
beamspotnt.calc
calc
Definition: bin/beamspotnt.py:1252
FCS_Param::FCS_StepInfoSDTool::m_nBOBVolumes
std::vector< std::string > m_nBOBVolumes
Definition: FCS_StepInfoSDTool.h:87
FCS_Param::FCS_StepInfoSDTool::m_emeniwcalc
ServiceHandle< ILArCalculatorSvc > m_emeniwcalc
Definition: FCS_StepInfoSDTool.h:98
FCS_Param::Config::m_maxRadiusFCAL
double m_maxRadiusFCAL
property, see LArG4GenShowerLib::LArG4GenShowerLib
Definition: FCS_StepInfoSD.h:54
FCS_Param::Config::m_maxPhiEM2
double m_maxPhiEM2
Definition: FCS_StepInfoSD.h:73
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
FCS_Param::FCS_StepInfoSDTool::m_fcal3Volumes
std::vector< std::string > m_fcal3Volumes
Definition: FCS_StepInfoSDTool.h:90
FCS_Param::Config::m_maxRadiusHEC
double m_maxRadiusHEC
property, see LArG4GenShowerLib::LArG4GenShowerLib
Definition: FCS_StepInfoSD.h:53
SensitiveDetectorBase::assignSD
StatusCode assignSD(G4VSensitiveDetector *sd, const std::vector< std::string > &volumes) const
Assign SD to a list of volumes.
Definition: SensitiveDetectorBase.cxx:70
FCS_Param::FCS_StepInfoSDTool::m_emenowcalc
ServiceHandle< ILArCalculatorSvc > m_emenowcalc
Definition: FCS_StepInfoSDTool.h:100
FCS_Param::FCS_StepInfoSDTool::m_pBOBVolumes
std::vector< std::string > m_pBOBVolumes
Definition: FCS_StepInfoSDTool.h:86
FCS_Param::Config::m_maxEtaEM1
double m_maxEtaEM1
Definition: FCS_StepInfoSD.h:68