From cb5b7130369fbe53295756d96efa4bd848443558 Mon Sep 17 00:00:00 2001 From: Dave Casper <dcasper@uci.edu> Date: Mon, 26 Aug 2019 15:46:28 -0700 Subject: [PATCH] Work in progress on VetoFactory --- .../ScintGeoModelUtils/DetectorFactoryBase.h | 51 +++ .../ScintReadoutGeometry/ScintNumerology.h | 7 +- .../src/ScintNumerology.cxx | 18 +- .../VetoGeoModel/VetoDetectorFactory.h | 50 +++ .../VetoGeoModel/src/VetoDetectorFactory.cxx | 390 ++++++++++++++++++ 5 files changed, 510 insertions(+), 6 deletions(-) create mode 100644 Scintillator/ScintDetDescr/ScintGeoModelUtils/ScintGeoModelUtils/DetectorFactoryBase.h create mode 100644 Scintillator/ScintDetDescr/VetoGeoModel/VetoGeoModel/VetoDetectorFactory.h create mode 100644 Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx diff --git a/Scintillator/ScintDetDescr/ScintGeoModelUtils/ScintGeoModelUtils/DetectorFactoryBase.h b/Scintillator/ScintDetDescr/ScintGeoModelUtils/ScintGeoModelUtils/DetectorFactoryBase.h new file mode 100644 index 000000000..ae2d81495 --- /dev/null +++ b/Scintillator/ScintDetDescr/ScintGeoModelUtils/ScintGeoModelUtils/DetectorFactoryBase.h @@ -0,0 +1,51 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ScintGeoModelUtils_DetectorFactoryBase_H +#define ScintGeoModelUtils_DetectorFactoryBase_H + +#include "AthenaKernel/MsgStreamMember.h" +#include "GeoModelKernel/GeoVDetectorFactory.h" +#include "ScintGeoModelUtils/ScintDDAthenaComps.h" + +class StoreGateSvc; +class IGeoDbTagSvc; +class IRDBAccessSvc; + +namespace ScintDD { + +class DetectorFactoryBase : public GeoVDetectorFactory +{ + +public: + DetectorFactoryBase(const ScintDD::AthenaComps * athenaComps) + : m_athenaComps(athenaComps) + {} + + StoreGateSvc * detStore() const {return m_athenaComps->detStore();} + + IGeoDbTagSvc * geoDbTagSvc() const {return m_athenaComps->geoDbTagSvc();} + + IRDBAccessSvc * rdbAccessSvc() const {return m_athenaComps->rdbAccessSvc();} + + IGeometryDBSvc * geomDB() const {return m_athenaComps->geomDB();} + + //Declaring the Message method for further use + MsgStream& msg (MSG::Level lvl) const { return m_athenaComps->msg(lvl); } + + //Declaring the Method providing Verbosity Level + bool msgLvl (MSG::Level lvl) const { return m_athenaComps->msgLvl(lvl); } + + const ScintDD::AthenaComps * getAthenaComps() {return m_athenaComps;} + +private: + + const ScintDD::AthenaComps * m_athenaComps; + +}; + +} // end namespace + +#endif // ScintGeoModelUtils_DetectorFactoryBase_H + diff --git a/Scintillator/ScintDetDescr/ScintReadoutGeometry/ScintReadoutGeometry/ScintNumerology.h b/Scintillator/ScintDetDescr/ScintReadoutGeometry/ScintReadoutGeometry/ScintNumerology.h index 98fdd4661..9d2560818 100644 --- a/Scintillator/ScintDetDescr/ScintReadoutGeometry/ScintReadoutGeometry/ScintNumerology.h +++ b/Scintillator/ScintDetDescr/ScintReadoutGeometry/ScintReadoutGeometry/ScintNumerology.h @@ -55,16 +55,19 @@ namespace ScintDD { int maxNumPmts() const; // Modifiers: - void setNumStations(int nStations); + void addStation(int id); + // void setNumStations(int nStations); void setNumPlatesForStation(int station, int nPlates); void setNumPmtsForPlate(int station, int plate, int nPmts); - + void setMaxNumPmts(int nPmts); + private: int m_numStations; int m_maxNumStationPlates; int m_maxNumPlatePmts; + std::vector<int> m_stationIds; std::vector<int> m_platesForStation; std::vector<std::vector<int> > m_pmtsForPlate; diff --git a/Scintillator/ScintDetDescr/ScintReadoutGeometry/src/ScintNumerology.cxx b/Scintillator/ScintDetDescr/ScintReadoutGeometry/src/ScintNumerology.cxx index 7f52d17ad..53820f9c6 100644 --- a/Scintillator/ScintDetDescr/ScintReadoutGeometry/src/ScintNumerology.cxx +++ b/Scintillator/ScintDetDescr/ScintReadoutGeometry/src/ScintNumerology.cxx @@ -13,13 +13,18 @@ ScintNumerology::ScintNumerology() m_maxNumPlatePmts(0) {} - -void ScintNumerology::setNumStations(int nStations) +void ScintNumerology::addStation(int id) { - m_platesForStation.resize(nStations); - m_numStations = nStations; + m_stationIds.push_back(id); + m_platesForStation.push_back(0); } +// void ScintNumerology::setNumStations(int nStations) +// { +// m_platesForStation.resize(nStations); +// m_numStations = nStations; +// } + void ScintNumerology::setNumPlatesForStation(int station, int nPlates) { m_platesForStation[station] = nPlates; @@ -33,5 +38,10 @@ void ScintNumerology::setNumPmtsForPlate(int station, int plate, int nPmts) m_maxNumPlatePmts = std::max(m_maxNumPlatePmts, nPmts); } +void ScintNumerology::setMaxNumPmts(int nPmts) +{ + m_maxNumPlatePmts = std::max(m_maxNumPlatePmts, nPmts); +} + } // End namespace diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/VetoGeoModel/VetoDetectorFactory.h b/Scintillator/ScintDetDescr/VetoGeoModel/VetoGeoModel/VetoDetectorFactory.h new file mode 100644 index 000000000..7b27f3619 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/VetoGeoModel/VetoDetectorFactory.h @@ -0,0 +1,50 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef VETOGEOMODEL_VETODETECTORFACTORY_H +#define VETOGEOMODEL_VETODETECTORFACTORY_H + +#include "ScintGeoModelUtils/InDetDetectorFactoryBase.h" +#include "ScintReadoutGeometry/VetoDetectorManager.h" +#include "ScintReadoutGeometry/ScintDD_Defs.h" + +class GeoPhysVol; +class VetoDataBase; +class VetoGeometryManager; +class VetoGeoModelAthenaComps; +class VetoMaterialManager; +class VetoOptions; + +class VetoDetectorFactory : public ScintDD::DetectorFactoryBase +{ + + public: + // Constructor + VetoDetectorFactory(const VetoGeoModelAthenaComps * athenaComps, + const VetoOptions & options); + + // Destructor + virtual ~VetoDetectorFactory(); + + // Creation of geometry: + virtual void create(GeoPhysVol *world); + + // Access to the results: + virtual const ScintDD::VetoDetectorManager * getDetectorManager() const; + + private: + // Copy and assignments operations illegal and so are made private + VetoDetectorFactory(const VetoDetectorFactory &right); + const VetoDetectorFactory & operator=(const VetoDetectorFactory &right); + + ScintDD::VetoDetectorManager *m_detectorManager; + VetoGeometryManager *m_geometryManager; + VetoDataBase* m_db; + VetoMaterialManager* m_materials; + bool m_useDynamicAlignFolders; + +}; + +#endif + diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx new file mode 100644 index 000000000..5950d45aa --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx @@ -0,0 +1,390 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +// +// VetoDetectorFactory: This is the top level node +// + + +#include "VetoGeoModel/VetoDetectorFactory.h" + +#include "VetoGeoModel/VetoDataBase.h" +#include "VetoGeoModel/VetoIdentifier.h" +#include "VetoGeoModel/VetoGeometryManager.h" +#include "VetoGeoModel/VetoMaterialManager.h" +#include "VetoGeoModel/VetoGeneralParameters.h" +#include "ScintReadoutGeometry/Version.h" +#include "ScintReadoutGeometry/ScintCommonItems.h" +#include "ScintReadoutGeometry/ScintDD_Defs.h" +#include "ScintReadoutGeometry/ScintDetectorDesign.h" + +// #include "SCT_GeoModel/SCT_Barrel.h" +// #include "SCT_GeoModel/SCT_Forward.h" +#include "VetoGeoModel/VetoDataBase.h" +#include "VetoGeoModel/VetoGeoModelAthenaComps.h" + +// +// GeoModel include files: +// +#include "GeoModelKernel/GeoMaterial.h" +#include "GeoModelKernel/GeoTube.h" +#include "GeoModelKernel/GeoLogVol.h" +#include "GeoModelKernel/GeoNameTag.h" +#include "GeoModelKernel/GeoIdentifierTag.h" +#include "GeoModelKernel/GeoPhysVol.h" +#include "GeoModelKernel/GeoVPhysVol.h" +#include "GeoModelKernel/GeoTransform.h" +#include "GeoModelKernel/GeoAlignableTransform.h" +#include "GeoModelKernel/GeoShape.h" +#include "GeoModelKernel/GeoShapeUnion.h" +#include "GeoModelKernel/GeoShapeShift.h" +#include "GeoModelInterfaces/StoredMaterialManager.h" +#include "GeoModelInterfaces/IGeoDbTagSvc.h" +#include "GeoModelUtilities/DecodeVersionKey.h" +#include "RDBAccessSvc/IRDBAccessSvc.h" +#include "RDBAccessSvc/IRDBRecordset.h" +#include "RDBAccessSvc/IRDBRecord.h" +#include "AthenaPoolUtilities/CondAttrListCollection.h" +#include "DetDescrConditions/AlignableTransformContainer.h" +# +#include "StoreGate/StoreGateSvc.h" +#include "GaudiKernel/ISvcLocator.h" + +#include "GeoModelKernel/GeoDefinitions.h" +#include "GaudiKernel/SystemOfUnits.h" + + + +#include <iostream> +#include <iomanip> +#include <string> + +using ScintDD::VetoDetectorManager; +using ScintDD::ScintCommonItems; + +VetoDetectorFactory::VetoDetectorFactory(const VetoGeoModelAthenaComps * athenaComps, + const VetoOptions & options) + : ScintDD::DetectorFactoryBase(athenaComps), + m_useDynamicAlignFolders(false) +{ + + // Create the detector manager + m_detectorManager = new VetoDetectorManager(detStore()); + + // Create the database + m_db = new VetoDataBase{athenaComps}; + + // Create the material manager + m_materials = new VetoMaterialManager{m_db}; + + // Create the geometry manager. + m_geometryManager = new VetoGeometryManager{m_db}; + m_geometryManager->setOptions(options); + + m_useDynamicAlignFolders = options.dynamicAlignFolders(); + + // Set Version information + // Get the geometry tag + DecodeVersionKey versionKey(geoDbTagSvc(),"Veto"); + IRDBRecordset_ptr switchSet + = rdbAccessSvc()->getRecordsetPtr("VetoSwitches", versionKey.tag(), versionKey.node()); + const IRDBRecord *switches = (*switchSet)[0]; + + std::string layout = "Final"; + std::string description; + if (!switches->isFieldNull("LAYOUT")) { + layout = switches->getString("LAYOUT"); + } + if (!switches->isFieldNull("DESCRIPTION")) { + description = switches->getString("DESCRIPTION"); + } + + std::string versionTag = rdbAccessSvc()->getChildTag("Veto", versionKey.tag(), versionKey.node()); + std::string versionName = switches->getString("VERSIONNAME"); + int versionMajorNumber = 1; + int versionMinorNumber = 0; + int versionPatchNumber = 0; + InDetDD::Version version(versionTag, + versionName, + layout, + description, + versionMajorNumber, + versionMinorNumber, + versionPatchNumber); + m_detectorManager->setVersion(version); +} + + +VetoDetectorFactory::~VetoDetectorFactory() +{ + // NB the detector manager (m_detectorManager)is stored in the detector store by the + // Tool and so we don't delete it. + delete m_db; + delete m_materials; + delete m_geometryManager; +} + +void VetoDetectorFactory::create(GeoPhysVol *world) +{ + + msg(MSG::INFO) << "Building Veto Detector." << endmsg; + msg(MSG::INFO) << " " << m_detectorManager->getVersion().fullDescription() << endmsg; + + // Change precision. + int oldPrecision = std::cout.precision(6); + + // The tree tops get added to world. We name it "indet" though. + GeoPhysVol *scint = world; + + const VetoGeneralParameters * vetoGeneral = m_geometryManager->generalParameters(); + + GeoTrf::Transform3D vetoTransform = vetoGeneral->partTransform("Veto"); + +// std::string barrelLabel = "Barrel"; +// std::string forwardPlusLabel = "EndcapA"; +// std::string forwardMinusLabel = "EndcapC"; + +// bool barrelPresent = sctGeneral->partPresent(barrelLabel); +// bool forwardPlusPresent = sctGeneral->partPresent(forwardPlusLabel); +// bool forwardMinusPresent = sctGeneral->partPresent(forwardMinusLabel); + + std::string stationA_Label = "StationA"; + std::string stationB_Label = "StationB"; + std::string absorberA_Label = "AbsorberA"; + std::string absorberB_Label = "AbsorberB"; + + bool stationA_Present = vetoGeneral->partPresent(stationA_Label); + bool stationB_Present = vetoGeneral->partPresent(stationB_Label); + bool absorberA_Present = vetoGeneral->partPresent(absorberA_Label); + bool absorberB_Present = vetoGeneral->partPresent(absorberB_Label); + + // + // Station A + // + if (stationA_Present) + { + msg(MSG::DEBUG) << "Building the Veto Station A." << endmsg; + m_detectorManager->numerology().addStation(0); + + // Create the station + VetoStation stationA("VetoStationA", m_detectorManager, m_geometryManager, m_materials); + VetoIdentifier id{m_geometryManager->athenaComps()->getIdHelper()}; + id.setStation(0); + GeoVPhysVol* stationA_PV = stationA.build(id); + GeoAlignableTransform* stationA_Transform = new GeoAlignableTransform(vetoTransform * vetoGeneral->partTransform(stationA_Label)); + + GeoNameTag* topLevelNameTag = new GeoNameTag("Veto"); + scint->add(topLevelNameTag); + scint->add(new GeoIdentifierTag(0)); + scint->add(stationA_Transform); + scint->add(stationA_PV); + m_detectorManager->addTreeTop(stationA_PV); + + // Store alignable transform + m_detectorManager->addAlignableTransform(3, id.getPlateId(), stationA_Transform, stationA_PV); + } + +// // +// // The Barrel +// // +// if (barrelPresent) { + +// msg(MSG::DEBUG) << "Building the SCT Barrel." << endmsg; + +// m_detectorManager->numerology().addBarrel(0); + +// // Create the SCT Barrel +// SCT_Barrel sctBarrel("SCT_Barrel", m_detectorManager, m_geometryManager, m_materials); + +// SCT_Identifier id{m_geometryManager->athenaComps()->getIdHelper()}; +// id.setBarrelEC(0); +// GeoVPhysVol * barrelPV = sctBarrel.build(id); +// GeoAlignableTransform * barrelTransform = new GeoAlignableTransform(sctTransform * sctGeneral->partTransform(barrelLabel)); + +// //indet->add(new GeoNameTag("SCT_Barrel")); +// // The name tag here is what is used by the GeoModel viewer. +// GeoNameTag *topLevelNameTag = new GeoNameTag("SCT"); +// indet->add(topLevelNameTag); +// indet->add(new GeoIdentifierTag(0)); +// indet->add(barrelTransform); +// indet->add(barrelPV); +// m_detectorManager->addTreeTop(barrelPV); + +// // Store alignable transform +// m_detectorManager->addAlignableTransform(3, id.getWaferId(), barrelTransform, barrelPV); + +// } + +// // +// // The Positive Z Endcap (EndcapA) +// // +// if (forwardPlusPresent) { + +// msg(MSG::DEBUG) << "Building the SCT Endcap A (positive z)." << endmsg; + +// m_detectorManager->numerology().addEndcap(2); + +// // Create the Forward +// SCT_Forward sctForwardPlus("SCT_ForwardA", +2, m_detectorManager, m_geometryManager, m_materials); + +// SCT_Identifier idFwdPlus{m_geometryManager->athenaComps()->getIdHelper()}; +// idFwdPlus.setBarrelEC(2); +// GeoVPhysVol * forwardPlusPV = sctForwardPlus.build(idFwdPlus); +// GeoTrf::Transform3D fwdTransformPlus(sctTransform +// * sctGeneral->partTransform(forwardPlusLabel) +// * GeoTrf::TranslateZ3D(sctForwardPlus.zCenter())); +// GeoAlignableTransform * fwdGeoTransformPlus = new GeoAlignableTransform(fwdTransformPlus); + +// //indet->add(new GeoNameTag("SCT_ForwardPlus")); +// // The name tag here is what is used by the GeoModel viewer. +// GeoNameTag *topLevelNameTag = new GeoNameTag("SCT"); +// indet->add(topLevelNameTag); +// indet->add(new GeoIdentifierTag(2)); +// indet->add(fwdGeoTransformPlus); +// indet->add(forwardPlusPV); +// m_detectorManager->addTreeTop(forwardPlusPV); + +// // Store alignable transform +// m_detectorManager->addAlignableTransform(3, idFwdPlus.getWaferId(), fwdGeoTransformPlus, forwardPlusPV); +// } + +// // +// // The Negative Z Endcap (EndcapC) +// // + +// if (forwardMinusPresent) { + +// msg(MSG::DEBUG) << "Building the SCT Endcap C (negative z)." << endmsg; + +// m_detectorManager->numerology().addEndcap(-2); + +// SCT_Forward sctForwardMinus("SCT_ForwardC", -2, m_detectorManager, m_geometryManager, m_materials); + +// SCT_Identifier idFwdMinus{m_geometryManager->athenaComps()->getIdHelper()}; +// idFwdMinus.setBarrelEC(-2); +// GeoVPhysVol * forwardMinusPV = sctForwardMinus.build(idFwdMinus); + +// GeoTrf::Transform3D rot; +// rot = GeoTrf::RotateY3D(180 * Gaudi::Units::degree); + +// GeoTrf::Transform3D fwdTransformMinus(sctTransform +// * sctGeneral->partTransform(forwardMinusLabel) +// * rot +// * GeoTrf::TranslateZ3D(sctForwardMinus.zCenter())); +// GeoAlignableTransform * fwdGeoTransformMinus = new GeoAlignableTransform(fwdTransformMinus); + +// //indet->add(new GeoNameTag("SCT_ForwardMinus")); +// // The name tag here is what is used by the GeoModel viewer. +// GeoNameTag *topLevelNameTag = new GeoNameTag("SCT"); +// indet->add(topLevelNameTag); +// indet->add(new GeoIdentifierTag(-2)); +// indet->add(fwdGeoTransformMinus); +// indet->add(forwardMinusPV); +// m_detectorManager->addTreeTop(forwardMinusPV); + + +// // Store alignable transform +// m_detectorManager->addAlignableTransform(3, idFwdMinus.getWaferId(), fwdGeoTransformMinus, forwardMinusPV); +// } + + // Set the neighbours + m_detectorManager->initNeighbours(); + + // Set maximum number of strips in numerology. + for (int iDesign = 0; iDesign < m_detectorManager->numDesigns(); iDesign++) { + m_detectorManager->numerology().setMaxNumPmts(m_detectorManager->getVetoDesign(iDesign)->cells()); + } + + // Register the keys and the level corresponding to the key + // and whether it expects a global or local shift. + // level 0: sensor, level 1: module, level 2, layer/disc, level 3: whole barrel/enccap + + + if (!m_useDynamicAlignFolders){ + + m_detectorManager->addAlignFolderType(ScintDD::static_run1); + m_detectorManager->addFolder("/Scint/Align"); + m_detectorManager->addChannel("/Scint/Align/Scint",3,ScintDD::global); + m_detectorManager->addChannel("/Scint/Align/Veto",2,ScintDD::global); + + // if (barrelPresent) { + // m_detectorManager->addChannel("/Indet/Align/SCTB1",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTB2",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTB3",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTB4",1,InDetDD::local); + // } + // if (forwardPlusPresent) { + // m_detectorManager->addChannel("/Indet/Align/SCTEA1",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA2",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA3",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA4",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA5",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA6",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA7",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA8",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEA9",1,InDetDD::local); + // } + // if (forwardMinusPresent) { + // m_detectorManager->addChannel("/Indet/Align/SCTEC1",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC2",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC3",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC4",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC5",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC6",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC7",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC8",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/Align/SCTEC9",1,InDetDD::local); + // } + } + + else { + m_detectorManager->addAlignFolderType(ScintDD::timedependent_run2); + m_detectorManager->addGlobalFolder("/Scint/AlignL1/Scint"); + m_detectorManager->addGlobalFolder("/Scint/AlignL2/Veto"); + m_detectorManager->addChannel("/Scint/AlignL1/Scint",3,ScintDD::global); + m_detectorManager->addChannel("/Scint/AlignL2/Veto",2,ScintDD::global); + m_detectorManager->addFolder("/Scint/AlignL3"); + + // if (barrelPresent) { + // m_detectorManager->addChannel("/Indet/AlignL3/SCTB1",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTB2",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTB3",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTB4",1,InDetDD::local); + // } + // if (forwardPlusPresent) { + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA1",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA2",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA3",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA4",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA5",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA6",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA7",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA8",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEA9",1,InDetDD::local); + // } + // if (forwardMinusPresent) { + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC1",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC2",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC3",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC4",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC5",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC6",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC7",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC8",1,InDetDD::local); + // m_detectorManager->addChannel("/Indet/AlignL3/SCTEC9",1,InDetDD::local); + // } + } + + // Return precision to its original value + std::cout.precision(oldPrecision); + +} + + +const VetoDetectorManager * VetoDetectorFactory::getDetectorManager() const +{ + return m_detectorManager; +} + + -- GitLab