![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <BSignalFilter.h>
|
| BSignalFilter (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | filterFinalize () |
|
virtual StatusCode | filterEvent () |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
void | FindAllChildren (const HepMC::ConstGenParticlePtr &mother, std::string treeIDStr, bool fromFinalB, bool &foundSignal, bool &passedAllCuts, TLorentzVector &p1, TLorentzVector &p2, bool fromSelectedB, TLorentzVector &total_4mom) const |
|
bool | FinalStatePassedCuts (const HepMC::ConstGenParticlePtr &child) const |
|
bool | test_cuts (const double myPT, const double testPT, const double myEta, const double testEta) const |
|
bool | LVL1_Mu_Trigger (const HepMC::ConstGenParticlePtr &child) const |
|
bool | LVL2_eMu_Trigger (const HepMC::ConstGenParticlePtr &child) const |
|
void | PrintChild (const HepMC::ConstGenParticlePtr &child, const std::string &treeIDStr, const bool fromFinalB) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
Definition at line 28 of file BSignalFilter.h.
◆ StoreGateSvc_t
◆ BSignalFilter()
BSignalFilter::BSignalFilter |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ATLAS_NOT_CONST_THREAD_SAFE() [1/2]
HepMC::GenEvent* event GenBase::ATLAS_NOT_CONST_THREAD_SAFE |
( |
| ) |
|
|
inlineinherited |
Access the current signal event (first in the McEventCollection)
- Note
- This function will make a new McEventCollection if there is not already a valid one and MakeMcEvent=True.
Definition at line 76 of file GenBase.h.
78 ATH_MSG_ERROR(
"McEventCollection is empty during first event access");
79 return *(
events()->begin());
◆ ATLAS_NOT_CONST_THREAD_SAFE() [2/2]
◆ cmTomm()
void GenBase::cmTomm |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event lengths by x 10.
Definition at line 81 of file GenBase.cxx.
82 for (HepMC::GenEvent::vertex_iterator vtx =
evt->vertices_begin(); vtx !=
evt->vertices_end(); ++vtx) {
83 const HepMC::FourVector fv((*vtx)->position().x() * 10,
84 (*vtx)->position().y() * 10,
85 (*vtx)->position().z() * 10,
86 (*vtx)->position().t() * 10);
87 (*vtx)->set_position(fv);
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ event_const()
const HepMC::GenEvent* GenBase::event_const |
( |
| ) |
const |
|
inlineinherited |
Access the current signal event (const)
Definition at line 83 of file GenBase.h.
85 ATH_MSG_ERROR(
"Const McEventCollection is empty during first event access");
◆ events_const() [1/2]
◆ events_const() [2/2]
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode GenFilter::execute |
( |
| ) |
|
|
virtualinherited |
- Todo:
- Probably the filter should only look at the first event... right?
Reimplemented from GenBase.
Definition at line 29 of file GenFilter.cxx.
32 return StatusCode::FAILURE;
35 ATH_MSG_WARNING(
"More than one event in current McEventCollection -- which is valid?");
51 sc = StatusCode::FAILURE;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ filterEvent()
StatusCode BSignalFilter::filterEvent |
( |
| ) |
|
|
virtual |
Implements GenFilter.
Definition at line 87 of file BSignalFilter.cxx.
100 ATH_MSG_ERROR(
" ==>> 'B_PDGCode = 0'! Please define the PDGid of the B-meson/hadron signal!");
102 return StatusCode::FAILURE;
110 bool acceptEvent =
true;
111 const HepMC::GenEvent* genEvt = (*itr);
115 bool LVL1Passed =
false;
119 for(
const auto&
part: *genEvt){
132 bool LVL2Passed =
false;
136 for(
const auto&
part: *genEvt)
141 if (
part != LVL1Muon )
175 for(
const auto&
part: *genEvt)
186 bool SignalPassedCuts=
false;
187 if ( LVL1Passed && LVL2Passed )
190 for(
const auto&
part: *genEvt)
192 const int particleID =
part->pdg_id();
194 bool motherIsB =
false;
195 bool newBChain =
false;
202 auto firstParent =
part->production_vertex()->particles_in().begin();
203 auto lastParent =
part->production_vertex()->particles_in().end();
208 for (
auto thisParent = firstParent; thisParent != lastParent; ++thisParent ) {
217 else{ newBChain =
false; }
222 const HepPDT::ParticleData* HadronData =
particleData(particleID);
223 std::string HadronName =
"unknown particle";
225 HadronName = HadronData->name();
226 if (particleID < 0) HadronName =
"anti - " + HadronName;
229 ATH_MSG_DEBUG(
" ------------------------------------------ ");
230 ATH_MSG_DEBUG(
" *** BSignalFilter.cxx: B-signal found *** ");
231 ATH_MSG_DEBUG(
" ------------------------------------------ ");
241 ATH_MSG_DEBUG(
" *** KINEMATIC CUTS ON PARTICLES ACTIVATED *** ");
249 bool havePassedCuts=
true;
250 TLorentzVector CandPart1, CandPart2, total_4mom;
252 FindAllChildren(
part,
"",
false,isSignal,havePassedCuts,CandPart1,CandPart2,
false,total_4mom);
260 SignalPassedCuts = ( isSignal && havePassedCuts );
266 if ( SignalPassedCuts )
268 bool accept_mass =
false;
269 bool accept_total_mass =
false;
271 ATH_MSG_DEBUG(
" *** INVARIANT MASS CUTS ON PARTICLES ACTIVATED! *** ");
275 double invMass = ( CandPart1 + CandPart2 ).M();
276 double invMass_total = total_4mom.M();
289 ATH_MSG_DEBUG(
" ==>> Event has NOT passed the mass filter!");
292 SignalPassedCuts = SignalPassedCuts && accept_mass;
296 ATH_MSG_DEBUG(
" -- Total invariant mass of the final-state particles = " << invMass_total <<
" MeV");
299 ATH_MSG_DEBUG(
" ==>> Event has passed the total mass filter!");
301 accept_total_mass =
true;
303 ATH_MSG_DEBUG(
" ==>> Event has NOT passed the total mass filter!");
306 SignalPassedCuts = SignalPassedCuts && accept_total_mass;
310 ATH_MSG_DEBUG(
" *** INVARIANT MASS CUTS ON PARTICLES NOT APPLIED (since the event is not a signal that passed cuts)! *** ");
314 ATH_MSG_DEBUG(
" *** INVARIANT MASS CUTS ON PARTICLES NOT ACTIVATED *** ");
318 SignalPassedCuts =
true;
320 ATH_MSG_DEBUG(
" *** KINEMATIC CUTS ON PARTICLES NOT ACTIVATED ==>> ACCEPT ALL EVENTS! *** ");
324 if ( SignalPassedCuts )
break;
327 if ( SignalPassedCuts )
329 ATH_MSG_DEBUG(
" -->> All signal children have passed cuts on particles!");
331 ATH_MSG_DEBUG(
" -->> Signal children have NOT passed cuts on particles!");
341 if ( (!LVL1Passed) || (!LVL2Passed) ){
348 acceptEvent = acceptEvent && SignalPassedCuts;
355 setFilterPassed(
false);
362 setFilterPassed(
true);
371 return StatusCode::SUCCESS;
◆ filterFinalize()
StatusCode BSignalFilter::filterFinalize |
( |
| ) |
|
|
virtual |
Reimplemented from GenFilter.
Definition at line 650 of file BSignalFilter.cxx.
653 ATH_MSG_ALWAYS(
" I===============================================================================================");
655 ATH_MSG_ALWAYS(
" I===============================================================================================");
659 ATH_MSG_ALWAYS(
" I Muon pT cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
661 ATH_MSG_ALWAYS(
" I Muon pseudo-rapidity cut" <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
663 ATH_MSG_ALWAYS(
" I No of events containing at least " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I");
664 ATH_MSG_ALWAYS(
" I one particle satisfying these cuts " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
669 ATH_MSG_ALWAYS(
" I Muon pT cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
671 ATH_MSG_ALWAYS(
" I Muon pseudo-rapidity cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
677 ATH_MSG_ALWAYS(
" I Electron pT cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
679 ATH_MSG_ALWAYS(
" I Electron pseudo-rapidity cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I"
684 ATH_MSG_ALWAYS(
" I No of events containing at least one muon satisfying LVL1 cut" <<
'\t' <<
"I");
685 ATH_MSG_ALWAYS(
" I and at least one separate particle passing these LVL2 cuts " <<
'\t' <<
'\t' <<
"I" <<
'\t'
689 ATH_MSG_ALWAYS(
" I Total no of input events " <<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t' <<
"I" <<
'\t'
691 ATH_MSG_ALWAYS(
" I No of events rejected by trigger " <<
'\t' <<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t' <<
"I" <<
'\t'
693 ATH_MSG_ALWAYS(
" I No of events rejected in total " <<
'\t' <<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t' <<
"I" <<
'\t'
696 ATH_MSG_ALWAYS(
" I To obtain correct cross section, multiply BX in PythiaB report by " <<
'\t' <<
'\t' <<
"I" <<
'\t'
699 ATH_MSG_ALWAYS(
" I To obtain correct cross section, multiply BX in PythiaB report by " <<
'\t' <<
'\t' <<
"I" <<
'\t'
704 ATH_MSG_ALWAYS(
" I=========================================== End of report =====================================");
706 return StatusCode::SUCCESS;
◆ filterInitialize()
virtual StatusCode GenFilter::filterInitialize |
( |
| ) |
|
|
inlinevirtualinherited |
Reimplemented in xAODM4MuIntervalFilter, xAODFourLeptonMassFilter, xAODParticleDecayFilter, xAODJetFilter, xAODParticleFilter, xAODMuDstarFilter, MuDstarFilter, TrimuMassRangeFilter, xAODLeptonPairFilter, BoostedHadTopAndTopPair, xAODDecaysFinalStateFilter, xAODLeptonFilter, LeptonFilter, LeptonPairFilter, DecaysFinalStateFilter, xAODHTFilter, MultiParticleFilter, xAODHeavyFlavorHadronFilter, DiBjetFilter, FourLeptonInvMassFilter, MassRangeFilter, ParentChildwStatusFilter, xAODDecayTimeFilter, xAODTauFilter, xAODXtoVVDecayFilterExtended, VBFHbbEtaSortingFilter, xAODTTbarWithJpsimumuFilter, xAODVBFMjjIntervalFilter, ParticleDecayFilter, xAODDiLeptonMassFilter, xAODMultiBjetFilter, xAODMultiCjetFilter, HeavyFlavorHadronFilter, TauFilter, TTbarPlusHeavyFlavorFilter, xAODChargedTracksWeightFilter, MultiBjetFilter, VBFMjjIntervalFilter, xAODVBFForwardJetsFilter, XtoVVDecayFilterExtended, FourLeptonMassFilter, TTbarWithJpsimumuFilter, xAODDirectPhotonFilter, xAODParentTwoChildrenFilter, ChargedTracksWeightFilter, DiLeptonMassFilter, HTFilter, QCDTruthJetFilter, QCDTruthMultiJetFilter, M4MuIntervalFilter, MultiCjetFilter, VBFForwardJetsFilter, xAODParentChildFilter, xAODSameParticleHardScatteringFilter, JetFilter, ParticleFilter, TruthJetFilter, DiPhotonFilter, ParentTwoChildrenFilter, SameParticleHardScatteringFilter, DecayTimeFilter, DirectPhotonFilter, and ParentChildFilter.
Definition at line 45 of file GenFilter.h.
45 {
return StatusCode::SUCCESS; }
◆ finalize()
StatusCode GenFilter::finalize |
( |
| ) |
|
|
inherited |
Definition at line 56 of file GenFilter.cxx.
59 return StatusCode::SUCCESS;
◆ FinalStatePassedCuts()
Definition at line 499 of file BSignalFilter.cxx.
505 int pID = child->pdg_id();
506 double myPT = child->momentum().perp();
507 double myEta = child->momentum().pseudoRapidity();
518 if ( std::abs(pID) == 11 )
524 ATH_MSG_DEBUG(
" ==>> Found an electron which passed the pT and eta cuts!");
533 ATH_MSG_DEBUG(
" ==>> The electron has NOT passed the pT and eta cuts!");
540 if ( std::abs(pID) == 13 )
546 ATH_MSG_DEBUG(
" ==>> Found a muon which passed the pT and eta cuts!");
555 ATH_MSG_DEBUG(
" ==>> The muon has NOT passed the pT and eta cuts!");
568 ATH_MSG_DEBUG(
" ==>> Found a charged hadron which passed the pT and eta cuts!");
577 ATH_MSG_DEBUG(
" ==>> The charged hadron has NOT passed the pT and eta cuts!");
584 if ( std::abs(pID) == 22 )
590 ATH_MSG_DEBUG(
" ==>> Found a gamma which passed the pT and eta cuts!");
599 ATH_MSG_DEBUG(
" ==>> The gamma has NOT passed the pT and eta cuts!");
606 if ( std::abs(pID) == 311 )
612 ATH_MSG_DEBUG(
" ==>> Found a K0 which passed the pT and eta cuts!");
621 ATH_MSG_DEBUG(
" ==>> The K0 has NOT passed the pT and eta cuts!");
◆ FindAllChildren()
void BSignalFilter::FindAllChildren |
( |
const HepMC::ConstGenParticlePtr & |
mother, |
|
|
std::string |
treeIDStr, |
|
|
bool |
fromFinalB, |
|
|
bool & |
foundSignal, |
|
|
bool & |
passedAllCuts, |
|
|
TLorentzVector & |
p1, |
|
|
TLorentzVector & |
p2, |
|
|
bool |
fromSelectedB, |
|
|
TLorentzVector & |
total_4mom |
|
) |
| const |
|
private |
Definition at line 412 of file BSignalFilter.cxx.
416 int pID = mother->pdg_id();
420 bool hasChildGoodParent = fromFinalB && (fromSelectedB ||
m_B_pdgid==0);
422 if( fromFinalB && hasChildGoodParent )
426 if (
m_cuts_f_e_on && std::abs(pID)==11 ) passedAllCuts = passedAllCuts && passedCut;
427 if (
m_cuts_f_mu_on && std::abs(pID)==13 ) passedAllCuts = passedAllCuts && passedCut;
429 if (
m_cuts_f_gam_on && std::abs(pID)==22 ) passedAllCuts = passedAllCuts && passedCut;
430 if (
m_cuts_f_K0_on && std::abs(pID)==311 ) passedAllCuts = passedAllCuts && passedCut;
434 if (
m_InvMass_PartFakeMass1 < 0.) p1.SetPxPyPzE(mother->momentum().x(),mother->momentum().y(),mother->momentum().z(),mother->momentum().e() );
436 total_4mom = total_4mom + p1;
438 if (
m_InvMass_PartFakeMass2 < 0.) p2.SetPxPyPzE(mother->momentum().x(),mother->momentum().y(),mother->momentum().z(),mother->momentum().e() );
440 total_4mom = total_4mom + p2;
442 TLorentzVector current_4p;
443 current_4p.SetPxPyPzE(mother->momentum().x(),mother->momentum().y(),mother->momentum().z(),mother->momentum().e());
444 total_4mom = total_4mom + current_4p;
450 if ( !(mother->end_vertex()) )
453 ATH_MSG_DEBUG(
" Inconsistent entry in HepMC (status 2 particle not decayed), chain rejected!");
458 auto firstChild = mother->end_vertex()->particles_out().begin();
459 auto lastChild = mother->end_vertex()->particles_out().end();
461 auto firstChild = mother->end_vertex()->particles_begin(
HepMC::children);
466 std::string childIDStr;
467 if( !( treeIDStr==
"" ) ) treeIDStr = treeIDStr +
".";
474 for (
auto thisChild = firstChild; thisChild != lastChild; ++thisChild)
476 pID = (*thisChild)->pdg_id();
485 for (
auto thisChild = firstChild; thisChild != lastChild; ++thisChild)
488 std::stringstream childCntSS; childCntSS << childCnt;
489 childIDStr = treeIDStr + childCntSS.str();
490 PrintChild( (*thisChild), childIDStr, fromFinalB );
491 FindAllChildren( (*thisChild),childIDStr,fromFinalB,foundSignal,passedAllCuts,p1,p2,(pID==
m_B_pdgid) || fromSelectedB,total_4mom);
◆ GeVToMeV()
void GenBase::GeVToMeV |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event energies/momenta by x 1000.
- Todo:
- Add HepMC units awareness and do it differently when HepMC provides this functionality directly (and reference-based FourVector accessors)
Definition at line 61 of file GenBase.cxx.
62 for (HepMC::GenEvent::particle_iterator
p =
evt->particles_begin();
p !=
evt->particles_end(); ++
p) {
63 const HepMC::FourVector fv((*p)->momentum().px() * 1000,
64 (*p)->momentum().py() * 1000,
65 (*p)->momentum().pz() * 1000,
66 (*p)->momentum().e() * 1000);
67 (*p)->set_momentum(fv);
68 (*p)->set_generated_mass(1000 * (*p)->generated_mass());
◆ initialize()
StatusCode GenFilter::initialize |
( |
| ) |
|
|
virtualinherited |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ LVL1_Mu_Trigger()
Definition at line 381 of file BSignalFilter.cxx.
384 int pID = child->pdg_id();
385 double myPT = child->momentum().perp();
386 double myEta = child->momentum().pseudoRapidity();
◆ LVL2_eMu_Trigger()
Definition at line 396 of file BSignalFilter.cxx.
399 int pID = child->pdg_id();
400 double myPT = child->momentum().perp();
401 double myEta = child->momentum().pseudoRapidity();
◆ MeVToGeV()
void GenBase::MeVToGeV |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event energies/momenta by x 1/1000.
Definition at line 71 of file GenBase.cxx.
72 for (HepMC::GenEvent::particle_iterator
p =
evt->particles_begin();
p !=
evt->particles_end(); ++
p) {
73 const HepMC::FourVector fv((*p)->momentum().px() / 1000,
74 (*p)->momentum().py() / 1000,
75 (*p)->momentum().pz() / 1000,
76 (*p)->momentum().e() / 1000);
77 (*p)->set_momentum(fv);
78 (*p)->set_generated_mass((*p)->generated_mass() / 1000);
◆ mmTocm()
void GenBase::mmTocm |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event lengths by x 1/10.
Definition at line 90 of file GenBase.cxx.
91 for (HepMC::GenEvent::vertex_iterator vtx =
evt->vertices_begin(); vtx !=
evt->vertices_end(); ++vtx) {
92 const HepMC::FourVector fv((*vtx)->position().x() / 10,
93 (*vtx)->position().y() / 10,
94 (*vtx)->position().z() / 10,
95 (*vtx)->position().t() / 10);
96 (*vtx)->set_position(fv);
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ nFailed()
int GenFilter::nFailed |
( |
| ) |
const |
|
inlineinherited |
◆ nNeeded()
int GenFilter::nNeeded |
( |
| ) |
const |
|
inlineinherited |
◆ nPassed()
int GenFilter::nPassed |
( |
| ) |
const |
|
inlineinherited |
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ particleData()
const HepPDT::ParticleData* GenBase::particleData |
( |
int |
pid | ) |
const |
|
inlineinherited |
Access an element in the particle data table.
Definition at line 126 of file GenBase.h.
◆ particleTable()
const HepPDT::ParticleDataTable& GenBase::particleTable |
( |
| ) |
const |
|
inlineinherited |
Get a particle data table.
Definition at line 118 of file GenBase.h.
◆ partPropSvc()
Access the particle property service.
Definition at line 113 of file GenBase.h.
◆ pdt()
const HepPDT::ParticleDataTable& GenBase::pdt |
( |
| ) |
const |
|
inlineinherited |
Shorter alias to get a particle data table.
Definition at line 123 of file GenBase.h.
◆ PrintChild()
Definition at line 632 of file BSignalFilter.cxx.
635 int pID = child->pdg_id();
637 const HepPDT::ParticleData* pData =
particleData(std::abs(pID));
638 std::string pName =
"unknown particle";
640 pName = pData->name();
641 if (pID < 0) pName =
"anti - " + pName;
644 <<
") " << child<<
" , from final B = " << fromFinalB);
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ test_cuts()
bool BSignalFilter::test_cuts |
( |
const double |
myPT, |
|
|
const double |
testPT, |
|
|
const double |
myEta, |
|
|
const double |
testEta |
|
) |
| const |
|
private |
Definition at line 375 of file BSignalFilter.cxx.
377 return ( (myPT >= testPT) && (std::abs(myEta) <= testEta) );
◆ updateVHKA()
◆ m_B_pdgid
int BSignalFilter::m_B_pdgid |
|
private |
◆ m_cuts_f_e_eta
double BSignalFilter::m_cuts_f_e_eta |
|
private |
◆ m_cuts_f_e_on
bool BSignalFilter::m_cuts_f_e_on |
|
private |
◆ m_cuts_f_e_pT
double BSignalFilter::m_cuts_f_e_pT |
|
private |
◆ m_cuts_f_gam_eta
double BSignalFilter::m_cuts_f_gam_eta |
|
private |
◆ m_cuts_f_gam_on
bool BSignalFilter::m_cuts_f_gam_on |
|
private |
◆ m_cuts_f_gam_pT
double BSignalFilter::m_cuts_f_gam_pT |
|
private |
◆ m_cuts_f_had_eta
double BSignalFilter::m_cuts_f_had_eta |
|
private |
◆ m_cuts_f_had_on
bool BSignalFilter::m_cuts_f_had_on |
|
private |
◆ m_cuts_f_had_pT
double BSignalFilter::m_cuts_f_had_pT |
|
private |
◆ m_cuts_f_K0_eta
double BSignalFilter::m_cuts_f_K0_eta |
|
private |
◆ m_cuts_f_K0_on
bool BSignalFilter::m_cuts_f_K0_on |
|
private |
◆ m_cuts_f_K0_pT
double BSignalFilter::m_cuts_f_K0_pT |
|
private |
◆ m_cuts_f_mu_eta
double BSignalFilter::m_cuts_f_mu_eta |
|
private |
◆ m_cuts_f_mu_on
bool BSignalFilter::m_cuts_f_mu_on |
|
private |
◆ m_cuts_f_mu_pT
double BSignalFilter::m_cuts_f_mu_pT |
|
private |
◆ m_detStore
◆ m_EventCnt
int BSignalFilter::m_EventCnt |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_InvMass_PartFakeMass1
double BSignalFilter::m_InvMass_PartFakeMass1 |
|
private |
◆ m_InvMass_PartFakeMass2
double BSignalFilter::m_InvMass_PartFakeMass2 |
|
private |
◆ m_InvMass_PartId1
int BSignalFilter::m_InvMass_PartId1 |
|
private |
◆ m_InvMass_PartId2
int BSignalFilter::m_InvMass_PartId2 |
|
private |
◆ m_InvMass_switch
bool BSignalFilter::m_InvMass_switch |
|
private |
◆ m_InvMassMax
double BSignalFilter::m_InvMassMax |
|
private |
◆ m_InvMassMin
double BSignalFilter::m_InvMassMin |
|
private |
◆ m_localLVL1MuonCutEta
double BSignalFilter::m_localLVL1MuonCutEta |
|
private |
◆ m_localLVL1MuonCutOn
bool BSignalFilter::m_localLVL1MuonCutOn |
|
private |
◆ m_localLVL1MuonCutPT
double BSignalFilter::m_localLVL1MuonCutPT |
|
private |
◆ m_localLVL2ElectronCutEta
double BSignalFilter::m_localLVL2ElectronCutEta |
|
private |
◆ m_localLVL2ElectronCutOn
bool BSignalFilter::m_localLVL2ElectronCutOn |
|
private |
◆ m_localLVL2ElectronCutPT
double BSignalFilter::m_localLVL2ElectronCutPT |
|
private |
◆ m_localLVL2MuonCutEta
double BSignalFilter::m_localLVL2MuonCutEta |
|
private |
◆ m_localLVL2MuonCutOn
bool BSignalFilter::m_localLVL2MuonCutOn |
|
private |
◆ m_localLVL2MuonCutPT
double BSignalFilter::m_localLVL2MuonCutPT |
|
private |
◆ m_LVL1Counter
double BSignalFilter::m_LVL1Counter |
|
private |
◆ m_LVL2Counter
double BSignalFilter::m_LVL2Counter |
|
private |
◆ m_mcEventKey
std::string GenBase::m_mcEventKey {} |
|
protectedinherited |
StoreGate key for the MC event collection (defaults to GEN_EVENT)
Definition at line 137 of file GenBase.h.
◆ m_mcevents_const
Const handle to the MC event collection.
Definition at line 163 of file GenBase.h.
◆ m_mkMcEvent
BooleanProperty GenBase::m_mkMcEvent {this, "MakeMcEvent", false, "Create a new MC event collection if it doesn't exist"} |
|
protectedinherited |
Flag to determine if a new MC event collection should be made if it doesn't exist.
Definition at line 139 of file GenBase.h.
◆ m_nFail
◆ m_nNeeded
◆ m_nPass
◆ m_ppSvc
ServiceHandle<IPartPropSvc> GenBase::m_ppSvc {this, "PartPropSvc", "PartPropSvc"} |
|
privateinherited |
Handle on the particle property service.
Definition at line 160 of file GenBase.h.
◆ m_rejectedAll
double BSignalFilter::m_rejectedAll |
|
private |
◆ m_rejectedTrigger
double BSignalFilter::m_rejectedTrigger |
|
private |
◆ m_TotalInvMass_switch
bool BSignalFilter::m_TotalInvMass_switch |
|
private |
◆ m_TotalInvMassMax
double BSignalFilter::m_TotalInvMassMax |
|
private |
◆ m_TotalInvMassMin
double BSignalFilter::m_TotalInvMassMin |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
bool isBottomMeson(const T &p)
Const iterator class for DataVector/DataList.
double invMass(const I4Momentum &pA, const I4Momentum &pB)
invariant mass from two I4momentum references
bool isBottomBaryon(const T &p)
void PrintChild(const HepMC::ConstGenParticlePtr &child, const std::string &treeIDStr, const bool fromFinalB) const
const McEventCollection * events_const() const
Access the current event's McEventCollection (const)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
parents
print ("==> buf:",buf)
double m_InvMass_PartFakeMass2
StatusCode accept(const xAOD::Muon *mu)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
virtual StatusCode filterEvent()=0
bool m_localLVL2ElectronCutOn
bool m_localLVL1MuonCutOn
double m_localLVL2MuonCutPT
bool FinalStatePassedCuts(const HepMC::ConstGenParticlePtr &child) const
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool m_localLVL2MuonCutOn
bool m_TotalInvMass_switch
double m_InvMass_PartFakeMass1
virtual StatusCode filterInitialize()
virtual void setOwner(IDataHandleHolder *o)=0
bool test_cuts(const double myPT, const double testPT, const double myEta, const double testEta) const
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
bool LVL2_eMu_Trigger(const HepMC::ConstGenParticlePtr &child) const
bool isPhysical(const T &p)
ServiceHandle< IPartPropSvc > m_ppSvc
Handle on the particle property service.
double m_localLVL2MuonCutEta
constexpr int EVTGENUNDECAYEDSTATUS
virtual StatusCode sysInitialize() override
Override sysInitialize.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
double m_localLVL2ElectronCutEta
double m_localLVL1MuonCutEta
::StatusCode StatusCode
StatusCode definition for legacy code.
SG::ReadHandleKey< McEventCollection > m_mcevents_const
Const handle to the MC event collection.
#define ATH_MSG_ALWAYS(x)
#define CHECK(...)
Evaluate an expression and check for errors.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual void renounce()=0
const HepPDT::ParticleDataTable & particleTable() const
Get a particle data table.
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
const GenParticle * ConstGenParticlePtr
double m_localLVL1MuonCutPT
bool isHadron(const T &p)
virtual StatusCode filterFinalize()
DataObjIDColl m_extendedExtraObjects
bool isStable(const T &p)
bool isCharged(const T &p)
void FindAllChildren(const HepMC::ConstGenParticlePtr &mother, std::string treeIDStr, bool fromFinalB, bool &foundSignal, bool &passedAllCuts, TLorentzVector &p1, TLorentzVector &p2, bool fromSelectedB, TLorentzVector &total_4mom) const
#define ATH_MSG_WARNING(x)
double m_localLVL2ElectronCutPT
bool isDecayed(const T &p)
const HepPDT::ParticleDataTable & pdt() const
Shorter alias to get a particle data table.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
filterPassed
now, add a sequencer: it will only execute seqalg1 and 2 and never 3
GenFilter(const std::string &name, ISvcLocator *pSvcLocator)
const HepPDT::ParticleData * particleData(int pid) const
Access an element in the particle data table.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual StatusCode initialize() override
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
bool LVL1_Mu_Trigger(const HepMC::ConstGenParticlePtr &child) const