<commit_before>// $Id$
// Category: geometry
//
// 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 "AliModuleType.h"

#include <G4VUserDetectorConstruction.hh>
#include <globals.hh>

#include <g4rw/tpordvec.h>

class AliModulesCompositionMessenger;
class AliMoreModulesConstruction;
class AliMagneticField;

class G4VPhysicalVolume;

class AliModulesComposition : public G4VUserDetectorConstruction
{
  typedef G4RWTPtrOrderedVector<AliDetSwitch>  AliDetSwitchRWVector;
  typedef G4RWTPtrOrderedVector<AliSingleModuleConstruction>
                                AliSingleModuleConstructionRWVector; 

  public:
    AliModulesComposition();
    // --> protected
    // AliModulesComposition(const AliModulesComposition& right);
    virtual ~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 PrintSwitchedDets() const;
    void PrintAvailableDets() const;

    // set methods
    void SetMagField(G4double fieldValue);
    void SetAllLVSensitive(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);

    // operators<commit_msg>added PrintMaterials(), GenerateXMLGeometry()<commit_after>// $Id$
// Category: geometry
//
// 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 "AliModuleType.h"

#include <G4VUserDetectorConstruction.hh>
#include <globals.hh>

#include <g4rw/tpordvec.h>

class AliModulesCompositionMessenger;
class AliMoreModulesConstruction;
class AliMagneticField;

class G4VPhysicalVolume;

class AliModulesComposition : public G4VUserDetectorConstruction
{
  typedef G4RWTPtrOrderedVector<AliDetSwitch>  AliDetSwitchRWVector;
  typedef G4RWTPtrOrderedVector<AliSingleModuleConstruction>
                                AliSingleModuleConstructionRWVector; 

  public:
    AliModulesComposition();
    // --> protected
    // AliModulesComposition(const AliModulesComposition& right);
    virtual ~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 PrintSwitchedDets() const;
    void PrintAvailableDets() const;
    void PrintMaterials() const;
    void GenerateXMLGeometry() const;

    // set methods
    void SetMagField(G4double fieldValue);
    void SetAllLVSensitive(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);

    // operators
{'fraction_non_alphanumeric': 0.0751580426129712, 'fraction_numerical': 0.011706860220088973, 'mean_word_length': 4.812244897959184, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4532566', 'n_tokens_mistral': 1255, 'n_tokens_neox': 1244, 'n_words': 275}