diff --git a/examples/CLICSiD/include/LayeredSubdetector.h b/examples/CLICSiD/include/LayeredSubdetector.h deleted file mode 100644 index f1bc884d813caf0ffee3b9281222d6db4f35a105..0000000000000000000000000000000000000000 --- a/examples/CLICSiD/include/LayeredSubdetector.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * LayeredSubdetector.h - * - * Created on: Mar 27, 2013 - * Author: Christian Grefe, CERN - */ - -#ifndef LAYEREDSUBDETECTOR_H_ -#define LAYEREDSUBDETECTOR_H_ - -#include "LayerStack.h" - -#include "DD4hep/Detector.h" - -namespace DD4hep { -namespace Geometry { - -class LayeredSubdetector: virtual public DetElement { -public: - LayeredSubdetector(const DetElement& e); - virtual ~LayeredSubdetector(); - - inline bool isLayered() const { - return true; - } - - inline int getNumberOfLayers() const { - return layerStack->getNumberOfLayers(); - } - - inline int getNumberOfSensors(int layerIndex, int moduleIndex = 1) const { - return layerStack->getNumberOfSensors(layerIndex, moduleIndex); - } - - inline DetElement getSensor(int layerIndex, int moduleIndex = 1, int sensorIndex = 1) const { - return layerStack->getSensor(layerIndex, moduleIndex, sensorIndex); - } - - inline double getLayerThickness(int layerIndex, int moduleIndex = 1) const { - return layerStack->getThickness(layerIndex, moduleIndex); - } - - inline double getInteractionLengths(int layerIndex, int moduleIndex = 1) const { - return layerStack->getInteractionLengths(layerIndex, moduleIndex); - } - - inline double getRadiationLengths(int layerIndex, int moduleIndex = 1) const { - return layerStack->getRadiationLengths(layerIndex, moduleIndex); - } - - inline double getMipEnergyLoss(int /* layerIndex */, int /* moduleIndex */ = 1) const { - return 0.; - } - - inline double getTotalThickness(int moduleIndex = 1) const { - return layerStack->getTotalThickness(moduleIndex); - } - - inline double getTotalInteractionLengths(int moduleIndex = 1) const { - return layerStack->getTotalInteractionLengths(moduleIndex); - } - - inline double getTotalRadiationLengths(int moduleIndex = 1) const { - return layerStack->getTotalRadiationLengths(moduleIndex); - } - -protected: - LayerStack* layerStack; - -private: - void getExtension(); - -}; - -} /* namespace Geometry */ -} /* namespace DD4hep */ - -#endif /* LAYEREDSUBDETECTOR_H_ */ diff --git a/examples/CLICSiD/src/LayerStack.cpp b/examples/CLICSiD/src/LayerStack.cpp deleted file mode 100644 index bf1b75ee146ad42d779fb3c55cd9de179adc5563..0000000000000000000000000000000000000000 --- a/examples/CLICSiD/src/LayerStack.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Layer.cpp - * - * Created on: Apr 18, 2013 - * Author: Christian Grefe, CERN - */ - -#include "LayerStack.h" -#include "Exceptions.h" -#include "DD4hep/Detector.h" -#include "DD4hep/Shapes.h" - -#include <sstream> - -namespace DD4hep { -namespace Geometry { - -using std::stringstream; -using namespace DD4hep::Geometry; - -LayerStack::LayerStack(const DetElement& det) : det(det) { - -} - -LayerStack::LayerStack(const LayerStack& /* layerStack */, const DetElement& det) : det(det) { - -} - -LayerStack::~LayerStack() { - -} - -double LayerStack::getThickness(int layerIndex, int moduleIndex) const { - double thickness = 0.; - for (int sliceIndex = 0; sliceIndex < getNumberOfSlices(layerIndex, moduleIndex); sliceIndex++) { - thickness += Box(getSlice(layerIndex, moduleIndex, sliceIndex+1).volume().solid())->GetDZ(); - } - return thickness; -} - -double LayerStack::getRadiationLengths(int layerIndex, int moduleIndex) const { - double radiationLengths = 0.; - for (int sliceIndex = 0; sliceIndex < getNumberOfSlices(layerIndex, moduleIndex); sliceIndex++) { - radiationLengths += Box(getSlice(layerIndex, moduleIndex, sliceIndex+1).volume().solid())->GetDZ() / getSlice(layerIndex, moduleIndex).volume().material().radLength(); - } - return radiationLengths; -} - -double LayerStack::getInteractionLengths(int layerIndex, int moduleIndex) const { - double interactionLengths = 0.; - for (int sliceIndex = 0; sliceIndex < getNumberOfSlices(layerIndex, moduleIndex); sliceIndex++) { - interactionLengths += Box(getSlice(layerIndex, moduleIndex, sliceIndex+1).volume().solid())->GetDZ() / getSlice(layerIndex, moduleIndex).volume().material().intLength(); - } - return interactionLengths; -} - -double LayerStack::getTotalThickness(int moduleIndex) const { - double thickness = 0.; - for (int layerIndex = 0; layerIndex < getNumberOfLayers(); layerIndex++) { - thickness += getThickness(layerIndex+1, moduleIndex); - } - return thickness; -} - -double LayerStack::getTotalInteractionLengths(int moduleIndex) const { - double interactionLengths = 0.; - for (int layerIndex = 0; layerIndex < getNumberOfLayers(); layerIndex++) { - interactionLengths += getInteractionLengths(layerIndex+1, moduleIndex); - } - return interactionLengths; -} - -double LayerStack::getTotalRadiationLengths(int moduleIndex) const { - double radiationLengths = 0.; - for (int layerIndex = 0; layerIndex < getNumberOfLayers(); layerIndex++) { - radiationLengths += getRadiationLengths(layerIndex+1, moduleIndex); - } - return radiationLengths; -} - -PolyhedralCalorimeterLayerStack::PolyhedralCalorimeterLayerStack(const DetElement& det) : LayerStack(det) { - -} - -PolyhedralCalorimeterLayerStack::PolyhedralCalorimeterLayerStack(const PolyhedralCalorimeterLayerStack& layerStack, const DetElement& det) : LayerStack(layerStack, det) { - -} - -PolyhedralCalorimeterLayerStack::~PolyhedralCalorimeterLayerStack() { - -} - -int PolyhedralCalorimeterLayerStack::getNumberOfLayers() const { - stringstream moduleName; - moduleName << "stave1"; - DetElement module = det.child(moduleName.str()); - if (not module.isValid()) { - std::cerr << "Invalid module name " << moduleName.str() << std::endl; - return 0; - } - return module.children().size(); -} - - int PolyhedralCalorimeterLayerStack::getNumberOfModules(int /* layerIndex */) const { - return det.children().size(); -} - -DetElement PolyhedralCalorimeterLayerStack::getModule(int layerIndex, int moduleIndex) const { - stringstream moduleName; - moduleName << "stave" << moduleIndex; - DetElement module = det.child(moduleName.str()); - if (not module.isValid()) { - std::cerr << "Invalid module name " << moduleName.str() << std::endl; - return DetElement(); - } - stringstream layerName; - layerName << "layer" << layerIndex; - DetElement layer = module.child(layerName.str()); - if (not layer.isValid()) { - std::cerr << "Invalid layer name " << layerName.str() << std::endl; - return DetElement(); - } - return layer; -} - -int PolyhedralCalorimeterLayerStack::getNumberOfSlices(int layerIndex, int moduleIndex) const { - return getModule(layerIndex, moduleIndex).children().size(); -} - -DetElement PolyhedralCalorimeterLayerStack::getSlice(int layerIndex, int moduleIndex, int sliceIndex) const { - stringstream sliceName; - sliceName << "slice" << sliceIndex; - DetElement slice = getModule(layerIndex, moduleIndex).child(sliceName.str()); - if (not slice.isValid()) { - std::cerr << "Invalid slice name " << sliceName.str() << std::endl; - return DetElement(); - } - return getModule(layerIndex, moduleIndex).child(sliceName.str()); -} - -int PolyhedralCalorimeterLayerStack::getNumberOfSensors(int layerIndex, int moduleIndex) const { - int nSensors = 0; - for (int sliceIndex = 0; sliceIndex < getNumberOfSlices(layerIndex, moduleIndex); sliceIndex++) { - if (getSlice(layerIndex, moduleIndex, sliceIndex+1).volume().isSensitive()) { - nSensors++; - } - } - return nSensors; -} - -DetElement PolyhedralCalorimeterLayerStack::getSensor(int layerIndex, int moduleIndex, int sensorIndex) const { - int nSensors = 0; - for (int sliceIndex = 0; sliceIndex < getNumberOfSlices(layerIndex, moduleIndex); sliceIndex++) { - DetElement slice = getSlice(layerIndex, moduleIndex, sliceIndex+1); - if (slice.volume().isSensitive()) { - nSensors++; - } - if (nSensors == sensorIndex) { - return slice; - } - } - throw OutsideGeometryException("No sensor with index " + sensorIndex); -} - -} /* namespace Geometry */ -} /* namespace DD4hep */