|  | ATLAS Offline Software
    | 
 
 
 
a PileUpTool to merge MC truth collection in the overlay store  
 More...
#include <MergeMcEventCollTool.h>
|  | 
| StatusCode | processEvent (const McEventCollection *pMcEvtColl, const double currentEventTime, const int currentBkgEventIndex, int pileupType) | 
|  | 
| StatusCode | processFirstSubEvent (const McEventCollection *pMcEvtColl) | 
|  | 
| StatusCode | processUnfilteredEvent (const McEventCollection *pMcEvtColl, const double currentEventTime, const int currentBkgEventIndex, int pileupType) | 
|  | 
| StatusCode | processTruthFilteredEvent (const McEventCollection *pMcEvtColl, const double currentEventTime, const int currentBkgEventIndex, int pileupType) | 
|  | 
| StatusCode | compressOutputMcEventCollection () | 
|  | 
| void | printDetailsOfMergedMcEventCollection () const | 
|  | 
| StatusCode | saveHeavyIonInfo (const McEventCollection *pMcEvtColl) | 
|  | 
| MergeMcEventCollTool::puType | classifyVertex (const HepMC::ConstGenParticlePtr &pCurrentVertexParticle, const HepMC::ConstGenVertexPtr &pCurrentParticleProductionVertex, double currentEventTime) | 
|  | 
| bool | isInitialCollisionVertex (const HepMC::ConstGenVertexPtr &pCurrentVertex) const | 
|  | 
| bool | isTruthFiltertedMcEventCollection (const McEventCollection *pMcEvtColl) const | 
|  | 
| void | updateClassificationMap (int signal_process_id, int event_number, int hack, int classification, bool firstUpdateForThisEvent) | 
|  | 
|  | 
| PileUpBackgroundMap | m_backgroundClassificationMap | 
|  | 
| ServiceHandle< PileUpMergeSvc > | m_pMergeSvc {this, "PileUpMergeSvc", "PileUpMergeSvc", "Handle for the PileUpMergeSvc (provides input McEventCollections)"} | 
|  | 
| McEventCollection * | m_pOvrlMcEvColl {} | 
|  | 
| StringProperty | m_truthCollInputKey {this, "TruthCollInputKey", "TruthEvent", "Name of input McEventCollection"} | 
|  | 
| StringProperty | m_truthCollOutputKey {this, "TruthCollOutputKey", "TruthEvent", "Name of output McEventCollection"} | 
|  | 
| BooleanProperty | m_keepUnstable {this, "KeepUnstable", false, "Do not cut unstable particles"} | 
|  | 
| DoubleProperty | m_absEtaMax {this, "AbsEtaMax", 5.0, "Eta cut-off for INTIME GenParticles"} | 
|  | 
| DoubleProperty | m_absEtaMax_outOfTime {this,"OutOfTimeAbsEtaMax", 3.0, "Eta cut-off for OUTOFTIME GenParticles"} | 
|  | 
| DoubleProperty | m_lowTimeToKeep {this, "LowTimeToKeep", -51.0, "leading edge in ns of the time window to keep if SaveOutOfTimePileUp is true"} | 
|  | 
| DoubleProperty | m_highTimeToKeep {this, "HighTimeToKeep", 51.0, "trailing edge in ns of the time window to keep if SaveOutOfTimePileUp is true"} | 
|  | 
| DoubleProperty | m_rRange {this, "rRange", 20.0*Gaudi::Units::mm, "rRange of production vertex in mm"} | 
|  | 
| double | m_r2Range {400.0} | 
|  | 
| DoubleProperty | m_zRange {this, "zRange", 200.0*Gaudi::Units::mm, "z range of production vertex in mm"} | 
|  | 
| DoubleProperty | m_ptMin {this, "ptMin", 0.4*Gaudi::Units::GeV, "Minimum threshold for pT for selected pileup particles in MeV"} | 
|  | 
| DoubleProperty | m_minKinE {this, "EKinMin", 1.0*Gaudi::Units::MeV, "Minimum threshold for Kinetic Energy of selected cavern events in MeV"} | 
|  | 
| BooleanProperty | m_saveInTimePileup {this, "SaveInTimeMinBias", true, "save min bias particles in the t0 xing"} | 
|  | 
| BooleanProperty | m_saveOutOfTimePileup {this, "SaveOutOfTimeMinBias", true, "save out of time min bias particles in the [LowTimeToKeep:HighTimeToKeep] range"} | 
|  | 
| BooleanProperty | m_saveRestOfPileup {this, "SaveRestOfMinBias", false, "save the rest of out of time min bias particles as well"} | 
|  | 
| BooleanProperty | m_saveCavernBackground {this, "SaveCavernBackground", true, "save the cavern background as well"} | 
|  | 
| BooleanProperty | m_doSlimming {this, "DoSlimming", true, "flag to do the slimming or save everything"} | 
|  | 
| bool | m_saveType [NOPUTYPE] ={} | 
|  | 
| unsigned int | m_startingIndexForBackground {0} | 
|  | 
| bool | m_newevent {true} | 
|  | 
| unsigned int | m_nInputMcEventColls {0} | 
|  | 
| unsigned int | m_nBkgEventsReadSoFar {0} | 
|  | 
| BooleanProperty | m_addBackgroundCollisionVertices {this, "AddBackgroundCollisionVertices", true, "ensure that the collision GenVertex objects of minbias background events are saved."} | 
|  | 
| BooleanProperty | m_compressOutputCollection {this, "CompressOutputCollection", false, "Remove all empty GenEvents from the output McEventCollection"} | 
|  | 
| BooleanProperty | m_onlySaveSignalTruth {this, "OnlySaveSignalTruth", false, "Just save the Signal GenEvent"} | 
|  | 
| int | m_signal_event_number {0} | 
|  | 
a PileUpTool to merge MC truth collection in the overlay store 
$Id: 
- Author
- jchap.nosp@m.man@.nosp@m.cern..nosp@m.ch 
Definition at line 28 of file MergeMcEventCollTool.h.
◆ PileUpBackgroundMap
◆ puType
◆ puType
◆ MergeMcEventCollTool()
      
        
          | MergeMcEventCollTool::MergeMcEventCollTool | ( | const std::string & | type, | 
        
          |  |  | const std::string & | name, | 
        
          |  |  | const IInterface * | parent | 
        
          |  | ) |  |  | 
      
 
 
◆ classifyVertex()
cut to select between minbias and cavern background pileup events
Definition at line 513 of file MergeMcEventCollTool.cxx.
  518   if ( pCurrentParticleProductionVertex ) {
 
  522       if ( std::abs(pCurrentParticleProductionVertex->position().z()) < 
m_zRange ) {
 
  523         const float xi((pCurrentParticleProductionVertex->position()).x());
 
  524         const float yi((pCurrentParticleProductionVertex->position()).y());
 
  526           const double eta(pCurrentVertexParticle->momentum().pseudoRapidity());
 
  529             if ( currentEventIsInTime ) {
 
  531               if ( 0.0==currentEventTime ) {
 
  532                 particleClassification=
INTIME;
 
  549         double mass(pCurrentVertexParticle->momentum().m());
 
  551         const double kineticEnergy(pCurrentVertexParticle->momentum().e() - 
mass);
 
  553           particleClassification=
CAVERN;
 
  558   return particleClassification;
 
 
 
 
◆ compressOutputMcEventCollection()
  
  | 
        
          | StatusCode MergeMcEventCollTool::compressOutputMcEventCollection | ( |  | ) |  |  | private | 
 
Definition at line 561 of file MergeMcEventCollTool.cxx.
  570         ++currentClassification;
 
  573       if((*outputEventItr)->vertices_empty()) {
 
  576         ATH_MSG_VERBOSE( 
"compressOutputMcEventCollection() Removed Empty GenEvent #" << event_number << 
", signal_process_id(" << 
signal_process_id << 
"), category = " << currentClassification);
 
  582   return StatusCode::SUCCESS;
 
 
 
 
◆ filterPassed()
  
  | 
        
          | virtual bool PileUpToolBase::filterPassed | ( |  | ) | const |  | inlineoverridevirtualinherited | 
 
 
◆ initialize()
  
  | 
        
          | StatusCode MergeMcEventCollTool::initialize | ( |  | ) |  |  | finaloverridevirtual | 
 
 
◆ isInitialCollisionVertex()
Definition at line 498 of file MergeMcEventCollTool.cxx.
  501   for (
const auto& pCurrentVertexParticle: pCurrentVertex->particles_in()) {
 
  503   auto currentVertexParticleIter = pCurrentVertex->particles_in_const_begin();
 
  504   auto  endOfListOfParticlesFromCurrentVertex = pCurrentVertex->particles_in_const_end();
 
  505   for( ;currentVertexParticleIter != endOfListOfParticlesFromCurrentVertex; ++currentVertexParticleIter ) {
 
  506     auto pCurrentVertexParticle = *currentVertexParticleIter;
 
  508     if (
MC::isBeam(pCurrentVertexParticle)) 
return true;
 
 
 
 
◆ isTruthFiltertedMcEventCollection()
Definition at line 308 of file MergeMcEventCollTool.cxx.
  309   const HepMC::GenEvent* currentBackgroundEvent = *(pMcEvtColl->begin());
 
  311   if (currentBackgroundEvent->particles().size()!=1) 
return false;
 
  312   if (currentBackgroundEvent->particles().at(0)->pdg_id()==999) 
return true;
 
  314   if (currentBackgroundEvent->particles_size()!=1) 
return false;
 
  315   if ((*(currentBackgroundEvent->particles_begin()))->pdg_id()==999) 
return true;
 
 
 
 
◆ mergeEvent()
  
  | 
        
          | StatusCode MergeMcEventCollTool::mergeEvent | ( | const EventContext & | ctx | ) |  |  | finaloverridevirtual | 
 
called at the end of the subevts loop. 
Not (necessarily) able to access SubEvents 
Definition at line 209 of file MergeMcEventCollTool.cxx.
  213     return StatusCode::FAILURE;
 
  230       ATH_MSG_FATAL(
"Signal GenEvent is not first in the list! Something has gone wrong during the GenEvent sorting!");
 
  231       return StatusCode::FAILURE;
 
  236   return StatusCode::SUCCESS;
 
 
 
 
◆ prepareEvent()
  
  | 
        
          | StatusCode MergeMcEventCollTool::prepareEvent | ( | const EventContext & | ctx, |  
          |  |  | unsigned int | nInputEvents |  
          |  | ) |  |  |  | finaloverridevirtual | 
 
called before the subevts loop. 
Not (necessarily) able to access SubEvents 
Definition at line 98 of file MergeMcEventCollTool.cxx.
  107       << 
"prepareEvent: TimedTruthList with key " 
  110     return StatusCode::RECOVERABLE;
 
  114   return StatusCode::SUCCESS;
 
 
 
 
◆ printDetailsOfMergedMcEventCollection()
  
  | 
        
          | void MergeMcEventCollTool::printDetailsOfMergedMcEventCollection | ( |  | ) | const |  | private | 
 
 
◆ processAllSubEvents() [1/2]
  
  | 
        
          | StatusCode MergeMcEventCollTool::processAllSubEvents | ( | const EventContext & | ctx | ) |  |  | finaloverridevirtual | 
 
return false if not interested in certain xing times (in ns) implemented by default in PileUpToolBase as FirstXing<=bunchXing<=LastXing 
Reimplemented from PileUpToolBase.
Definition at line 117 of file MergeMcEventCollTool.cxx.
  121       ATH_MSG_FATAL ( 
"processAllSubEvents: Could not find PileUpMergeSvc" );
 
  122       return StatusCode::FAILURE;
 
  129   TimedTruthList truthList;
 
  132       << 
"execute: Can not find TimedTruthList with key " 
  134     return StatusCode::RECOVERABLE;
 
  144       << 
"execute: TimedTruthList with key " 
  147     return StatusCode::RECOVERABLE;
 
  153   while (timedTruthListIter != endOfTimedTruthList) {
 
  156     if (!
processEvent(pBackgroundMcEvtColl, currentPileUpTimeEventIndex.time(), currentPileUpTimeEventIndex.index(), 
static_cast<int>(currentPileUpTimeEventIndex.type())).isSuccess()) {
 
  158       return StatusCode::FAILURE;
 
  160     ++timedTruthListIter;
 
  176       ATH_MSG_FATAL(
"Signal GenEvent is not first in the list! Something has gone wrong during the GenEvent sorting!");
 
  177       return StatusCode::FAILURE;
 
  182   return StatusCode::SUCCESS;
 
 
 
 
◆ processAllSubEvents() [2/2]
  
  | 
        
          | virtual StatusCode IPileUpTool::processAllSubEvents |  | inherited | 
 
dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface. 
 
 
◆ processBunchXing()
called for each active bunch-crossing to process current SubEvents bunchXing is in ns 
Reimplemented from PileUpToolBase.
Definition at line 185 of file MergeMcEventCollTool.cxx.
  192   while (iEvt != eSubEvents) {
 
  195                            bunchXing, iEvt).isSuccess()){
 
  197       return StatusCode::FAILURE;
 
  200     if (!
processEvent(pMEC,iEvt->time(),iEvt->index(), 
static_cast<int>(iEvt->type())).isSuccess()) {
 
  201       ATH_MSG_ERROR (
"processBunchXing: Failed to process McEventCollection." );
 
  202       return StatusCode::FAILURE;
 
  206   return StatusCode::SUCCESS;
 
 
 
 
◆ processEvent()
  
  | 
        
          | StatusCode MergeMcEventCollTool::processEvent | ( | const McEventCollection * | pMcEvtColl, |  
          |  |  | const double | currentEventTime, |  
          |  |  | const int | currentBkgEventIndex, |  
          |  |  | int | pileupType |  
          |  | ) |  |  |  | private | 
 
Definition at line 320 of file MergeMcEventCollTool.cxx.
  326     return StatusCode::SUCCESS;
 
  335       return StatusCode::SUCCESS;
 
  338       ATH_MSG_ERROR (
"Failed to process a Truth Filtered GenEvent.");
 
  342     if ( 
processUnfilteredEvent(pMcEvtColl,  currentEventTime, currentBkgEventIndex, pileupType).isSuccess() ) {
 
  344       return StatusCode::SUCCESS;
 
  352   return StatusCode::FAILURE;
 
 
 
 
◆ processFirstSubEvent()
Definition at line 257 of file MergeMcEventCollTool.cxx.
  264   m_pOvrlMcEvColl->at(0)->add_attribute(
"BunchCrossingTime",std::make_shared<HepMC3::IntAttribute>(0));
 
  265   m_pOvrlMcEvColl->at(0)->add_attribute(
"PileUpType",std::make_shared<HepMC3::IntAttribute>(0));
 
  269   ATH_MSG_DEBUG( 
"execute: copied original event McEventCollection" );
 
  277   ATH_MSG_DEBUG ( 
"Total Size of Output McEventCollection = " << outCollSize );
 
  290   unsigned int currentMcEventCollectionIndex(1);
 
  294     currentMcEventCollectionIndex += 1;
 
  298     ATH_MSG_DEBUG ( 
"Placing Separator for Type: "<<
type<<
" at Posistion: " << currentMcEventCollectionIndex-1 );
 
 
 
 
◆ processTruthFilteredEvent()
  
  | 
        
          | StatusCode MergeMcEventCollTool::processTruthFilteredEvent | ( | const McEventCollection * | pMcEvtColl, |  
          |  |  | const double | currentEventTime, |  
          |  |  | const int | currentBkgEventIndex, |  
          |  |  | int | pileupType |  
          |  | ) |  |  |  | private | 
 
Definition at line 371 of file MergeMcEventCollTool.cxx.
  373   ATH_MSG_VERBOSE ( 
"processTruthFilteredEvent(): Event Type: " << pileupType );
 
  379   const int bunchCrossingTime=
static_cast<int>(currentEventTime);
 
  380   currentBackgroundEvent.add_attribute(
"BunchCrossingTime",std::make_shared<HepMC3::IntAttribute>(bunchCrossingTime));
 
  381   currentBackgroundEvent.add_attribute(
"PileUpType",std::make_shared<HepMC3::IntAttribute>(pileupType));
 
  384   currentBackgroundEvent.set_event_number(currentBkgEventIndex);
 
  386   if ( std::abs(currentEventTime)<51.0 ) {
 
  387     currentGenEventClassification = ( std::abs(currentEventTime)<1.0 ) ? 
INTIME : 
OUTOFTIME;
 
  390                           currentBackgroundEvent.event_number(),
 
  391                           0, currentGenEventClassification, 
true);
 
  392   return StatusCode::SUCCESS;
 
 
 
 
◆ processUnfilteredEvent()
  
  | 
        
          | StatusCode MergeMcEventCollTool::processUnfilteredEvent | ( | const McEventCollection * | pMcEvtColl, |  
          |  |  | const double | currentEventTime, |  
          |  |  | const int | currentBkgEventIndex, |  
          |  |  | int | pileupType |  
          |  | ) |  |  |  | private | 
 
add the in-coming particles to the in-time minbias vertex only
Definition at line 395 of file MergeMcEventCollTool.cxx.
  396   ATH_MSG_VERBOSE ( 
"processUnfilteredEvent() Event Type: " << pileupType );
 
  398   const HepMC::GenEvent& currentBackgroundEvent(**(pMcEvtColl->begin()));         
 
  407   const int bunchCrossingTime=
static_cast<int>(currentEventTime);
 
  408   evt->add_attribute(
"BunchCrossingTime",std::make_shared<HepMC3::IntAttribute>(bunchCrossingTime));
 
  409   evt->add_attribute(
"PileUpType",std::make_shared<HepMC3::IntAttribute>(pileupType));
 
  411   evt->set_event_number(currentBkgEventIndex);
 
  412   evt->add_vertex(pCopyOfGenVertex);
 
  418   unsigned int nCollisionVerticesFound(0);
 
  421   auto currentVertexIter = currentBackgroundEvent.vertices().begin();
 
  422   auto endOfCurrentListOfVertices = currentBackgroundEvent.vertices().end();
 
  424   if ( 
HepMC::signal_process_vertex(¤tBackgroundEvent) ) pCopyOfGenVertex = 
new HepMC::GenVertex ( *currentBackgroundEvent.signal_process_vertex() );
 
  429   unsigned int nCollisionVerticesFound(0);
 
  432   auto currentVertexIter = currentBackgroundEvent.vertices_begin();
 
  433   auto endOfCurrentListOfVertices = currentBackgroundEvent.vertices_end();
 
  435   for (; currentVertexIter != endOfCurrentListOfVertices; ++currentVertexIter) {
 
  436     const auto&  pCurrentVertex=*currentVertexIter;
 
  441     bool isCollisionVertex(
false);
 
  444       if(isCollisionVertex) ++nCollisionVerticesFound;
 
  450       ATH_MSG_VERBOSE( 
"Found a particle at location " << std::hex << currentVertexParticle << std::dec  << 
" with PDG ID = " << currentVertexParticle->pdg_id() );
 
  452       puType particleClassification(
classifyVertex(currentVertexParticle, pCurrentParticleProductionVertex,currentEventTime));
 
  454       if(isCollisionVertex && 
NOPUTYPE==particleClassification) {
 
  455         particleClassification=
INTIME;
 
  459         if (!pCopyOfVertexForClassification[particleClassification]) {
 
  460           pCopyOfVertexForClassification[particleClassification] =
HepMC::newGenVertexPtr(pCurrentVertex->position());
 
  461           ATH_MSG_VERBOSE( 
"Added bkg vertex " << pCopyOfVertexForClassification[particleClassification] << 
" at position " <<  pCopyOfVertexForClassification[particleClassification] << 
" for pu type = " << particleClassification );
 
  464         pCopyOfVertexForClassification[particleClassification]->add_particle_out(std::make_shared<HepMC3::GenParticle>(currentVertexParticle->data()));
 
  466         pCopyOfVertexForClassification[particleClassification]->add_particle_out( 
new HepMC::GenParticle(*currentVertexParticle) );
 
  468         ATH_MSG_VERBOSE( 
"Added bkg particle at location " << std::hex << currentVertexParticle << std::dec << 
" with PDG ID = " << currentVertexParticle->pdg_id() );
 
  474  for (
const auto& currentVertexParticle:  pCurrentVertex->particles_in()) {
 
  475         pCopyOfVertexForClassification[
INTIME]->add_particle_in (std::make_shared<HepMC3::GenParticle>(currentVertexParticle->data()));
 
  478       HepMC::GenVertex::particles_in_const_iterator currentVertexParticleIter(pCurrentVertex->particles_in_const_begin());
 
  479       const HepMC::GenVertex::particles_in_const_iterator endOfListOfParticlesFromCurrentVertex(pCurrentVertex->particles_in_const_end());
 
  480       for (; currentVertexParticleIter != endOfListOfParticlesFromCurrentVertex; ++currentVertexParticleIter) {
 
  487       if (!pCopyOfVertexForClassification[
type]) 
continue;
 
  488       int n_particles_out=pCopyOfVertexForClassification[
type]->particles_out_size();
 
  495   return StatusCode::SUCCESS;
 
 
 
 
◆ resetFilter()
  
  | 
        
          | virtual void PileUpToolBase::resetFilter | ( |  | ) |  |  | inlineoverridevirtualinherited | 
 
 
◆ saveHeavyIonInfo()
Definition at line 355 of file MergeMcEventCollTool.cxx.
  358   if (pMcEvtColl->at(0)->heavy_ion())
 
  362      HepMC::GenHeavyIonPtr hinew=std::make_shared<HepMC::GenHeavyIon>(*(pMcEvtColl->at(0)->heavy_ion()));
 
  365       m_pOvrlMcEvColl->at(0)->set_heavy_ion(*(pMcEvtColl->at(0)->heavy_ion()));
 
  368   return StatusCode::SUCCESS;
 
 
 
 
◆ toProcess()
  
  | 
        
          | virtual bool PileUpToolBase::toProcess | ( | int | bunchXing | ) | const |  | inlineoverridevirtualinherited | 
 
 
◆ updateClassificationMap()
  
  | 
        
          | void MergeMcEventCollTool::updateClassificationMap | ( | int | signal_process_id, |  
          |  |  | int | event_number, |  
          |  |  | int | hack, |  
          |  |  | int | classification, |  
          |  |  | bool | firstUpdateForThisEvent = false |  
          |  | ) |  |  |  | private | 
 
Definition at line 585 of file MergeMcEventCollTool.cxx.
  588     ATH_MSG_ERROR( 
"updateClassidificationMap: GenEvent #" << event_number << 
", signal_process_id(" << 
signal_process_id << 
"), category = " << classification );
 
  593     ATH_MSG_ERROR( 
"updateClassidificationMap: GenEvent #" << event_number << 
", signal_process_id(" << 
signal_process_id << 
"), category = " << classification );
 
  594     ATH_MSG_FATAL (
"Should only ever be one signal event in the background classification map! Bailing out.");
 
  600     key=makekey(separator_hack,event_number);
 
  602   ATH_MSG_VERBOSE( 
"updateClassidificationMap: GenEvent #" << event_number << 
", signal_process_id(" << 
signal_process_id << 
"), category = " << classification << 
", key = " << 
key);
 
  605     if(firstUpdateForThisEvent) {
 
  606       ATH_MSG_ERROR( 
"updateClassidificationMap: Repeated KEY! "<< 
key <<
". Previous category = " << 
event->second );
 
  609       ATH_MSG_DEBUG( 
"updateClassidificationMap: Updating category for existing key "<< 
key <<
". Previous category = " << 
event->second << 
", new category = " << classification );
 
  612       if(
event->second<=classification) 
return;
 
 
 
 
◆ m_absEtaMax
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_absEtaMax {this, "AbsEtaMax", 5.0, "Eta cut-off for INTIME GenParticles"} |  | private | 
 
 
◆ m_absEtaMax_outOfTime
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_absEtaMax_outOfTime {this,"OutOfTimeAbsEtaMax", 3.0, "Eta cut-off for OUTOFTIME GenParticles"} |  | private | 
 
 
◆ m_addBackgroundCollisionVertices
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_addBackgroundCollisionVertices {this, "AddBackgroundCollisionVertices", true, "ensure that the collision GenVertex objects of minbias background events are saved."} |  | private | 
 
 
◆ m_backgroundClassificationMap
◆ m_compressOutputCollection
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_compressOutputCollection {this, "CompressOutputCollection", false, "Remove all empty GenEvents from the output McEventCollection"} |  | private | 
 
 
◆ m_doSlimming
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_doSlimming {this, "DoSlimming", true, "flag to do the slimming or save everything"} |  | private | 
 
 
◆ m_filterPassed
  
  | 
        
          | bool PileUpToolBase::m_filterPassed {true} |  | protectedinherited | 
 
 
◆ m_firstXing
  
  | 
        
          | Gaudi::Property<int> PileUpToolBase::m_firstXing |  | protectedinherited | 
 
Initial value:{this, "FirstXing", -999,
      "First bunch-crossing in which det is live"}
Definition at line 54 of file PileUpToolBase.h.
 
 
◆ m_highTimeToKeep
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_highTimeToKeep {this, "HighTimeToKeep", 51.0, "trailing edge in ns of the time window to keep if SaveOutOfTimePileUp is true"} |  | private | 
 
 
◆ m_keepUnstable
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_keepUnstable {this, "KeepUnstable", false, "Do not cut unstable particles"} |  | private | 
 
 
◆ m_lastXing
  
  | 
        
          | Gaudi::Property<int> PileUpToolBase::m_lastXing |  | protectedinherited | 
 
Initial value:{this, "LastXing", 999,
      "Last bunch-crossing in which det is live"}
Definition at line 56 of file PileUpToolBase.h.
 
 
◆ m_lowTimeToKeep
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_lowTimeToKeep {this, "LowTimeToKeep", -51.0, "leading edge in ns of the time window to keep if SaveOutOfTimePileUp is true"} |  | private | 
 
 
◆ m_minKinE
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_minKinE {this, "EKinMin", 1.0*Gaudi::Units::MeV, "Minimum threshold for Kinetic Energy of selected cavern events in MeV"} |  | private | 
 
 
◆ m_nBkgEventsReadSoFar
  
  | 
        
          | unsigned int MergeMcEventCollTool::m_nBkgEventsReadSoFar {0} |  | private | 
 
 
◆ m_newevent
  
  | 
        
          | bool MergeMcEventCollTool::m_newevent {true} |  | private | 
 
 
◆ m_nInputMcEventColls
  
  | 
        
          | unsigned int MergeMcEventCollTool::m_nInputMcEventColls {0} |  | private | 
 
 
◆ m_onlySaveSignalTruth
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_onlySaveSignalTruth {this, "OnlySaveSignalTruth", false, "Just save the Signal GenEvent"} |  | private | 
 
 
◆ m_pMergeSvc
◆ m_pOvrlMcEvColl
◆ m_ptMin
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_ptMin {this, "ptMin", 0.4*Gaudi::Units::GeV, "Minimum threshold for pT for selected pileup particles in MeV"} |  | private | 
 
 
◆ m_r2Range
  
  | 
        
          | double MergeMcEventCollTool::m_r2Range {400.0} |  | private | 
 
 
◆ m_rRange
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_rRange {this, "rRange", 20.0*Gaudi::Units::mm, "rRange of production vertex in mm"} |  | private | 
 
 
◆ m_saveCavernBackground
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_saveCavernBackground {this, "SaveCavernBackground", true, "save the cavern background as well"} |  | private | 
 
 
◆ m_saveInTimePileup
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_saveInTimePileup {this, "SaveInTimeMinBias", true, "save min bias particles in the t0 xing"} |  | private | 
 
 
◆ m_saveOutOfTimePileup
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_saveOutOfTimePileup {this, "SaveOutOfTimeMinBias", true, "save out of time min bias particles in the [LowTimeToKeep:HighTimeToKeep] range"} |  | private | 
 
 
◆ m_saveRestOfPileup
  
  | 
        
          | BooleanProperty MergeMcEventCollTool::m_saveRestOfPileup {this, "SaveRestOfMinBias", false, "save the rest of out of time min bias particles as well"} |  | private | 
 
 
◆ m_saveType
  
  | 
        
          | bool MergeMcEventCollTool::m_saveType[NOPUTYPE] ={} |  | private | 
 
 
◆ m_signal_event_number
  
  | 
        
          | int MergeMcEventCollTool::m_signal_event_number {0} |  | private | 
 
 
◆ m_startingIndexForBackground
  
  | 
        
          | unsigned int MergeMcEventCollTool::m_startingIndexForBackground {0} |  | private | 
 
 
◆ m_truthCollInputKey
  
  | 
        
          | StringProperty MergeMcEventCollTool::m_truthCollInputKey {this, "TruthCollInputKey", "TruthEvent", "Name of input McEventCollection"} |  | private | 
 
 
◆ m_truthCollOutputKey
  
  | 
        
          | StringProperty MergeMcEventCollTool::m_truthCollOutputKey {this, "TruthCollOutputKey", "TruthEvent", "Name of output McEventCollection"} |  | private | 
 
 
◆ m_vetoPileUpTruthLinks
  
  | 
        
          | Gaudi::Property<int> PileUpToolBase::m_vetoPileUpTruthLinks |  | protectedinherited | 
 
Initial value:{this, "VetoPileUpTruthLinks", true,
      "Ignore links to suppressed pile-up truth"}
Definition at line 58 of file PileUpToolBase.h.
 
 
◆ m_zRange
  
  | 
        
          | DoubleProperty MergeMcEventCollTool::m_zRange {this, "zRange", 200.0*Gaudi::Units::mm, "z range of production vertex in mm"} |  | private | 
 
 
The documentation for this class was generated from the following files:
 
HepMC::GenVertex * GenVertexPtr
JetConstituentVector::iterator iterator
char data[hepevt_bytes_allocation_ATLAS]
Scalar eta() const
pseudorapidity method
int signal_process_id(const GenEvent &e)
GenEvent * newGenEvent(const int a, const int b)
#define ATH_MSG_VERBOSE(x)
void fillBarcodesAttribute(GenEvent *)
std::list< value_t > type
type of the collection of timed data object
void set_signal_process_vertex(GenEvent *e, T v)
POOL::TEvent event(POOL::TEvent::kClassAccess)
GenVertexPtr newGenVertexPtr(const HepMC::FourVector &pos=HepMC::FourVector(0.0, 0.0, 0.0, 0.0), const int i=0)
::StatusCode StatusCode
StatusCode definition for legacy code.
#define CHECK(...)
Evaluate an expression and check for errors.
const GenParticle * ConstGenParticlePtr
double charge(const T &p)
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
bool isBeam(const T &p)
Identify if the particle is beam particle.
int mpi(const GenEvent &e)
const HepMC::GenVertex * ConstGenVertexPtr
bool isSimStable(const T &p)
Identify if the particle is considered stable at the post-detector-sim stage.
void set_signal_process_id(GenEvent *e, const int i)
a struct encapsulating the identifier of a pile-up event
void set_mpi(GenEvent *e, const int i)
GenVertex * signal_process_vertex(const GenEvent *e)