File indexing completed on 2026-11-04 09:11:23
0001 #include "Setup.h"
0002 #include <stdexcept>
0003 Setup::Setup(){
0004 std::cout<<"IRT Setup Called\n"<<std::endl;
0005
0006 m_nBinsMomPFRICH = 150;
0007 m_PLowerPFRICH = 0.;
0008 m_PUpperPFRICH = 15.0;
0009 m_nBinsEtaPFRICH = 50;
0010
0011 m_ELowerPFRICH = -3.50;
0012 m_EUpperPFRICH = -1.50;
0013
0014 m_nBinsThetaPFRICH = 150;
0015 m_ThetaLowerPFRICH = 150;
0016 m_ThetaUpperPFRICH = 300;
0017 m_nBinsNpePFRICH = 50;
0018 m_NpeLowerPFRICH = 0;
0019 m_NpeUpperPFRICH = 50;
0020
0021 m_nBinsMomDRICH = 500;
0022 m_PLowerDRICH = 0.;
0023 m_PUpperDRICH = 50.;
0024 m_nBinsEtaDRICH = 50;
0025 m_ELowerDRICH = 1.50;
0026 m_EUpperDRICH = 3.50;
0027
0028 m_nBinsThetaDRICH = 100;
0029 m_ThetaLowerGasDRICH =0.;
0030 m_ThetaUpperGasDRICH =50;
0031 m_ThetaLowerAerogelDRICH =200.;
0032 m_ThetaUpperAerogelDRICH =250.;
0033 m_nBinsNpeDRICH = 50;
0034 m_NpeLowerDRICH = 0;
0035 m_NpeUpperDRICH = 50;
0036
0037 }
0038 void Setup::HistoInit(){
0039 if(m_IrtRICH != "PFRICH" && m_IrtRICH != "DRICH"){
0040 throw std::runtime_error("Unknown RICH detector \"" + m_IrtRICH
0041 + "\", expected one of: DRICH, PFRICH");
0042 }
0043 if(m_IrtRICH == "PFRICH"){
0044 std::cout<<"PFRICH Histos for: "<<m_IrtRICH<<std::endl;
0045
0046
0047
0048
0049
0050
0051 m_histTitle = m_IrtRICH+"_IRT_Mom; P(GeV/c)";
0052 m_RICH_Mom = std::make_unique<TH1D>("m_RICH_Mom",m_histTitle.c_str(),
0053 m_nBinsMomPFRICH, m_PLowerPFRICH,
0054 m_PUpperPFRICH
0055 );
0056
0057 m_histTitle = m_IrtRICH+"_IRT_Eta; #eta";
0058 m_RICH_Eta = std::make_unique<TH1D>("m_RICH_ETA",m_histTitle.c_str(),
0059 m_nBinsEtaPFRICH, m_ELowerPFRICH,
0060 m_EUpperPFRICH
0061 );
0062
0063 m_histTitle = m_IrtRICH+"_Npe_Rad_0; #theta(mrad)";
0064 m_Rad_Theta.push_back(std::make_unique<TH1D>("m_Theta_Rad_0",m_histTitle.c_str(),
0065 m_nBinsThetaPFRICH, m_ThetaLowerPFRICH,
0066 m_ThetaUpperPFRICH
0067 ));
0068 m_histTitle = m_IrtRICH+"_Npe_Rad_0; Npe";
0069 m_Rad_Npe.push_back(std::make_unique<TH1D>("m_Npe_Rad_0",m_histTitle.c_str(),
0070 m_nBinsNpePFRICH, m_NpeLowerPFRICH,
0071 m_NpeUpperPFRICH
0072 ));
0073 m_histTitle = m_IrtRICH+"_NHits_Rad_0; NHits";
0074 m_Rad_NHits.push_back(std::make_unique<TH1D>("m_NHits_Rad_0",m_histTitle.c_str(),
0075 m_nBinsNpePFRICH, m_NpeLowerPFRICH,
0076 m_NpeUpperPFRICH));
0077
0078 m_histTitle = m_IrtRICH+"_ThetaMom_Rad_0; #theta(mrad)";
0079 m_Theta_Mom.push_back(std::make_unique<TH2D>("m_ThetaMom_Rad_0",m_histTitle.c_str(),
0080 m_nBinsMomPFRICH, m_PLowerPFRICH,
0081 m_PUpperPFRICH,
0082 m_nBinsThetaPFRICH, m_ThetaLowerPFRICH,
0083 m_ThetaUpperPFRICH
0084 ));
0085
0086
0087 m_OutRootFile = std::make_unique<TFile>(m_OutFile.c_str(), "RECREATE");
0088 std::cout
0089 << "File: " << m_OutRootFile->GetName()
0090 << " writable: " << m_OutRootFile->IsWritable()
0091 << " zombie: " << m_OutRootFile->IsZombie()
0092 << std::endl;
0093 }
0094
0095
0096 if(m_IrtRICH == "DRICH"){
0097 std::cout<<"DRICH Histos for: "<<m_IrtRICH<<std::endl;
0098
0099 m_histTitle = m_IrtRICH+"_IRT_Mom; P(GeV/c)";
0100 m_RICH_Mom = std::make_unique<TH1D>("m_RICH_Mom",m_histTitle.c_str(),
0101 m_nBinsMomDRICH, m_PLowerDRICH,
0102 m_PUpperDRICH
0103 );
0104
0105 m_histTitle = m_IrtRICH+"_IRT_Eta; #eta";
0106 m_RICH_Eta = std::make_unique<TH1D>("m_RICH_ETA",m_histTitle.c_str(),
0107 m_nBinsEtaDRICH, m_ELowerDRICH,
0108 m_EUpperDRICH
0109 );
0110
0111
0112 m_histTitle = m_IrtRICH+"_Theta_Rad_0; #theta(mrad)";
0113 m_Rad_Theta.push_back(std::make_unique<TH1D>("m_Theta_Rad_0",m_histTitle.c_str(),
0114 m_nBinsThetaDRICH, m_ThetaLowerAerogelDRICH,
0115 m_ThetaUpperAerogelDRICH
0116 ));
0117 m_histTitle = m_IrtRICH+"_Theta_Rad_1; #theta(mrad)";
0118 m_Rad_Theta.push_back(std::make_unique<TH1D>("m_Theta_Rad_1",m_histTitle.c_str(),
0119 m_nBinsThetaDRICH, m_ThetaLowerGasDRICH,
0120 m_ThetaUpperGasDRICH
0121 ));
0122
0123 m_histTitle = m_IrtRICH+"_Npe_Rad_0; Npe";
0124 m_Rad_Npe.push_back(std::make_unique<TH1D>("m_Npe_Rad_0",m_histTitle.c_str(),
0125 m_nBinsNpeDRICH, m_NpeLowerDRICH,
0126 m_NpeUpperDRICH
0127 ));
0128 m_histTitle = m_IrtRICH+"_Npe_Rad_1; Npe";
0129 m_Rad_Npe.push_back(std::make_unique<TH1D>("m_Npe_Rad_1",m_histTitle.c_str(),
0130 m_nBinsNpeDRICH, m_NpeLowerDRICH,
0131 m_NpeUpperDRICH
0132 ));
0133
0134 m_histTitle = m_IrtRICH+"_NHits_Rad_0; NHits";
0135 m_Rad_NHits.push_back(std::make_unique<TH1D>("m_NHits_Rad_0",m_histTitle.c_str(),
0136 m_nBinsNpeDRICH, m_NpeLowerDRICH,
0137 m_NpeUpperDRICH));
0138 m_histTitle = m_IrtRICH+"_NHits_Rad_1; NHits";
0139 m_Rad_NHits.push_back(std::make_unique<TH1D>("m_NHits_Rad_1",m_histTitle.c_str(),
0140 m_nBinsNpeDRICH, m_NpeLowerDRICH,
0141 m_NpeUpperDRICH));
0142
0143
0144
0145
0146 m_histTitle = m_IrtRICH+"_ThetaMom_Rad_0; #theta(mrad)";
0147 m_Theta_Mom.push_back(std::make_unique<TH2D>("m_ThetaMom_Rad_0",m_histTitle.c_str(),
0148 m_nBinsMomDRICH, m_PLowerDRICH,
0149 m_PUpperDRICH,
0150 m_nBinsThetaDRICH, m_ThetaLowerAerogelDRICH,
0151 m_ThetaUpperAerogelDRICH
0152 ));
0153 m_histTitle = m_IrtRICH+"_ThetaMom_Rad_1; #theta(mrad)";
0154 m_Theta_Mom.push_back(std::make_unique<TH2D>("m_ThetaMom_Rad_1",m_histTitle.c_str(),
0155 m_nBinsMomDRICH, m_PLowerDRICH,
0156 m_PUpperDRICH,
0157 m_nBinsThetaDRICH, m_ThetaLowerGasDRICH,
0158 m_ThetaUpperGasDRICH
0159 ));
0160
0161
0162
0163 m_OutRootFile = std::make_unique<TFile>(m_OutFile.c_str(), "RECREATE");
0164 std::cout
0165 << "File: " << m_OutRootFile->GetName()
0166 << " writable: " << m_OutRootFile->IsWritable()
0167 << " zombie: " << m_OutRootFile->IsZombie()
0168 << std::endl;
0169 }
0170 if(m_OutRootFile == nullptr || m_OutRootFile->IsZombie()){
0171 throw std::runtime_error("Failed to open output file \"" + m_OutFile + "\" for writing");
0172 }
0173 }
0174 Setup::~Setup(){
0175 std::cout<<"IRT Setup Destroyed\n"<<std::endl;
0176 }