41 desc.
add<
double>(
"lowerMassCut", 8.0);
42 desc.
add<
double>(
"upperMassCut", 11.0);
43 desc.
add<
int>(
"nZcandcut", 1);
48 descriptions.
add(
"hltPMMassFilter", desc);
86 std::vector<TLorentzVector> pEleCh1;
87 std::vector<TLorentzVector> pEleCh2;
88 std::vector<double>
charge;
89 std::vector<double> etaOrig;
95 vector< Ref< ElectronCollection > >
electrons;
102 TLorentzVector pThisEle(refele->px(), refele->py(),
103 refele->pz(), refele->energy() );
104 pEleCh1.push_back( pThisEle );
105 charge.push_back( refele->charge() );
108 for(
unsigned int jj=0;
jj<electrons.size();
jj++){
110 TLorentzVector p1Ele = pEleCh1.at(
jj);
111 for(
unsigned int ii=
jj+1;
ii<electrons.size();
ii++){
113 TLorentzVector p2Ele = pEleCh1.at(
ii);
115 if(fabs(p1Ele.E() - p2Ele.E()) < 0.00001)
continue;
118 TLorentzVector pTot = p1Ele + p2Ele;
119 double mass = pTot.M();
123 refele = electrons[
ii];
125 refele = electrons[
jj];
135 vector< Ref< RecoEcalCandidateCollection > > scs;
139 for (
auto &
i : scs) {
144 pEleCh1.push_back( pscPos );
147 pEleCh2.push_back( pscEle );
148 etaOrig.push_back( sc->eta() );
152 for(
unsigned int jj=0;
jj<scs.size();
jj++){
154 TLorentzVector p1Ele = pEleCh1.at(
jj);
155 for(
unsigned int ii=0;
ii<scs.size();
ii++){
157 TLorentzVector p2Ele = pEleCh2.at(
ii);
159 if(fabs(p1Ele.E() - p2Ele.E()) < 0.00001)
continue;
161 TLorentzVector pTot = p1Ele + p2Ele;
162 double mass = pTot.M();
188 float energy = sc->energy();
193 TLorentzVector theApproxMom(theFTS.
momentum().
x(),
196 sqrt(theApproxMomMod + 2.61121E-7));
197 return theApproxMom ;
T getParameter(std::string const &) const
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
T getUntrackedParameter(std::string const &, T const &) const
static FreeTrajectoryState get(MagneticField const &magField, GlobalPoint const &xmeas, GlobalPoint const &xvert, float momentum, TrackCharge charge)
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
~HLTPMMassFilter() override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
HLTPMMassFilter(const edm::ParameterSet &)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
#define DEFINE_FWK_MODULE(type)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
GlobalVector momentum() const
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const Point & position() const
position
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
T const * product() const
TLorentzVector approxMomAtVtx(const MagneticField *magField, const GlobalPoint &xvert, const reco::SuperClusterRef sc, int charge) const