File indexing completed on 2025-08-06 08:14:17
0001 #include <iostream>
0002 #include "JetSeedCount.h"
0003
0004 #include <fun4all/Fun4AllBase.h>
0005 #include <fun4all/Fun4AllReturnCodes.h>
0006 #include <fun4all/PHTFileServer.h>
0007
0008 #include <phool/PHCompositeNode.h>
0009 #include <phool/getClass.h>
0010
0011 #include <jetbase/JetMap.h>
0012 #include <jetbase/JetContainer.h>
0013 #include <jetbase/Jetv2.h>
0014 #include <jetbase/Jetv1.h>
0015
0016 #include <centrality/CentralityInfov2.h>
0017 #include <globalvertex/GlobalVertex.h>
0018 #include <globalvertex/GlobalVertexMap.h>
0019
0020 #include <ffaobjects/EventHeader.h>
0021 #include <ffaobjects/EventHeaderv1.h>
0022
0023 #include <calobase/RawTower.h>
0024 #include <calobase/RawTowerContainer.h>
0025 #include <calobase/RawTowerGeom.h>
0026 #include <calobase/RawTowerGeomContainer.h>
0027 #include <calobase/TowerInfoContainer.h>
0028 #include <calobase/TowerInfo.h>
0029
0030 #include <jetbackground/TowerBackground.h>
0031 #include <TCanvas.h>
0032 #include <TH2.h>
0033
0034 JetSeedCount::JetSeedCount(const std::string& recojetname, const std::string& truthjetname, const std::string& outputfilename):
0035 SubsysReco("JetSeedCount_" + recojetname + "_" + truthjetname)
0036 , m_recoJetName(recojetname)
0037 , m_truthJetName(truthjetname)
0038 , m_outputFileName(outputfilename)
0039 , m_etaRange(-1,1)
0040 , m_ptRange(5, 100)
0041 {
0042
0043 }
0044
0045 JetSeedCount::~JetSeedCount()
0046 {
0047 std::cout << "JetSeedCount::~JetSeedCount() Calling dtor" << std::endl;
0048 }
0049
0050 int JetSeedCount::Init(PHCompositeNode *topNode)
0051 {
0052 std::cout << "JetSeedCount::Init(PHCompositeNode *topNode) Initializing" << std::endl;
0053 std::cout << "Opening output file named " << m_outputFileName << std::endl;
0054 PHTFileServer::get().open(m_outputFileName, "RECREATE");
0055 return Fun4AllReturnCodes::EVENT_OK;
0056 }
0057
0058
0059 int JetSeedCount::InitRun(PHCompositeNode *topNode)
0060 {
0061 std::cout << "JetSeedCount::InitRun(PHCompositeNode *topNode) Initializing for Run XXX" << std::endl;
0062 return Fun4AllReturnCodes::EVENT_OK;
0063 }
0064
0065
0066 int JetSeedCount::process_event(PHCompositeNode *topNode)
0067 {
0068
0069 ++m_event;
0070
0071 JetContainer* seedjetsraw = findNode::getClass<JetContainer>(topNode, "AntiKt_TowerInfo_HIRecoSeedsRaw_r02");
0072 if (!seedjetsraw){
0073 std::cout << "JetSeedCount::process_event - Error can not find DST raw seed jets" << std::endl;
0074 exit(-1);
0075 }
0076
0077
0078 JetContainer* seedjetssub = findNode::getClass<JetContainer>(topNode, "AntiKt_TowerInfo_HIRecoSeedsSub_r02");
0079 if (!seedjetssub){
0080 std::cout << "JetSeedCount::process_event - Error can not find DST sub seed jets" << std::endl;
0081 exit(-1);
0082 }
0083
0084
0085 CentralityInfo* cent_node = findNode::getClass<CentralityInfo>(topNode, "CentralityInfo");
0086 if (!cent_node){
0087 std::cout << "JetSeedCount::process_event - Error can not find CentralityInfo" << std::endl;
0088 exit(-1);
0089 }
0090
0091
0092 GlobalVertexMap *vertexmap = findNode::getClass<GlobalVertexMap>(topNode, "GlobalVertexMap");
0093 if (!vertexmap){
0094 std::cout
0095 << "MyJetAnalysis::process_event - Error can not find global vertex node "
0096 << std::endl;
0097 exit(-1);
0098 }
0099 if (vertexmap->empty()){
0100 std::cout
0101 << "MyJetAnalysis::process_event - global vertex node is empty "
0102 << std::endl;
0103 return Fun4AllReturnCodes::ABORTEVENT;
0104 }
0105
0106 GlobalVertex *vtx = vertexmap->begin()->second;
0107 z_vtx = vtx->get_z();
0108
0109
0110 float cent_mbd = cent_node->get_centile(CentralityInfo::PROP::bimp);
0111 m_centrality.push_back(cent_mbd);
0112
0113
0114 m_seed_raw = 0;
0115 float Counter = 0;
0116
0117 for(auto jet : *seedjetsraw){
0118
0119 int passesCut = jet->get_property(seedjetsraw->property_index(Jet::PROPERTY::prop_SeedItr));
0120 Counter += 1;
0121 m_rawpt_all.push_back(jet->get_pt());
0122 if (passesCut == 1){
0123 m_rawpt.push_back(jet->get_pt());
0124 m_rawenergy.push_back(jet->get_e());
0125 m_RawEta.push_back(jet->get_eta());
0126 m_RawPhi.push_back(jet->get_phi());
0127 m_rawcent.push_back(cent_mbd);
0128 m_seed_raw++;
0129 }
0130 }
0131 m_raw_counts.push_back(m_seed_raw);
0132
0133
0134 m_seed_sub = 0;
0135 Counter = 0;
0136
0137
0138 for(auto jet : *seedjetssub){
0139
0140 int passesCut = jet->get_property(seedjetssub->property_index(Jet::PROPERTY::prop_SeedItr));
0141 Counter += 1;
0142 m_subpt_all.push_back(jet->get_pt());
0143 if (passesCut == 2){
0144 m_subpt.push_back(jet->get_pt());
0145 m_subenergy.push_back(jet->get_e());
0146 m_SubEta.push_back(jet->get_eta());
0147 m_SubPhi.push_back(jet->get_phi());
0148 m_subcent.push_back(cent_mbd);
0149 m_seed_sub++;
0150 }
0151 }
0152 m_sub_counts.push_back(m_seed_sub);
0153 return Fun4AllReturnCodes::EVENT_OK;
0154 }
0155
0156
0157 int JetSeedCount::ResetEvent(PHCompositeNode *topNode)
0158 {
0159
0160 return Fun4AllReturnCodes::EVENT_OK;
0161 }
0162
0163
0164 int JetSeedCount::EndRun(const int runnumber)
0165 {
0166 std::cout << "JetSeedCount::EndRun(const int runnumber) Ending Run for Run " << runnumber << std::endl;
0167 return Fun4AllReturnCodes::EVENT_OK;
0168 }
0169
0170
0171 int JetSeedCount::End(PHCompositeNode *topNode)
0172 {
0173 std::cout << "JetSeedCount::End(PHCompositeNode *topNode) This is the End..." << std::endl;
0174 PHTFileServer::get().cd(m_outputFileName);
0175
0176 TH1F *hRawSeedCount = new TH1F("hRawSeedCount", "Raw Seed Count per Event", 100, 0.00, 50.00);
0177 hRawSeedCount->GetXaxis()->SetTitle("Raw Seed Count per Event");
0178 hRawSeedCount->GetYaxis()->SetTitle("Number of Entries");
0179 for (int j = 0; j < (int)m_raw_counts.size(); j++){
0180 hRawSeedCount->Fill(m_raw_counts.at(j));
0181 }
0182
0183 TH1F *hRawPt = new TH1F("hRawPt", "Raw p_{T}", 1000, 0.00, 50.00);
0184 hRawPt->GetXaxis()->SetTitle("Jet p_{T} [GeV]");
0185 hRawPt->GetYaxis()->SetTitle("Number of Entries");
0186 for (int j = 0; j < (int)m_rawpt.size(); j++){
0187 hRawPt->Fill(m_rawpt.at(j));
0188 }
0189
0190 TH1F *hRawPt_All = new TH1F("hRawPt_All", "Raw p_{T} (all jet seeds)", 1000, 0.00, 50.00);
0191 hRawPt_All->GetXaxis()->SetTitle("Jet p_{T} [GeV]");
0192 hRawPt_All->GetYaxis()->SetTitle("Number of Entries");
0193 for (int j = 0; j < (int)m_rawpt_all.size(); j++){
0194 hRawPt_All->Fill(m_rawpt_all.at(j));
0195 }
0196
0197 TH2F *hRawEtaVsPhi = new TH2F("hRawEtaVsPhi", "Raw Seed Eta Vs Phi", 220, -1.1, 1.1, 628, -3.14, 3.14);
0198 hRawEtaVsPhi->GetXaxis()->SetTitle("Jet #eta [Rads.]");
0199 hRawEtaVsPhi->GetYaxis()->SetTitle("Jet #phi [Rads.]");
0200 for (int j = 0; j < (int)m_RawEta.size(); j++){
0201 hRawEtaVsPhi->Fill(m_RawEta.at(j), m_RawPhi.at(j));
0202 }
0203
0204 TH1F *hSubSeedCount = new TH1F("hSubSeedCount", "Sub Seed Count per Event", 100, 0.00, 50.00);
0205 hSubSeedCount->GetXaxis()->SetTitle("Sub Seed Count per Event");
0206 hSubSeedCount->GetYaxis()->SetTitle("Number of Entries");
0207 for (int j = 0; j < (int)m_sub_counts.size(); j++){
0208 hSubSeedCount->Fill(m_sub_counts.at(j));
0209 }
0210
0211 TH1F *hSubPt = new TH1F("hSubPt", "Sub. p_{T}", 1000, 0.00, 50.00);
0212 hSubPt->GetXaxis()->SetTitle("Jet p_{T} [GeV]");
0213 hSubPt->GetYaxis()->SetTitle("Number of Entries");
0214 for (int j = 0; j < (int)m_subpt.size(); j++){
0215 hSubPt->Fill(m_subpt.at(j));
0216 }
0217
0218 TH1F *hSubPt_All = new TH1F("hSubPt_All", "Sub. p_{T} (all jet seeds)", 1000, 0.00, 50.00);
0219 hSubPt_All->GetXaxis()->SetTitle("Jet p_{T} [GeV]");
0220 hSubPt_All->GetYaxis()->SetTitle("Number of Entries");
0221 for (int j = 0; j < (int)m_subpt_all.size(); j++){
0222 hSubPt->Fill(m_subpt_all.at(j));
0223 }
0224
0225 TH2F *hSubEtaVsPhi = new TH2F("hSubEtaVsPhi", "Sub. Seed Eta Vs Phi", 220, -1.1, 1.1, 628, -3.14, 3.14);
0226 hSubEtaVsPhi->GetXaxis()->SetTitle("Jet #eta [Rads.]");
0227 hSubEtaVsPhi->GetYaxis()->SetTitle("Jet #phi [Rads.]");
0228 for (int j = 0; j < (int)m_SubEta.size(); j++){
0229 hSubEtaVsPhi->Fill(m_SubEta.at(j), m_SubPhi.at(j));
0230 }
0231
0232 TH2F *hRawSeedEnergyVsCent = new TH2F("hRawSeedEnergyVsCent", "Raw Seed Energy Vs Centrality", 10.00, 0.00, 100.00, 100, 0.00, 50.00);
0233 hRawSeedEnergyVsCent->GetXaxis()->SetTitle("Centrality");
0234 hRawSeedEnergyVsCent->GetYaxis()->SetTitle("RawSeedEnergy");
0235 for (int j = 0; j < (int)m_rawenergy.size(); j++){
0236 hRawSeedEnergyVsCent->Fill(m_rawcent.at(j), m_rawenergy.at(j));
0237 }
0238
0239 TH2F *hSubSeedEnergyVsCent = new TH2F("hSubSeedEnergyVsCent", "Sub Seed Energy Vs Centrality", 10.00, 0.00, 100.00, 100, 0.00, 50.00);
0240 hSubSeedEnergyVsCent->GetXaxis()->SetTitle("Centrality");
0241 hSubSeedEnergyVsCent->GetYaxis()->SetTitle("SubSeedEnergy");
0242 for (int j = 0; j < (int)m_subenergy.size(); j++){
0243 hSubSeedEnergyVsCent->Fill(m_subcent.at(j), m_subenergy.at(j));
0244 }
0245
0246 TH1F *hCentMbd = new TH1F("hCentMbd", "hCentMbd", 10, 0.00, 100.00);
0247 hCentMbd->GetXaxis()->SetTitle("Centrality (Mbd)");
0248 hCentMbd->GetYaxis()->SetTitle("Number of Entries");
0249 for (int j = 0; j < (int)m_centrality.size(); j++){
0250 hCentMbd->Fill(m_centrality.at(j));
0251 }
0252
0253 TH2F *hRawSeedVsCent = new TH2F("hRawSeedVsCent", "Raw Seed Vs Centrality", 10, 0.00, 100.00, 101, -0.5, 100.5);
0254 hRawSeedVsCent->GetXaxis()->SetTitle("Centrality");
0255 hRawSeedVsCent->GetYaxis()->SetTitle("Raw Seed Count");
0256 for (int j = 0; j < (int)m_raw_counts.size(); j++){
0257 hRawSeedVsCent->Fill(m_centrality.at(j), m_raw_counts.at(j));
0258 }
0259
0260 TH2F *hSubSeedVsCent = new TH2F("hSubSeedVsCent", "Sub Seed Vs Centrality", 10, 0.00, 100.00, 101, -0.5, 100.5);
0261 hSubSeedVsCent->GetXaxis()->SetTitle("Centrality");
0262 hSubSeedVsCent->GetYaxis()->SetTitle("Sub Seed Count");
0263 for (int j = 0; j < (int)m_sub_counts.size(); j++){
0264 hSubSeedVsCent->Fill(m_centrality.at(j), m_sub_counts.at(j));
0265 }
0266
0267 hRawPt->Write();
0268 hSubPt->Write();
0269 hRawPt_All->Write();
0270 hSubPt_All->Write();
0271 hRawEtaVsPhi->Write();
0272 hSubEtaVsPhi->Write();
0273 hRawSeedCount->Write();
0274 hSubSeedCount->Write();
0275 hRawSeedEnergyVsCent->Write();
0276 hSubSeedEnergyVsCent->Write();
0277 hCentMbd->Write();
0278 hRawSeedVsCent->Write();
0279 hSubSeedVsCent->Write();
0280
0281 return Fun4AllReturnCodes::EVENT_OK;
0282 }
0283
0284
0285 int JetSeedCount::Reset(PHCompositeNode *topNode)
0286 {
0287 std::cout << "JetSeedCount::Reset(PHCompositeNode *topNode) being Reset" << std::endl;
0288 return Fun4AllReturnCodes::EVENT_OK;
0289 }
0290
0291
0292 void JetSeedCount::Print(const std::string &what) const
0293 {
0294 std::cout << "JetSeedCount::Print(const std::string &what) const Printing info for " << what << std::endl;
0295 }