![]() |
|
|||
File indexing completed on 2025-08-06 08:14:20
0001 #ifndef RANDOMCONES_RANDOMCONERECO_H 0002 #define RANDOMCONES_RANDOMCONERECO_H 0003 0004 //=========================================================== 0005 /// \file RandomConeReco.h 0006 /// \brief UE background rho calculator 0007 /// \author Tanner Mengel 0008 //=========================================================== 0009 0010 #include "RandomCone.h" 0011 #include "RandomConev1.h" 0012 0013 // fun4all includes 0014 #include <fun4all/SubsysReco.h> 0015 0016 // system includes 0017 #include <string> 0018 #include <vector> 0019 #include <ostream> 0020 0021 #include <jetbase/Jet.h> 0022 #include <jetbase/JetAlgo.h> 0023 #include <jetbase/JetInput.h> 0024 0025 #include <fastjet/JetDefinition.hh> 0026 #include <fastjet/PseudoJet.hh> 0027 0028 #include <TRandom3.h> 0029 0030 0031 // forward declarations 0032 class PHCompositeNode; 0033 0034 0035 /// \class RandomConeReco 0036 /// 0037 /// \brief lll 0038 /// 0039 /// 0040 /// 0041 0042 0043 class RandomConeReco : public SubsysReco 0044 { 0045 public: 0046 0047 RandomConeReco(const std::string &name = "RandomCone"); 0048 ~RandomConeReco() override; 0049 0050 // standard Fun4All methods 0051 int Init(PHCompositeNode *topNode) override; 0052 int process_event(PHCompositeNode *topNode) override; 0053 0054 // print settings 0055 void print_settings(std::ostream& os = std::cout) const; 0056 0057 //****************** Required variables ********************************** 0058 /* 0059 Required variables: 0060 0061 -> input for the random cone (required) 0062 0063 -> cone radius (default = 0.4, i.e. R = 0.4) 0064 0065 -> output node name (default = "RandomCone_<cone_type>_r<int(R*10):2>") 0066 0067 */ 0068 0069 // add input for the random cone (required) 0070 void add_input(JetInput *input){ m_inputs.push_back(input); } 0071 0072 // set cone radius (default = 0.4, i.e. R = 0.4) 0073 void set_cone_radius(const float R) { m_R = R; } 0074 0075 // output node name (default = "RandomCone_<cone_type>_r<int(R*10):2>") 0076 void set_output_node_name(const std::string &name) { m_output_node_name = name; } 0077 0078 // **************** Optional variables *********************************** 0079 /* 0080 0081 Optional variables: 0082 0083 -> set eta range input objects (default = 1.1) 0084 0085 -> set eta range for cone acceptance (cone is contsrained to eta range min + R < |eta| < max - R) 0086 0087 -> user-defined seed (default = 0, i.e. use time as seed) 0088 0089 -> set min pT of input objects (default = 0.0) 0090 0091 */ 0092 0093 // set eta range input objects (default = 1.1) 0094 void set_input_max_abs_eta(const float max_abs_eta){ m_input_max_abs_eta = max_abs_eta; } 0095 0096 // set eta range for cone acceptance (max_abs_eta - R) by default 0097 void set_cone_max_abs_eta(const float max_abs_eta){ m_cone_max_abs_eta = max_abs_eta; } 0098 0099 // user-defined seed (default = 0, i.e. use time as seed) 0100 void set_seed(const unsigned int seed){ m_seed = seed; } 0101 0102 // set min pT of input objects (default = 0.0) 0103 void set_input_min_pT(const float min_pT){ m_input_min_pT = min_pT; } 0104 0105 // tower cut 0106 void do_tower_cut(bool b = true) { m_do_tower_cut = b; } 0107 0108 // add threshold for input objects 0109 void set_tower_threshold(const float threshold) 0110 { 0111 m_tower_threshold = threshold; 0112 } 0113 0114 0115 // **************** Random Cone reconstruction options ********************** 0116 /* 0117 0118 Random Cone reconstruction options: 0119 0120 -> randomize eta, phi of the input objects (default = false) 0121 0122 -> avoid leading jet (default = false) 0123 - minimum dR between the leading jet and the random cone (default = 1.4) 0124 - lead jet can be from jetmap, jet container or lead jet input 0125 - (jetmap) add_lead_jet_map 0126 - (jet container) add_lead_jet_container 0127 - (lead jet input) add_lead_jet_input 0128 - if no additonal input method is set (jetmap, jet container or lead jet input), 0129 the leading jet is reconstructed from the inputs used to reconstruct the random cone 0130 0131 -> basic random cone reconstruction (default = true) 0132 0133 All can be true at the same time, but at least one must be true. 0134 0135 */ 0136 0137 // randomize eta, phi of the input objects 0138 void do_randomize_etaphi(const bool b) { m_do_randomize_etaphi_of_inputs = b; } 0139 0140 // **************** Avoid Leading Jet Options 0141 0142 // avoid leading jet stuff (setters for leading jet options) 0143 void do_avoid_leading_jet(const bool b) 0144 { 0145 // avoid leading jet of user-defined node 0146 m_do_avoid_leading_jet = b; 0147 0148 // defaults to using inputs to reconstruct jet 0149 if(m_do_avoid_leading_jet) 0150 { 0151 m_leading_jet_from_inputs = true; // leading jet is reconstructed from inputs (default) 0152 m_leading_jet_from_jetmap = false; 0153 m_leading_jet_from_jetcont = false; 0154 } 0155 } 0156 0157 // minimum dR between the leading jet and the random cone (default = 1.0 + R) 0158 void set_lead_jet_dR(const float dR) 0159 { 0160 //if not already set to avoid leading jet, set to true 0161 if(!m_do_avoid_leading_jet){ m_do_avoid_leading_jet = true; } 0162 m_lead_jet_dR = dR; 0163 } 0164 0165 // set jet pT threshold for leading jet 0166 void set_lead_jet_pT_threshold(const float pT) 0167 { 0168 //if not already set to avoid leading jet, set to true 0169 if(!m_do_avoid_leading_jet){ m_do_avoid_leading_jet = true; } 0170 m_lead_jet_pT_threshold = pT; 0171 } 0172 0173 // add jet container for leading jet (if not set, the leading jet is reconstructed from the inputs used to reconstruct the random cone) 0174 void add_lead_jet_container(const std::string &name) 0175 { 0176 // avoid leading jet of user-defined node 0177 m_leading_jet_node_name = name; 0178 0179 // set true if not already set 0180 if(!m_do_avoid_leading_jet){ m_do_avoid_leading_jet = true; } 0181 0182 // set type of leading jet 0183 m_leading_jet_from_inputs = false; 0184 m_leading_jet_from_jetmap = false; 0185 m_leading_jet_from_jetcont = true; // leading jet is from jet container 0186 0187 0188 } 0189 // add jetmap for leading jet (if not set, the leading jet is reconstructed from the inputs used to reconstruct the random cone) 0190 void add_lead_jet_map(const std::string &name) 0191 { 0192 0193 // avoid leading jet of user-defined node (jetmap) 0194 m_leading_jet_node_name = name; 0195 0196 // set true if not already set 0197 if(!m_do_avoid_leading_jet){ m_do_avoid_leading_jet = true; } 0198 0199 // set type of leading jet 0200 m_leading_jet_from_inputs = false; 0201 m_leading_jet_from_jetmap = true; // leading jet is from jetmap 0202 m_leading_jet_from_jetcont = false; 0203 0204 } 0205 0206 // **************** Basic Random Cone Reconstruction 0207 0208 // normal random cone reconstruction (default = true) 0209 void do_basic_reconstruction(const bool b) { m_do_basic_reconstruction = b; } // default is already true 0210 0211 0212 0213 0214 0215 private: 0216 0217 // ============================================================ 0218 // required variables 0219 // ============================================================ 0220 0221 std::vector<JetInput *> m_inputs{}; // input for the random cone 0222 0223 std::string m_output_node_name{"RandomCone"}; // output node name 0224 0225 std::string m_output_basic_node{"_basic_"}; // output node name for basic random cone reconstruction 0226 std::string m_output_randomize_etaphi_node{"_randomize_etaphi_"}; // output node name for randomize eta, phi of the input objects 0227 std::string m_output_avoid_leading_jet_node{"_avoid_lead_jet_"}; // output node name for avoid leading jet 0228 0229 float m_R{0.4}; // cone radius 0230 0231 // ============================================================ 0232 // optional variables 0233 // ============================================================ 0234 0235 float m_input_max_abs_eta{1.1}; // eta range input objects 0236 float m_cone_max_abs_eta{5.0}; // eta range for cone acceptance (5.0 is dummy value) default is max_abs_eta - R 0237 0238 unsigned int m_seed{0}; // user-defined seed (default = 0, i.e. use time as seed) 0239 0240 float m_input_min_pT{10.0}; // min pT of input objects (default = 0.0) 0241 0242 // add threshold for input objects 0243 bool m_do_tower_cut{false}; // tower cut 0244 float m_tower_threshold{0.0}; // threshold for input objects 0245 // ============================================================ 0246 // Random Cone reconstruction options 0247 // ============================================================ 0248 0249 bool m_do_basic_reconstruction{true}; // basic random cone reconstruction (default = true) 0250 0251 bool m_do_randomize_etaphi_of_inputs{false}; // randomize eta, phi of the input objects 0252 0253 // avoid leading jet stuff 0254 bool m_do_avoid_leading_jet{false}; // avoid leading jet 0255 float m_lead_jet_dR{5.0}; // minimum dR between the leading jet and the random cone (default = 1.0 + R) 0256 float m_lead_jet_pT_threshold{0.0}; // jet pT threshold for leading jet 0257 0258 // leading jet options 0259 std::string m_leading_jet_node_name{""}; 0260 bool m_leading_jet_from_inputs{true}; // leading jet is reconstructed from inputs (default) 0261 bool m_leading_jet_from_jetmap{false}; // leading jet is from jetmap 0262 bool m_leading_jet_from_jetcont{false}; // leading jet is from jet container 0263 0264 0265 0266 0267 // ============================================================ 0268 // internal variables 0269 // ============================================================ 0270 0271 // random number generator 0272 TRandom3 *m_random{nullptr}; 0273 0274 // ============================================================ 0275 0276 0277 0278 // Nodes ========================================== 0279 int CreateNode(PHCompositeNode *topNode); 0280 0281 // helper functions ========================================== 0282 Jet * GetLeadJet(PHCompositeNode *topNode); // get leading jet from user-defined method 0283 0284 std::vector<fastjet::PseudoJet> JetsToPseudojets(const std::vector<Jet *> &particles, bool randomize_etaphi=false); // convert jet objects to pseudojets 0285 0286 void GetConeAxis(PHCompositeNode *topNode, float &cone_eta, float &cone_phi, bool avoid_lead_jet=false); // get random cone axis 0287 }; 0288 0289 #endif // RHOBASE_DETERMINETOWERRHO_H
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |