Tree Maker Base Class

class HelpTreeBase

Public Functions

HelpTreeBase(xAOD::TEvent *event, TTree *tree, TFile *file, const float units = 1e3, bool debug = false, xAOD::TStore *store = nullptr)
HelpTreeBase(TTree *tree, TFile *file, xAOD::TEvent *event = nullptr, xAOD::TStore *store = nullptr, const float units = 1e3, bool debug = false)
~HelpTreeBase()
void AddEvent(const std::string detailStr = "")
void AddTrigger(const std::string detailStr = "")
void AddJetTrigger(const std::string detailStr = "")
void AddMuons(const std::string detailStr = "", const std::string muonName = "muon")
void AddElectrons(const std::string detailStr = "", const std::string elecName = "el")
void AddPhotons(const std::string detailStr = "", const std::string photonName = "ph")
void AddJets(const std::string detailStr = "", const std::string jetName = "jet")
void AddL1Jets()
void AddTruthParts(const std::string truthName, const std::string detailStr = "")
void AddTrackParts(const std::string trackName, const std::string detailStr = "")
void AddFatJets(const std::string detailStr = "", const std::string fatjetName = "fatjet", const std::string subjetDetailStr = "", const std::string suffix = "")

Declare a new collection of fatjets to be written to the output tree.

Parameters
  • detailStr: A (space-separated) list of detail options. These keywords specify exactly which information about each jet is written out. Current influential options are: kinematic substructure constituent constituentAll
  • fatjetName: The (prefix) name of the container. Default: fatjet.
  • subjetDetailStr: List of detail options to pass to the subjet container. See :cpp:member:HelpTreeBase::AddJets for list of supported values.

void AddTruthFatJets(const std::string detailStr = "", const std::string truthFatJetName = "truth_fatjet")
void AddTaus(const std::string detailStr = "", const std::string tauName = "tau")
void AddMET(const std::string detailStr = "")
void FillEvent(const xAOD::EventInfo *eventInfo, xAOD::TEvent *event = nullptr)
void FillTrigger(const xAOD::EventInfo *eventInfo)
void FillJetTrigger()
void FillMuons(const xAOD::MuonContainer *muons, const xAOD::Vertex *primaryVertex, const std::string muonName = "muon")
void FillMuon(const xAOD::Muon *muon, const xAOD::Vertex *primaryVertex, const std::string muonName = "muon")
void FillElectrons(const xAOD::ElectronContainer *electrons, const xAOD::Vertex *primaryVertex, const std::string elecName = "el")
void FillElectron(const xAOD::Electron *elec, const xAOD::Vertex *primaryVertex, const std::string elecName = "el")
void FillPhotons(const xAOD::PhotonContainer *photons, const std::string photonName = "ph")
void FillPhoton(const xAOD::Photon *photon, const std::string photonName = "ph")
void FillJets(const xAOD::JetContainer *jets, int pvLocation = -1, const std::string jetName = "jet")
void FillJet(const xAOD::Jet *jet_itr, const xAOD::Vertex *pv, int pvLocation, const std::string jetName = "jet")
void FillL1Jets(const xAOD::JetRoIContainer *jets)
void FillTruth(const std::string truthName, const xAOD::TruthParticleContainer *truth)
void FillTruth(const xAOD::TruthParticle *truthPart, const std::string truthName)
void FillTracks(const std::string trackName, const xAOD::TrackParticleContainer *tracks)
void FillTrack(const xAOD::TrackParticle *trackPart, const std::string trackName)
void FillFatJets(const xAOD::JetContainer *fatJets, const std::string fatjetName = "fatjet", const std::string suffix = "")

Write a container of jets to the specified container name (and optionally suffix). The container name and suffix should be declared beforehand using AddFatJets(). This clears the current branch state for the collection so it only makes sense to call once per call to Fill().

Parameters
  • fatJets: A container of jets to be written out.
  • fatjetName: The name of the output collection to write to.
  • suffix: The suffix of the output collection to write to.

void FillFatJet(const xAOD::Jet *fatjet_itr, const std::string fatjetName = "fatjet", const std::string suffix = "")
void FillTruthFatJets(const xAOD::JetContainer *truthFatJets, const std::string truthFatJetName = "truth_fatjet")
void FillTruthFatJet(const xAOD::Jet *truth_fatjet_itr, const std::string truthFatJetName = "truth_fatjet")
void FillTaus(const xAOD::TauJetContainer *taus, const std::string tauName = "tau")
void FillTau(const xAOD::TauJet *tau, const std::string tauName = "tau")
void FillMET(const xAOD::MissingETContainer *met)
void Fill()
void ClearEvent()
void ClearTrigger()
void ClearJetTrigger()
void ClearMuons(const std::string jetName = "muon")
void ClearElectrons(const std::string elecName = "el")
void ClearPhotons(const std::string photonName = "ph")
void ClearJets(const std::string jetName = "jet")
void ClearL1Jets()
void ClearTruth(const std::string truthName)
void ClearTracks(const std::string trackName)
void ClearFatJets(const std::string fatjetName, const std::string suffix = "")
void ClearTruthFatJets(const std::string truthFatJetName = "truth_fatjet")
void ClearTaus(const std::string tauName = "tau")
void ClearMET()
bool writeTo(TFile *file)
virtual void AddEventUser(const std::string detailStr = "")
virtual void AddTriggerUser(const std::string detailStr = "")
virtual void AddJetTriggerUser(const std::string detailStr = "")
virtual void AddMuonsUser(const std::string detailStr = "")
virtual void AddElectronsUser(const std::string detailStr = "")
virtual void AddPhotonsUser(const std::string detailStr = "")
virtual void AddJetsUser(const std::string detailStr = "", const std::string jetName = "jet")
virtual void AddTruthUser(const std::string truthName, const std::string detailStr = "")
virtual void AddTracksUser(const std::string trackName, const std::string detailStr = "")
virtual void AddFatJetsUser(const std::string detailStr = "", const std::string fatjetName = "", const std::string suffix = "")

Declare a new fat jet collection. Automatically called once per call to AddFatJets(); override this if you want to provide your own additional branches for fatjets.

Parameters
  • detailStr: The space-separated list of detail requested by the called.
  • fatjetName: The (prefix) name of the output collection.
  • suffix: A suffix to be appeneded to the end of the output branch name(s).

virtual void AddTruthFatJetsUser(const std::string detailStr = "", const std::string truthFatJetName = "truth_fatjet")
virtual void AddTausUser(const std::string detailStr = "")
virtual void AddMETUser(const std::string detailStr = "")
virtual void ClearEventUser()
virtual void ClearTriggerUser()
virtual void ClearMuonsUser(const std::string)
virtual void ClearElectronsUser(const std::string)
virtual void ClearPhotonsUser(const std::string)
virtual void ClearTruthUser(const std::string)
virtual void ClearTracksUser(const std::string)
virtual void ClearJetsUser(const std::string)
virtual void ClearFatJetsUser(const std::string, const std::string)
virtual void ClearTruthFatJetsUser(const std::string)
virtual void ClearTausUser(const std::string)
virtual void ClearMETUser()
virtual void FillEventUser(const xAOD::EventInfo *)
virtual void FillMuonsUser(const xAOD::Muon *, const std::string)
virtual void FillElectronsUser(const xAOD::Electron *, const std::string)
virtual void FillPhotonsUser(const xAOD::Photon *, const std::string)
virtual void FillJetsUser(const xAOD::Jet *, const std::string)
virtual void FillTruthUser(const std::string, const xAOD::TruthParticle *)
virtual void FillTracksUser(const std::string, const xAOD::TrackParticle *)
virtual void FillFatJetsUser(const xAOD::Jet *, const std::string, const std::string)

Called once per call to FillFatJets().Ooverride this if you want to any additional information to your jet collection.

Parameters
  • jet: a pointer to the current xAOD::Jet object that should be written to the output branch(s).
  • fatjetName: the (prefix) name of the output collection
  • suffix: the suffix to append to output branches.

virtual void FillTruthFatJetsUser(const xAOD::Jet *, const std::string)
virtual void FillTausUser(const xAOD::TauJet *, const std::string)
virtual void FillMETUser(const xAOD::MissingETContainer *)
virtual void FillTriggerUser(const xAOD::EventInfo *)
virtual void FillJetTriggerUser()

Public Members

xAOD::TEvent *m_event
xAOD::TStore *m_store
HelperClasses::TriggerInfoSwitch *m_trigInfoSwitch
std::string m_triggerSelection
TrigConf::xAODConfigTool *m_trigConfTool
Trig::TrigDecisionTool *m_trigDecTool

Public Static Functions

std::string FatJetCollectionName(const std::string fatjetName = "fatjet", const std::string suffix = "")

Helper function to lookup each fatjet container name/suffix combo in the internal map of vectors for vectors. You probably don’t need this but it might be useful if you’re implementing [Add/Fill/Clear]FatJetsUser().

Return
a string that uniquely identifies the collection name/suffix in the lookup map.
Parameters
  • fatjetName: The (prefix) name of the container.
  • suffix: The container branch suffix.

Protected Functions

template <typename T, typename U, typename V>
void safeFill(const V *xAODObj, SG::AuxElement::ConstAccessor<T> &accessor, std::vector<U> &destination, U defaultValue, int m_units = 1)
template <typename T, typename U, typename V>
void safeVecFill(const V *xAODObj, SG::AuxElement::ConstAccessor<std::vector<T>> &accessor, std::vector<std::vector<U>> &destination, int m_units = 1)
template <typename T>
void setBranch(std::string prefix, std::string varName, std::vector<T> *localVectorPtr)

Protected Attributes

TTree *m_tree
int m_units
bool m_debug
bool m_isMC
bool m_nominalTree
xAH::EventInfo *m_eventInfo
int m_passL1
int m_passHLT
unsigned int m_masterKey
unsigned int m_L1PSKey
unsigned int m_HLTPSKey
std::vector<std::string> m_elTrigForMatching
std::vector<std::string> m_passTriggers
std::vector<float> m_triggerPrescales
std::vector<std::string> m_isPassBitsNames
std::vector<unsigned int> m_isPassBits
std::map<std::string, xAH::JetContainer *> m_jets
int m_nL1Jet
std::vector<float> m_l1Jet_et8x8
std::vector<float> m_l1Jet_eta
std::vector<float> m_l1Jet_phi
std::map<std::string, xAH::TruthContainer *> m_truth
std::map<std::string, xAH::TrackContainer *> m_tracks
std::map<std::string, xAH::FatJetContainer *> m_fatjets
std::map<std::string, xAH::FatJetContainer *> m_truth_fatjets
std::map<std::string, xAH::MuonContainer *> m_muons
std::map<std::string, std::vector<std::string>> m_RecoEff_SF_sysNames
std::map<std::string, std::vector<std::string>> m_IsoEff_SF_sysNames
std::map<std::string, std::vector<std::string>> m_TrigEff_SF_sysNames
std::vector<std::string> m_TTVAEff_SF_sysNames
std::map<std::string, xAH::ElectronContainer *> m_elecs
std::map<std::string, xAH::PhotonContainer *> m_photons
std::map<std::string, xAH::TauContainer *> m_taus
xAH::MetContainer *m_met