ATLAS Offline Software
Loading...
Searching...
No Matches
RandomSignalHypoJetVectorGenerator Class Reference

#include <RandomSignalHypoJetVectorGenerator.h>

Inheritance diagram for RandomSignalHypoJetVectorGenerator:
Collaboration diagram for RandomSignalHypoJetVectorGenerator:

Public Member Functions

 RandomSignalHypoJetVectorGenerator (const std::string &type, const std::string &name, const IInterface *parent)
 ~RandomSignalHypoJetVectorGenerator ()
virtual StatusCode initialize () override
virtual HypoJetVector get () override
virtual std::string toString () const override

Private Attributes

Gaudi::Property< int > m_n_sig_lo {this, "n_sig_lo", 2, "Lower bound nsig jets to generate "}
Gaudi::Property< int > m_n_sig_hi {this, "n_sig_hi", 6, "Upper bound nsig jets to generate "}
Gaudi::Property< double > m_e_sig_lo {this, "e_sig_lo", 50., "Lower bound e sig to generate "}
Gaudi::Property< double > m_e_sig_hi {this, "e_sig_hi", 100., "Upper bound e sig to generate "}
Gaudi::Property< double > m_eta_sig_hi {this, "eta_sig_hi", 3.2, "Upper bound eta sig to generate "}
Gaudi::Property< int > m_nbkgd {this, "n_bkgd", 0, "No of background jets to generate "}
Gaudi::Property< double > m_bkgd_etmax {this, "bkgd_etmax", 0., "Max Et background jets"}
Gaudi::Property< double > m_bkgd_etamax {this, "bkgd_etamax", 5., "Lower limit Eta range background "}
Gaudi::Property< bool > m_useEtaEtNotEtaE {this, "useEtaEtNotEtaE", true, "e values or et values "}
std::default_random_engine m_shuffle_re
RandUint m_randNSig
RandDouble m_randEtaSig
RandDouble m_randEnSig
RandDouble m_randEtaBkd
RandDouble m_randEnBkd
RandUint m_flip

Detailed Description

Definition at line 15 of file RandomSignalHypoJetVectorGenerator.h.

Constructor & Destructor Documentation

◆ RandomSignalHypoJetVectorGenerator()

RandomSignalHypoJetVectorGenerator::RandomSignalHypoJetVectorGenerator ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 16 of file RandomSignalEventGenerator.cxx.

18 :
19 base_class(type, name, parent){
20
21}

◆ ~RandomSignalHypoJetVectorGenerator()

RandomSignalHypoJetVectorGenerator::~RandomSignalHypoJetVectorGenerator ( )
inline

Definition at line 24 of file RandomSignalHypoJetVectorGenerator.h.

24{}

Member Function Documentation

◆ get()

HypoJetVector RandomSignalHypoJetVectorGenerator::get ( )
overridevirtual

Definition at line 63 of file RandomSignalEventGenerator.cxx.

63 {
64
65 auto factory = std::unique_ptr<ITLorentzVectorFactory>(nullptr);
67 factory.reset(new TLorentzVectorFactory());
68 } else {
69 factory.reset(new TLorentzVectorFactoryEtaE());
70 }
71
73
74 auto nj = m_randNSig();
75 for(std::size_t ij = 0; ij < nj; ++ij){
76 const auto& eta = m_randEtaSig();
77 const auto& en = m_randEnSig();
78 // depending on the factory, en is e or et
79 auto tlv = factory->make(eta, en);
80 if(m_flip()){
81 tlv.SetZ(-tlv.Z()); // randomly flip the sign of the +vly generated tlv.
82 }
83 result.push_back(std::shared_ptr<const HypoJet::IJet>(new TLorentzVectorAsIJet(tlv)));
84 }
85
86 if(m_nbkgd){
87 for(int i = 0; i < m_nbkgd; ++i){
88 const auto& eta = m_randEtaBkd();
89 const auto& en = m_randEnBkd();
90 // depending on the factory, en is e or et
91 auto tlv = factory->make(eta, en);
92 if(m_flip()){
93 tlv.SetZ(-tlv.Z()); // randomly flip the sign of the +vly generated tlv.
94 }
95 result.push_back(std::shared_ptr<const HypoJet::IJet>(new TLorentzVectorAsIJet(tlv)));
96 }
97 }
98
99 std::shuffle(result.begin(), result.end(), m_shuffle_re);
100 return result;
101}
Scalar eta() const
pseudorapidity method
std::vector< pHypoJet > HypoJetVector
Definition HypoJetDefs.h:27
void shuffle(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, UniformRandom &g)
Specialization of shuffle for DataVector/List.

◆ initialize()

StatusCode RandomSignalHypoJetVectorGenerator::initialize ( )
overridevirtual

Definition at line 25 of file RandomSignalEventGenerator.cxx.

25 {
26 if(m_n_sig_lo >= m_n_sig_hi ||
28 ){
29 ATH_MSG_ERROR("Config error: lower signal limit exceeds uper limit");
30 return StatusCode::FAILURE;
31 }
32
33 m_randNSig = RandUint(m_n_sig_lo, m_n_sig_hi);
34 m_flip = RandUint(0, 1);
35
37 m_randEnSig = RandDouble(m_e_sig_lo, m_e_sig_hi);
38
40 m_randEnBkd = RandDouble(5., m_bkgd_etmax);
41
42 return StatusCode::SUCCESS;
43}
#define ATH_MSG_ERROR(x)

◆ toString()

std::string RandomSignalHypoJetVectorGenerator::toString ( ) const
overridevirtual

Definition at line 45 of file RandomSignalEventGenerator.cxx.

45 {
46 std::stringstream ss;
47 ss << name() <<":: "
48 << m_n_sig_lo << " "
49 << m_n_sig_hi << " "
50 << m_e_sig_lo << " "
51 << m_e_sig_hi << " "
52 << m_eta_sig_hi << " ";
53
54 ss << m_nbkgd << " "
55 << m_bkgd_etmax << " "
56 << m_bkgd_etamax << '\n';
57
58 return ss.str();
59}
static Double_t ss

Member Data Documentation

◆ m_bkgd_etamax

Gaudi::Property<double> RandomSignalHypoJetVectorGenerator::m_bkgd_etamax {this, "bkgd_etamax", 5., "Lower limit Eta range background "}
private

Definition at line 59 of file RandomSignalHypoJetVectorGenerator.h.

59{this, "bkgd_etamax", 5., "Lower limit Eta range background "};

◆ m_bkgd_etmax

Gaudi::Property<double> RandomSignalHypoJetVectorGenerator::m_bkgd_etmax {this, "bkgd_etmax", 0., "Max Et background jets"}
private

Definition at line 56 of file RandomSignalHypoJetVectorGenerator.h.

56{this, "bkgd_etmax", 0., "Max Et background jets"};

◆ m_e_sig_hi

Gaudi::Property<double> RandomSignalHypoJetVectorGenerator::m_e_sig_hi {this, "e_sig_hi", 100., "Upper bound e sig to generate "}
private

Definition at line 45 of file RandomSignalHypoJetVectorGenerator.h.

45{this, "e_sig_hi", 100., "Upper bound e sig to generate "};

◆ m_e_sig_lo

Gaudi::Property<double> RandomSignalHypoJetVectorGenerator::m_e_sig_lo {this, "e_sig_lo", 50., "Lower bound e sig to generate "}
private

Definition at line 41 of file RandomSignalHypoJetVectorGenerator.h.

41{this, "e_sig_lo", 50., "Lower bound e sig to generate "};

◆ m_eta_sig_hi

Gaudi::Property<double> RandomSignalHypoJetVectorGenerator::m_eta_sig_hi {this, "eta_sig_hi", 3.2, "Upper bound eta sig to generate "}
private

Definition at line 49 of file RandomSignalHypoJetVectorGenerator.h.

49{this, "eta_sig_hi", 3.2, "Upper bound eta sig to generate "};

◆ m_flip

RandUint RandomSignalHypoJetVectorGenerator::m_flip
private

Definition at line 72 of file RandomSignalHypoJetVectorGenerator.h.

◆ m_n_sig_hi

Gaudi::Property<int> RandomSignalHypoJetVectorGenerator::m_n_sig_hi {this, "n_sig_hi", 6, "Upper bound nsig jets to generate "}
private

Definition at line 37 of file RandomSignalHypoJetVectorGenerator.h.

37{this, "n_sig_hi", 6, "Upper bound nsig jets to generate "};

◆ m_n_sig_lo

Gaudi::Property<int> RandomSignalHypoJetVectorGenerator::m_n_sig_lo {this, "n_sig_lo", 2, "Lower bound nsig jets to generate "}
private

Definition at line 33 of file RandomSignalHypoJetVectorGenerator.h.

33{this, "n_sig_lo", 2, "Lower bound nsig jets to generate "};

◆ m_nbkgd

Gaudi::Property<int> RandomSignalHypoJetVectorGenerator::m_nbkgd {this, "n_bkgd", 0, "No of background jets to generate "}
private

Definition at line 53 of file RandomSignalHypoJetVectorGenerator.h.

53{this, "n_bkgd", 0, "No of background jets to generate "};

◆ m_randEnBkd

RandDouble RandomSignalHypoJetVectorGenerator::m_randEnBkd
private

Definition at line 70 of file RandomSignalHypoJetVectorGenerator.h.

◆ m_randEnSig

RandDouble RandomSignalHypoJetVectorGenerator::m_randEnSig
private

Definition at line 68 of file RandomSignalHypoJetVectorGenerator.h.

◆ m_randEtaBkd

RandDouble RandomSignalHypoJetVectorGenerator::m_randEtaBkd
private

Definition at line 69 of file RandomSignalHypoJetVectorGenerator.h.

◆ m_randEtaSig

RandDouble RandomSignalHypoJetVectorGenerator::m_randEtaSig
private

Definition at line 67 of file RandomSignalHypoJetVectorGenerator.h.

◆ m_randNSig

RandUint RandomSignalHypoJetVectorGenerator::m_randNSig
private

Definition at line 66 of file RandomSignalHypoJetVectorGenerator.h.

◆ m_shuffle_re

std::default_random_engine RandomSignalHypoJetVectorGenerator::m_shuffle_re
private

Definition at line 65 of file RandomSignalHypoJetVectorGenerator.h.

◆ m_useEtaEtNotEtaE

Gaudi::Property<bool> RandomSignalHypoJetVectorGenerator::m_useEtaEtNotEtaE {this, "useEtaEtNotEtaE", true, "e values or et values "}
private

Definition at line 62 of file RandomSignalHypoJetVectorGenerator.h.

62{this, "useEtaEtNotEtaE", true, "e values or et values "};

The documentation for this class was generated from the following files: