From ad42298e989bdd81fa88f3ea0bb128ff98fb8748 Mon Sep 17 00:00:00 2001 From: ivana Date: Tue, 21 Aug 2001 19:47:14 +0000 Subject: [PATCH] Updated class description: added class name title, author; RW vector types changed to STL; messenger data member changed from a pointer to a value. --- AliGeant4/AliColourStore.cxx | 74 ++++---- AliGeant4/AliColourStore.h | 12 +- AliGeant4/AliModulesComposition.cxx | 279 ++++++++++++---------------- AliGeant4/AliModulesComposition.h | 51 ++--- AliGeant4/AliParticleGun.cxx | 93 ++++++---- AliGeant4/AliParticleGun.h | 18 +- 6 files changed, 263 insertions(+), 264 deletions(-) diff --git a/AliGeant4/AliColourStore.cxx b/AliGeant4/AliColourStore.cxx index 04f49de1bca..31cf6ecc73b 100644 --- a/AliGeant4/AliColourStore.cxx +++ b/AliGeant4/AliColourStore.cxx @@ -1,6 +1,10 @@ // $Id$ // Category: visualization // +// Author: I. Hrivnacova +// +// Class AliColourStore +// -------------------- // See the class description in the header file. #include "AliColourStore.h" @@ -19,22 +23,22 @@ AliColourStore* AliColourStore::fgInstance = 0; //_____________________________________________________________________________ AliColourStore::AliColourStore() { // - fColours.insert(AliColour("White", 1.0, 1.0, 1.0)); - fColours.insert(AliColour("Black", 0.0, 0.0, 0.0)); - fColours.insert(AliColour("Red", 1.0, 0.0, 0.0)); - fColours.insert(AliColour("RoseDark", 1.0, 0.0, 0.5)); - fColours.insert(AliColour("Green", 0.0, 1.0, 0.0)); - fColours.insert(AliColour("Green2", 0.0, 1.0, 0.5)); - fColours.insert(AliColour("GreenClair",0.5, 1.0, 0.0)); - fColours.insert(AliColour("Yellow", 1.0, 1.0, 0.0)); - fColours.insert(AliColour("BlueDark", 0.0, 0.0, 1.0)); - fColours.insert(AliColour("BlueClair", 0.0, 1.0, 1.0)); - fColours.insert(AliColour("BlueClair2",0.0, 0.5, 1.0)); - fColours.insert(AliColour("Magenta", 1.0, 0.0, 1.0)); - fColours.insert(AliColour("Magenta2", 0.5, 0.0, 1.0)); - fColours.insert(AliColour("BrownClair",1.0, 0.5, 0.0)); - fColours.insert(AliColour("Gray", 0.3, 0.3, 0.3)); - fColours.insert(AliColour("GrayClair", 0.6, 0.6, 0.6)); + fColours.push_back(AliColour("White", 1.0, 1.0, 1.0)); + fColours.push_back(AliColour("Black", 0.0, 0.0, 0.0)); + fColours.push_back(AliColour("Red", 1.0, 0.0, 0.0)); + fColours.push_back(AliColour("RoseDark", 1.0, 0.0, 0.5)); + fColours.push_back(AliColour("Green", 0.0, 1.0, 0.0)); + fColours.push_back(AliColour("Green2", 0.0, 1.0, 0.5)); + fColours.push_back(AliColour("GreenClair",0.5, 1.0, 0.0)); + fColours.push_back(AliColour("Yellow", 1.0, 1.0, 0.0)); + fColours.push_back(AliColour("BlueDark", 0.0, 0.0, 1.0)); + fColours.push_back(AliColour("BlueClair", 0.0, 1.0, 1.0)); + fColours.push_back(AliColour("BlueClair2",0.0, 0.5, 1.0)); + fColours.push_back(AliColour("Magenta", 1.0, 0.0, 1.0)); + fColours.push_back(AliColour("Magenta2", 0.5, 0.0, 1.0)); + fColours.push_back(AliColour("BrownClair",1.0, 0.5, 0.0)); + fColours.push_back(AliColour("Gray", 0.3, 0.3, 0.3)); + fColours.push_back(AliColour("GrayClair", 0.6, 0.6, 0.6)); } //_____________________________________________________________________________ @@ -72,9 +76,8 @@ AliColourStore* AliColourStore::Instance() // Creates the instance if it does not exist. // --- - if (fgInstance == 0 ) { + if (fgInstance == 0 ) fgInstance = new AliColourStore(); - } return fgInstance; } @@ -87,13 +90,9 @@ G4Colour AliColourStore::GetColour(G4String name) const // Retrieves the colour by name. // --- - G4int nofCol = fColours.entries(); - for (G4int i=0; i +#include class AliColourStore { - typedef G4RWTValOrderedVector AliColourVector; + typedef G4std::vector ColourVector; + typedef ColourVector::iterator ColourIterator; + typedef ColourVector::const_iterator ColourConstIterator; public: // --> protected @@ -42,7 +48,7 @@ class AliColourStore static AliColourStore* fgInstance; //this instance // data members - AliColourVector fColours; //vector of AliColour + ColourVector fColours; //vector of AliColour }; #endif //ALI_COLOUR_STORE_H diff --git a/AliGeant4/AliModulesComposition.cxx b/AliGeant4/AliModulesComposition.cxx index f6257f3725e..1641635bb7b 100644 --- a/AliGeant4/AliModulesComposition.cxx +++ b/AliGeant4/AliModulesComposition.cxx @@ -1,10 +1,13 @@ // $Id$ // Category: geometry // +// Author: I. Hrivnacova +// +// Class AliModulesComposition +// --------------------------- // See the class description in the header file. #include "AliModulesComposition.h" -#include "AliModulesCompositionMessenger.h" #include "AliSingleModuleConstruction.h" #include "AliMoreModulesConstruction.h" #include "AliDetSwitch.h" @@ -22,15 +25,16 @@ AliModulesComposition::AliModulesComposition() : fReadGeometry(false), fWriteGeometry(false), - fMagneticField(0) + fMagneticField(0), + fMessenger(this) { // fMoreModulesConstruction = new AliMoreModulesConstruction(); - fMessenger = new AliModulesCompositionMessenger(this); } //_____________________________________________________________________________ AliModulesComposition::AliModulesComposition(const AliModulesComposition& right) + : fMessenger(this) { // AliGlobals::Exception("AliModulesComposition is protected from copying."); @@ -41,13 +45,17 @@ AliModulesComposition::~AliModulesComposition() { // delete fMoreModulesConstruction; delete fMagneticField; - delete fMessenger; // destroy det switch vector - fDetSwitchVector.clearAndDestroy(); + DetSwitchIterator it; + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + delete *it; // destroy det construction vector - fModuleConstructionVector.clearAndDestroy(); + SingleModuleIterator itm; + for (itm = fModuleConstructionVector.begin(); + itm != fModuleConstructionVector.end(); it++) + delete *itm; } // operators @@ -72,31 +80,32 @@ void AliModulesComposition::AddDetSwitch(AliDetSwitch* detSwitch) // Adds detSwitch to the detSwitch vector. // --- - fDetSwitchVector.insert(detSwitch); - fMessenger->SetCandidates(); + fDetSwitchVector.push_back(detSwitch); + fMessenger.SetCandidates(); } //_____________________________________________________________________________ -void AliModulesComposition::AddSingleModuleConstruction(G4String moduleName, - G4int version, AliModuleType moduleType) +void AliModulesComposition::AddSingleModuleConstruction( + const G4String& name, G4int version, + AliModuleType moduleType) { // Adds SingleModuleConstruction. // --- - AliSingleModuleConstruction* moduleConstruction - = new AliSingleModuleConstruction(moduleName, version, moduleType); - fModuleConstructionVector.insert(moduleConstruction); + fModuleConstructionVector + .push_back(new AliSingleModuleConstruction(name, version, moduleType)); } //_____________________________________________________________________________ -void AliModulesComposition::AddMoreModuleConstruction(G4String moduleName, - G4int version, AliModuleType moduleType) +void AliModulesComposition::AddMoreModuleConstruction( + const G4String& name, G4int version, + AliModuleType moduleType) { // Adds module to MoreModulesConstruction (construction of dependent // modules.) // --- - fMoreModulesConstruction->AddModule(moduleName, version, moduleType); + fMoreModulesConstruction->AddModule(name, version, moduleType); } //_____________________________________________________________________________ @@ -110,47 +119,48 @@ void AliModulesComposition::ConstructModules() SetWriteGeometryToModules(fWriteGeometry); // configure single modules - G4int nofDets = fModuleConstructionVector.entries(); - G4int i; - for (i=0; iConfigure(*AliFiles::Instance()); - cout << "Module " << fModuleConstructionVector[i]->GetDetName() - << " configured." << endl; + SingleModuleIterator it; + for (it = fModuleConstructionVector.begin(); + it != fModuleConstructionVector.end(); it++) { + + (*it)->Configure(*AliFiles::Instance()); + cout << "Module " << (*it)->GetDetName() << " configured." << endl; } // configure dependent modules - G4int nofModules = fMoreModulesConstruction->GetNofModules(); - if (nofModules>0) { + if (fMoreModulesConstruction->GetNofModules() > 0) fMoreModulesConstruction->Configure(*AliFiles::Instance()); - } // construct single modules - for (i=0; iGetDetName() + for (it = fModuleConstructionVector.begin(); + it != fModuleConstructionVector.end(); it++) { + + G4cout << "Module " << (*it)->GetDetName() << " will be constructed now." << G4endl; - fModuleConstructionVector[i]->Construct(); + (*it)->Construct(); } // construct dependent modules - if (nofModules>0) { + if (fMoreModulesConstruction->GetNofModules() > 0) { G4cout << "Dependent modules will be constructed now." << G4endl; fMoreModulesConstruction->Construct(); } } //_____________________________________________________________________________ -AliDetSwitch* AliModulesComposition::GetDetSwitch(const G4String& detName) +AliDetSwitch* AliModulesComposition::GetDetSwitch(const G4String& moduleName) { // Returns the detector switch with given detector name. // --- - AliDetSwitch* detSwitch = 0; - for (G4int id=0; idGetDetName() == detName) return detSwitch; - } - - return detSwitch; + DetSwitchIterator it; + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + if ((*it)->GetDetName() == moduleName) return *it; + + G4String text = "AliModulesComposition::GetDetSwitch:\n"; + text = text + "Wrong detector name for " + moduleName; + AliGlobals::Exception(text); + return 0; } //_____________________________________________________________________________ @@ -160,18 +170,15 @@ void AliModulesComposition::SetReadGeometryToModules(G4bool readGeometry) // --- // single module constructions - G4int nofDets = fModuleConstructionVector.entries(); - G4int i; - for (i=0; iSetReadGeometry(readGeometry); + SingleModuleIterator it; + for (it = fModuleConstructionVector.begin(); + it != fModuleConstructionVector.end(); it++) + (*it)->SetReadGeometry(readGeometry); // more modules construction - nofDets = fMoreModulesConstruction->GetNofModules(); - for (i=0; iGetModuleConstruction(i); - moduleConstruction->SetReadGeometry(readGeometry); - } + for (G4int i=0; iGetNofModules(); i++) + fMoreModulesConstruction + ->GetModuleConstruction(i)->SetReadGeometry(readGeometry); } //_____________________________________________________________________________ @@ -181,18 +188,15 @@ void AliModulesComposition::SetWriteGeometryToModules(G4bool writeGeometry) // --- // single module constructions - G4int nofDets = fModuleConstructionVector.entries(); - G4int i; - for (i=0; iSetWriteGeometry(writeGeometry); + SingleModuleIterator it; + for (it = fModuleConstructionVector.begin(); + it != fModuleConstructionVector.end(); it++) + (*it)->SetWriteGeometry(writeGeometry); // more modules construction - nofDets = fMoreModulesConstruction->GetNofModules(); - for (i=0; iGetModuleConstruction(i); - moduleConstruction->SetWriteGeometry(writeGeometry); - } + for (G4int i=0; iGetNofModules(); i++) + fMoreModulesConstruction + ->GetModuleConstruction(i)->SetWriteGeometry(writeGeometry); } //_____________________________________________________________________________ @@ -202,45 +206,45 @@ void AliModulesComposition::SetProcessConfigToModules(G4bool processConfig) // --- // single module constructions - G4int nofDets = fModuleConstructionVector.entries(); - G4int i; - for (i=0; iSetProcessConfig(processConfig); + SingleModuleIterator it; + for (it = fModuleConstructionVector.begin(); + it != fModuleConstructionVector.end(); it++) + (*it)->SetProcessConfig(processConfig); // more modules construction - nofDets = fMoreModulesConstruction->GetNofModules(); - for (i=0; iGetModuleConstruction(i); - moduleConstruction->SetProcessConfig(processConfig); - } + for (G4int i=0; iGetNofModules(); i++) + fMoreModulesConstruction + ->GetModuleConstruction(i)->SetProcessConfig(processConfig); } // public methods //_____________________________________________________________________________ -void AliModulesComposition::SwitchDetOn(G4String moduleNameVer) +void AliModulesComposition::SwitchDetOn(const G4String& moduleNameVer) { // Switchs on module specified by name and version. // --- - G4int nofDets = fDetSwitchVector.entries(); + DetSwitchIterator it; + if (moduleNameVer == "ALL") { - for (G4int id=0; idSwitchOnDefault(); + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + (*it)->SwitchOnDefault(); } else if (moduleNameVer == "PPR") { - for (G4int id=0; idSwitchOnPPR(); + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + (*it)->SwitchOnPPR(); AliFiles::Instance()->SetMacroName("ConfigPPR"); } else if (moduleNameVer == "NONE") { - for (G4int id=0; idSwitchOff(); + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + (*it)->SwitchOff(); } else { // get version number G4int len = moduleNameVer.length(); - G4String moduleName = moduleNameVer(0, len-1); - G4String version = moduleNameVer(len-1, 1); + G4String moduleName = moduleNameVer.substr(0, len-1); + G4String version = moduleNameVer.substr(len-1, 1); G4int iVersion = AliGlobals::StringToInt(version); if (iVersion < 0) { @@ -254,81 +258,46 @@ void AliModulesComposition::SwitchDetOn(G4String moduleNameVer) } //_____________________________________________________________________________ -void AliModulesComposition::SwitchDetOn(G4String moduleName, G4int version) +void AliModulesComposition::SwitchDetOn(const G4String& moduleName, + G4int version) { // Switchs on module specified by name and version. // --- - G4int nofDets = fDetSwitchVector.entries(); - for (G4int id=0; idGetDetName(); - if (iDetName == moduleName) { - fDetSwitchVector[id]->SwitchOn(version); - return; - } - } - AliGlobals::Exception( - "AliModulesComposition: Wrong detector name for " + moduleName + "."); + GetDetSwitch(moduleName)->SwitchOn(version); } //_____________________________________________________________________________ -void AliModulesComposition::SwitchDetOnDefault(G4String moduleName) +void AliModulesComposition::SwitchDetOnDefault(const G4String& moduleName) { // Switchs on module specified by name with default version. // --- - G4int nofDets = fDetSwitchVector.entries(); - for (G4int id=0; idGetDetName(); - if (iDetName == moduleName) { - fDetSwitchVector[id]->SwitchOnDefault(); - return; - } - } - AliGlobals::Exception( - "AliModulesComposition: Wrong detector name for " + moduleName + "."); + GetDetSwitch(moduleName)->SwitchOnDefault(); } //_____________________________________________________________________________ -void AliModulesComposition::SwitchDetOnPPR(G4String moduleName) +void AliModulesComposition::SwitchDetOnPPR(const G4String& moduleName) { // Switchs on module specified by name with PPR version. // --- - G4int nofDets = fDetSwitchVector.entries(); - for (G4int id=0; idGetDetName(); - if (iDetName == moduleName) { - fDetSwitchVector[id]->SwitchOnPPR(); - return; - } - } - AliGlobals::Exception( - "AliModulesComposition: Wrong detector name for " + moduleName + "."); + GetDetSwitch(moduleName)->SwitchOnPPR(); } //_____________________________________________________________________________ -void AliModulesComposition::SwitchDetOff(G4String moduleName) +void AliModulesComposition::SwitchDetOff(const G4String& moduleName) { // Switchs off module specified by name. // --- - G4int nofDets = fDetSwitchVector.entries(); if (moduleName == "ALL") { - for (G4int id=0; idSwitchOff(); - } - else { - for (G4int id=0; idGetDetName(); - if (iDetName == moduleName) { - fDetSwitchVector[id]->SwitchOff(); - return; - } - } + DetSwitchIterator it; + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + (*it)->SwitchOff(); } - AliGlobals::Exception( - "AliModulesComposition: Wrong detector name for " + moduleName + "."); + else + GetDetSwitch(moduleName)->SwitchOff(); } //_____________________________________________________________________________ @@ -382,7 +351,7 @@ void AliModulesComposition::GenerateXMLGeometry() const G4String detName; G4String detVersion = ""; G4int version = -1; - for (G4int i=fDetSwitchVector.entries()-1; i>=0; i--) { + for (G4int i=fDetSwitchVector.size()-1; i>=0; i--) { version = fDetSwitchVector[i]->GetSwitchedVersion(); if (version > -1) { detName = fDetSwitchVector[i]->GetDetName(); @@ -422,23 +391,23 @@ G4String AliModulesComposition::GetSwitchedDetsList() const // Returns list of switched detectors. // --- - G4String svList = ""; - - G4int nofDets = fDetSwitchVector.entries(); + G4String svList = ""; G4int nofSwitchedDets = 0; - for (G4int id=0; idGetSwitchedVersion(); + DetSwitchConstIterator it; + + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) { + G4int iVersion = (*it)->GetSwitchedVersion(); if (iVersion > -1) { nofSwitchedDets++; - G4String moduleNameVer = fDetSwitchVector[id]->GetDetName(); + G4String moduleNameVer = (*it)->GetDetName(); AliGlobals::AppendNumberToString(moduleNameVer, iVersion); svList += moduleNameVer; svList += " "; } } - if (nofSwitchedDets == nofDets) svList = "ALL: " + svList; - if (nofSwitchedDets == 0) svList = "NONE"; + if (nofSwitchedDets == fDetSwitchVector.size()) svList = "ALL: " + svList; + if (nofSwitchedDets == 0) svList = "NONE"; return svList; } @@ -450,17 +419,15 @@ G4String AliModulesComposition::GetAvailableDetsList() const // --- G4String svList = ""; + DetSwitchConstIterator it; - G4int nofDets = fDetSwitchVector.entries(); - for (G4int id=0; idGetNofVersions(); - for (G4int iv=0; ivGetDetName(); + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + for (G4int iv=0; iv<(*it)->GetNofVersions(); iv++) { + G4String moduleNameVer = (*it)->GetDetName(); AliGlobals::AppendNumberToString(moduleNameVer, iv); svList += moduleNameVer; svList += " "; - } - } + } return svList; } @@ -472,18 +439,17 @@ G4String AliModulesComposition::GetAvailableDetsListWithCommas() const // --- G4String svList = ""; - - G4int nofDets = fDetSwitchVector.entries(); - for (G4int id=0; idGetNofVersions(); - for (G4int iv=0; ivGetDetName(); + G4int id =0; + DetSwitchConstIterator it; + + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) + for (G4int iv=0; iv<(*it)->GetNofVersions(); iv++) { + G4String moduleNameVer = (*it)->GetDetName(); AliGlobals::AppendNumberToString(moduleNameVer, iv); svList += moduleNameVer; - if (ivGetNofVersions()-1) svList += "/"; + else if (id++ < fDetSwitchVector.size()-1) svList += ", "; } - } return svList; } @@ -495,10 +461,10 @@ G4String AliModulesComposition::GetDetNamesList() const // --- G4String svList = ""; + DetSwitchConstIterator it; - G4int nofDets = fDetSwitchVector.entries(); - for (G4int id=0; idGetDetName(); + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) { + svList += (*it)->GetDetName(); svList += " "; } @@ -512,11 +478,12 @@ G4String AliModulesComposition::GetDetNamesListWithCommas() const // --- G4String svList = ""; - - G4int nofDets = fDetSwitchVector.entries(); - for (G4int id=0; idGetDetName(); - if (id < nofDets-1) svList += ", "; + G4int id =0; + DetSwitchConstIterator it; + + for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) { + svList += (*it)->GetDetName(); + if (id++ < fDetSwitchVector.size()-1) svList += ", "; } return svList; diff --git a/AliGeant4/AliModulesComposition.h b/AliGeant4/AliModulesComposition.h index ad5455ac6c1..c3ac549322a 100644 --- a/AliGeant4/AliModulesComposition.h +++ b/AliGeant4/AliModulesComposition.h @@ -1,6 +1,10 @@ // $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. @@ -8,16 +12,15 @@ #ifndef ALI_MODULES_COMPOSITION_H #define ALI_MODULES_COMPOSITION_H +#include "AliModulesCompositionMessenger.h" #include "AliModuleType.h" #include #include - -#include +#include class AliSingleModuleConstruction; class AliDetSwitch; -class AliModulesCompositionMessenger; class AliMoreModulesConstruction; class AliMagneticField; @@ -25,9 +28,12 @@ class G4VPhysicalVolume; class AliModulesComposition : public G4VUserDetectorConstruction { - typedef G4RWTPtrOrderedVector AliDetSwitchRWVector; - typedef G4RWTPtrOrderedVector - AliSingleModuleConstructionRWVector; + typedef G4std::vector DetSwitchVector; + typedef DetSwitchVector::iterator DetSwitchIterator; + typedef DetSwitchVector::const_iterator DetSwitchConstIterator; + + typedef G4std::vector SingleModuleVector; + typedef SingleModuleVector::iterator SingleModuleIterator; public: AliModulesComposition(); @@ -37,11 +43,11 @@ class AliModulesComposition : public G4VUserDetectorConstruction // methods virtual G4VPhysicalVolume* Construct() = 0; - void SwitchDetOn(G4String moduleNameVer); - void SwitchDetOn(G4String moduleName, G4int version); - void SwitchDetOnDefault(G4String moduleName); - void SwitchDetOnPPR(G4String moduleName); - void SwitchDetOff(G4String moduleName); + void SwitchDetOn(const G4String& moduleNameVer); + void SwitchDetOn(const G4String& moduleName, G4int version); + void SwitchDetOnDefault(const G4String& moduleName); + void SwitchDetOnPPR(const G4String& moduleName); + void SwitchDetOff(const G4String& moduleName); void PrintSwitchedDets() const; void PrintAvailableDets() const; void PrintMaterials() const; @@ -68,17 +74,17 @@ class AliModulesComposition : public G4VUserDetectorConstruction // 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& detName); + AliDetSwitch* GetDetSwitch(const G4String& moduleName); // data members - AliDetSwitchRWVector fDetSwitchVector; //vector of AliDetSwitch + DetSwitchVector fDetSwitchVector; //vector of AliDetSwitch private: // methods @@ -86,14 +92,13 @@ class AliModulesComposition : public G4VUserDetectorConstruction void SetWriteGeometryToModules(G4bool writeGeometry); // data members - AliSingleModuleConstructionRWVector fModuleConstructionVector; //.. - //vector of - //AliSingleModuleConstruction - AliMoreModulesConstruction* fMoreModulesConstruction; //.. - //AliMoreModulesConstruction - - AliMagneticField* fMagneticField; //magnetic field - AliModulesCompositionMessenger* fMessenger; //messenger + 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 }; diff --git a/AliGeant4/AliParticleGun.cxx b/AliGeant4/AliParticleGun.cxx index aef5d3637db..fec0debc938 100644 --- a/AliGeant4/AliParticleGun.cxx +++ b/AliGeant4/AliParticleGun.cxx @@ -1,6 +1,10 @@ // $Id$ // Category: event // +// Author: I. Hrivnacova +// +// Class AliParticleGun +// -------------------- // See the class description in the header file. #include "AliParticleGun.h" @@ -14,18 +18,17 @@ #include //_____________________________________________________________________________ -AliParticleGun::AliParticleGun() { +AliParticleGun::AliParticleGun() + :fMessenger(this) { // - fMessenger = new AliParticleGunMessenger(this); + //fMessenger = new AliParticleGunMessenger(this); } //_____________________________________________________________________________ AliParticleGun::AliParticleGun(const AliParticleGun& right) - : G4VPrimaryGenerator(right) + : G4VPrimaryGenerator(right), + fMessenger(this) { - // allocation - fMessenger = new AliParticleGunMessenger(this); - // copy stuff *this = right; } @@ -33,8 +36,8 @@ AliParticleGun::AliParticleGun(const AliParticleGun& right) //_____________________________________________________________________________ AliParticleGun::~AliParticleGun() { // - fGunParticlesVector.clearAndDestroy(); - delete fMessenger; + // delete gun particles + Reset(); } // operators @@ -48,13 +51,14 @@ AliParticleGun& AliParticleGun::operator=(const AliParticleGun& right) // base class assignment this->G4VPrimaryGenerator::operator=(right); - // particles vector - fGunParticlesVector.clearAndDestroy(); - for (G4int i=0; iGetParticleDefinition(); @@ -106,7 +113,8 @@ void AliParticleGun::GeneratePrimaryVertex(G4Event* event) G4ThreeVector position = particle->GetPosition(); G4double time = particle->GetTime(); G4PrimaryVertex* vertex; - if ( i==0 || position != previousPosition || time != previousTime ) { + if (it == fGunParticleVector.begin() || + position != previousPosition || time != previousTime ) { // create a new vertex // in case position and time of gun particle are different from // previous values @@ -140,14 +148,15 @@ void AliParticleGun::GeneratePrimaryVertex(G4Event* event) vertex->SetPrimary(primaryParticle); } - // delete gun particles - fGunParticlesVector.clearAndDestroy(); - // add verbose G4cout << "AliParticleGun::GeneratePrimaryVertex:" << G4endl; G4cout << " " - << event->GetNumberOfPrimaryVertex() << " of primary vertices," - << " " << nofGunParticles << " of primary particles " << G4endl; + << event->GetNumberOfPrimaryVertex() << " of primary vertices," + << " " << fGunParticleVector.size() << " of primary particles " + << G4endl; + + // delete gun particles + Reset(); } //_____________________________________________________________________________ @@ -156,7 +165,11 @@ void AliParticleGun::Reset() // Resets the particle gun. // --- - fGunParticlesVector.clearAndDestroy(); + GunParticleIterator it; + for (it = fGunParticleVector.begin(); it != fGunParticleVector.end(); it++) + delete *it; + + fGunParticleVector.clear(); } //_____________________________________________________________________________ @@ -165,19 +178,19 @@ void AliParticleGun::List() // Lists the particle gun. // --- - G4int nofGunParticles = fGunParticlesVector.entries(); - G4cout << "Particle Gun: " << G4endl; - if (nofGunParticles==0) - { G4cout << " No particles are defined." << G4endl; } - else - { - for (G4int i=0; iPrint(); + (*it)->Print(); } } } diff --git a/AliGeant4/AliParticleGun.h b/AliGeant4/AliParticleGun.h index fd341b602da..c9153b25e42 100644 --- a/AliGeant4/AliParticleGun.h +++ b/AliGeant4/AliParticleGun.h @@ -1,6 +1,10 @@ // $Id$ // Category: event // +// Author: I. Hrivnacova +// +// Class AliParticleGun +// -------------------- // Particle gun that can be interactively composed by a user. #ifndef ALI_PARTICLE_GUN_H @@ -8,17 +12,19 @@ #include #include +#include -#include +#include "AliParticleGunMessenger.h" class AliGunParticle; -class AliParticleGunMessenger; class G4Event; class AliParticleGun : public G4VPrimaryGenerator { - typedef G4RWTPtrOrderedVector AliGunParticleVector; + typedef G4std::vector GunParticleVector; + typedef GunParticleVector::iterator GunParticleIterator; + typedef GunParticleVector::const_iterator GunParticleConstIterator; public: AliParticleGun(); @@ -40,14 +46,14 @@ class AliParticleGun : public G4VPrimaryGenerator private: // data members - AliGunParticleVector fGunParticlesVector; //vector of AliGunParticle - AliParticleGunMessenger* fMessenger; //messenger + GunParticleVector fGunParticleVector; //vector of AliGunParticle + AliParticleGunMessenger fMessenger; //messenger }; // inline methods inline G4int AliParticleGun::GetNofGunParticles() const -{ return fGunParticlesVector.entries(); } +{ return fGunParticleVector.size(); } #endif //ALI_PARTICLE_GUN_H -- 2.43.5