Back to home page

EIC code displayed by LXR

 
 

    


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   ///PFRICH (mom & eta)
0006   m_nBinsMomPFRICH = 150;
0007   m_PLowerPFRICH = 0.;
0008   m_PUpperPFRICH = 15.0;
0009   m_nBinsEtaPFRICH = 50;
0010   // ROOT requires the lower edge to be smaller than the upper edge
0011   m_ELowerPFRICH = -3.50;
0012   m_EUpperPFRICH = -1.50;
0013   // (Angle and Hits)
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   ///DRICH (mom & eta)
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   // (Angle and Hits)
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     //TH1::AddDirectory(false);
0046     //std::unique_ptr<TH1D> m_IrtPDG;
0047     //std::unique_ptr<TH1D> m_IrtNpe;
0048     //std::unique_ptr<TH1D> m_IrtHits;
0049     
0050     //Tracks
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     //Radiators
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     //Radiators-Track Combination
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     //std::unique_ptr<TFile> m_OutFile
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     //Tracks
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     //Radiators
0111     //Theta
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     //Npe
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     //Hits
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     //Radiators-Track Combination
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     //std::unique_ptr<TFile> m_OutFile
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 }