// $Id$
// Category: geometry
//
+// Author: I. Hrivnacova
+//
+// Class AliModulesComposition
+// ---------------------------
// Detector construction base class for building geometry
// composed from independent modules with availability of interactive modules
// setup.
#ifndef ALI_MODULES_COMPOSITION_H
#define ALI_MODULES_COMPOSITION_H
-#include "AliSingleModuleConstruction.h"
-#include "AliDetSwitch.h"
+#include "AliModulesCompositionMessenger.h"
#include "AliModuleType.h"
#include <G4VUserDetectorConstruction.hh>
#include <globals.hh>
+#include <g4std/vector>
-#include <g4rw/tpordvec.h>
-
-class AliModulesCompositionMessenger;
+class AliSingleModuleConstruction;
+class AliDetSwitch;
class AliMoreModulesConstruction;
class AliMagneticField;
class AliModulesComposition : public G4VUserDetectorConstruction
{
- typedef G4RWTPtrOrderedVector<AliDetSwitch> AliDetSwitchRWVector;
- typedef G4RWTPtrOrderedVector<AliSingleModuleConstruction>
- AliSingleModuleConstructionRWVector;
+ typedef G4std::vector<AliDetSwitch*> DetSwitchVector;
+ typedef DetSwitchVector::iterator DetSwitchIterator;
+ typedef DetSwitchVector::const_iterator DetSwitchConstIterator;
+
+ typedef G4std::vector<AliSingleModuleConstruction*> SingleModuleVector;
+ typedef SingleModuleVector::iterator SingleModuleIterator;
public:
AliModulesComposition();
// methods
virtual G4VPhysicalVolume* Construct() = 0;
- void SwitchDetOn(G4String moduleNameVer);
- void SwitchDetOn(G4String moduleName, G4int version);
- void SwitchDetOnDefault(G4String moduleName);
- void SwitchDetOff(G4String moduleName);
+ void SwitchDetOn(const G4String& moduleNameVer);
+ void SwitchDetOn(const G4String& moduleName, G4int version);
+ void SwitchDetOnDefault(const G4String& moduleName);
+ void SwitchDetOff(const G4String& moduleName);
void PrintSwitchedDets() const;
void PrintAvailableDets() const;
void PrintMaterials() const;
// set methods
void SetMagField(G4double fieldValue);
- void SetAllLVSensitive(G4bool allLVSensitive);
- void SetForceAllLVSensitive(G4bool allLVSensitive);
void SetReadGeometry(G4bool readGeometry);
void SetWriteGeometry(G4bool writeGeometry);
void SetProcessConfigToModules(G4bool processConfig);
// get methods
- const G4RWTPtrOrderedVector<AliDetSwitch>& GetDetSwitchVector() const;
G4String GetSwitchedDetsList() const;
G4String GetAvailableDetsList() const;
G4String GetAvailableDetsListWithCommas() const;
G4String GetDetNamesList() const;
G4String GetDetNamesListWithCommas() const;
- //G4ThreeVector GetMagField() const;
protected:
AliModulesComposition(const AliModulesComposition& right);
// methods
void AddDetSwitch(AliDetSwitch* detSwitch);
- void AddSingleModuleConstruction(G4String moduleName, G4int version,
+ void AddSingleModuleConstruction(const G4String& name, G4int version,
AliModuleType moduleType = kDetector);
- void AddMoreModuleConstruction(G4String moduleName, G4int version,
+ void AddMoreModuleConstruction(const G4String& name, G4int version,
AliModuleType moduleType = kDetector);
void ConstructModules();
+ // get methods
+ AliDetSwitch* GetDetSwitch(const G4String& moduleName) const;
+
+ // data members
+ DetSwitchVector fDetSwitchVector; //vector of AliDetSwitch
+
private:
// methods
void SetReadGeometryToModules(G4bool readGeometry);
void SetWriteGeometryToModules(G4bool writeGeometry);
- void SetAllLVSensitiveToModules(G4bool allSensitive);
// data members
- AliDetSwitchRWVector fDetSwitchVector; //..
- //vector of AliDetSwitch
- AliSingleModuleConstructionRWVector fModuleConstructionVector; //..
- //vector of
- //AliSingleModuleConstruction
- AliMoreModulesConstruction* fMoreModulesConstruction; //..
- //AliMoreModulesConstruction
-
- AliMagneticField* fMagneticField; //magnetic field
- AliModulesCompositionMessenger* fMessenger; //messenger
- G4bool fAllLVSensitive; //option applied to all modules
- //(overriden by modules specific setting)
- G4bool fForceAllLVSensitive; //option applied to all modules
- //(overrides modules specific setting)
+ SingleModuleVector fModuleConstructionVector; //vector of
+ //single module constructions
+ AliMoreModulesConstruction* fMoreModulesConstruction; //..
+ //dependent modules construction
+
+ AliMagneticField* fMagneticField; //magnetic field
+ AliModulesCompositionMessenger fMessenger; //messenger
G4bool fReadGeometry; //option applied to all modules
- G4bool fWriteGeometry; //option applied to all modules
+ G4bool fWriteGeometry; //option applied to all modules
};
// inline methods
-inline void AliModulesComposition::SetAllLVSensitive(G4bool allLVSensitive)
-{ fAllLVSensitive = allLVSensitive; }
-
-inline void AliModulesComposition::SetForceAllLVSensitive(G4bool forceAllLVSensitive)
-{ fForceAllLVSensitive = forceAllLVSensitive; }
-
inline void AliModulesComposition::SetReadGeometry(G4bool readGeometry)
{ fReadGeometry = readGeometry; }