55 std::vector<edm::ParameterSet> SelectionParameters = iConfig.
getParameter<std::vector<edm::ParameterSet> >(
"SelectionParameters");
56 for(
unsigned int i=0;
i<SelectionParameters.size();
i++){
61 produces<susybsm::HSCParticleCollection >();
82 using namespace susybsm;
99 std::auto_ptr<susybsm::HSCParticleCollection>
result(hscp);
102 std::auto_ptr<susybsm::HSCPCaloInfoCollection> caloInfoCollaptr(caloInfoColl);
109 for(susybsm::HSCParticleCollection::iterator hscpcandidate = hscp->begin(); hscpcandidate != hscp->end(); ++hscpcandidate) {
112 if(track.
isNull())
continue;
113 float dRMin=1000;
int found = -1;
114 for(
unsigned int t=0;
t<trackIsoCollectionHandle->size();
t++) {
116 if( fabs( (1.0/track->pt())-(1.0/Isotrack->pt())) >
maxInvPtDiff)
continue;
117 float dR =
deltaR(track->momentum(), Isotrack->momentum());
118 if(dR <=
minDR && dR < dRMin){ dRMin=dR; found =
t;}
120 if(found>=0)hscpcandidate->setTrackIso(
reco::TrackRef( trackIsoCollectionHandle, found ));
125 for(susybsm::HSCParticleCollection::iterator hscpcandidate = hscp->begin(); hscpcandidate != hscp->end(); ++hscpcandidate) {
131 for(susybsm::HSCParticleCollection::iterator hscpcandidate = hscp->begin(); hscpcandidate != hscp->end(); ++hscpcandidate) {
137 for(susybsm::HSCParticleCollection::iterator hscpcandidate = hscp->begin(); hscpcandidate != hscp->end(); ++hscpcandidate) {
147 caloInfoColl->resize(hscp->size());
148 for(susybsm::HSCParticleCollection::iterator hscpcandidate = hscp->begin(); hscpcandidate != hscp->end(); ++hscpcandidate, Index++) {
153 for(
int i=0;
i<(int)hscp->size();
i++) {
154 susybsm::HSCParticleCollection::iterator hscpcandidate = hscp->begin() +
i;
155 bool decision =
false;
158 hscp->erase(hscpcandidate);
172 for(
int i=0;
i<(int)hscp->size();
i++) {
173 susybsm::HSCParticleCollection::iterator hscpcandidate = hscp->begin() +
i;
205 std::vector<HSCParticle> HSCPCollection;
208 std::vector<reco::TrackRef>
tracks;
209 for(
unsigned int i=0;
i<trackCollectionHandle->size();
i++){
212 tracks.push_back( track );
216 for(
unsigned int m=0;
m<muonCollectionHandle->size();
m++){
218 if(muon->p()<
minMuP )
continue;
219 TrackRef innertrack = muon->innerTrack();
220 if(innertrack.
isNull())
continue;
224 float dRMin=1000;
int found = -1;
225 for(
unsigned int t=0;
t<tracks.size();
t++) {
227 if( fabs( (1.0/innertrack->pt())-(1.0/track->pt())) >
maxInvPtDiff)
continue;
228 float dR =
deltaR(innertrack->momentum(), track->momentum());
229 if(dR <=
minDR && dR < dRMin){ dRMin=dR; found =
t;}
237 tracks.erase(tracks.begin()+
found);
239 HSCPCollection.push_back(candidate);
243 for(
unsigned int m=0;
m<muonCollectionHandle->size();
m++){
245 if(muon->p()<
minMuP)
continue;
246 TrackRef innertrack = muon->innerTrack();
250 float dRMin=1000;
int found = -1;
251 for(
unsigned int t=0;
t<tracks.size();
t++) {
253 if( fabs( (1.0/muon->pt())-(1.0/track->pt())) >
maxInvPtDiff)
continue;
254 float dR =
deltaR(muon->momentum(), track->momentum());
255 if(dR <=
minDR && dR < dRMin){ dRMin=dR; found =
t;}
263 tracks.erase(tracks.begin()+
found);
265 HSCPCollection.push_back(candidate);
269 for(
unsigned int i=0;
i<tracks.size();
i++){
272 HSCPCollection.push_back(candidate);
275 return HSCPCollection;
void setMuon(const reco::MuonRef &data)
T getParameter(std::string const &) const
std::vector< HSCParticle > getHSCPSeedCollection(edm::Handle< reco::TrackCollection > &trackCollectionHandle, edm::Handle< reco::MuonCollection > &muonCollectionHandle)
std::vector< HSCPCaloInfo > HSCPCaloInfoCollection
#define DEFINE_FWK_MODULE(type)
void addInfoToCandidate(HSCParticle &candidate, const edm::Event &iEvent, const edm::EventSetup &iSetup)
BetaCalculatorMUON * beta_calculator_MUON
BetaCalculatorTK * beta_calculator_TK
BetaCalculatorECAL * beta_calculator_ECAL
bool isNonnull() const
Checks for non-null.
edm::Ref< HSCPCaloInfoCollection > HSCPCaloInfoRef
std::vector< HSCParticle > HSCParticleCollection
bool isNull() const
Checks for null.
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
edm::Ref< MuonCollection > MuonRef
presistent reference to a Muon
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
double deltaR(double eta1, double eta2, double phi1, double phi2)
void addInfoToCandidate(HSCParticle &candidate, edm::Event &iEvent, const edm::EventSetup &iSetup)
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
BetaCalculatorRPC * beta_calculator_RPC
std::vector< CandidateSelector * > Selectors
void addInfoToCandidate(HSCParticle &candidate, edm::Event &iEvent, const edm::EventSetup &iSetup)
edm::InputTag m_trackIsoTag
HSCParticleProducer(const edm::ParameterSet &)
virtual bool filter(edm::Event &, const edm::EventSetup &)
void addInfoToCandidate(HSCParticle &candidate, edm::Handle< reco::TrackCollection > &tracks, edm::Event &iEvent, const edm::EventSetup &iSetup, HSCPCaloInfo &caloInfo)
void setTrack(const reco::TrackRef &data)