slic/include
diff -u -r1.11 -r1.12
--- LcioHitsCollectionBuilder.hh 6 Sep 2013 22:07:47 -0000 1.11
+++ LcioHitsCollectionBuilder.hh 17 Sep 2013 00:39:21 -0000 1.12
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/include/LcioHitsCollectionBuilder.hh,v 1.11 2013/09/06 22:07:47 jeremy Exp $
+// $Header: /cvs/lcd/slic/include/LcioHitsCollectionBuilder.hh,v 1.12 2013/09/17 00:39:21 jeremy Exp $
#ifndef SLIC_LCIOHITSCOLLECTIONBUILDER_HH
#define SLIC_LCIOHITSCOLLECTIONBUILDER_HH
@@ -22,7 +22,8 @@
// geant4
#include "G4Event.hh"
-namespace slic {
+namespace slic
+{
class LcioMcpManager;
@@ -32,17 +33,19 @@
@note Makes use of LcioMcpManager for Mcp hit contributions.
*/
class LcioHitsCollectionBuilder: public Module {
+
public:
+
LcioHitsCollectionBuilder();
- virtual ~LcioHitsCollectionBuilder();
-public:
+ virtual ~LcioHitsCollectionBuilder();
// interface function to create an Lcio event from a G4 event
EVENT::LCEvent* createHCsFromG4Event(const G4Event* g4evt, EVENT::LCEvent* lcevt);
// flags for hits
void setLongFlag(bool s = true);
+
void setPDGFlag(bool s = true);
void setStoreMomentum(bool s = true) {
@@ -70,7 +73,7 @@
void saveHits(CalorimeterHitsCollection* calHits, IMPL::LCCollectionVec* lcioColl);
// save trk hits
- void saveHits(G4TrackerHitsCollection* trkHits, IMPL::LCCollectionVec* lcioColl);
+ void saveHits(TrackerHitsCollection* trkHits, IMPL::LCCollectionVec* lcioColl);
// create cal hit from G4 cal hit
IMPL::SimCalorimeterHitImpl* createHit(CalorimeterHit* calHit);
slic/src
diff -u -r1.30 -r1.31
--- LcioHitsCollectionBuilder.cc 14 Sep 2013 02:08:51 -0000 1.30
+++ LcioHitsCollectionBuilder.cc 17 Sep 2013 00:39:21 -0000 1.31
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/src/LcioHitsCollectionBuilder.cc,v 1.30 2013/09/14 02:08:51 jeremy Exp $
+// $Header: /cvs/lcd/slic/src/LcioHitsCollectionBuilder.cc,v 1.31 2013/09/17 00:39:21 jeremy Exp $
// SLIC
#include "LcioHitsCollectionBuilder.hh"
@@ -17,8 +17,7 @@
#include "IMPL/LCFlagImpl.h"
#include "IMPL/MCParticleImpl.h"
-#include <iostream>
-
+// LCIO
using IMPL::SimCalorimeterHitImpl;
using IMPL::SimTrackerHitImpl;
using IMPL::MCParticleImpl;
@@ -27,10 +26,8 @@
using IMPL::LCCollectionVec;
using EVENT::LCIO;
-// FIXME: Is this dummy declaration still needed?
-namespace CLHEP {
-}
-using namespace CLHEP;
+// STL
+#include <iostream>
using std::string;
@@ -48,9 +45,8 @@
m_trkCollFlag.setBit(LCIO::THBIT_MOMENTUM);
}
-LcioHitsCollectionBuilder::~LcioHitsCollectionBuilder() {
- ;
-}
+LcioHitsCollectionBuilder::~LcioHitsCollectionBuilder()
+{}
// create the hit collections
void LcioHitsCollectionBuilder::createHitCollections() {
@@ -69,20 +65,16 @@
LCCollectionVec* collVec = 0;
+ // Loop over HC IDs.
for (std::vector<int>::const_iterator iter = hcids.begin(); iter != hcids.end(); iter++) {
hcid = *iter;
-#ifdef SLIC_LOG
- //log().debug("Creating hits collections for HCID: " + StringUtil::toString( hcid ) );
- log() << LOG::debug << LOG::head << "Creating hits collections for HCID - " << StringUtil::toString(hcid) << LOG::done;
-#endif
-
// retrieve Sensitive Detector ptr
SensitiveDetector *SD = static_cast<SensitiveDetector*>
(G4SDManager::GetSDMpointer()->FindSensitiveDetector(HCtbl->GetSDname(hcid)));
- // get hits collection
+ // Get hits collections from SD.
for (int i = 0; i < SD->getNumberOfHitsCollections(); i++) {
if (SD->getHCID(i) == hcid) {
G4VHitsCollection* HC = HCE->GetHC(hcid);
@@ -98,18 +90,11 @@
// Store the cellID description into the LCIO::cellIDEncoding parameter in the collection.
if (SD->getIdSpec()) {
std::string id = SD->getIdSpec()->getFieldDescription();
-#if LCIO_VERSION_GE(1, 7)
collVec->parameters().setValue(LCIO::CellIDEncoding, id);
-#else
- collVec->parameters().setValue("CellIDEncoding", id);
-#endif
}
// Check for existing collection.
if (containsCollection(m_currentLCEvent, HC->GetName())) {
-#ifdef SLIC_LOG
- log().debug("Adding hits to existing collection: " + HC->GetName());
-#endif
// Update existing collection.
// TODO: Check for matching id scheme and flags!
LCCollectionVec * collection = (LCCollectionVec*) m_currentLCEvent->getCollection(
@@ -118,11 +103,12 @@
}
// No collection found.
else {
-#ifdef SLIC_LOG
- log().debug("Creating new hit collection: " + HC->GetName());
-#endif
// Add new collection vector to LCEvent.
m_currentLCEvent->addCollection(collVec, HC->GetName());
+
+#ifdef SLIC_LOG
+ log() << LOG::always << HC->GetName() << " has " << collVec->size() << " hits" << LOG::done;
+#endif
}
}
@@ -132,14 +118,12 @@
}
}
}
- //std::cout << std::endl;
}
-
}
// create the CollectionVec (decides which overloaded subfunction to call)
-IMPL::LCCollectionVec* LcioHitsCollectionBuilder::createCollectionVec(G4VHitsCollection* g4HC,
- SensitiveDetector::EType SDtype) {
+IMPL::LCCollectionVec* LcioHitsCollectionBuilder::createCollectionVec(G4VHitsCollection* g4HC, SensitiveDetector::EType SDtype) {
+
// vec to create
LCCollectionVec* collVec = 0;
@@ -164,7 +148,7 @@
LCCollectionVec* collVec = new LCCollectionVec(LCIO::SIMTRACKERHIT);
// cast to G4 trk HC
- G4TrackerHitsCollection* trkHits = dynamic_cast<G4TrackerHitsCollection*>(g4HC);
+ TrackerHitsCollection* trkHits = dynamic_cast<TrackerHitsCollection*>(g4HC);
// call overloaded save function for trk hits
saveHits(trkHits, collVec);
@@ -228,7 +212,7 @@
}
// save trk hits
-void LcioHitsCollectionBuilder::saveHits(G4TrackerHitsCollection* trkHits, IMPL::LCCollectionVec* lcioColl) {
+void LcioHitsCollectionBuilder::saveHits(TrackerHitsCollection* trkHits, IMPL::LCCollectionVec* lcioColl) {
size_t s = trkHits->GetSize();
for (size_t i = 0; i < s; i++) {
TrackerHit* trkHit = static_cast<TrackerHit*>(trkHits->GetHit(i));
@@ -246,7 +230,7 @@
simCalHit->setCellID1(id64.getId1());
// position
- const Hep3Vector hitPos = calHit->getPosition();
+ const G4ThreeVector hitPos = calHit->getPosition();
float pos[3] = { hitPos.x(), hitPos.y(), hitPos.z() };
simCalHit->setPosition(pos);
@@ -282,7 +266,7 @@
SimTrackerHitImpl* simTrkHit = new SimTrackerHitImpl();
// position in mm
- const Hep3Vector hitPos = trkHit->getPos();
+ const G4ThreeVector hitPos = trkHit->getPos();
double pos[3] = { hitPos.x(), hitPos.y(), hitPos.z() };
simTrkHit->setPosition(pos);
@@ -302,13 +286,13 @@
simTrkHit->setTime(tEdep);
// Cell ID.
-#if LCIO_VERSION_GE(1, 60)
+//#if LCIO_VERSION_GE(1, 60)
// New method for 64-bit IDs.
simTrkHit->setCellID0(trkHit->getId());
-#else
+//#else
// Old method for 32-bit IDs.
- simTrkHit->setCellID(trkHit->getId());
-#endif
+ //simTrkHit->setCellID(trkHit->getId());
+//#endif
// MCP using McpManager
MCParticleImpl* mcp = m_mcpManager->getMaps()->findMcpFromTrackID(trkHit->getTrackID());
@@ -350,7 +334,7 @@
if (contribMcp != 0) {
// Add the MCParticle contribution to the hit.
-#if LCIO_VERSION_GE(1, 60)
+//#if LCIO_VERSION_GE(1, 60)
// Newer LCIO versions have the step position for contributions.
simCalHit->addMCParticleContribution(
contribMcp,
@@ -358,11 +342,11 @@
(float)(contrib.getGlobalTime()),
contrib.getPDGID(),
const_cast<float*>(contrib.getPosition()));
-#else
+//#else
// Older LCIO versions do not include the step position.
- simCalHit->addMCParticleContribution(contribMcp, (float) (contrib.getEdep() / GeV),
- (float) contrib.getGlobalTime(), contrib.getPDGID());
-#endif
+// simCalHit->addMCParticleContribution(contribMcp, (float) (contrib.getEdep() / GeV),
+// (float) contrib.getGlobalTime(), contrib.getPDGID());
+//#endif
++ncontrib;
}
// Problem! Contributing particle is missing from MCParticle list.
@@ -377,7 +361,7 @@
#ifdef SLIC_LOG
if ( ncontrib == 0 )
{
- log().error("No hit contribs for sim cal hit.");
+ log().error("No hit contributions for CalorimeterHit.");
}
#endif
}