Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:13:23

0001 #include "TowerRhoAna.h"
0002 
0003 // fun4all includes
0004 #include <fun4all/Fun4AllReturnCodes.h>
0005 #include <fun4all/PHTFileServer.h>
0006 
0007 // phool includes
0008 #include <phool/PHCompositeNode.h>
0009 #include <phool/getClass.h>
0010 
0011 // jetbackground includes
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   // create output file
0044   PHTFileServer::get().open(m_outputFileName, "RECREATE");
0045 
0046 
0047   // Initialize histograms
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