Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:14:16

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef JETBKGDSUB_H
0004 #define JETBKGDSUB_H
0005 
0006 #include <fun4all/SubsysReco.h>
0007 #include <jetbase/Jetv1.h>
0008 
0009 #include <memory>
0010 #include <string>
0011 #include <utility>  // std::pair, std::make_pair
0012 #include <vector>
0013 
0014 class PHCompositeNode;
0015 class TTree;
0016 class JetInput;
0017 class JetAlgo;
0018 class JetEvalStack;
0019 
0020 class JetBkgdSub : public SubsysReco
0021 {
0022 public:
0023     // constructor
0024     JetBkgdSub(const double jet_R = 0.4,
0025             const std::string &outputfilename = "jettree.root");
0026 
0027     ~JetBkgdSub() override; // destructor
0028 
0029     // setters
0030     void doIterative(bool b = true) { _doIterative = b; }
0031     void doAreaSub(bool b = true) { _doAreaSub = b; }
0032     void doMultSub(bool b = true) { _doMultSub = b; }
0033     void doTruth(bool b = true) { _doTruth = b; }
0034     void doData(bool b = true) { _doData = b; }
0035     void doEmbed(bool b = true) { _doEmbed = b;}
0036     void doTowerECut(bool b = true) { _doTowerECut = b;}
0037 
0038     void setEtaRange(double low, double high)
0039     {
0040         m_etaRange.first = low;
0041         m_etaRange.second = high;
0042     }
0043 
0044     void setPtRange(double low, double high)
0045     {
0046         m_ptRange.first = low;
0047         m_ptRange.second = high;
0048     }
0049 
0050     void setMinRecoPt(double pt) { _minrecopT = pt; }
0051 
0052     void setVzCut(double cut) { m_vtxZ_cut = cut; }
0053 
0054     void setTowerThreshold(double threshold) { m_towerThreshold = threshold;}
0055 
0056     void add_input(JetInput *input) { _inputs.push_back(input); }
0057     
0058     // event trigger (for simulation)
0059     float LeadingR04TruthJet(PHCompositeNode *topNode);
0060     
0061     // Standard Fun4All functions
0062     int Init(PHCompositeNode *topNode) override;
0063     int process_event(PHCompositeNode *topNode) override;
0064     int ResetEvent(PHCompositeNode *topNode) override;
0065     int End(PHCompositeNode *topNode) override;
0066 
0067     void EstimateRhoMult(PHCompositeNode *topNode);
0068     double GetMedian(std::vector<double> &v);
0069     void GetCentInfo(PHCompositeNode *topNode);
0070     float NSignalCorrection(float jet_pt, int cent);
0071 
0072 private:
0073 
0074     // private variables
0075     double m_jet_R;
0076     std::string m_iter_input;
0077     std::string m_raw_input; 
0078     std::string m_truth_input;
0079     std::string m_outputfilename;
0080     std::pair<double, double> m_etaRange;
0081     std::pair<double, double> m_ptRange;
0082     double _minrecopT;
0083     double m_vtxZ_cut;
0084     double m_towerThreshold;
0085     std::vector<JetInput *> _inputs;
0086     bool _doIterative;
0087     bool _doAreaSub;
0088     bool _doMultSub;
0089     bool _doTruth;
0090     bool _doData;
0091     bool _doEmbed;
0092     bool _doTowerECut;
0093 
0094     //____________________________________________________________________________..
0095     // output tree variables
0096     int m_event;
0097     int m_rhoA_jets;
0098     int m_mult_jets;
0099     int m_iter_jets;
0100     int m_truth_jets;
0101     int m_centrality;
0102     double m_mbd_NS;
0103     double m_rho_area;
0104     double m_rho_area_sigma;  
0105     double m_rho_area_CEMC;
0106     double m_rho_area_sigma_CEMC;  
0107     double m_rho_area_IHCAL;
0108     double m_rho_area_sigma_IHCAL;  
0109     double m_rho_area_OHCAL;
0110     double m_rho_area_sigma_OHCAL;  
0111     double m_rho_mult;
0112 
0113     float m_event_leading_truth_pt;
0114 
0115      // output trees
0116     TTree *m_tree;
0117     //sub1 jet variables
0118     std::vector<float> m_iter_eta;
0119     std::vector<float> m_iter_phi;
0120     std::vector<float> m_iter_pt;
0121     std::vector<float> m_iter_pt_unsub;
0122 
0123     // rhoA jet variables
0124     std::vector<float> m_rhoA_eta;
0125     std::vector<float> m_rhoA_phi;
0126     std::vector<float> m_rhoA_pt;
0127     std::vector<float> m_rhoA_area;
0128     std::vector<float> m_rhoA_pt_unsub; 
0129 
0130     // mult jet variables
0131     std::vector<int> m_mult_ncomponent;
0132     std::vector<float> m_mult_nsignal;
0133     std::vector<float> m_mult_eta;
0134     std::vector<float> m_mult_phi;
0135     std::vector<float> m_mult_pt;
0136     std::vector<float> m_mult_pt_unsub; 
0137 
0138     // truth jet variables
0139     std::vector<int> m_truth_ncomponent;
0140     std::vector<float> m_truth_eta;
0141     std::vector<float> m_truth_phi;
0142     std::vector<float> m_truth_pt;
0143     
0144 };
0145 
0146 #endif // JETBKGDSUB_H