File indexing completed on 2024-09-27 07:03:26
0001
0002
0003 #ifdef INCLUDE_PODIO
0004
0005 #pragma once
0006
0007
0008 #include "podio/EventStore.h"
0009 #include "podio/ROOTReader.h"
0010 #include "podio/CollectionBase.h"
0011 #include "edm4hep/utils/kinematics.h"
0012
0013
0014 #include "edm4hep/MCParticleCollection.h"
0015 #include "edm4eic/ReconstructedParticleCollection.h"
0016 #include "edm4eic/MCRecoParticleAssociationCollection.h"
0017 #include "edm4eic/InclusiveKinematicsCollection.h"
0018
0019
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
0032 bool crossCheckKinematics;
0033
0034
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
0046 void PrintParticle(const edm4hep::MCParticle& P);
0047 void PrintParticle(const edm4eic::ReconstructedParticle& P);
0048
0049
0050 protected:
0051
0052
0053 int GetReconstructedPDG(
0054 const edm4hep::MCParticle& simPart,
0055 const edm4eic::ReconstructedParticle& recPart,
0056 bool& usedTruth
0057 );
0058
0059
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