// //
///////////////////////////////////////////////////////////////////////////////
+#include <TVirtualMCApplication.h>
#include <TGeoManager.h>
#include <TObjString.h>
#include <TStopwatch.h>
#include "AliESD.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
+#include "AliMC.h"
ClassImp(AliSimulation)
+AliSimulation *AliSimulation::fgInstance = 0;
//_____________________________________________________________________________
AliSimulation::AliSimulation(const char* configFileName, const char* cdbUri,
fEmbeddingFlag(kFALSE)
{
// create simulation object with default parameters
-
+ fgInstance = this;
SetGAliceFile("galice.root");
}
for (Int_t i = 0; i < sim.fSpecCDBUri.GetEntriesFast(); i++) {
if (sim.fSpecCDBUri[i]) fSpecCDBUri.Add(sim.fSpecCDBUri[i]->Clone());
}
-
+ fgInstance = this;
}
//_____________________________________________________________________________
}
fSpecCDBUri.Delete();
+ if (fgInstance==this) fgInstance = 0;
}
// then applied to the TGeo geometry.
// Finally an overlaps check is performed.
+ if (!gGeoManager || !gGeoManager->IsClosed()) {
+ AliError("Can't apply the misalignment! gGeoManager doesn't exist or it is still opened!");
+ return kFALSE;
+ }
Bool_t delRunLoader = kFALSE;
if (!runLoader) {
runLoader = LoadRun("READ");
delRunLoader = kTRUE;
}
+ // Export ideal geometry
+ gGeoManager->Export("geometry.root");
+
// Load alignment data from CDB and apply to geometry through AliGeomManager
if(fLoadAlignFromCDB){
AliModule* det = (AliModule*) detArray->At(iDet);
if (!det || !det->IsActive()) continue;
if (IsSelected(det->GetName(), detStr)) {
- //add det to list of dets to be aligned from CDB
- loadAlObjsListOfDets += det->GetName();
- loadAlObjsListOfDets += " ";
+ //add det to list of dets to be aligned from CDB
+ loadAlObjsListOfDets += det->GetName();
+ loadAlObjsListOfDets += " ";
}
} // end loop over detectors
- (AliGeomManager::Instance())->ApplyAlignObjsFromCDB(loadAlObjsListOfDets.Data());
+ AliGeomManager::ApplyAlignObjsFromCDB(loadAlObjsListOfDets.Data());
}else{
// Check if the array with alignment objects was
// provided by the user. If yes, apply the objects
// to the present TGeo geometry
if (fAlignObjArray) {
- if (gGeoManager && gGeoManager->IsClosed()) {
- if ((AliGeomManager::Instance())->ApplyAlignObjsToGeom(fAlignObjArray) == kFALSE) {
- AliError("The misalignment of one or more volumes failed!"
- "Compare the list of simulated detectors and the list of detector alignment data!");
- if (delRunLoader) delete runLoader;
- return kFALSE;
- }
- }
- else {
- AliError("Can't apply the misalignment! gGeoManager doesn't exist or it is still opened!");
- if (delRunLoader) delete runLoader;
- return kFALSE;
+ if (AliGeomManager::ApplyAlignObjsToGeom(*fAlignObjArray) == kFALSE) {
+ AliError("The misalignment of one or more volumes failed!"
+ "Compare the list of simulated detectors and the list of detector alignment data!");
+ if (delRunLoader) delete runLoader;
+ return kFALSE;
}
}
}
if (delRunLoader) delete runLoader;
- // Update the TGeoPhysicalNodes
- gGeoManager->RefreshPhysicalNodes();
-
return kTRUE;
}
// If RunSimulation was not called, load the geometry and misalign it
if (!gGeoManager) {
- TGeoManager::Import("geometry.root");
+ AliGeomManager::LoadGeometry("geometry.root");
if (!gGeoManager) if (fStopOnError) return kFALSE;
// Initialize the geometry manager (if not already done)
if(!MisalignGeometry()) if (fStopOnError) return kFALSE;
gAlice->SetTriggerDescriptor(fMakeTrigger.Data());
// Set run number in CDBManager
- AliCDBManager::Instance()->SetRun(gAlice->GetRunNumber());
AliInfo(Form("Run number: %d",AliCDBManager::Instance()->GetRun()));
AliRunLoader* runLoader = gAlice->GetRunLoader();
}
SetGAliceFile(runLoader->GetFileName());
- // Export ideal geometry
- if (gGeoManager) gGeoManager->Export("geometry.root");
-
// Misalign geometry
+#if ROOT_VERSION_CODE < 331527
MisalignGeometry(runLoader);
-
- // Export (mis)aligned geometry
- if (gGeoManager) gGeoManager->Export("misaligned_geometry.root");
+#endif
// AliRunLoader* runLoader = gAlice->GetRunLoader();
// if (!runLoader) {