ATLAS Offline Software
xAODBSignalFilter.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // ----------------------------------------------
6 //
7 // xAODBSignalFilter.h
8 //
9 // Author: Malte Muller, August 2002
10 // Modified by: Cristiano Alpigiani
11 // <Cristiano.Alpigiani@cern.ch>,
12 // September 2013
13 //
14 // ----------------------------------------------
15 #ifndef GENERATORFILTERSXAODBSIGNALFILTER_H
16 #define GENERATORFILTERSXAODBSIGNALFILTER_H
17 
19 #include "GaudiKernel/NTuple.h"
20 #include <vector>
21 
22 #include "AtlasHepMC/GenEvent.h"
23 #include "AtlasHepMC/GenParticle.h"
24 #include "AtlasHepMC/GenVertex.h"
25 #include "TTree.h"
26 #include "TLorentzVector.h"
27 
28 #include "xAODTruth/TruthEvent.h"
31 
33 {
34 
35  public:
36 
37  xAODBSignalFilter(const std::string& name, ISvcLocator* pSvcLocator);
38  //
39  virtual StatusCode filterFinalize();
40  virtual StatusCode filterEvent();
41 
42  private:
43 
44  // ** Private data members **
45 
46  // For cuts on final particle pT and eta
59  double m_LVL1Counter; // Counting variable for events passing LVL1
60  double m_LVL2Counter; // Counting variable for events passing LVL2
61  double m_rejectedTrigger; // Failed to pass trigger
62  double m_rejectedAll; // Failed to pass filter (both trigger and signal selection)
63  int m_B_pdgid; // pdgID of the mother
64  int m_InvMass_PartId1, m_InvMass_PartId2; // pdgID of the couple used for mass cuts
66  double m_InvMassMin, m_InvMassMax; // Mass range for invariant mass cut
68  //
70 
71  // ** Private member functions **
72 
73  // Find child
74  void FindAllChildren(const xAOD::TruthParticle* mother,std::string treeIDStr,
75  bool fromFinalB, bool &foundSignal, bool &passedAllCuts,
76  TLorentzVector &p1, TLorentzVector &p2, bool fromSelectedB,
77  TLorentzVector &total_4mom) const;
78 
79  // Check whether child has pass cuts
80  bool FinalStatePassedCuts(const xAOD::TruthParticle* child) const;
81 
82  // Test whether final states pass cuts
83  bool test_cuts(const double myPT, const double testPT,
84  const double myEta, const double testEta) const;
85 
86  // LVL1 and LVL2 cuts
87  bool LVL1_Mu_Trigger(const xAOD::TruthParticle* child) const;
88  bool LVL2_eMu_Trigger(const xAOD::TruthParticle* child) const;
89 
90  // Print child (for debug)
91  void PrintChild(const xAOD::TruthParticle* child, const std::string& treeIDStr, const bool fromFinalB) const;
92 
93 };
94 
95 
96 #endif
xAODBSignalFilter::test_cuts
bool test_cuts(const double myPT, const double testPT, const double myEta, const double testEta) const
Definition: xAODBSignalFilter.cxx:401
xAODBSignalFilter::m_localLVL2MuonCutPT
double m_localLVL2MuonCutPT
Definition: xAODBSignalFilter.h:56
GenEvent.h
xAODBSignalFilter::m_InvMass_PartFakeMass1
double m_InvMass_PartFakeMass1
Definition: xAODBSignalFilter.h:65
xAODBSignalFilter::m_cuts_f_had_on
bool m_cuts_f_had_on
Definition: xAODBSignalFilter.h:47
xAODBSignalFilter::m_cuts_f_gam_on
bool m_cuts_f_gam_on
Definition: xAODBSignalFilter.h:48
xAODBSignalFilter::m_TotalInvMassMax
double m_TotalInvMassMax
Definition: xAODBSignalFilter.h:67
GenVertex.h
xAODBSignalFilter::filterFinalize
virtual StatusCode filterFinalize()
Definition: xAODBSignalFilter.cxx:684
GenFilter.h
xAODBSignalFilter::LVL1_Mu_Trigger
bool LVL1_Mu_Trigger(const xAOD::TruthParticle *child) const
Definition: xAODBSignalFilter.cxx:406
xAODBSignalFilter::m_cuts_f_mu_eta
double m_cuts_f_mu_eta
Definition: xAODBSignalFilter.h:54
xAODBSignalFilter::m_localLVL1MuonCutOn
bool m_localLVL1MuonCutOn
Definition: xAODBSignalFilter.h:49
xAODBSignalFilter::m_cuts_f_e_pT
double m_cuts_f_e_pT
Definition: xAODBSignalFilter.h:52
GenParticle.h
xAODBSignalFilter::m_localLVL1MuonCutPT
double m_localLVL1MuonCutPT
Definition: xAODBSignalFilter.h:56
xAODBSignalFilter::m_rejectedAll
double m_rejectedAll
Definition: xAODBSignalFilter.h:62
xAODBSignalFilter::m_TotalInvMass_switch
bool m_TotalInvMass_switch
Definition: xAODBSignalFilter.h:51
xAODBSignalFilter::m_LVL1Counter
double m_LVL1Counter
Definition: xAODBSignalFilter.h:59
xAODBSignalFilter::m_InvMassMin
double m_InvMassMin
Definition: xAODBSignalFilter.h:66
xAODBSignalFilter::FindAllChildren
void FindAllChildren(const xAOD::TruthParticle *mother, std::string treeIDStr, bool fromFinalB, bool &foundSignal, bool &passedAllCuts, TLorentzVector &p1, TLorentzVector &p2, bool fromSelectedB, TLorentzVector &total_4mom) const
Definition: xAODBSignalFilter.cxx:434
xAODBSignalFilter::m_cuts_f_e_eta
double m_cuts_f_e_eta
Definition: xAODBSignalFilter.h:54
xAODBSignalFilter::m_cuts_f_gam_pT
double m_cuts_f_gam_pT
Definition: xAODBSignalFilter.h:53
xAODBSignalFilter::m_cuts_f_e_on
bool m_cuts_f_e_on
Definition: xAODBSignalFilter.h:47
xAODBSignalFilter::m_InvMass_switch
bool m_InvMass_switch
Definition: xAODBSignalFilter.h:51
GenFilter
Base class for event generator filtering modules.
Definition: GenFilter.h:30
xAODBSignalFilter::FinalStatePassedCuts
bool FinalStatePassedCuts(const xAOD::TruthParticle *child) const
Definition: xAODBSignalFilter.cxx:528
xAODBSignalFilter
Definition: xAODBSignalFilter.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
xAODBSignalFilter::m_cuts_f_had_eta
double m_cuts_f_had_eta
Definition: xAODBSignalFilter.h:54
xAODBSignalFilter::m_cuts_f_mu_pT
double m_cuts_f_mu_pT
Definition: xAODBSignalFilter.h:52
xAODBSignalFilter::m_cuts_f_K0_eta
double m_cuts_f_K0_eta
Definition: xAODBSignalFilter.h:55
xAODBSignalFilter::m_localLVL1MuonCutEta
double m_localLVL1MuonCutEta
Definition: xAODBSignalFilter.h:56
xAODBSignalFilter::m_EventCnt
int m_EventCnt
Definition: xAODBSignalFilter.h:69
xAODBSignalFilter::m_InvMassMax
double m_InvMassMax
Definition: xAODBSignalFilter.h:66
xAODBSignalFilter::m_InvMass_PartId1
int m_InvMass_PartId1
Definition: xAODBSignalFilter.h:64
xAODBSignalFilter::m_localLVL2MuonCutEta
double m_localLVL2MuonCutEta
Definition: xAODBSignalFilter.h:57
xAODBSignalFilter::m_TotalInvMassMin
double m_TotalInvMassMin
Definition: xAODBSignalFilter.h:67
xAODBSignalFilter::m_InvMass_PartFakeMass2
double m_InvMass_PartFakeMass2
Definition: xAODBSignalFilter.h:65
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
xAODBSignalFilter::m_localLVL2ElectronCutPT
double m_localLVL2ElectronCutPT
Definition: xAODBSignalFilter.h:57
xAODBSignalFilter::m_localLVL2MuonCutOn
bool m_localLVL2MuonCutOn
Definition: xAODBSignalFilter.h:49
xAODBSignalFilter::filterEvent
virtual StatusCode filterEvent()
Definition: xAODBSignalFilter.cxx:83
xAODBSignalFilter::m_localLVL2ElectronCutEta
double m_localLVL2ElectronCutEta
Definition: xAODBSignalFilter.h:58
xAODBSignalFilter::xAODBSignalFilter
xAODBSignalFilter(const std::string &name, ISvcLocator *pSvcLocator)
Definition: xAODBSignalFilter.cxx:32
xAODBSignalFilter::PrintChild
void PrintChild(const xAOD::TruthParticle *child, const std::string &treeIDStr, const bool fromFinalB) const
Definition: xAODBSignalFilter.cxx:664
xAODBSignalFilter::m_B_pdgid
int m_B_pdgid
Definition: xAODBSignalFilter.h:63
xAODBSignalFilter::m_cuts_f_mu_on
bool m_cuts_f_mu_on
Definition: xAODBSignalFilter.h:47
xAODBSignalFilter::LVL2_eMu_Trigger
bool LVL2_eMu_Trigger(const xAOD::TruthParticle *child) const
Definition: xAODBSignalFilter.cxx:419
xAODBSignalFilter::m_cuts_f_had_pT
double m_cuts_f_had_pT
Definition: xAODBSignalFilter.h:52
xAODBSignalFilter::m_cuts_f_K0_on
bool m_cuts_f_K0_on
Definition: xAODBSignalFilter.h:48
xAODBSignalFilter::m_localLVL2ElectronCutOn
bool m_localLVL2ElectronCutOn
Definition: xAODBSignalFilter.h:50
TruthParticle.h
TruthEventContainer.h
xAODBSignalFilter::m_InvMass_PartId2
int m_InvMass_PartId2
Definition: xAODBSignalFilter.h:64
xAODBSignalFilter::m_cuts_f_K0_pT
double m_cuts_f_K0_pT
Definition: xAODBSignalFilter.h:53
xAODBSignalFilter::m_cuts_f_gam_eta
double m_cuts_f_gam_eta
Definition: xAODBSignalFilter.h:55
TruthEvent.h
xAODBSignalFilter::m_rejectedTrigger
double m_rejectedTrigger
Definition: xAODBSignalFilter.h:61
xAODBSignalFilter::m_LVL2Counter
double m_LVL2Counter
Definition: xAODBSignalFilter.h:60