ATLAS Offline Software
Loading...
Searching...
No Matches
DijetDPhiCondition.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
7#include <sstream>
8#include <stdexcept>
9#include <TLorentzVector.h>
10#include <limits>
11#include <memory>
12
17
18
19bool
21 const std::unique_ptr<ITrigJetHypoInfoCollector>& collector) const{
22
23 if(ips.size() != 2){
24 std::stringstream ss;
25 ss << "Dijet::isSatisfied must see exactly 2 particles, but received "
26 << ips.size()
27 << '\n';
28
29 throw std::runtime_error(ss.str());
30 }
31
32 auto j0 = ips[0];
33 auto j1 = ips[1];
34
35 auto rj0 = j0 -> p4();
36 auto rj1 = j1 -> p4();
37
38 auto dphi = std::abs(rj0.DeltaPhi(rj1));
39
40
41 bool pass = dphi >= m_min and dphi < m_max;
42
43
44 if(collector){
45 std::stringstream ss0;
46 const void* address = static_cast<const void*>(this);
47 ss0 << "DijetDPhiCondition: (" << address << ") dphi "
48 << dphi << " pass: " <<std::boolalpha << pass << " jet group: \n";
49
50 std::stringstream ss1;
51
52 for(const auto& ip : ips){
53 address = static_cast<const void*>(ip.get());
54 ss1 << " " << address << " " << ip->eta() << " e " << ip->e() << '\n';
55 }
56 ss1 << '\n';
57 collector -> collect(ss0.str(), ss1.str());
58 }
59 return pass;
60
61}
62
63std::string DijetDPhiCondition::toString() const {
64
65
66 std::stringstream ss;
67 const void* address = static_cast<const void*>(this);
68
69 ss << "DijetDPhiCondition: (" << address << ") Capacity: " << s_capacity
70 << " dPhi min: " << m_min << " dPhi max: " << m_max <<'\n';
71
72 return ss.str();
73}
std::vector< pHypoJet > HypoJetVector
Definition HypoJetDefs.h:27
static Double_t ss
#define min(a, b)
Definition cfImp.cxx:40
#define max(a, b)
Definition cfImp.cxx:41
static const unsigned int s_capacity
DijetDPhiCondition(double detaMin, double detaMax)
std::string toString() const override
bool isSatisfied(const HypoJetVector &, const std::unique_ptr< ITrigJetHypoInfoCollector > &) const override