|
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 78 of file GenBase.cxx.
79 for (HepMC::GenEvent::vertex_iterator vtx =
evt->vertices_begin(); vtx !=
evt->vertices_end(); ++vtx) {
80 const HepMC::FourVector fv((*vtx)->position().x() * 10,
81 (*vtx)->position().y() * 10,
82 (*vtx)->position().z() * 10,
83 (*vtx)->position().t() * 10);
84 (*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);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ 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(
" ------------------------------------------ ");
240 ATH_MSG_DEBUG(
" *** KINEMATIC CUTS ON PARTICLES ACTIVATED *** ");
248 bool havePassedCuts=
true;
249 TLorentzVector CandPart1, CandPart2, total_4mom;
251 FindAllChildren(
part,
"",
false,isSignal,havePassedCuts,CandPart1,CandPart2,
false,total_4mom);
259 SignalPassedCuts = ( isSignal && havePassedCuts );
265 if ( SignalPassedCuts )
267 bool accept_mass =
false;
268 bool accept_total_mass =
false;
270 ATH_MSG_DEBUG(
" *** INVARIANT MASS CUTS ON PARTICLES ACTIVATED! *** ");
274 double invMass = ( CandPart1 + CandPart2 ).M();
275 double invMass_total = total_4mom.M();
288 ATH_MSG_DEBUG(
" ==>> Event has NOT passed the mass filter!");
291 SignalPassedCuts = SignalPassedCuts && accept_mass;
295 ATH_MSG_DEBUG(
" -- Total invariant mass of the final-state particles = " << invMass_total <<
" MeV");
298 ATH_MSG_DEBUG(
" ==>> Event has passed the total mass filter!");
300 accept_total_mass =
true;
302 ATH_MSG_DEBUG(
" ==>> Event has NOT passed the total mass filter!");
305 SignalPassedCuts = SignalPassedCuts && accept_total_mass;
309 ATH_MSG_DEBUG(
" *** INVARIANT MASS CUTS ON PARTICLES NOT APPLIED (since the event is not a signal that passed cuts)! *** ");
313 ATH_MSG_DEBUG(
" *** INVARIANT MASS CUTS ON PARTICLES NOT ACTIVATED *** ");
317 SignalPassedCuts =
true;
319 ATH_MSG_DEBUG(
" *** KINEMATIC CUTS ON PARTICLES NOT ACTIVATED ==>> ACCEPT ALL EVENTS! *** ");
323 if ( SignalPassedCuts )
break;
326 if ( SignalPassedCuts )
328 ATH_MSG_DEBUG(
" -->> All signal children have passed cuts on particles!");
330 ATH_MSG_DEBUG(
" -->> Signal children have NOT passed cuts on particles!");
340 if ( (!LVL1Passed) || (!LVL2Passed) ){
347 acceptEvent = acceptEvent && SignalPassedCuts;
354 setFilterPassed(
false);
361 setFilterPassed(
true);
370 return StatusCode::SUCCESS;
◆ filterFinalize()
StatusCode BSignalFilter::filterFinalize |
( |
| ) |
|
|
virtual |
Reimplemented from GenFilter.
Definition at line 649 of file BSignalFilter.cxx.
652 ATH_MSG_ALWAYS(
" I===============================================================================================");
654 ATH_MSG_ALWAYS(
" I===============================================================================================");
658 ATH_MSG_ALWAYS(
" I Muon pT cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
660 ATH_MSG_ALWAYS(
" I Muon pseudo-rapidity cut" <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
662 ATH_MSG_ALWAYS(
" I No of events containing at least " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I");
663 ATH_MSG_ALWAYS(
" I one particle satisfying these cuts " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
668 ATH_MSG_ALWAYS(
" I Muon pT cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
670 ATH_MSG_ALWAYS(
" I Muon pseudo-rapidity cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I" <<
'\t'
676 ATH_MSG_ALWAYS(
" I Electron pT cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
678 ATH_MSG_ALWAYS(
" I Electron pseudo-rapidity cut " <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
'\t' <<
"I"
683 ATH_MSG_ALWAYS(
" I No of events containing at least one muon satisfying LVL1 cut" <<
'\t' <<
"I");
684 ATH_MSG_ALWAYS(
" I and at least one separate particle passing these LVL2 cuts " <<
'\t' <<
'\t' <<
"I" <<
'\t'
688 ATH_MSG_ALWAYS(
" I Total no of input events " <<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t' <<
"I" <<
'\t'
690 ATH_MSG_ALWAYS(
" I No of events rejected by trigger " <<
'\t' <<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t' <<
"I" <<
'\t'
692 ATH_MSG_ALWAYS(
" I No of events rejected in total " <<
'\t' <<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t'<<
'\t' <<
"I" <<
'\t'
695 ATH_MSG_ALWAYS(
" I To obtain correct cross section, multiply BX in PythiaB report by " <<
'\t' <<
'\t' <<
"I" <<
'\t'
698 ATH_MSG_ALWAYS(
" I To obtain correct cross section, multiply BX in PythiaB report by " <<
'\t' <<
'\t' <<
"I" <<
'\t'
703 ATH_MSG_ALWAYS(
" I=========================================== End of report =====================================");
705 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 498 of file BSignalFilter.cxx.
504 int pID = child->pdg_id();
505 double myPT = child->momentum().perp();
506 double myEta = child->momentum().pseudoRapidity();
517 if ( std::abs(pID) == 11 )
523 ATH_MSG_DEBUG(
" ==>> Found an electron which passed the pT and eta cuts!");
532 ATH_MSG_DEBUG(
" ==>> The electron has NOT passed the pT and eta cuts!");
539 if ( std::abs(pID) == 13 )
545 ATH_MSG_DEBUG(
" ==>> Found a muon which passed the pT and eta cuts!");
554 ATH_MSG_DEBUG(
" ==>> The muon has NOT passed the pT and eta cuts!");
567 ATH_MSG_DEBUG(
" ==>> Found a charged hadron which passed the pT and eta cuts!");
576 ATH_MSG_DEBUG(
" ==>> The charged hadron has NOT passed the pT and eta cuts!");
583 if ( std::abs(pID) == 22 )
589 ATH_MSG_DEBUG(
" ==>> Found a gamma which passed the pT and eta cuts!");
598 ATH_MSG_DEBUG(
" ==>> The gamma has NOT passed the pT and eta cuts!");
605 if ( std::abs(pID) == 311 )
611 ATH_MSG_DEBUG(
" ==>> Found a K0 which passed the pT and eta cuts!");
620 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 411 of file BSignalFilter.cxx.
415 int pID = mother->pdg_id();
419 bool hasChildGoodParent = fromFinalB && (fromSelectedB ||
m_B_pdgid==0);
421 if( fromFinalB && hasChildGoodParent )
425 if (
m_cuts_f_e_on && std::abs(pID)==11 ) passedAllCuts = passedAllCuts && passedCut;
426 if (
m_cuts_f_mu_on && std::abs(pID)==13 ) passedAllCuts = passedAllCuts && passedCut;
428 if (
m_cuts_f_gam_on && std::abs(pID)==22 ) passedAllCuts = passedAllCuts && passedCut;
429 if (
m_cuts_f_K0_on && std::abs(pID)==311 ) passedAllCuts = passedAllCuts && passedCut;
433 if (
m_InvMass_PartFakeMass1 < 0.)
p1.SetPxPyPzE(mother->momentum().x(),mother->momentum().y(),mother->momentum().z(),mother->momentum().e() );
435 total_4mom = total_4mom +
p1;
437 if (
m_InvMass_PartFakeMass2 < 0.)
p2.SetPxPyPzE(mother->momentum().x(),mother->momentum().y(),mother->momentum().z(),mother->momentum().e() );
439 total_4mom = total_4mom +
p2;
441 TLorentzVector current_4p;
442 current_4p.SetPxPyPzE(mother->momentum().x(),mother->momentum().y(),mother->momentum().z(),mother->momentum().e());
443 total_4mom = total_4mom + current_4p;
449 if ( !(mother->end_vertex()) )
452 ATH_MSG_DEBUG(
" Inconsistent entry in HepMC (status 2 particle not decayed), chain rejected!");
457 auto firstChild = mother->end_vertex()->particles_out().begin();
458 auto lastChild = mother->end_vertex()->particles_out().end();
460 auto firstChild = mother->end_vertex()->particles_begin(
HepMC::children);
465 std::string childIDStr;
466 if( !( treeIDStr==
"" ) ) treeIDStr = treeIDStr +
".";
473 for (
auto thisChild = firstChild; thisChild != lastChild; ++thisChild)
475 pID = (*thisChild)->pdg_id();
484 for (
auto thisChild = firstChild; thisChild != lastChild; ++thisChild)
487 std::stringstream childCntSS; childCntSS << childCnt;
488 childIDStr = treeIDStr + childCntSS.str();
489 PrintChild( (*thisChild), childIDStr, fromFinalB );
◆ 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 58 of file GenBase.cxx.
59 for (HepMC::GenEvent::particle_iterator
p =
evt->particles_begin();
p !=
evt->particles_end(); ++
p) {
60 const HepMC::FourVector fv((*p)->momentum().px() * 1000,
61 (*p)->momentum().py() * 1000,
62 (*p)->momentum().pz() * 1000,
63 (*p)->momentum().e() * 1000);
64 (*p)->set_momentum(fv);
65 (*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 380 of file BSignalFilter.cxx.
383 int pID = child->pdg_id();
384 double myPT = child->momentum().perp();
385 double myEta = child->momentum().pseudoRapidity();
◆ LVL2_eMu_Trigger()
Definition at line 395 of file BSignalFilter.cxx.
398 int pID = child->pdg_id();
399 double myPT = child->momentum().perp();
400 double myEta = child->momentum().pseudoRapidity();
◆ MeVToGeV()
void GenBase::MeVToGeV |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event energies/momenta by x 1/1000.
Definition at line 68 of file GenBase.cxx.
69 for (HepMC::GenEvent::particle_iterator
p =
evt->particles_begin();
p !=
evt->particles_end(); ++
p) {
70 const HepMC::FourVector fv((*p)->momentum().px() / 1000,
71 (*p)->momentum().py() / 1000,
72 (*p)->momentum().pz() / 1000,
73 (*p)->momentum().e() / 1000);
74 (*p)->set_momentum(fv);
75 (*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 87 of file GenBase.cxx.
88 for (HepMC::GenEvent::vertex_iterator vtx =
evt->vertices_begin(); vtx !=
evt->vertices_end(); ++vtx) {
89 const HepMC::FourVector fv((*vtx)->position().x() / 10,
90 (*vtx)->position().y() / 10,
91 (*vtx)->position().z() / 10,
92 (*vtx)->position().t() / 10);
93 (*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 631 of file BSignalFilter.cxx.
634 int pID = child->pdg_id();
636 const HepPDT::ParticleData* pData =
particleData(std::abs(pID));
637 std::string pName =
"unknown particle";
639 pName = pData->name();
640 if (pID < 0) pName =
"anti - " + pName;
643 <<
") " << 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 374 of file BSignalFilter.cxx.
376 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)
const_pointer_type cptr()
Dereference the pointer.
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)
Identify if the particle is physical, i.e. is stable or decayed.
ServiceHandle< IPartPropSvc > m_ppSvc
Handle on the particle property service.
double m_localLVL2MuonCutEta
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 bool isValid() override final
Can the handle be successfully dereferenced?
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)
Identify if the particle is stable, i.e. has not decayed.
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)
Identify if the particle decayed.
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