// moduleName nofVersions defaultVersion [type]
// det switch objects are deleted in fDetSwitchVector destructor
+ fDetSwitchVector.Add(new AliDetSwitch("MAG", 1, 0, kStructure));
fDetSwitchVector.Add(new AliDetSwitch("ABSO", 1, 0, kStructure));
fDetSwitchVector.Add(new AliDetSwitch("DIPO", 3, 2, kStructure));
fDetSwitchVector.Add(new AliDetSwitch("FRAME", 3, 2, kStructure));
fDetSwitchVector.Add(new AliDetSwitch("HALL", 1, 0, kStructure));
- //fDetSwitchVector.Add(new AliDetSwitch("MAG", 1, 0, kStructure));
- fDetSwitchVector.Add(new AliDetSwitch("MAG", 1, 0, kStructure));
fDetSwitchVector.Add(new AliDetSwitch("PIPE", 5, 0, kStructure));
- fDetSwitchVector.Add(new AliDetSwitch("SHIL", 1, 0, kStructure));
+ fDetSwitchVector.Add(new AliDetSwitch("SHIL", 2, 1, kStructure));
fDetSwitchVector.Add(new AliDetSwitch("CASTOR", 2, 1));
fDetSwitchVector.Add(new AliDetSwitch("FMD", 2, 1));
fDetSwitchVector.Add(new AliDetSwitch("ITS", 7, 5));
fDetSwitchVector.Add(new AliDetSwitch("MUON", 2, 1));
- //fDetSwitchVector.Add(new AliDetSwitch("MUON", 2, 1));
fDetSwitchVector.Add(new AliDetSwitch("PHOS", 2, 1));
fDetSwitchVector.Add(new AliDetSwitch("PMD", 3, 1));
fDetSwitchVector.Add(new AliDetSwitch("RICH", 3, 1));
fDetSwitchVector.Add(new AliDetSwitch("TRD", 2, 1));
fDetSwitchVector.Add(new AliDetSwitch("ZDC", 3, 2));
+ // update messenger
+ fDetSwitchVector.UpdateMessenger();
+
// instantiate LVtree browser
AliLVTree::Instance();
}
fDetSwitchVector.SwitchDetOn(modName, modVersion);
// all modules will be processed alltogether
- AddModule(modName, modVersion);
+ AddModule(modName, modVersion, fDetSwitchVector.GetDetSwitch(modName)->GetType());
- G4cout << "Created module construction for "
- << modName << "v" << modVersion << "." << G4endl;
+ if (VerboseLevel() > 0) {
+ G4cout << "Created module construction for "
+ << modName << "v" << modVersion << "." << G4endl;
+ }
}
// do not process Config.C
}
}
+//_____________________________________________________________________________
+void AliDetConstruction::CheckDependence(const G4String& master,
+ const G4String& slave)
+{
+// Checks modules dependence.
+// If master is switch on and slave off, the default version
+// of slave is switched on and a warning is issued.
+// ---
+
+ AliDetSwitch* masterSwitch = fDetSwitchVector.GetDetSwitch(master);
+ AliDetSwitch* slaveSwitch = fDetSwitchVector.GetDetSwitch(slave);
+
+ if ( masterSwitch->GetSwitchedVersion() > -1 &&
+ slaveSwitch->GetSwitchedVersion() < 0 ) {
+
+ slaveSwitch->SwitchOnDefault();
+
+ // warning
+ G4String text = "AliDetConstruction::CheckDetDependence: \n";
+ text = text + " Switched " + master + " requires " + slave + ".\n";
+ text = text + " The det switch for " + slave + " has been changed.";
+ AliGlobals::Warning(text);
+ }
+}
+
//_____________________________________________________________________________
void AliDetConstruction::CheckDetDependencies()
{
// Checks modules dependencies.
-// Dependent modules FRAME, TOF, TRD
-// TOF always requires FRAMEv1
-// TRD can be built with both (??)
-// ZDC requires DIPO
// ---
- // get switched versions of dependent modules
- G4int verMUON = fDetSwitchVector.GetDetSwitch("MUON")->GetSwitchedVersion();
- G4int verTOF = fDetSwitchVector.GetDetSwitch("TOF")->GetSwitchedVersion();
- G4int verTRD = fDetSwitchVector.GetDetSwitch("TRD")->GetSwitchedVersion();
- G4int verZDC = fDetSwitchVector.GetDetSwitch("ZDC")->GetSwitchedVersion();
- G4int verFRAME = fDetSwitchVector.GetDetSwitch("FRAME")->GetSwitchedVersion();
-
- // check dependencies
-
- if (verMUON > -1) {
- // MUON requires DIPO
- if(fDetSwitchVector.GetDetSwitch("DIPO")->GetSwitchedVersion()<0) {
- fDetSwitchVector.GetDetSwitch("DIPO")->SwitchOnDefault();
- G4String text = "AliDetConstruction::CheckDetDependencies: \n";
- text = text + " Switched MUON requires DIPO.\n";
- text = text + " The det switch for DIPO has been changed.";
- AliGlobals::Warning(text);
- }
- }
- if (verTOF > -1) {
- // TOF requires FRAME
- if (verFRAME < 0) {
- fDetSwitchVector.GetDetSwitch("FRAME")->SwitchOnDefault();
- G4String text = "AliDetConstruction::CheckDetDependencies: \n";
- text = text + " Switched TOF requires FRAME.\n";
- text = text + " The det switch for FRAME has been changed.";
- AliGlobals::Warning(text);
- }
- }
- if (verTRD > -1) {
- // TRD requires FRAME
- verFRAME = fDetSwitchVector.GetDetSwitch("FRAME")->GetSwitchedVersion();
- if (verFRAME < 0) {
- fDetSwitchVector.GetDetSwitch("FRAME")->SwitchOnDefault();
- G4String text = "AliDetConstruction::CheckDetDependencies: \n";
- text = text + " Switched TRD requires FRAME.\n";
- text = text + " The det switch for FRAME has been changed.";
- AliGlobals::Warning(text);
- }
- }
- if (verZDC > -1) {
- // ZDC requires PIPE, ABSO, DIPO, SHIL
- G4int verPIPE = fDetSwitchVector.GetDetSwitch("PIPE")->GetSwitchedVersion();
- G4int verABSO = fDetSwitchVector.GetDetSwitch("ABSO")->GetSwitchedVersion();
- G4int verDIPO = fDetSwitchVector.GetDetSwitch("DIPO")->GetSwitchedVersion();
- G4int verSHIL = fDetSwitchVector.GetDetSwitch("SHIL")->GetSwitchedVersion();
- if ( verPIPE != 1 || verABSO !=0 || verDIPO == -1 || verSHIL == -1) {
- G4String text = "AliDetConstruction::CheckDetDependencies: \n";
- text = text + " Switched ZDC requires PIPE, ABSO, DIPO and SHIL.\n";
- if (verPIPE == -1) {
- fDetSwitchVector.GetDetSwitch("PIPE")->SwitchOnDefault();
- text = text + " The det switch for PIPE has been changed.\n";
- }
- if (verABSO == -1) {
- fDetSwitchVector.GetDetSwitch("ABSO")->SwitchOnDefault();
- text = text + " The det switch for ABSO has been changed.\n";
- }
- if (verDIPO == -1) {
- fDetSwitchVector.GetDetSwitch("DIPO")->SwitchOnDefault();
- text = text + " The det switch for DIPO has been changed.\n";
- }
- if (verSHIL == -1) {
- fDetSwitchVector.GetDetSwitch("SHIL")->SwitchOnDefault();
- text = text + " The det switch for SHIL has been changed.";
- }
- AliGlobals::Warning(text);
- }
- }
+ CheckDependence("MUON", "DIPO");
+ CheckDependence("TOF", "FRAME");
+ CheckDependence("TRD", "FRAME");
+ CheckDependence("ZDC", "PIPE");
+ CheckDependence("ZDC", "ABSO");
+ CheckDependence("ZDC", "DIPO");
+ CheckDependence("ZDC", "SHIL");
}
// public methods
topName, world->GetLogicalVolume());
xml.CloseFile();
- // set verbose
- G4cout << "File " << detName << "v" << version << ".xml has been generated."
- << G4endl;
+ if (VerboseLevel() > 0) {
+ G4cout << "File " << detName << "v" << version << ".xml has been generated."
+ << G4endl;
+ }
}