00001
00002
00003
00004
00005
00006
00007
00008 #ifndef CalibrationIsolatedParticlesGenSimInfo_h
00009 #define CalibrationIsolatedParticlesGenSimInfo_h
00010
00011
00012 #include <memory>
00013 #include <map>
00014 #include <vector>
00015 #include <string>
00016
00017
00018 #include "FWCore/Framework/interface/Frameworkfwd.h"
00019
00020 #include "FWCore/Framework/interface/Event.h"
00021
00022 #include "DataFormats/Common/interface/Handle.h"
00023 #include "DataFormats/DetId/interface/DetId.h"
00024 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00025 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h"
00026 #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
00027 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00028
00029 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00030 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00031 #include "Geometry/CaloTopology/interface/HcalTopology.h"
00032
00033 #include "Calibration/IsolatedParticles/interface/CaloPropagateTrack.h"
00034
00035 namespace spr{
00036
00037 struct genSimInfo {
00038 genSimInfo() {
00039 maxNearP=-1.0;
00040 cHadronEne=nHadronEne=eleEne=muEne=photonEne=0.0;
00041 isChargedIso=true;
00042 for (int i=0; i<3; ++i) cHadronEne_[i]=0.0;
00043 }
00044 double maxNearP;
00045 double cHadronEne, nHadronEne, eleEne, muEne, photonEne;
00046 bool isChargedIso;
00047 double cHadronEne_[3];
00048 };
00049
00050 void eGenSimInfo(const DetId& coreDet, HepMC::GenEvent::particle_const_iterator trkItr, std::vector<spr::propagatedGenTrackID>& trackIds, const CaloGeometry* geo, const CaloTopology* caloTopology, int ieta, int iphi, spr::genSimInfo & info, bool debug=false);
00051
00052 void eGenSimInfo(const DetId& coreDet, HepMC::GenEvent::particle_const_iterator trkItr, std::vector<spr::propagatedGenTrackID>& trackIds, const CaloGeometry* geo, const CaloTopology* caloTopology, double dR, const GlobalVector& trackMom, spr::genSimInfo & info, bool debug=false);
00053
00054 void eGenSimInfo(const DetId& coreDet, reco::GenParticleCollection::const_iterator trkItr, std::vector<spr::propagatedGenParticleID>& trackIds, const CaloGeometry* geo, const CaloTopology* caloTopology, int ieta, int iphi, spr::genSimInfo & info, bool debug=false);
00055
00056 void eGenSimInfo(const DetId& coreDet, reco::GenParticleCollection::const_iterator trkItr, std::vector<spr::propagatedGenParticleID>& trackIds, const CaloGeometry* geo, const CaloTopology* caloTopology, double dR, const GlobalVector& trackMom, spr::genSimInfo & info, bool debug=false);
00057
00058 void hGenSimInfo(const DetId& coreDet, HepMC::GenEvent::particle_const_iterator trkItr, std::vector<spr::propagatedGenTrackID>& trackIds, const HcalTopology* topology, int ieta, int iphi, spr::genSimInfo & info, bool includeHO=false, bool debug=false);
00059
00060 void hGenSimInfo(const DetId& coreDet, HepMC::GenEvent::particle_const_iterator trkItr, std::vector<spr::propagatedGenTrackID>& trackIds, const CaloGeometry* geo, const HcalTopology* topology, double dR, const GlobalVector& trackMom, spr::genSimInfo & info, bool includeHO=false, bool debug=false);
00061
00062 void hGenSimInfo(const DetId& coreDet, reco::GenParticleCollection::const_iterator trkItr, std::vector<spr::propagatedGenParticleID>& trackIds, const HcalTopology* topology, int ieta, int iphi, spr::genSimInfo & info, bool includeHO=false, bool debug=false);
00063
00064 void hGenSimInfo(const DetId& coreDet, reco::GenParticleCollection::const_iterator trkItr, std::vector<spr::propagatedGenParticleID>& trackIds, const CaloGeometry* geo, const HcalTopology* topology, double dR, const GlobalVector& trackMom, spr::genSimInfo & info, bool includeHO=false, bool debug=false);
00065
00066 void cGenSimInfo(std::vector<DetId>& vdets, HepMC::GenEvent::particle_const_iterator trkItr, std::vector<spr::propagatedGenTrackID>& trackIds, bool ifECAL, spr::genSimInfo & info, bool debug=false);
00067
00068 void cGenSimInfo(std::vector<DetId>& vdets, reco::GenParticleCollection::const_iterator trkItr, std::vector<spr::propagatedGenParticleID>& trackIds, bool ifECAL, spr::genSimInfo & info, bool debug=false);
00069
00070 void cGenSimInfo(int charge, int pdgid, double p, spr::genSimInfo & info, bool debug=false);
00071 }
00072
00073 #endif