ATLAS Offline Software
IDetectorConstructionTool.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 #ifndef G4AtlasInterfaces_IDetectorConstructionTool_H
6 #define G4AtlasInterfaces_IDetectorConstructionTool_H
7 
8 // Include files
9 #include <string>
10 #include <vector>
11 // from Gaudi
12 #include "GaudiKernel/IAlgTool.h"
13 
14 class G4VPhysicalVolume;
15 class G4VUserDetectorConstruction;
16 
25 class IDetectorConstructionTool : virtual public IAlgTool {
26  public:
27  // When using the default deleter, std::unique_ptr requires a complete type at
28  // the point where the destructor is called (i.e. when calling std::unique_ptr
29  // destructor, move assignment, and reset()). By having implementers of this
30  // interface provide a custom deleter, clients don't need to have a complete
31  // type for G4VUserDetectorConstruction
32  using Deleter = std::function<void(G4VUserDetectorConstruction*)>;
34  std::unique_ptr<G4VUserDetectorConstruction, Deleter>;
37 
39 
40  virtual std::vector<std::string>& GetParallelWorldNames() = 0;
41 };
42 #endif
IDetectorConstructionTool
Definition: IDetectorConstructionTool.h:25
IDetectorConstructionTool::GetDetectorConstruction
virtual UPDetectorConstruction GetDetectorConstruction()=0
IDetectorConstructionTool::Deleter
std::function< void(G4VUserDetectorConstruction *)> Deleter
Definition: IDetectorConstructionTool.h:32
IDetectorConstructionTool::GetParallelWorldNames
virtual std::vector< std::string > & GetParallelWorldNames()=0
IDetectorConstructionTool::DeclareInterfaceID
DeclareInterfaceID(IDetectorConstructionTool, 1, 0)
Creates the InterfaceID and interfaceID() method.
IDetectorConstructionTool::UPDetectorConstruction
std::unique_ptr< G4VUserDetectorConstruction, Deleter > UPDetectorConstruction
Definition: IDetectorConstructionTool.h:34