File indexing completed on 2025-08-05 08:13:23
0001 #include "TowerRhoAna.h"
0002
0003
0004 #include <fun4all/Fun4AllReturnCodes.h>
0005 #include <fun4all/PHTFileServer.h>
0006
0007
0008 #include <phool/PHCompositeNode.h>
0009 #include <phool/getClass.h>
0010
0011
0012 #include <jetbackground/TowerRho.h>
0013 #include <jetbackground/TowerRhov1.h>
0014
0015 #include <TH1D.h>
0016
0017 #include <iostream>
0018 #include <string>
0019 #include <vector>
0020
0021 TowerRhoAna::TowerRhoAna(const std::string &outputfilename)
0022 : SubsysReco("TowerRhoAna")
0023 , m_outputFileName(outputfilename)
0024 , m_do_mult_rho(false)
0025 , m_do_area_rho(false)
0026 , m_mult_rho_node("")
0027 , m_area_rho_node("")
0028 , h1_mult_rho(nullptr)
0029 , h1_mult_rho_sigma(nullptr)
0030 , h1_area_rho(nullptr)
0031 , h1_area_rho_sigma(nullptr)
0032 {
0033 }
0034
0035
0036 int TowerRhoAna::Init(PHCompositeNode *topNode)
0037 {
0038 if (Verbosity() > 0)
0039 {
0040 std::cout << "TowerRhoAna::Init - Output to " << m_outputFileName << std::endl;
0041 }
0042
0043
0044 PHTFileServer::get().open(m_outputFileName, "RECREATE");
0045
0046
0047
0048 const int N_rho_mult = 200;
0049 Double_t N_rho_mult_bins[N_rho_mult+1];
0050 for (int i = 0; i <= N_rho_mult; i++)
0051 {
0052 N_rho_mult_bins[i] = (0.3/200.0)*i;
0053 }
0054
0055 const int N_rho_area = 200;
0056 Double_t N_rho_area_bins[N_rho_area+1];
0057 for (int i = 0; i <= N_rho_area; i++)
0058 {
0059 N_rho_area_bins[i] = (10.0/200.0)*i;
0060 }
0061
0062 h1_mult_rho = new TH1D("h1_mult_rho", "h1_mult_rho", N_rho_mult, N_rho_mult_bins);
0063 h1_mult_rho_sigma = new TH1D("h1_mult_rho_sigma", "h1_mult_rho_sigma", N_rho_mult, N_rho_mult_bins);
0064 h1_area_rho = new TH1D("h1_area_rho", "h1_area_rho", N_rho_area, N_rho_area_bins);
0065 h1_area_rho_sigma = new TH1D("h1_area_rho_sigma", "h1_area_rho_sigma", N_rho_area, N_rho_area_bins);
0066
0067 if(Verbosity() > 0)
0068 {
0069 std::cout << "TowerRhoAna::Init - Histograms created" << std::endl;
0070 }
0071
0072 return Fun4AllReturnCodes::EVENT_OK;
0073 }
0074
0075 int TowerRhoAna::process_event(PHCompositeNode *topNode)
0076 {
0077
0078 if(Verbosity() > 1)
0079 {
0080 std::cout << "TowerRhoAna::process_event - Process event..." << std::endl;
0081 }
0082
0083 if(m_do_area_rho)
0084 {
0085 TowerRho* towerrho = findNode::getClass<TowerRhov1>(topNode, m_area_rho_node);
0086 if (!towerrho)
0087 {
0088 std::cout << "TowerRhoAna::process_event - Error can not find towerrho " << m_area_rho_node << std::endl;
0089 exit(-1);
0090 }
0091 h1_area_rho->Fill(towerrho->get_rho());
0092 h1_area_rho_sigma->Fill(towerrho->get_sigma());
0093 }
0094
0095 if(m_do_mult_rho)
0096 {
0097 TowerRho* towerrho = findNode::getClass<TowerRhov1>(topNode, m_mult_rho_node);
0098 if (!towerrho)
0099 {
0100 std::cout << "TowerRhoAna::process_event - Error can not find towerrho " << m_mult_rho_node << std::endl;
0101 exit(-1);
0102 }
0103 h1_mult_rho->Fill(towerrho->get_rho());
0104 h1_mult_rho_sigma->Fill(towerrho->get_sigma());
0105 }
0106
0107 if(Verbosity() > 1)
0108 {
0109 std::cout << "TowerRhoAna::process_event - Event processed" << std::endl;
0110 }
0111
0112 return Fun4AllReturnCodes::EVENT_OK;
0113 }
0114
0115
0116
0117 int TowerRhoAna::End(PHCompositeNode *topNode)
0118 {
0119
0120 if(Verbosity() > 0)
0121 {
0122 std::cout << "TowerRhoAna::EndRun - End run " << std::endl;
0123 std::cout << "TowerRhoAna::EndRun - Writing to " << m_outputFileName << std::endl;
0124 }
0125
0126 PHTFileServer::get().cd(m_outputFileName);
0127
0128 h1_mult_rho->Write();
0129 h1_mult_rho_sigma->Write();
0130 h1_area_rho->Write();
0131 h1_area_rho_sigma->Write();
0132
0133 if(Verbosity() > 0)
0134 {
0135 std::cout << "TowerRhoAna::EndRun - Done" << std::endl;
0136 }
0137
0138 return Fun4AllReturnCodes::EVENT_OK;
0139 }
0140