16 double deltaR2(
double eta0,
double phi0,
double eta,
double phi){
20 return dphi*dphi+(eta-eta0)*(eta-eta0);
23 double deltaPhi(
double phi0,
double phi){
30 class ParticlePtGreater{
34 return p1->momentum().perp() > p2->momentum().perp();
41 token_(consumes<
edm::
HepMCProduct>(
edm::InputTag(iConfig.getUntrackedParameter(
"moduleLabel",
std::
string(
"generator")),
"unsmeared"))),
42 etaMax(iConfig.getUntrackedParameter<double>(
"MaxPhotonEta", 2.8)),
43 ptSeed(iConfig.getUntrackedParameter<double>(
"PhotonSeedPt", 5.)),
44 ptMin(iConfig.getUntrackedParameter<double>(
"MinPhotonPt")),
45 ptMax(iConfig.getUntrackedParameter<double>(
"MaxPhotonPt")),
46 dphiMin(iConfig.getUntrackedParameter<double>(
"MinDeltaPhi", -1)/180*
M_PI),
47 detaMax(iConfig.getUntrackedParameter<double>(
"MaxDeltaEta", 10.)),
48 etaPhotonCut2(iConfig.getUntrackedParameter<double>(
"MinPhotonEtaForwardJet", 1.3)),
49 cone(0.5),ebEtaMax(1.479),
50 maxnumberofeventsinrun(iConfig.getUntrackedParameter<
int>(
"MaxEvents",10)){
75 std::list<const HepMC::GenParticle *> seeds;
78 for ( HepMC::GenEvent::particle_const_iterator
p = myGenEvent->particles_begin();
p != myGenEvent->particles_end(); ++
p ) {
80 if ( (*p)->pdg_id()==22 && (*p)->status()==1
81 && (*p)->momentum().perp() >
ptSeed 86 seeds.sort(ParticlePtGreater());
95 for(std::list<const HepMC::GenParticle *>::const_iterator is=
96 seeds.begin(); is!=seeds.end(); is++){
98 double etaPhoton=(*is)->momentum().eta();
99 double phiPhoton=(*is)->momentum().phi();
108 HepMC::GenEvent::particle_const_iterator ppp = myGenEvent->particles_begin();
109 for(
int i=0;
i<6;++
i) ppp++;
115 particle7->momentum().phi()));
117 particle8->momentum().phi()));
133 if(jetline==8) etaJet = particle8->momentum().eta();
134 else etaJet = particle7->momentum().eta();
143 if (etaPhoton<eta1 ||etaPhoton>eta2) {
152 tgx=(*is)->momentum().px()/(*is)->momentum().pz();
153 tgy=(*is)->momentum().py()/(*is)->momentum().pz();
157 double etPhotonCharged=0;
159 double etConeCharged=0;
160 double ptMaxHadron=0;
163 for ( HepMC::GenEvent::particle_const_iterator
p = myGenEvent->particles_begin();
p != myGenEvent->particles_end(); ++
p ) {
165 if ( (*p)->status()!=1 )
continue;
166 int pid= (*p)->pdg_id();
168 if (apid>11 && apid<21)
continue;
169 double eta=(*p)->momentum().eta();
170 double phi=(*p)->momentum().phi();
172 double pt=(*p)->momentum().perp();
180 int charge3 = ((pdt->particle((*p)->pdg_id()))->ID().threeCharge());
184 if(charge3 && pt<2) etConeCharged+=
pt;
191 else if(
std::abs((*p)->momentum().px()/(*p)->momentum().pz() - tgx)
193 std::abs((*p)->momentum().py()/(*p)->momentum().pz() - tgy)
197 if(charge3 && pt<2) etPhotonCharged+=
pt;
198 if(apid>100 && apid!=310 && pt>ptMaxHadron) ptMaxHadron=
pt;
202 if(etPhoton<ptMin ||etPhoton>
ptMax) {
edm::EDGetTokenT< edm::HepMCProduct > token_
bool filter(edm::Event &, const edm::EventSetup &) override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
bool getData(T &iHolder) const
~PythiaFilterGammaJetWithOutBg() override
Abs< T >::type abs(const T &t)
bool operator()(const HepMC::GenParticle *a, const HepMC::GenParticle *b) const
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
const HepMC::GenEvent * GetEvent() const
PythiaFilterGammaJetWithOutBg(const edm::ParameterSet &)
bool accepted(std::vector< std::string_view > const &, std::string_view)