43 produces < reco::RecoEcalCandidateIsolationMap >(
"Deta" ).setBranchAlias(
"deta" );
44 produces < reco::RecoEcalCandidateIsolationMap >(
"DetaSeed" ).setBranchAlias(
"detaseed" );
45 produces < reco::RecoEcalCandidateIsolationMap >(
"Dphi" ).setBranchAlias(
"dphi" );
46 produces < reco::RecoEcalCandidateIsolationMap >(
"OneOESuperMinusOneOP" );
47 produces < reco::RecoEcalCandidateIsolationMap >(
"OneOESeedMinusOneOP" );
48 produces < reco::RecoEcalCandidateIsolationMap >(
"MissingHits" ).setBranchAlias(
"missinghits" );
49 produces < reco::RecoEcalCandidateIsolationMap >(
"Chi2" ).setBranchAlias(
"chi2" );
50 produces < reco::RecoEcalCandidateIsolationMap >(
"ValidHits" ).setBranchAlias(
"validhits" );
61 desc.
add<
int>((
"upperTrackNrToRemoveCut"), 9999);
62 desc.
add<
int>((
"lowerTrackNrToRemoveCut"), -1);
63 descriptions.
add(
"hltEgammaHLTGsfTrackVarProducer", desc);
97 for(reco::RecoEcalCandidateCollection::const_iterator iRecoEcalCand = recoEcalCandHandle->begin(); iRecoEcalCand != recoEcalCandHandle->end(); iRecoEcalCand++){
103 std::vector<const reco::GsfTrack*> gsfTracks;
105 for(reco::ElectronCollection::const_iterator eleIt = electronHandle->begin(); eleIt != electronHandle->end(); eleIt++){
106 if(eleIt->superCluster()==scRef){
107 gsfTracks.push_back(&*eleIt->gsfTrack());
111 for(reco::GsfTrackCollection::const_iterator trkIt =gsfTracksHandle->begin();trkIt!=gsfTracksHandle->end();++trkIt){
116 if(scRefFromTrk==scRef){
117 gsfTracks.push_back(&*trkIt);
123 int validHitsValue = 9999999;
124 float chi2Value = 9999999.;
125 float missingHitsValue = 9999999;
126 float dEtaInValue=999999;
127 float dEtaSeedInValue=999999;
128 float dPhiInValue=999999;
129 float oneOverESuperMinusOneOverPValue=999999;
130 float oneOverESeedMinusOneOverPValue=999999;
136 missingHitsValue = 0;
143 missingHitsValue = 0;
147 for(
size_t trkNr=0;trkNr<gsfTracks.size();trkNr++){
149 GlobalPoint scPos(scRef->x(),scRef->y(),scRef->z());
154 float trkP = gsfTracks[trkNr]->p();
155 if(scRef->energy()!=0 && trkP!=0){
156 if(fabs(1/scRef->energy() - 1/trkP)<oneOverESuperMinusOneOverPValue) oneOverESuperMinusOneOverPValue =fabs(1/scRef->energy() - 1/trkP);
158 if(scRef->seed().isNonnull() && scRef->seed()->energy()!=0 && trkP!=0){
159 if(fabs(1/scRef->seed()->energy() - 1/trkP)<oneOverESeedMinusOneOverPValue) oneOverESeedMinusOneOverPValue =fabs(1/scRef->seed()->energy() - 1/trkP);
169 if (gsfTracks[trkNr]->numberOfValidHits() < validHitsValue)
170 validHitsValue = gsfTracks[trkNr]->numberOfValidHits();
172 if (gsfTracks[trkNr]->numberOfValidHits() < chi2Value)
173 chi2Value = gsfTracks[trkNr]->normalizedChi2();
175 if (fabs(scAtVtx.dEta())<dEtaInValue)
176 dEtaInValue=fabs(scAtVtx.dEta());
178 if (fabs(scAtVtx.dEta())<dEtaSeedInValue)
179 dEtaSeedInValue = fabs(scAtVtx.dEta()-scRef->position().eta()+scRef->seed()->position().eta());
181 if (fabs(scAtVtx.dPhi())<dPhiInValue)
182 dPhiInValue=fabs(scAtVtx.dPhi());
186 dEtaMap.
insert(recoEcalCandRef, dEtaInValue);
187 dEtaSeedMap.
insert(recoEcalCandRef, dEtaSeedInValue);
188 dPhiMap.
insert(recoEcalCandRef, dPhiInValue);
189 oneOverESuperMinusOneOverPMap.
insert(recoEcalCandRef,oneOverESuperMinusOneOverPValue);
190 oneOverESeedMinusOneOverPMap.
insert(recoEcalCandRef,oneOverESeedMinusOneOverPValue);
191 missingHitsMap.
insert(recoEcalCandRef, missingHitsValue);
192 validHitsMap.
insert(recoEcalCandRef, validHitsValue);
193 chi2Map.
insert(recoEcalCandRef, chi2Value);
205 iEvent.
put(dEtaMapForEvent,
"Deta" );
206 iEvent.
put(dEtaSeedMapForEvent,
"DetaSeed" );
207 iEvent.
put(dPhiMapForEvent,
"Dphi" );
208 iEvent.
put(oneOverESuperMinusOneOverPMapForEvent,
"OneOESuperMinusOneOP");
209 iEvent.
put(oneOverESeedMinusOneOverPMapForEvent,
"OneOESeedMinusOneOP");
210 iEvent.
put(missingHitsForEvent,
"MissingHits");
211 iEvent.
put(validHitsForEvent,
"ValidHits");
212 iEvent.
put(chi2ForEvent,
"Chi2");
217 cacheIDTDGeom_(rhs.cacheIDTDGeom_),
218 cacheIDMagField_(rhs.cacheIDMagField_),
219 magField_(rhs.magField_),
220 trackerHandle_(rhs.trackerHandle_),
221 mtsMode_(rhs.mtsMode_)
238 delete mtsTransform_;
240 else mtsTransform_ =0;
247 bool updateField(
false);
254 bool updateGeometry(
false);
256 updateGeometry =
true;
261 if ( updateField || updateGeometry || !mtsTransform_ ) {
262 delete mtsTransform_;
272 mtsMode()->positionFromModeCartesian(posTSOS,extrapolatedPos);
273 return extrapolatedPos;
281 mtsMode()->momentumFromModeCartesian(posTSOS,extrapolatedMom);
282 return extrapolatedMom;
T getParameter(std::string const &) const
unsigned long long cacheIdentifier() const
virtual void produce(edm::Event &, const edm::EventSetup &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::EDGetTokenT< reco::ElectronCollection > inputCollectionTag1_
edm::EDGetTokenT< reco::GsfTrackCollection > inputCollectionTag2_
TrackExtrapolator trackExtrapolator_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
~EgammaHLTGsfTrackVarProducer()
EgammaHLTGsfTrackVarProducer(const edm::ParameterSet &)
int upperTrackNrToRemoveCut_
edm::EDGetTokenT< reco::RecoEcalCandidateCollection > recoEcalCandTag_
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void insert(const key_type &k, const data_type &v)
insert an association
REF castTo() const
cast to a concrete type
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
int lowerTrackNrToRemoveCut_
const Point & position() const
position