Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-01 07:56:14

0001 // Copyright 2023, Christopher Dilks
0002 // Subject to the terms in the LICENSE file found in the top-level directory.
0003 
0004 #pragma once
0005 
0006 #include <spdlog/spdlog.h>
0007 
0008 #include <TH1D.h>
0009 #include <TH2D.h>
0010 #include <TMath.h>
0011 #include <TRegexp.h>
0012 
0013 #include <edm4eic/CherenkovParticleIDCollection.h>
0014 #include <edm4hep/MCParticleCollection.h>
0015 #include <edm4hep/utils/vector_utils.h>
0016 #include <edm4hep/utils/kinematics.h>
0017 
0018 #include "Tools.h"
0019 #include "ChargedParticle.h"
0020 
0021 namespace benchmarks {
0022 
0023   class CherenkovPIDAnalysis {
0024 
0025     public:
0026       CherenkovPIDAnalysis() = default;
0027       ~CherenkovPIDAnalysis() {}
0028 
0029       // algorithm methods
0030       void AlgorithmInit(
0031           std::string                      rad_name,
0032           std::shared_ptr<spdlog::logger>& logger
0033           );
0034       void AlgorithmProcess(
0035           const edm4hep::MCParticleCollection&          mc_parts,
0036           const edm4eic::CherenkovParticleIDCollection& cherenkov_pids
0037           );
0038       void AlgorithmFinish();
0039 
0040     private:
0041 
0042       // radiator name
0043       std::string m_rad_name;
0044       TString     m_rad_name_trun;
0045       TString     m_rad_title;
0046 
0047       // histograms
0048       // - distributions
0049       TH1D *m_npe_dist;
0050       TH1D *m_theta_dist;
0051       TH1D *m_thetaResid_dist;
0052       TH1D *m_mcWavelength_dist;
0053       TH1D *m_mcRindex_dist;
0054       TH1D *m_highestWeight_dist;
0055       TH2D *m_photonTheta_vs_photonPhi;
0056       // - momentum scans
0057       TH2D *m_npe_vs_p;
0058       TH2D *m_theta_vs_p;
0059       TH2D *m_thetaResid_vs_p;
0060       TH2D *m_highestWeight_vs_p;
0061       // - pseudorapidity scans
0062       TH2D *m_npe_vs_eta;
0063       TH2D *m_theta_vs_eta;
0064       TH2D *m_thetaResid_vs_eta;
0065       TH2D *m_highestWeight_vs_eta;
0066 
0067       // logger
0068       std::shared_ptr<spdlog::logger> m_log;
0069 
0070   };
0071 
0072 }