Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-20 10:36:59

0001 // ----------------------------------------------------------------------------
0002 // 'FillBHCalCalibrationTupleProcessor.h'
0003 // Derek Anderson
0004 // 03.02.2023
0005 //
0006 // A simple JANA plugin to compare the
0007 // reconstructed hit and cluster energy
0008 // in the HCal to simulated particles.
0009 // ----------------------------------------------------------------------------
0010 
0011 // C includes
0012 #include <cmath>
0013 // ROOT includes
0014 #include <TH1.h>
0015 #include <TH2.h>
0016 #include <TFile.h>
0017 #include <TMath.h>
0018 #include <TString.h>
0019 #include <TNtuple.h>
0020 #include <TVector3.h>  // FIXME update to XYZvectors
0021 #include <TProfile.h>
0022 // JANA includes
0023 #include <JANA/JEventProcessorSequentialRoot.h>
0024 #include <JANA/JEvent.h>
0025 // EDM includes
0026 #include <edm4eic/CalorimeterHit.h>
0027 #include <edm4eic/ReconstructedParticle.h>
0028 #include <edm4eic/ProtoCluster.h>
0029 #include <edm4eic/Cluster.h>
0030 
0031 
0032 
0033 // JCalibrateWithImagingProcessor definition ----------------------------------
0034 
0035 class FillBHCalCalibrationTupleProcessor : public JEventProcessorSequentialRoot {
0036 
0037   // global constants
0038   enum CONST {
0039     NCalibVars  = 51,
0040     NSciFiLayer = 12,
0041     NImageLayer = 6,
0042     NRange      = 2,
0043     NComp       = 3
0044   };
0045 
0046   private:
0047 
0048     // Data objects we will need from JANA
0049     PrefetchT<edm4eic::ReconstructedParticle> genParticles       = {this, "GeneratedParticles"};
0050     PrefetchT<edm4eic::CalorimeterHit>        bhcalRecHits       = {this, "HcalBarrelRecHits"};
0051     PrefetchT<edm4eic::Cluster>               bhcalClusters      = {this, "HcalBarrelClusters"};
0052     PrefetchT<edm4eic::Cluster>               bhcalTruthClusters = {this, "HcalBarrelTruthClusters"};
0053     PrefetchT<edm4eic::CalorimeterHit>        scifiRecHits       = {this, "EcalBarrelScFiRecHits"};
0054     PrefetchT<edm4eic::CalorimeterHit>        imageRecHits       = {this, "EcalBarrelImagingRecHits"};
0055     PrefetchT<edm4eic::Cluster>               bemcClusters       = {this, "EcalBarrelImagingMergedClusters"};
0056     PrefetchT<edm4eic::Cluster>               scifiClusters      = {this, "EcalBarrelScFiClusters"};
0057     PrefetchT<edm4eic::Cluster>               imageClusters      = {this, "EcalBarrelImagingClusters"};
0058 
0059     // particle histograms
0060     TH1D *hParChrg                   = nullptr;
0061     TH1D *hParMass                   = nullptr;
0062     TH1D *hParEta                    = nullptr;
0063     TH1D *hParPhi                    = nullptr;
0064     TH1D *hParEne                    = nullptr;
0065     TH1D *hParMom                    = nullptr;
0066     TH1D *hParMomX                   = nullptr;
0067     TH1D *hParMomY                   = nullptr;
0068     TH1D *hParMomZ                   = nullptr;
0069     TH2D *hParEtaVsPhi               = nullptr;
0070     // bhcal reconstructed hit histograms
0071     TH1D *hHCalRecHitEta             = nullptr;
0072     TH1D *hHCalRecHitPhi             = nullptr;
0073     TH1D *hHCalRecHitEne             = nullptr;
0074     TH1D *hHCalRecHitPosZ            = nullptr;
0075     TH1D *hHCalRecHitParDiff         = nullptr;
0076     TH2D *hHCalRecHitPosYvsX         = nullptr;
0077     TH2D *hHCalRecHitEtaVsPhi        = nullptr;
0078     TH2D *hHCalRecHitVsParEne        = nullptr;
0079     // bhcal cluster hit histograms
0080     TH1D *hHCalClustHitEta           = nullptr;
0081     TH1D *hHCalClustHitPhi           = nullptr;
0082     TH1D *hHCalClustHitEne           = nullptr;
0083     TH1D *hHCalClustHitPosZ          = nullptr;
0084     TH1D *hHCalClustHitParDiff       = nullptr;
0085     TH2D *hHCalClustHitPosYvsX       = nullptr;
0086     TH2D *hHCalClustHitEtaVsPhi      = nullptr;
0087     TH2D *hHCalClustHitVsParEne      = nullptr;
0088     // bhcal reconstructed cluster histograms
0089     TH1D *hHCalClustEta              = nullptr;
0090     TH1D *hHCalClustPhi              = nullptr;
0091     TH1D *hHCalClustEne              = nullptr;
0092     TH1D *hHCalClustPosZ             = nullptr;
0093     TH1I *hHCalClustNumHit           = nullptr;
0094     TH1D *hHCalClustParDiff          = nullptr;
0095     TH2D *hHCalClustPosYvsX          = nullptr;
0096     TH2D *hHCalClustEtaVsPhi         = nullptr;
0097     TH2D *hHCalClustVsParEne         = nullptr;
0098     // bhcal truth cluster hit histograms
0099     TH1D *hHCalTruClustHitEta        = nullptr;
0100     TH1D *hHCalTruClustHitPhi        = nullptr;
0101     TH1D *hHCalTruClustHitEne        = nullptr;
0102     TH1D *hHCalTruClustHitPosZ       = nullptr;
0103     TH1D *hHCalTruClustHitParDiff    = nullptr;
0104     TH2D *hHCalTruClustHitPosYvsX    = nullptr;
0105     TH2D *hHCalTruClustHitEtaVsPhi   = nullptr;
0106     TH2D *hHCalTruClustHitVsParEne   = nullptr;
0107     // bhcal truth cluster histograms
0108     TH1D *hHCalTruClustEta           = nullptr;
0109     TH1D *hHCalTruClustPhi           = nullptr;
0110     TH1D *hHCalTruClustEne           = nullptr;
0111     TH1D *hHCalTruClustPosZ          = nullptr;
0112     TH1I *hHCalTruClustNumHit        = nullptr;
0113     TH1D *hHCalTruClustParDiff       = nullptr;
0114     TH2D *hHCalTruClustPosYvsX       = nullptr;
0115     TH2D *hHCalTruClustEtaVsPhi      = nullptr;
0116     TH2D *hHCalTruClustVsParEne      = nullptr;
0117     // bhcal general event-wise histograms
0118     TH1I *hEvtHCalNumPar             = nullptr;
0119     // bhcal hit event-wise histograms
0120     TH1I *hEvtHCalNumHit             = nullptr;
0121     TH1D *hEvtHCalSumHitEne          = nullptr;
0122     TH1D *hEvtHCalSumHitDiff         = nullptr;
0123     TH2D *hEvtHCalSumHitVsPar        = nullptr;
0124     // bhcal cluster event-wise histograms
0125     TH1I *hEvtHCalNumClust           = nullptr;
0126     TH1D *hEvtHCalSumClustEne        = nullptr;
0127     TH1D *hEvtHCalSumClustDiff       = nullptr;
0128     TH2I *hEvtHCalNumClustVsHit      = nullptr;
0129     TH2D *hEvtHCalSumClustVsPar      = nullptr;
0130     // bhcal lead cluster event-wise histograms
0131     TH1I *hEvtHCalLeadClustNumHit    = nullptr;
0132     TH1D *hEvtHCalLeadClustEne       = nullptr;
0133     TH1D *hEvtHCalLeadClustDiff      = nullptr;
0134     TH2D *hEvtHCalLeadClustVsPar     = nullptr;
0135     // bhcal truth cluster event-wise histograms
0136     TH1I *hEvtHCalNumTruClust        = nullptr;
0137     TH1D *hEvtHCalSumTruClustEne     = nullptr;
0138     TH1D *hEvtHCalSumTruClustDiff    = nullptr;
0139     TH2I *hEvtHCalNumTruClustVsClust = nullptr;
0140     TH2D *hEvtHCalSumTruClustVsPar   = nullptr;
0141     // bhcal truth lead cluster event-wise histograms
0142     TH1I *hEvtHCalLeadTruClustNumHit = nullptr;
0143     TH1D *hEvtHCalLeadTruClustEne    = nullptr;
0144     TH1D *hEvtHCalLeadTruClustDiff   = nullptr;
0145     TH2D *hEvtHCalLeadTruClustVsPar  = nullptr;
0146 
0147     // scifi reconstructed hit histograms
0148     TH1I *hSciFiRecHitNLayer         = nullptr;
0149     TH1D *hSciFiRecHitEta            = nullptr;
0150     TH1D *hSciFiRecHitPhi            = nullptr;
0151     TH1D *hSciFiRecHitEne            = nullptr;
0152     TH1D *hSciFiRecHitPosZ           = nullptr;
0153     TH1D *hSciFiRecHitParDiff        = nullptr;
0154     TH2D *hSciFiRecHitPosYvsX        = nullptr;
0155     TH2D *hSciFiRecHitEtaVsPhi       = nullptr;
0156     TH2D *hSciFiRecHitVsParEne       = nullptr;
0157     TH2D *hSciFiRecHitEneVsNLayer    = nullptr;
0158     // image reconstructed hit histograms
0159     TH1I *hImageRecHitNLayer         = nullptr;
0160     TH1D *hImageRecHitEta            = nullptr;
0161     TH1D *hImageRecHitPhi            = nullptr;
0162     TH1D *hImageRecHitEne            = nullptr;
0163     TH1D *hImageRecHitPosZ           = nullptr;
0164     TH1D *hImageRecHitParDiff        = nullptr;
0165     TH2D *hImageRecHitPosYvsX        = nullptr;
0166     TH2D *hImageRecHitEtaVsPhi       = nullptr;
0167     TH2D *hImageRecHitVsParEne       = nullptr;
0168     TH2D *hImageRecHitEneVsNLayer    = nullptr;
0169     // bemc reconstructed cluster histograms
0170     TH1D *hECalClustEta              = nullptr;
0171     TH1D *hECalClustPhi              = nullptr;
0172     TH1D *hECalClustEne              = nullptr;
0173     TH1D *hECalClustPosZ             = nullptr;
0174     TH1I *hECalClustNumHit           = nullptr;
0175     TH1D *hECalClustParDiff          = nullptr;
0176     TH2D *hECalClustPosYvsX          = nullptr;
0177     TH2D *hECalClustEtaVsPhi         = nullptr;
0178     TH2D *hECalClustVsParEne         = nullptr;
0179     // scifi hit event-wise histograms
0180     TH1D *hEvtSciFiSumEne            = nullptr;
0181     TH2D *hEvtSciFiSumEneVsNLayer    = nullptr;
0182     TH2D *hEvtSciFiVsHCalHitSumEne   = nullptr;
0183     // image hit event-wise histograms
0184     TH1D *hEvtImageSumEne            = nullptr;
0185     TH2D *hEvtImageSumEneVsNLayer    = nullptr;
0186     TH2D *hEvtImageVsHCalHitSumEne   = nullptr;
0187     // bemc cluster event-wise histograms
0188     TH1I *hEvtECalNumClust           = nullptr;
0189     TH1D *hEvtECalSumClustEne        = nullptr;
0190     TH1D *hEvtECalSumClustDiff       = nullptr;
0191     TH2D *hEvtECalSumClustVsPar      = nullptr;
0192     TH2D *hEvtECalVsHCalSumClustEne  = nullptr;
0193     // bemc lead cluster event-wise histograms
0194     TH1I *hEvtECalLeadClustNumHit    = nullptr;
0195     TH1D *hEvtECalLeadClustEne       = nullptr;
0196     TH1D *hEvtECalLeadClustDiff      = nullptr;
0197     TH2D *hEvtECalLeadClustVsPar     = nullptr;
0198     TH2D *hEvtECalVsHCalLeadClustEne = nullptr;
0199 
0200     // ntuple for calibration
0201     Float_t  varsForCalibration[CONST::NCalibVars];
0202     TNtuple *ntForCalibration;
0203 
0204   public:
0205 
0206     // ctor
0207     FillBHCalCalibrationTupleProcessor() { SetTypeName(NAME_OF_THIS); }
0208 
0209     // inherited methods
0210     void InitWithGlobalRootLock() override;
0211     void ProcessSequential(const std::shared_ptr<const JEvent>& event) override;
0212     void FinishWithGlobalRootLock() override;
0213 
0214 };  // end FillBHCalCalibrationTupleProcessor definition
0215 
0216 // end ------------------------------------------------------------------------