Skip to content
Snippets Groups Projects
Commit 19775012 authored by Volker Friese's avatar Volker Friese
Browse files

Enable possibility to specify a field object directly (e.g. CbmFieldConst) as...

Enable possibility to specify a field object directly (e.g. CbmFieldConst) as needed for mCBM. Refs #1300 @0.5 h

git-svn-id: https://subversion.gsi.de/cbmsoft/cbmroot/trunk@14689 5a1b234a-d7ce-0410-9a93-fd649a8fa65c
parent 87ef1d42
No related branches found
No related tags found
No related merge requests found
......@@ -80,6 +80,7 @@ void mcbm_transport(Int_t nEvents = 10,
run.SetParFileName(parFile);
run.SetGeoFileName(geoFile);
run.LoadSetup(setupName);
run.SetField(new CbmFieldConst());
run.SetTarget(targetElement, targetThickness, targetDiameter,
targetPosX, targetPosY, targetPosZ,
targetRotY*TMath::DegToRad());
......
......@@ -49,6 +49,7 @@ using std::stringstream;
CbmTransport::CbmTransport() :
TNamed("CbmTransport", "Transport Run"),
fSetup(CbmSetup::Instance()),
fField(nullptr),
fTarget(),
fEventGen(new CbmEventGenerator),
fRun(new FairRunSim()),
......@@ -613,9 +614,10 @@ void CbmTransport::Run(Int_t nEvents) {
// --- Create the magnetic field
LOG(INFO) << GetName() << ": Register magnetic field";
CbmFieldMap* magField = fSetup->CreateFieldMap();
assert(magField);
fRun->SetField(magField);
LOG(INFO) << fField;
if ( ! fField ) fField = fSetup->CreateFieldMap();
fField->Print("");
fRun->SetField(fField);
// --- Initialise the event generator
......@@ -652,7 +654,7 @@ void CbmTransport::Run(Int_t nEvents) {
FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
CbmFieldPar* fieldPar =
static_cast<CbmFieldPar*>(rtdb->getContainer("CbmFieldPar"));
fieldPar->SetParameters(magField);
fieldPar->SetParameters(fField);
fieldPar->setChanged();
FairParRootFileIo* parOut = new FairParRootFileIo(kTRUE);
parOut->open(fParFileName.Data());
......
......@@ -18,6 +18,7 @@
class TGeant3;
class TGeant4;
class TVirtualMC;
class FairField;
class FairGenerator;
class FairRunSim;
class CbmEventGenerator;
......@@ -169,6 +170,16 @@ class CbmTransport : public TNamed
void SetEngine(ECbmEngine engine) { fEngine = engine; }
/** @brief Set magnetic field
** @param field Pointer to FairField instance
**
** By default, a field map corresponding to the magnet geometry
** will be used. This can be overridden by specifying a field
** object directly through this method.
**/
void SetField(FairField* field) { fField = field; }
/** @brief Define geometry file name (output)
** @param name Name for geometry file
**
......@@ -290,6 +301,7 @@ class CbmTransport : public TNamed
private:
CbmSetup* fSetup;
FairField* fField; //!
std::shared_ptr<CbmTarget> fTarget; //!
CbmEventGenerator* fEventGen;
FairRunSim* fRun;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment