 |
DAS
3.0
Das Analysis System
|
Go to the documentation of this file.
14 #include "Math/VectorUtil.h"
33 template<
typename Obj1,
typename Obj2>
struct Di :
public std::pair<Obj1*, Obj2*>,
36 using base = std::pair<Obj1*, Obj2*>;
38 using std::pair<Obj1*, Obj2*>::pair;
39 using std::pair<Obj1*, Obj2*>::first,
40 std::pair<Obj1*, Obj2*>::second;
43 explicit operator bool ()
const {
return first && second; }
45 inline void clear () { first =
nullptr; second =
nullptr; }
48 {
return first->CorrP4(v) + second->CorrP4(v); }
53 {
return CorrP4(v).Rapidity(); }
58 {
return second->CorrP4(v).Eta() - first->CorrP4(v).Eta(); }
60 {
return ROOT::Math::VectorUtil::DeltaPhi(first->CorrP4(v), second->CorrP4(v)); }
62 {
return ROOT::Math::VectorUtil::DeltaR (first->CorrP4(v), second->CorrP4(v)); }
65 {
return (first->Rapidity(v) + second->Rapidity(v))/2; }
67 {
return (first->Rapidity(v) - second->Rapidity(v))/2; }
70 {
return std::max(first->AbsRap(), second->AbsRap()); }
72 {
return (first->CorrPt(v) + second->CorrPt(v))/2; }
75 {
return first->Weight(v) * second->Weight(v); }
95 template<
typename Obj1,
typename Obj2,
96 class =
typename std::enable_if_t<std::is_base_of_v<DAS::AbstractPhysicsObject, Obj1>>,
97 class = typename std::enable_if_t<std::is_base_of_v<DAS::AbstractPhysicsObject, Obj2>>>
104 template<
typename Obj1,
typename Obj2>
108 return s <<
'[' << *di.first <<
", " << *di.second <<
"] = " << di.
CorrP4();
110 return s <<
"\x1B[33minvalid system\x1B[0m";
113 #if defined(__ROOTCLING__)
114 #pragma link C++ class DAS::GenDijet::base +;
115 #pragma link C++ class DAS::GenDimuon::base +;
116 #pragma link C++ class DAS::GenZJet::base +;
117 #pragma link C++ class DAS::RecDijet::base +;
118 #pragma link C++ class DAS::RecDimuon::base +;
119 #pragma link C++ class DAS::RecZJet::base +;
121 #pragma link C++ class DAS::GenDijet +;
122 #pragma link C++ class DAS::GenDimuon +;
123 #pragma link C++ class DAS::GenZJet +;
124 #pragma link C++ class DAS::RecDijet +;
125 #pragma link C++ class DAS::RecDimuon +;
126 #pragma link C++ class DAS::RecZJet +;
Definition: applyBTagSF.cc:31
float Ystar(const Uncertainties::Variation &v=Uncertainties::nominal) const
Definition: Di.h:66
double Weight(const Uncertainties::Variation &v=Uncertainties::nominal) const override
Definition: Di.h:74
std::pair< const DAS::RecMuon *, const DAS::RecMuon * > base
Definition: Di.h:36
float HT(const Uncertainties::Variation &v=Uncertainties::nominal) const
Definition: Di.h:71
float DeltaR(const Uncertainties::Variation &v=Uncertainties::nominal) const
Definition: Di.h:61
float CorrPt(const Uncertainties::Variation &v=Uncertainties::nominal) const override
Definition: Di.h:49
float Rapidity(const Uncertainties::Variation &v=Uncertainties::nominal) const override
Definition: Di.h:52
const Variation nominal
Definition: Variation.h:55
Definition: PhysicsObject.h:22
std::ostream & operator<<(std::ostream &s, const DAS::Di< Obj1, Obj2 > &di)
Definition: Di.h:105
float Yboost(const Uncertainties::Variation &v=Uncertainties::nominal) const
Definition: Di.h:64
float DeltaEta(const Uncertainties::Variation &v=Uncertainties::nominal) const
Definition: Di.h:57
float Ymax(const Uncertainties::Variation &v=Uncertainties::nominal) const
Definition: Di.h:69
FourVector CorrP4(const Uncertainties::Variation &v=Uncertainties::nominal) const override
Definition: Di.h:47
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< float > > FourVector
Definition: PhysicsObject.h:15
void clear()
Definition: Di.h:45
float DeltaPhi(const Uncertainties::Variation &v=Uncertainties::nominal) const
Definition: Di.h:59
auto make_di(Obj1 &o1, Obj2 &o2)
Definition: Di.h:99
Definition: Variation.h:22
float AbsRap(const Uncertainties::Variation &v=Uncertainties::nominal) const override
Definition: Di.h:54