From 51ac1b966fec0c21cc96370a88575f65a75bcc12 Mon Sep 17 00:00:00 2001 From: gianelle Date: Tue, 22 Oct 2024 13:13:44 +0200 Subject: [PATCH 1/2] Add a check to controll the merge of the MCContributions --- include/OverlayTiming.h | 2 ++ src/OverlayTiming.cc | 19 ++++++++++++++++--- src/OverlayTimingGeneric.cc | 6 ++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/include/OverlayTiming.h b/include/OverlayTiming.h index 24fc31a..5ba89e3 100644 --- a/include/OverlayTiming.h +++ b/include/OverlayTiming.h @@ -147,6 +147,8 @@ namespace overlay { float _tpcVdrift_mm_ns = 5.0e-2 ; bool _randomBX = false, _Poisson = false; + bool _checkMCC = true; + typedef std::map DestMap; typedef std::map CollDestMap; CollDestMap collDestMap{}; diff --git a/src/OverlayTiming.cc b/src/OverlayTiming.cc index 96dd705..e84572b 100644 --- a/src/OverlayTiming.cc +++ b/src/OverlayTiming.cc @@ -263,6 +263,12 @@ namespace overlay { m_startWithBackgroundEvent); + // processo MCContribution + registerProcessorParameter("ProcessMCContribution", + "Merging the SimCaloHits check if the MCContributions already exist", + _checkMCC, + bool(true) ); + } //------------------------------------------------------------------------------------------------------------------------------------------ @@ -791,7 +797,7 @@ namespace overlay { { SimCalorimeterHit *CalorimeterHit = static_cast(source_collection->getElementAt(k)); const float _time_of_flight = time_of_flight(CalorimeterHit->getPosition()[0], CalorimeterHit->getPosition()[1], CalorimeterHit->getPosition()[2]); - + float nullStep[3] = { 0.,0.,0. } ; //check whether there is already a hit at this position const unsigned long long lookfor = cellID2long(CalorimeterHit->getCellID0(), CalorimeterHit->getCellID1()); DestMap::const_iterator destMapIt = collDestMap[currentDest].find(lookfor); @@ -806,7 +812,10 @@ namespace overlay { if (((CalorimeterHit->getTimeCont(j) + time_offset) > (this_start + _time_of_flight)) && ((CalorimeterHit->getTimeCont(j) + time_offset) < (this_stop + _time_of_flight))) { add_Hit = true; - newCalorimeterHit->addMCParticleContribution(CalorimeterHit->getParticleCont(j), CalorimeterHit->getEnergyCont(j), CalorimeterHit->getTimeCont(j) + time_offset); + if ( _checkMCC ) + newCalorimeterHit->addMCParticleContribution(CalorimeterHit->getParticleCont(j), CalorimeterHit->getEnergyCont(j), CalorimeterHit->getTimeCont(j) + time_offset); + else + newCalorimeterHit->addMCParticleContribution(CalorimeterHit->getParticleCont(j), CalorimeterHit->getEnergyCont(j), CalorimeterHit->getTimeCont(j) + time_offset, 0, 0, nullStep); } } if (add_Hit) @@ -859,7 +868,11 @@ namespace overlay { { if (((CalorimeterHit->getTimeCont(j) + time_offset) > (this_start + _time_of_flight)) && ((CalorimeterHit->getTimeCont(j) + time_offset) < (this_stop + _time_of_flight))) { - newCalorimeterHit->addMCParticleContribution(CalorimeterHit->getParticleCont(j), CalorimeterHit->getEnergyCont(j), CalorimeterHit->getTimeCont(j) + time_offset); + if ( _checkMCC ) + newCalorimeterHit->addMCParticleContribution(CalorimeterHit->getParticleCont(j), CalorimeterHit->getEnergyCont(j), CalorimeterHit->getTimeCont(j) + time_offset); + else + newCalorimeterHit->addMCParticleContribution(CalorimeterHit->getParticleCont(j), CalorimeterHit->getEnergyCont(j), CalorimeterHit->getTimeCont(j) + time_offset, 0, 0, nullStep); + } } } diff --git a/src/OverlayTimingGeneric.cc b/src/OverlayTimingGeneric.cc index da76093..60e3e89 100644 --- a/src/OverlayTimingGeneric.cc +++ b/src/OverlayTimingGeneric.cc @@ -100,6 +100,12 @@ OverlayTimingGeneric::OverlayTimingGeneric(): OverlayTiming("OverlayTimingGeneri "Starting integration time. Should be shortly before the BX, but may need to be shifted earlier if the vertex is smeared in time.", _DefaultStart_int, float(-0.25)); + // processo MCContribution + registerProcessorParameter("ProcessMCContribution", + "Merging the SimCaloHits check if the MCContributions already exist", + _checkMCC, + bool(true) ); + } void OverlayTimingGeneric::init() From 20128a9fd78c71c532b8f81c54a0bdaeca6f1c34 Mon Sep 17 00:00:00 2001 From: gianelle Date: Mon, 4 Nov 2024 10:45:33 +0100 Subject: [PATCH 2/2] Reset pointer at end, otherwise it is considered i open even if you are at end on file --- src/OverlayTiming.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/OverlayTiming.cc b/src/OverlayTiming.cc index e84572b..dd1a252 100644 --- a/src/OverlayTiming.cc +++ b/src/OverlayTiming.cc @@ -557,7 +557,7 @@ namespace overlay { delete permutation; ++_nEvt; - //we clear the map of calorimeter hits for the next event + // we clear the map of calorimeter hits for the next event collDestMap.clear(); const std::vector *collection_names_in_evt = evt->getCollectionNames(); @@ -566,6 +566,9 @@ namespace overlay { streamlog_out(DEBUG) << "Collection " << collection_names_in_evt->at(i) << " has now " << evt->getCollection(collection_names_in_evt->at(i))->getNumberOfElements() << " elements" << std::endl; } + // reset pointer at end + overlay_Evt = nullptr; + } //------------------------------------------------------------------------------------------------------------------------------------------