Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-09-27 07:03:26

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2023 Christopher Dilks
0003 #ifdef INCLUDE_PODIO
0004 
0005 #pragma once
0006 
0007 // data model
0008 #include "podio/EventStore.h"
0009 #include "podio/ROOTReader.h"
0010 #include "podio/CollectionBase.h"
0011 #include "edm4hep/utils/kinematics.h"
0012 
0013 // data model collections
0014 #include "edm4hep/MCParticleCollection.h"
0015 #include "edm4eic/ReconstructedParticleCollection.h"
0016 #include "edm4eic/MCRecoParticleAssociationCollection.h"
0017 #include "edm4eic/InclusiveKinematicsCollection.h"
0018 
0019 // epic-analysis
0020 #include "Analysis.h"
0021 
0022 
0023 class AnalysisEpicPodio : public Analysis
0024 {
0025   public:
0026     AnalysisEpicPodio(TString infileName_="", TString outfilePrefix_="");
0027     ~AnalysisEpicPodio();
0028 
0029     void Execute() override;
0030 
0031     // settings
0032     bool crossCheckKinematics;
0033 
0034     // return Lorentz vector for a given particle
0035     template <class ParticleType>
0036     TLorentzVector GetP4(ParticleType& P) {
0037       return TLorentzVector(
0038           P.getMomentum().x,
0039           P.getMomentum().y,
0040           P.getMomentum().z,
0041           P.getEnergy()
0042           );
0043     }
0044 
0045     // printers
0046     void PrintParticle(const edm4hep::MCParticle& P);
0047     void PrintParticle(const edm4eic::ReconstructedParticle& P);
0048 
0049 
0050   protected:
0051 
0052     // get PDG from reconstructed particle
0053     int GetReconstructedPDG(
0054         const edm4hep::MCParticle& simPart,
0055         const edm4eic::ReconstructedParticle& recPart,
0056         bool& usedTruth
0057         );
0058     // common loop over Reconstructed Particle <-> MC Particle associations
0059     // payload signature: (simPart, recPart, reconstructed PDG)
0060     void LoopMCRecoAssocs(
0061         const edm4eic::MCRecoParticleAssociationCollection& mcRecAssocs,
0062         std::function<void(const edm4hep::MCParticle&, const edm4eic::ReconstructedParticle&, int)> payload,
0063         bool printParticles=false
0064         );
0065 
0066   private:
0067     podio::ROOTReader podioReader;
0068     podio::EventStore evStore;
0069 
0070     ClassDefOverride(AnalysisEpicPodio,1);
0071 };
0072 
0073 #endif