9 #include "HepMC/GenVertex.h" 46 for (HepMC::GenEvent::particle_const_iterator
i = MCEvt->particles_begin();
i != MCEvt->particles_end(); ++
i) {
47 int myId = (*i)->pdg_id();
48 if (
abs(myId) == 13) {
50 HepMC::GenVertex *
pv = (*i)->production_vertex();
51 const HepMC::FourVector &vertex = pv->position();
53 HepMC::FourVector momentum = (*i)->momentum();
63 hit1 =
Sci_trig(vertex, momentum, S1);
64 hit2 =
Sci_trig(vertex, momentum, S2);
65 hit3 =
Sci_trig(vertex, momentum, S3);
69 if ((hit1 && hit2) || (hit3 && hit2)) {
84 hit1 =
Sci_trig(vertex, momentum, S1);
85 hit2 =
Sci_trig(vertex, momentum, S2);
86 hit3 =
Sci_trig(vertex, momentum, S3);
90 if ((hit1 && hit2) || (hit3 && hit2)) {
115 hit1 =
Sci_trig(vertex, momentum, S1);
116 hit2 =
Sci_trig(vertex, momentum, S2);
117 hit3 =
Sci_trig(vertex, momentum, S3);
118 hit4 =
Sci_trig(vertex, momentum, S4);
121 if ((hit1 && hit2) || (hit3 && hit2) || (hit1 && hit4) || (hit3 && hit4)) {
141 const HepMC::FourVector &momentum,
142 const HepMC::FourVector &
S) {
143 float x0 = vertex.x();
144 float y0 = vertex.y();
145 float z0 = vertex.z();
146 float px0 = momentum.x();
147 float py0 = momentum.y();
148 float pz0 = momentum.z();
153 float zs = (Sy - y0) * (pz0 / py0) + z0;
154 float xs = (Sy - y0) * (px0 / py0) + x0;
160 if ((xs < Sx + 500 && xs > Sx - 500) && (zs < Sz + 500 && zs > Sz - 500)) {
T getParameter(std::string const &) const
std::vector< double > trigS2
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< double > trigS3
std::vector< double > trigS1
std::vector< double > trigS4
Abs< T >::type abs(const T &t)
Namespace of DDCMS conversion namespace.
bool filter(edm::Event &iEvent, edm::EventSetup const &c) override
const HepMC::GenEvent * GetEvent() const
bool Sci_trig(const HepMC::FourVector &, const HepMC::FourVector &, const HepMC::FourVector &)
edm::EDGetTokenT< edm::HepMCProduct > m_Token