lcdd/src/lcdd/detectors
diff -u -r1.4.2.1 -r1.4.2.2
--- SensitiveDetectorFactory.cc 14 Aug 2013 00:23:23 -0000 1.4.2.1
+++ SensitiveDetectorFactory.cc 14 Aug 2013 02:19:45 -0000 1.4.2.2
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/lcdd/src/lcdd/detectors/SensitiveDetectorFactory.cc,v 1.4.2.1 2013/08/14 00:23:23 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/lcdd/detectors/SensitiveDetectorFactory.cc,v 1.4.2.2 2013/08/14 02:19:45 jeremy Exp $
// LCDD
#include "lcdd/detectors/SensitiveDetectorFactory.hh"
@@ -89,6 +89,7 @@
// Add the default HitsCollection, which is the name of the SD, if none were specified in the XML.
if (hitsCollections.size() == 0) {
hitsCollections.push_back(sensitiveDetectorType->get_name());
+ //std::cout << "added default hits collection: " << sensitiveDetectorType->get_name() << std::endl;
}
// Create the SD object based on its type of calorimeter or tracker.
@@ -97,7 +98,7 @@
sensitiveDetector = createCalorimeter(object, hitsCollections);
} else if (sensitiveDetectorTypeName == "tracker") {
// Create tracker SD.
- sensitiveDetector = createTracker(object);
+ sensitiveDetector = createTracker(object, hitsCollections);
} else {
// Type is not recognized. This shouldn't happen!
G4cerr << "Invalid sensitive detector type: " << sensitiveDetectorTypeName << G4endl;
@@ -113,7 +114,7 @@
sensitiveDetector->setIdSpec(idspec);
// Add the HitProcessors from the list.
- if (hitProcessors.size() == 0) {
+ if (hitProcessors.size() > 0) {
// Add HitProcessors created from XML.
sensitiveDetector->addHitProcessors(hitProcessors);
} else {
@@ -129,7 +130,7 @@
// Register the SensitiveDetector with the LCDDProcessor.
std::string sensitiveDetectorName = sensitiveDetector->GetName();
- std::cout << "registering SD: " << sensitiveDetectorName << std::endl;
+ //std::cout << "registering SD: " << sensitiveDetectorName << std::endl;
LCDDProcessor::instance()->addSensitiveDetector(sensitiveDetectorName, sensitiveDetector);
} else {
// This should never really happen.
@@ -179,19 +180,20 @@
return new CalorimeterSD(sensitiveDetectorType->get_name(), hitsCollections, segmentation, hitCompare);
}
-TrackerSD* SensitiveDetectorFactory::createTracker(const SAXObject* object)
+TrackerSD* SensitiveDetectorFactory::createTracker(const SAXObject* object, const std::vector<G4String>& hitsCollections)
{
// Cast the SAXObject to tracker element.
const tracker* trackerElement = dynamic_cast<const tracker*>(object);
// Get the name of the SensitiveDetector.
- std::string name = trackerElement->get_name();
+ //std::string name = trackerElement->get_name();
+ std::string name = hitsCollections[0];
// Get the name of the hits collection.
- std::string hitCollection = trackerElement->get_hitsCollectionName();
+ //std::string hitCollection = trackerElement->get_hitsCollectionName();
// Create the basic TrackerSD.
- TrackerSD* sd = new TrackerSD(name, hitCollection);
+ TrackerSD* sd = new TrackerSD(name, name);
return sd;
}