// // 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_elementDrift* GWt_abstractElementFactory::createDriftElement() { if (isDriftElementEnable) { return new GWt_elementDrift(); } return NULL; } GWt_elementRfgun* GWt_abstractElementFactory::createRFGunElement() { if (isRFGunElementEnable) { return new GWt_elementRfgun(); } return NULL; } GWt_elementCell* GWt_abstractElementFactory::createCellElement() { if (isCellElementEnable) { return new GWt_elementCell(); } return NULL; } GWt_elementBend* GWt_abstractElementFactory::createBendElement() { if (isBendElementEnable) { return new GWt_elementBend(); } return NULL; } GWt_elementSoleno* GWt_abstractElementFactory::createSolenoElement() { if (isSolenoElementEnable) { return new GWt_elementSoleno(); } return NULL; } GWt_elementBeam* GWt_abstractElementFactory::createBeamElement() { if (isBeamElementEnable) { return new GWt_elementBeam(); } return NULL; } GWt_elementFit* GWt_abstractElementFactory::createFitElement() { if (isFitElementEnable) { return new GWt_elementFit(); } return NULL; } GWt_elementSnapshot* GWt_abstractElementFactory::createSnapshotElement() { if (isSnapshotElementEnable) { return new GWt_elementSnapshot(); } return NULL; } GWt_elementMpole* GWt_abstractElementFactory::createMPoleElement() { if (isMPoleElementEnable) { return new GWt_elementMpole(); } return NULL; } vector GWt_abstractElementFactory::getAllElements() { vector elems; if (isRFGunElementEnable) { elems.push_back(new GWt_elementRfgun()); } if (isBeamElementEnable) { elems.push_back(new GWt_elementBeam()); } if (isDriftElementEnable) { elems.push_back(new GWt_elementDrift()); } if (isBendElementEnable) { elems.push_back(new GWt_elementBend()); } if (isCellElementEnable) { elems.push_back(new GWt_elementCell()); } if (isSolenoElementEnable) { elems.push_back(new GWt_elementSoleno()); } if (isFitElementEnable) { elems.push_back(new GWt_elementFit()); } if (isSnapshotElementEnable) { elems.push_back(new GWt_elementSnapshot()); } if (isMPoleElementEnable) { elems.push_back(new GWt_elementMpole()); } return elems; }