diff --git a/Simulation/ISF/ISF_SimulationSelectors/cmt/requirements b/Simulation/ISF/ISF_SimulationSelectors/cmt/requirements index 45d46ccde40128bbc5d859d44de50d46e9de4f64..10816c5a3b7403e7c13882de523a29d999a5322f 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/cmt/requirements +++ b/Simulation/ISF/ISF_SimulationSelectors/cmt/requirements @@ -9,24 +9,20 @@ manager Wolfgang Lukas <Wolfgang.Lukas@cern.ch> # public use statements use AtlasPolicy AtlasPolicy-* use GaudiInterface GaudiInterface-* External -use AtlasHepMC AtlasHepMC-* External -use ISF_Event ISF_Event-* Simulation/ISF/ISF_Core -use ISF_Interfaces ISF_Interfaces-* Simulation/ISF/ISF_Core use AtlasROOT AtlasROOT-* External -use BarcodeServices BarcodeServices-* Simulation/Barcode ################################################################# # private use statements private +use AtlasHepMC AtlasHepMC-* External +use ISF_Event ISF_Event-* Simulation/ISF/ISF_Core +use ISF_Interfaces ISF_Interfaces-* Simulation/ISF/ISF_Core use ISF_HepMC_Event ISF_HepMC_Event-* Simulation/ISF/ISF_HepMC +use ISF_TrackingInterfaces ISF_TrackingInterfaces-* Simulation/ISF/ISF_Tracking -use TrkDetDescrInterfaces TrkDetDescrInterfaces-* Tracking/TrkDetDescr -use TrkExInterfaces TrkExInterfaces-* Tracking/TrkExtrapolation -use TrkEventPrimitives TrkEventPrimitives-* Tracking/TrkEvent -use TrkParameters TrkParameters-* Tracking/TrkEvent -use TrkGeometry TrkGeometry-* Tracking/TrkDetDescr +use BarcodeServices BarcodeServices-* Simulation/Barcode public library ISF_SimulationSelectors *.cxx components/*.cxx diff --git a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py index ab65f6fdbd0ca2e347a4ae41506ff9437e966346..ffc5f043517134c3a8ff5a8a745ada5618bb4abf 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py +++ b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py @@ -82,9 +82,15 @@ def getDefaultFatrasNewExtrapolationSelector(name="ISF_DefaultFatrasNewExtrapola return getDefaultSimSelector(name, **kwargs ) def getFatrasPileupSelector(name="ISF_FatrasPileupSelector", **kwargs): + kwargs.setdefault("PileupBCID" , [1] ) kwargs.setdefault("Simulator" , getService('ISF_FatrasPileupSimSvc')) return getPileupSimSelector(name, **kwargs ) +def getFatrasPileupSelector_noHits(name="ISF_FatrasPileupSelector_noHits", **kwargs): + kwargs.setdefault("PileupBCID" , [2] ) + kwargs.setdefault("Simulator" , getService('ISF_FatrasPileupSimSvc_noHits')) + return getPileupSimSelector(name, **kwargs ) + def getFatrasRandomSelector(name="ISF_FatrasRandomSelector", **kwargs): kwargs.setdefault("Simulator" , getService('ISF_FatrasSimSvc')) return getRandomSimSelector(name, **kwargs ) @@ -201,14 +207,8 @@ def getElectronsMuonsConeSimSelector(name="ISF_ElectronsMuonsConeSimSelector", * return ISF__ConeSimSelector(name, **kwargs) def getHiggsLeptonsConeGeant4CaloSelector(name="ISF_HiggsLeptonsConeGeant4CaloSelector", **kwargs): - # set tracking geometry (use Fatras for now) - kwargs.setdefault( 'ExtrapolateToCaloEntry', 1 ) - kwargs.setdefault( "TrackingGeometrySvc", getService("AtlasTrackingGeometrySvc") ) - - atlasExtrapolator = getPublicTool("AtlasExtrapolator") - atlasExtrapolator.ApplyMaterialEffects=False - kwargs.setdefault("Extrapolator" , atlasExtrapolator ) - + kwargs.setdefault( 'ExtrapolateToCaloEntry', True ) + kwargs.setdefault( 'Extrapolator' , 'ISF_CaloEntryTrkExtrapolator' ) return getHiggsLeptonsConeGeant4Selector(name, **kwargs) def getWLeptonsConeGeant4Selector(name="ISF_WLeptonsConeGeant4Selector", **kwargs): diff --git a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfigDb.py b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfigDb.py index 13eef64c4f99564710dcbf0564aafd497c4a471e..9d0815ea90f95419426b4b18660b593ff3bf37d2 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfigDb.py +++ b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfigDb.py @@ -38,7 +38,7 @@ addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getEtaGreater5Par addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getSubDetStickyGeant4SimSelector" , "ISF_SubDetStickyGeant4SimSelector" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getGlobalStickyGeant4SimSelector" , "ISF_GlobalStickyGeant4SimSelector" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getDefaultFastCaloSimSelector" , "ISF_DefaultFastCaloSimSelector" ) -addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFastCaloSimPileupSelector" , "ISF_FastCaloSimPileupSelector" ) +addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFastCaloSimPileupSelector" , "ISF_FastCaloSimPileupSelector" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFastHitConvAlgFastCaloSimSelector" , "ISF_FastHitConvAlgFastCaloSimSelector" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getDefaultLegacyAFIIFastCaloSimSelector" , "ISF_DefaultLegacyAFIIFastCaloSimSelector") addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFastHitConvAlgLegacyAFIIFastCaloSimSelector" , "ISF_FastHitConvAlgLegacyAFIIFastCaloSimSelector") @@ -49,7 +49,8 @@ addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getDefaultGeant4S addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getDefaultAFIIGeant4Selector" , "ISF_DefaultAFIIGeant4Selector" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getDefaultLongLivedGeant4Selector" , "ISF_DefaultLongLivedGeant4Selector" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFullGeant4Selector" , "ISF_FullGeant4Selector" ) -addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getPassBackGeant4Selector" , "ISF_PassBackGeant4Selector" ) +addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getPassBackGeant4Selector" , "ISF_PassBackGeant4Selector" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFatrasPileupSelector" , "ISF_FatrasPileupSelector" ) +addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFatrasPileupSelector_noHits" , "ISF_FatrasPileupSelector_noHits" ) addTool("ISF_SimulationSelectors.ISF_SimulationSelectorsConfig.getFatrasRandomSelector" , "ISF_FatrasRandomSelector" ) diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/ConeSimSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/ConeSimSelector.cxx index 401fb3c15a1f64bd89f3955750f5f34e57ab7422..6d7f172ce67ed835e74b2202f49cea74eafd3f98 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/ConeSimSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/ConeSimSelector.cxx @@ -7,21 +7,14 @@ /////////////////////////////////////////////////////////////////// // class include -#include "ISF_SimulationSelectors/ConeSimSelector.h" +#include "ConeSimSelector.h" // ISF includes #include "ISF_Event/ISFParticle.h" #include "ISF_Event/HepMCHelper.h" #include "ISF_HepMC_Event/HepMC_TruthBinding.h" // Trk -#include "TrkDetDescrInterfaces/ITrackingGeometrySvc.h" - -#include "TrkExInterfaces/IExtrapolator.h" - -#include "TrkGeometry/TrackingGeometry.h" -#include "TrkParameters/TrackParameters.h" -#include "TrkParameters/TrackParameters.h" -#include "TrkEventPrimitives/PdgToParticleHypothesis.h" +#include "ISF_TrackingInterfaces/ITrkExtrapolator.h" /** Constructor **/ ISF::ConeSimSelector::ConeSimSelector(const std::string& t, const std::string& n, const IInterface* p) : @@ -33,58 +26,51 @@ ISF::ConeSimSelector::ConeSimSelector(const std::string& t, const std::string& n m_relatives(), m_relationProp(), m_relation(HepMC::parents), - m_trackingGeometry(0), - m_trackingGeometrySvc("TrackingGeometrySvc/AtlasTrackingGeometrySvc",n), - m_trackingGeometryName("AtlasTrackingGeometry"), - m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"), m_extrapolateToCalo(false), - m_caloEntrance(0), - m_pdgToParticleHypothesis(new Trk::PdgToParticleHypothesis()) + m_extrapolator() { declareInterface<ISF::ISimulationSelector>(this); // cone options declareProperty( "ConeCreatorPDGs", - m_absPDGVector, - "Register cones around particles with this PDG code" ); + m_absPDGVector, + "Register cones around particles with this PDG code" ); declareProperty( "ConeCreatorMinPt", - m_cut_minPt, - "Register cones around particles with this minimum pT" ); + m_cut_minPt, + "Register cones around particles with this minimum pT" ); declareProperty( "ConeSize", - m_cut_coneSize2, - "Size of cone around initial particles." ); + m_cut_coneSize2, + "Size of cone around initial particles." ); declareProperty( "CheckParticlePosition", - m_cut_checkPosition, - "Choose if particle position (or momentum direction) has to be within cone." ); + m_cut_checkPosition, + "Choose if particle position (or momentum direction) has to be within cone." ); declareProperty( "CheckConeCreatorAncestors", - m_checkRelatives, - "on/off switch to check ancestor particles for cone creation (eg. cone only around e from Z decay)" ); + m_checkRelatives, + "on/off switch to check ancestor particles for cone creation (eg. cone only around e from Z decay)" ); declareProperty( "ConeCreatorAncestor", - m_relativesVec, - "Only ISFParticles which have specified 'Relation' to the given PDGCode are selected." ); + m_relativesVec, + "Only ISFParticles which have specified 'Relation' to the given PDGCode are selected." ); // as defined in the HepMC manual HepMC::GenVertex::particle iterator declareProperty( "ConeCreatorAncestorRelation", - m_relationProp, - "Relation to the given PDG codes: 0=parents, 1=family, 2=ancestors, 3=relatives." ); + m_relationProp, + "Relation to the given PDG codes: 0=parents, 1=family, 2=ancestors, 3=relatives." ); - declareProperty( "TrackingGeometrySvc", - m_trackingGeometrySvc, - "TrackingGeometrySvc used for track extrapolation" ); - declareProperty( "Extrapolator", - m_extrapolator, - "Extrapolator used for track extrapolation" ); + // track extrapolation to estimate impact point of particle on next sub-detector declareProperty( "ExtrapolateToCaloEntry", - m_extrapolateToCalo, - "Extrapolate particles to calorimeter entry layer and build cone there" ); + m_extrapolateToCalo, + "Extrapolate particles to calorimeter entry layer and build cone there" ); + declareProperty( "Extrapolator", + m_extrapolator, + "Extrapolator used for track extrapolation" ); } /** Destructor **/ ISF::ConeSimSelector::~ConeSimSelector() { - delete m_pdgToParticleHypothesis; + } @@ -106,18 +92,8 @@ StatusCode ISF::ConeSimSelector::initialize() m_relation = HepMCHelper::convertIteratorRange( m_relationProp); } - StatusCode sc = StatusCode::SUCCESS; - - if ( m_extrapolateToCalo ){ - sc = m_extrapolator.retrieve(); - if (sc.isFailure()){ - ATH_MSG_FATAL( "Could not get " << m_extrapolator ); - return StatusCode::FAILURE; - } - } - ATH_MSG_VERBOSE( "Initialize successful" ); - return sc; + return StatusCode::SUCCESS; } @@ -130,7 +106,6 @@ StatusCode ISF::ConeSimSelector::finalize() } - void ISF::ConeSimSelector::beginEvent() { ATH_MSG_VERBOSE("beginEvent being called. Resetting the cone container."); @@ -186,62 +161,35 @@ void ISF::ConeSimSelector::update(const ISFParticle& particle) { if ( m_extrapolateToCalo ) { - if( m_extrapolator.empty() ) { - ATH_MSG_ERROR( "Problem with extrapolator!" ); - return; - } - - if ( !m_caloEntrance ) { - if ( !m_trackingGeometry ) { - if ( !retrieveTrackingGeometry() ) { - ATH_MSG_ERROR( "Problem with TrackingGeometrySvc!" ); - return; - } - } - m_caloEntrance = m_trackingGeometry->trackingVolume("InDet::Containers::EntryVolume"); - if (!m_caloEntrance) ATH_MSG_FATAL("Failed to retrieve calo entrance!"); - } - - // create objects from ISFParticle needed for extrapolation - Trk::CurvilinearParameters par(particle.position(),particle.momentum(),particle.charge()); - - int absPdg = abs(particle.pdgCode()); - //bool photon = (absPdg == 22); - //bool geantino = (absPdg == 999); - //bool charged = photon || geantino ? false : (particle.charge()*particle.charge() > 0) ; - - Trk::ParticleHypothesis particleHypo = - m_pdgToParticleHypothesis->convert(particle.pdgCode(),particle.charge()); - if ( absPdg == 999 ) particleHypo = Trk::geantino; - - // extrapolate to calorimeter entry - const Trk::TrackParameters* extrapolatedPars = - m_extrapolator->extrapolateToVolume(par,*m_caloEntrance,Trk::alongMomentum,particleHypo); - - // get momentum from extrapolatedPars - const Amg::Vector3D& extrapolatedMomentum = extrapolatedPars->momentum(); - + ISF::ISFParticle *extrapolatedParticle = m_extrapolator->extrapolate( particle ); + + const Amg::Vector3D& initialPos = particle.position(); + const Amg::Vector3D& initialMom = particle.momentum(); + const Amg::Vector3D& extrapolatedPos = extrapolatedParticle->position(); + const Amg::Vector3D& extrapolatedMom = extrapolatedParticle->momentum(); + // check if passes cuts - passes = ConeParticleCuts::checkAndRegisterCone(particle,extrapolatedMomentum); - eta=extrapolatedMomentum.eta(); - phi=extrapolatedMomentum.phi(); + passes = ConeParticleCuts::checkAndRegisterCone(particle, extrapolatedMom); + eta=extrapolatedMom.eta(); + phi=extrapolatedMom.phi(); ATH_MSG_DEBUG("Initial position: (" - <<particle.position().x()<<"," - <<particle.position().y()<<"," - <<particle.position().z()<<"), final position: (" - <<extrapolatedPars->position().x()<<"," - <<extrapolatedPars->position().y()<<"," - <<extrapolatedPars->position().z()<<")"); + <<initialPos.x()<<"," + <<initialPos.y()<<"," + <<initialPos.z()<<"), final position: (" + <<extrapolatedPos.x()<<"," + <<extrapolatedPos.y()<<"," + <<extrapolatedPos.z()<<")"); ATH_MSG_DEBUG("Initial eta/phi: (" - <<particle.momentum().eta()<<"/" - <<particle.momentum().phi()<<"), final eta/phi: (" - <<extrapolatedPars->momentum().eta()<<"/" - <<extrapolatedPars->momentum().phi()<<")"); - + <<initialMom.eta()<<"/" + <<initialMom.phi()<<"), final eta/phi: (" + <<extrapolatedMom.eta()<<"/" + <<extrapolatedMom.phi()<<")"); + // cleanup - delete extrapolatedPars; + delete extrapolatedParticle; + } else { passes = ConeParticleCuts::checkAndRegisterCone(particle); @@ -251,10 +199,10 @@ void ISF::ConeSimSelector::update(const ISFParticle& particle) { if (passes) { ATH_MSG_DEBUG("Particle (eta=" << eta << ", " - << " phi=" << phi << "," - << " pdg=" << particle.pdgCode() << "," - << " barcode=" << particle.barcode() << ")" - << " has passed all cuts. A new simulation cone around it has been created"); + << " phi=" << phi << "," + << " pdg=" << particle.pdgCode() << "," + << " barcode=" << particle.barcode() << ")" + << " has passed all cuts. A new simulation cone around it has been created"); } } @@ -276,19 +224,3 @@ bool ISF::ConeSimSelector::passSelectorCuts(const ISFParticle& isfpart) const return passes; } -bool ISF::ConeSimSelector::retrieveTrackingGeometry() const -{ - if ( m_trackingGeometry ) return true; - if ( m_trackingGeometrySvc.empty() ) return false; - MsgStream log(msgSvc(),name()); - StatusCode sc = m_trackingGeometrySvc.retrieve(); - if ( sc.isFailure() ){ - log << MSG::WARNING << " failed to retrieve geometry Svc " << m_trackingGeometrySvc << endreq; - return false; - } - log << MSG::INFO << " geometry Svc " << m_trackingGeometrySvc << " retrieved " << endreq; - - m_trackingGeometry = m_trackingGeometrySvc->trackingGeometry(); - if ( !m_trackingGeometry ) return false; - return true; -} diff --git a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/ConeSimSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/ConeSimSelector.h similarity index 73% rename from Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/ConeSimSelector.h rename to Simulation/ISF/ISF_SimulationSelectors/src/ConeSimSelector.h index 4442330bb880b8c0e5fd179bfac466cb1ec42ebf..b22c118ac4ef0252c316581bb7672dcdae630b98 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/ConeSimSelector.h +++ b/Simulation/ISF/ISF_SimulationSelectors/src/ConeSimSelector.h @@ -18,16 +18,11 @@ #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -namespace Trk { - class IExtrapolator; - class ITrackingGeometrySvc; - class TrackingGeometry; - class TrackingVolume; - class PdgToParticleHypothesis; -} - namespace ISF { + // forward delcarations + class ITrkExtrapolator; + /** @class ConeSimSelector This SimulationSelector implementation registers cones around particles that @@ -66,9 +61,6 @@ namespace ISF { virtual bool passSelectorCuts(const ISFParticle& particle) const; private: - - bool retrieveTrackingGeometry() const; - std::vector<int> m_absPDGVector; //!< abs(PDG) for particles to create cones around /** ISFParticle has to have a relative which is in this list to create a cone*/ bool m_checkRelatives;//!< on/off for checking relatives @@ -79,20 +71,9 @@ namespace ISF { int m_relationProp; //!< Python property HepMC::IteratorRange m_relation; //!< HepMC - /** tracking geometry for geometry signature */ - mutable const Trk::TrackingGeometry* m_trackingGeometry; //!< the tracking geometry owned by the navigator - ServiceHandle<Trk::ITrackingGeometrySvc> m_trackingGeometrySvc; //!< ServiceHandle to the TrackingGeometrySvc - std::string m_trackingGeometryName; //!< default name of the TrackingGeometry - - /** extrapolation to calo entry */ - ToolHandle<Trk::IExtrapolator> m_extrapolator; //!< ToolHandle for track extrapolator - - bool m_extrapolateToCalo; //!< on/off for extrapolating track to CaloEntry prior before building cone - - mutable const Trk::TrackingVolume* m_caloEntrance; - - Trk::PdgToParticleHypothesis* m_pdgToParticleHypothesis; //!< converts PDG ID to hypothesis for TrackParameters - + /** Track extrapolation to estimate impact point of particle on next sub-detector*/ + bool m_extrapolateToCalo; //!< enable/disable + ToolHandle<ISF::ITrkExtrapolator> m_extrapolator; //!< extrapolator tool }; } diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/DefaultSimSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/DefaultSimSelector.cxx index 9b088df08f96d8eeed1b6a4f5f8c5b9eab9f64c3..b8f59cf65bdb1a688b85c82482dad26b5a0d9830 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/DefaultSimSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/DefaultSimSelector.cxx @@ -7,7 +7,7 @@ /////////////////////////////////////////////////////////////////// // class include -#include "ISF_SimulationSelectors/DefaultSimSelector.h" +#include "DefaultSimSelector.h" // HepMC includes #include "ISF_Event/ISFParticle.h" // Units includes diff --git a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/DefaultSimSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/DefaultSimSelector.h similarity index 100% rename from Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/DefaultSimSelector.h rename to Simulation/ISF/ISF_SimulationSelectors/src/DefaultSimSelector.h diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/HistorySimSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/HistorySimSelector.cxx index b351681337d67a7a7fc3f2d4a3f50d757134aa51..f0277cca240ac6567e17654d4a8e67d5db003b62 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/HistorySimSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/HistorySimSelector.cxx @@ -7,7 +7,7 @@ /////////////////////////////////////////////////////////////////// // class include -#include "ISF_SimulationSelectors/HistorySimSelector.h" +#include "HistorySimSelector.h" // ISF includes #include "ISF_Event/ISFParticle.h" diff --git a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/HistorySimSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/HistorySimSelector.h similarity index 100% rename from Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/HistorySimSelector.h rename to Simulation/ISF/ISF_SimulationSelectors/src/HistorySimSelector.h diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/KinematicSimSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/KinematicSimSelector.cxx index 4426d9c775ccce37e62a3471d96d1e4ba33d9178..01b08e47015e22ee32b180252c472d6e858b5a3e 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/KinematicSimSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/KinematicSimSelector.cxx @@ -7,7 +7,7 @@ /////////////////////////////////////////////////////////////////// // class include -#include "ISF_SimulationSelectors/KinematicSimSelector.h" +#include "KinematicSimSelector.h" /** Constructor **/ ISF::KinematicSimSelector::KinematicSimSelector(const std::string& t, const std::string& n, const IInterface* p) : diff --git a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/KinematicSimSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/KinematicSimSelector.h similarity index 100% rename from Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/KinematicSimSelector.h rename to Simulation/ISF/ISF_SimulationSelectors/src/KinematicSimSelector.h diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/PileupSimSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/PileupSimSelector.cxx index ff80a721139a7b0420e8765167d857d03b75bd3a..af0dc8a2711b14b8b47e3ed7dbbdd2ad18222b13 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/PileupSimSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/PileupSimSelector.cxx @@ -7,7 +7,7 @@ /////////////////////////////////////////////////////////////////// // class include -#include "ISF_SimulationSelectors/PileupSimSelector.h" +#include "PileupSimSelector.h" // HepMC includes #include "ISF_Event/ISFParticle.h" // Units includes @@ -15,9 +15,12 @@ /** Constructor **/ ISF::PileupSimSelector::PileupSimSelector(const std::string& t, const std::string& n, const IInterface* p) : - ISimulationSelector(t,n,p) + ISimulationSelector(t,n,p), + m_npass(0),m_nfail(0) { declareInterface<ISF::ISimulationSelector>(this); + declareProperty("PileupBCID",m_pileupbcid, + "BICDs to be flagged as being pileup"); } /** Destructor **/ @@ -28,28 +31,41 @@ ISF::PileupSimSelector::~PileupSimSelector() // Athena algtool's Hooks StatusCode ISF::PileupSimSelector::initialize() { - ATH_MSG_VERBOSE("Initializing ..."); - return StatusCode::SUCCESS; + ATH_MSG_INFO("Initializing with " << m_pileupbcid.size() << + " BCIDs to be accepted"); + for (std::vector<int>::const_iterator itr=m_pileupbcid.begin(); + itr!=m_pileupbcid.end();++itr) + ATH_MSG_INFO(" - accept BCID " << *itr); + return StatusCode::SUCCESS; } StatusCode ISF::PileupSimSelector::finalize() { - ATH_MSG_VERBOSE("Finalizing ..."); - return StatusCode::SUCCESS; + ATH_MSG_INFO("Finalizing with " << m_npass << " particles accepted and " + << m_nfail << " rejected by filter"); + return StatusCode::SUCCESS; } /** check whether given particle passes all cuts -> will be used for routing decision*/ bool ISF::PileupSimSelector::passSelectorCuts(const ISFParticle& particle) const { - Barcode::ParticleBarcode barcode = particle.barcode(); + // test to see if extra barcode BCID is in list to accept + // if no ExtraBC present, default to BCID 0 - int bcid = m_bitcalculator.GetBCID( barcode ); - - ATH_MSG_VERBOSE( "[fatras pileupselector] barcode = " << barcode << " bcid = " << bcid - << " extra = " << ( particle.getUserInformation()!=0 ? particle.getUserInformation()->getExtraBC() : -1 ) ); - - //if ( bcid!=0 ) { return false; } - - return true; + int extrabc=particle.getUserInformation()!=0 ? particle.getUserInformation()->getExtraBC() : -1; + int bcid2=0; + if (extrabc>=0) { + bcid2=m_bitcalculator.GetBCID(extrabc); + } + // check if extra BCID is in list + for (std::vector<int>::const_iterator itr=m_pileupbcid.begin(); + itr!=m_pileupbcid.end();++itr) { + if ((*itr)==bcid2) { + ++m_npass; + return true; + } + } + ++m_nfail; + return false; } diff --git a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/PileupSimSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/PileupSimSelector.h similarity index 87% rename from Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/PileupSimSelector.h rename to Simulation/ISF/ISF_SimulationSelectors/src/PileupSimSelector.h index 810c6a888cc0ed24787224206130e9d68bf82b2c..2edc83c6f12b3471f7c8d169d768c27ee3015921 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/PileupSimSelector.h +++ b/Simulation/ISF/ISF_SimulationSelectors/src/PileupSimSelector.h @@ -42,6 +42,12 @@ namespace ISF { private: mutable Barcode::BitCalculator m_bitcalculator; + + std::vector<int> m_pileupbcid; // vector of BCIDs to select + + mutable int m_npass; // number of particles filter accepts + mutable int m_nfail; // number of particles filter rejects + }; } diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/RandomSimSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/RandomSimSelector.cxx index 3e53f1635f0d38b1cb5c7c4a3f5a3687ed971c63..03cb13a1a7b14125fc80ad6e377ec7d0f28b8da8 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/RandomSimSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/RandomSimSelector.cxx @@ -7,7 +7,7 @@ /////////////////////////////////////////////////////////////////// // class include -#include "ISF_SimulationSelectors/RandomSimSelector.h" +#include "RandomSimSelector.h" // HepMC includes #include "ISF_Event/ISFParticle.h" // Units includes diff --git a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/RandomSimSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/RandomSimSelector.h similarity index 100% rename from Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/RandomSimSelector.h rename to Simulation/ISF/ISF_SimulationSelectors/src/RandomSimSelector.h diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/TruthAssocSimSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/TruthAssocSimSelector.cxx index 1603117dfdfceead55261504ea0fadf56bd46768..15e31b13fce32c7da293fa26e625a331c0d2b3f2 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/TruthAssocSimSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/TruthAssocSimSelector.cxx @@ -6,7 +6,7 @@ // TruthAssocSimSelector.cxx, (c) ATLAS Detector software /////////////////////////////////////////////////////////////////// // class include -#include "ISF_SimulationSelectors/TruthAssocSimSelector.h" +#include "TruthAssocSimSelector.h" // ISF includes #include "ISF_Event/ISFParticle.h" diff --git a/Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/TruthAssocSimSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/TruthAssocSimSelector.h similarity index 100% rename from Simulation/ISF/ISF_SimulationSelectors/ISF_SimulationSelectors/TruthAssocSimSelector.h rename to Simulation/ISF/ISF_SimulationSelectors/src/TruthAssocSimSelector.h diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/components/ISF_SimulationSelectors_entries.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/components/ISF_SimulationSelectors_entries.cxx index 5f42a1b1eaca1570b421eeb3a004f80e666d812e..efeb0fa9ed4ab60f65532206d7c9ba791edc00b7 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/components/ISF_SimulationSelectors_entries.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/components/ISF_SimulationSelectors_entries.cxx @@ -1,11 +1,11 @@ #include "GaudiKernel/DeclareFactoryEntries.h" -#include "ISF_SimulationSelectors/DefaultSimSelector.h" -#include "ISF_SimulationSelectors/KinematicSimSelector.h" -#include "ISF_SimulationSelectors/TruthAssocSimSelector.h" -#include "ISF_SimulationSelectors/HistorySimSelector.h" -#include "ISF_SimulationSelectors/ConeSimSelector.h" -#include "ISF_SimulationSelectors/PileupSimSelector.h" -#include "ISF_SimulationSelectors/RandomSimSelector.h" +#include "../DefaultSimSelector.h" +#include "../KinematicSimSelector.h" +#include "../TruthAssocSimSelector.h" +#include "../HistorySimSelector.h" +#include "../ConeSimSelector.h" +#include "../PileupSimSelector.h" +#include "../RandomSimSelector.h" DECLARE_NAMESPACE_TOOL_FACTORY( ISF , DefaultSimSelector ) DECLARE_NAMESPACE_TOOL_FACTORY( ISF , KinematicSimSelector )