// // GWt_abstractElementFactory.cc // PSPA // // Created by Garnier Laurent on 28/01/13. // Copyright (c) 2013 Garnier Laurent. All rights reserved. // #include "GWt_abstractElementFactory.h" GWt_abstractElementFactory::GWt_abstractElementFactory() :isDriftElementEnable(false), isRFGunElementEnable(false), isCellElementEnable(false), isBendElementEnable(false), isSolenoElementEnable(false), isBeamElementEnable(false), isFitElementEnable(false), isSnapshotElementEnable(false), isMPoleElementEnable(false) {} GWt_abstractElementFactory::~GWt_abstractElementFactory() { isDriftElementEnable = false; isRFGunElementEnable = false; isCellElementEnable = false; isBendElementEnable = false; isSolenoElementEnable = false; isBeamElementEnable = false; isFitElementEnable = false; isSnapshotElementEnable = false; isMPoleElementEnable = false; } GWt_drift* GWt_abstractElementFactory::createDriftElement() { if (isDriftElementEnable) { return new GWt_drift(); } return NULL; } GWt_rfgun* GWt_abstractElementFactory::createRFGunElement() { if (isRFGunElementEnable) { return new GWt_rfgun(); } return NULL; } GWt_cell* GWt_abstractElementFactory::createCellElement() { if (isCellElementEnable) { return new GWt_cell(); } return NULL; } GWt_bend* GWt_abstractElementFactory::createBendElement() { if (isBendElementEnable) { return new GWt_bend(); } return NULL; } GWt_soleno* GWt_abstractElementFactory::createSolenoElement() { if (isSolenoElementEnable) { return new GWt_soleno(); } return NULL; } GWt_beam* GWt_abstractElementFactory::createBeamElement() { if (isBeamElementEnable) { return new GWt_beam(); } return NULL; } GWt_fit* GWt_abstractElementFactory::createFitElement() { if (isFitElementEnable) { return new GWt_fit(); } return NULL; } GWt_snapshot* GWt_abstractElementFactory::createSnapshotElement() { if (isSnapshotElementEnable) { return new GWt_snapshot(); } return NULL; } GWt_mpole* GWt_abstractElementFactory::createMPoleElement() { if (isMPoleElementEnable) { return new GWt_mpole(); } return NULL; } vector GWt_abstractElementFactory::getAllElements() { vector elems; if (isRFGunElementEnable) { elems.push_back(new GWt_rfgun()); } if (isBeamElementEnable) { elems.push_back(new GWt_beam()); } if (isDriftElementEnable) { elems.push_back(new GWt_drift()); } if (isBendElementEnable) { elems.push_back(new GWt_bend()); } if (isCellElementEnable) { elems.push_back(new GWt_cell()); } if (isSolenoElementEnable) { elems.push_back(new GWt_soleno()); } if (isFitElementEnable) { elems.push_back(new GWt_fit()); } if (isSnapshotElementEnable) { elems.push_back(new GWt_snapshot()); } if (isMPoleElementEnable) { elems.push_back(new GWt_mpole()); } return elems; }