DAS  3.0
Das Analysis System
ScaledObjectBranchFlattener< T >

Description

template<typename T>
class Darwin::Physics::ScaledObjectBranchFlattener< T >

Wrapper for flat branches for gen- or rec-level final-state objects.

Todo:
Project more variables.
Todo:
Project more variables.

#include <Flattener.h>

+ Inheritance diagram for ScaledObjectBranchFlattener< T >:
+ Collaboration diagram for ScaledObjectBranchFlattener< T >:

Public Member Functions

template<typename Ret >
void Add (Tools::Flow &flow, const std::string &name, const std::function< Ret(const T &)> &f)
 
 ScaledObjectBranchFlattener (Tools::Flow &flow, const Variation &v, const std::string &nameIn, const std::string &nameOut)
 
void Fill () override
 
void Clear () override
 
virtual ~ScaledObjectBranchFlattener ()=default
 
template<typename Ret >
void Add (Tools::Flow &flow, const std::string &name, const std::function< Ret(const T &)> &f)
 
 ScaledObjectBranchFlattener (Tools::Flow &flow, const Variation &v, const std::string &nameIn, const std::string &nameOut)
 
void Fill () override
 
void Clear () override
 
virtual ~ScaledObjectBranchFlattener ()=default
 
- Public Member Functions inherited from BranchFlattener
virtual ~BranchFlattener ()=default
 
virtual ~BranchFlattener ()=default
 

Private Attributes

std::vector< T > * branchIn
 
std::list< std::unique_ptr< DT::SelfAwareBranch< const T & > > > branchesOut
 
std::unique_ptr< DT::SelfAwareBranch< const std::vector< T > & > > multiplicity
 

Additional Inherited Members

- Protected Member Functions inherited from BranchFlattener
 BranchFlattener (const Variation &v)
 
 BranchFlattener (const Variation &v)
 
- Protected Attributes inherited from BranchFlattener
Variation v
 

Constructor & Destructor Documentation

◆ ScaledObjectBranchFlattener() [1/2]

ScaledObjectBranchFlattener ( Tools::Flow flow,
const Variation v,
const std::string &  nameIn,
const std::string &  nameOut 
)
inline

Generic class to project vectors of a given scaled object.

Parameters
nameIne.g. genJet, recJet (Darwin)
nameOute.g. GenJet, Jet (NANOAOD)
79  : BranchFlattener(v), branchIn(nullptr)
80  {
81  using namespace std;
82 
83  branchIn = flow.GetBranchReadOnly<vector<T>>(nameIn, DT::facultative);
84  if (!branchIn) return;
85 
86  Add<float>(flow, nameOut + "_pt" , [this](const T& el) { return el.CorrP4(this->v).pt (); });
87  Add<float>(flow, nameOut + "_eta" , [this](const T& el) { return el.CorrP4(this->v).eta (); });
88  Add<float>(flow, nameOut + "_phi" , [this](const T& el) { return el.CorrP4(this->v).phi (); });
89  Add<float>(flow, nameOut + "_mass", [this](const T& el) { return el.CorrP4(this->v).mass(); });
90 
91  auto getMult = [](const vector<T>& branchIn) { return branchIn.size(); };
92  multiplicity = make_unique<DT::SelfAwarePlainBranch<int, const vector<T>&>>(flow, "n" + nameOut, getMult);
93  }

◆ ~ScaledObjectBranchFlattener() [1/2]

virtual ~ScaledObjectBranchFlattener ( )
virtualdefault

◆ ScaledObjectBranchFlattener() [2/2]

ScaledObjectBranchFlattener ( Tools::Flow flow,
const Variation v,
const std::string &  nameIn,
const std::string &  nameOut 
)
inline

Generic class to project vectors of a given scaled object.

Parameters
nameIne.g. genJet, recJet (Darwin)
nameOute.g. GenJet, Jet (NANOAOD)
79  : BranchFlattener(v), branchIn(nullptr)
80  {
81  using namespace std;
82 
83  branchIn = flow.GetBranchReadOnly<vector<T>>(nameIn, DT::facultative);
84  if (!branchIn) return;
85 
86  Add<float>(flow, nameOut + "_pt" , [this](const T& el) { return el.CorrP4(this->v).pt (); });
87  Add<float>(flow, nameOut + "_eta" , [this](const T& el) { return el.CorrP4(this->v).eta (); });
88  Add<float>(flow, nameOut + "_phi" , [this](const T& el) { return el.CorrP4(this->v).phi (); });
89  Add<float>(flow, nameOut + "_mass", [this](const T& el) { return el.CorrP4(this->v).mass(); });
90 
91  auto getMult = [](const vector<T>& branchIn) { return branchIn.size(); };
92  multiplicity = make_unique<DT::SelfAwarePlainBranch<int, const vector<T>&>>(flow, "n" + nameOut, getMult);
93  }

◆ ~ScaledObjectBranchFlattener() [2/2]

virtual ~ScaledObjectBranchFlattener ( )
virtualdefault

Member Function Documentation

◆ Add() [1/2]

void Add ( Tools::Flow flow,
const std::string &  name,
const std::function< Ret(const T &)> &  f 
)
inline

Helper to add a new self-aware input branch.

69  {
70  branchesOut.emplace_back(std::make_unique<DT::SelfAwareVectorBranch<Ret, const T&>>(flow, name, f));
71  }

◆ Add() [2/2]

void Add ( Tools::Flow flow,
const std::string &  name,
const std::function< Ret(const T &)> &  f 
)
inline

Helper to add a new self-aware input branch.

69  {
70  branchesOut.emplace_back(std::make_unique<DT::SelfAwareVectorBranch<Ret, const T&>>(flow, name, f));
71  }

◆ Clear() [1/2]

void Clear ( )
inlineoverridevirtual

Clear output branches.

Implements BranchFlattener.

111  {
112  if (!branchIn) return;
113 
114  for (const auto& br: branchesOut)
115  br->Clear();
116 
117  multiplicity->Clear();
118  }

◆ Clear() [2/2]

void Clear ( )
inlineoverridevirtual

Clear output branches.

Implements BranchFlattener.

111  {
112  if (!branchIn) return;
113 
114  for (const auto& br: branchesOut)
115  br->Clear();
116 
117  multiplicity->Clear();
118  }

◆ Fill() [1/2]

void Fill ( )
inlineoverridevirtual

Fill output branches.

Implements BranchFlattener.

98  {
99  if (!branchIn) return;
100 
101  for (const auto& br: branchesOut)
102  for (const auto& el: *branchIn)
103  br->Fill(el);
104 
105  multiplicity->Fill(*branchIn);
106  }

◆ Fill() [2/2]

void Fill ( )
inlineoverridevirtual

Fill output branches.

Implements BranchFlattener.

98  {
99  if (!branchIn) return;
100 
101  for (const auto& br: branchesOut)
102  for (const auto& el: *branchIn)
103  br->Fill(el);
104 
105  multiplicity->Fill(*branchIn);
106  }

Member Data Documentation

◆ branchesOut

std::list< std::unique_ptr< DT::SelfAwareBranch< const T & > > > branchesOut
private

container for output branches

◆ branchIn

std::vector< T > * branchIn
private

input structured branch (e.g. in Darwin format)

◆ multiplicity

std::unique_ptr< DT::SelfAwareBranch< const std::vector< T > & > > multiplicity
private

The documentation for this class was generated from the following file:
DYToLL_M-50_13TeV_pythia8_cff_GEN_SIM_RECOBEFMIX_DIGI_L1_DIGI2RAW_L1Reco_RECO.name
name
Definition: DYToLL_M-50_13TeV_pythia8_cff_GEN_SIM_RECOBEFMIX_DIGI_L1_DIGI2RAW_L1Reco_RECO.py:48
Darwin::Physics::ScaledObjectBranchFlattener::branchesOut
std::list< std::unique_ptr< DT::SelfAwareBranch< const T & > > > branchesOut
container for output branches
Definition: Flattener.h:59
jmarExample.pt
pt
Definition: jmarExample.py:19
Ntupliser_cfg.f
f
Definition: Ntupliser_cfg.py:322
Darwin::Tools::SelfAwareVectorBranch
Type for a vector branch that knows how to fill itself.
Definition: SelfAwareBranch.h:74
Darwin::Physics::BranchFlattener::v
Variation v
Definition: Flattener.h:42
Darwin::Physics::ScaledObjectBranchFlattener::branchIn
std::vector< T > * branchIn
input structured branch (e.g. in Darwin format)
Definition: Flattener.h:57
Darwin::Physics::ScaledObjectBranchFlattener::multiplicity
std::unique_ptr< DT::SelfAwareBranch< const std::vector< T > & > > multiplicity
Definition: Flattener.h:60
Darwin::Physics::BranchFlattener::BranchFlattener
BranchFlattener(const Variation &v)
Definition: Flattener.h:43
jmarExample.eta
eta
DeepAK8/ParticleNet tagging.
Definition: jmarExample.py:19
Darwin::Tools::facultative
@ facultative
mounting branch is facultative
Definition: Flow.h:33