47 produces < reco::ElectronIsolationMap >(
"Deta" ).setBranchAlias(
"deta" );
48 produces < reco::ElectronIsolationMap >(
"Dphi" ).setBranchAlias(
"dphi" );
50 produces < reco::RecoEcalCandidateIsolationMap >(
"Deta" ).setBranchAlias(
"deta" );
51 produces < reco::RecoEcalCandidateIsolationMap >(
"Dphi" ).setBranchAlias(
"dphi" );
63 desc.
add<
bool>((
"useSCRefs"),
false);
64 desc.
add<
bool>((
"useTrackProjectionToEcal"),
false);
65 desc.
add<
bool>((
"variablesAtVtx"),
true);
66 descriptions.
add((
"hltEgammaHLTElectronDetaDphiProducer"), desc);
89 for(reco::ElectronCollection::const_iterator iElectron = electronHandle->begin(); iElectron != electronHandle->end(); iElectron++){
94 detaMap.
insert(eleref, dEtaDPhi.first);
95 dphiMap.
insert(eleref, dEtaDPhi.second);
100 for(reco::RecoEcalCandidateCollection::const_iterator iRecoEcalCand = recoEcalCandHandle->begin(); iRecoEcalCand != recoEcalCandHandle->end(); iRecoEcalCand++){
105 std::pair<float,float> dEtaDPhi(999999,999999);
107 detaCandMap.
insert(recoEcalCandRef, dEtaDPhi.first);
108 dphiCandMap.
insert(recoEcalCandRef, dEtaDPhi.second);
115 iEvent.
put(detMap,
"Deta" );
116 iEvent.
put(dphMap,
"Dphi" );
120 iEvent.
put(detaCandMapForEvent,
"Deta" );
121 iEvent.
put(dphiCandMapForEvent,
"Dphi" );
130 math::XYZPoint SCcorrPosition(theClus->x()-bsPosition.x(), theClus->y()-bsPosition.y() , theClus->z()-eleref->track()->vz() );
131 float deltaeta = fabs(SCcorrPosition.eta()-eleref->track()->eta());
132 float deltaphi = 999.;
134 bool recoveryForFailingPropagation =
false;
142 deltaeta = fabs(scAtVtx.dEta());
143 deltaphi = fabs(scAtVtx.dPhi());
145 recoveryForFailingPropagation =
true;
149 const math::XYZPoint vertex(bsPosition.x(),bsPosition.y(),eleref->track()->vz());
151 float phi1= posCalc.
ecalPhi(magField,trackMom,vertex,1);
152 float phi2= posCalc.
ecalPhi(magField,trackMom,vertex,-1);
154 float deltaphi1=fabs( phi1 - theClus->position().phi() );
155 if(deltaphi1>6.283185308) deltaphi1 -= 6.283185308;
156 if(deltaphi1>3.141592654) deltaphi1 = 6.283185308-deltaphi1;
158 float deltaphi2=fabs( phi2 - theClus->position().phi() );
159 if(deltaphi2>6.283185308) deltaphi2 -= 6.283185308;
160 if(deltaphi2>3.141592654) deltaphi2 = 6.283185308-deltaphi2;
162 deltaphi = deltaphi1;
163 if(deltaphi2<deltaphi1){ deltaphi = deltaphi2;}
165 deltaphi=fabs(eleref->track()->outerPosition().phi()-theClus->phi());
166 if(deltaphi>6.283185308) deltaphi -= 6.283185308;
167 if(deltaphi>3.141592654) deltaphi = 6.283185308-deltaphi;
170 return std::make_pair(deltaeta,deltaphi);
176 for(reco::ElectronCollection::const_iterator eleIt = electronHandle->begin(); eleIt != electronHandle->end(); eleIt++){
177 if(eleIt->superCluster()==recoEcalCandRef->superCluster()){
T getParameter(std::string const &) const
virtual void beginRun(edm::Run const &, edm::EventSetup const &) override
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
std::pair< float, float > calDEtaDPhiSCTrk(reco::ElectronRef &eleref, const reco::BeamSpot::Point &BSPosition, const MagneticField *magField)
edm::EDGetTokenT< reco::RecoEcalCandidateCollection > recoEcalCandidateProducer_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const MagneticField * magField_
Global3DPoint GlobalPoint
GlobalPoint globalPosition() const
math::XYZPoint Point
point in the space
edm::Ref< ElectronCollection > ElectronRef
reference to an object in a collection of Electron objects
edm::EDGetTokenT< reco::BeamSpot > bsProducer_
~EgammaHLTElectronDetaDphiProducer()
double ecalPhi(const MagneticField *magField, const math::XYZVector &momentum, const math::XYZPoint &vertex, const int charge)
edm::EDGetTokenT< reco::ElectronCollection > electronProducer_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
ParameterDescriptionBase * add(U const &iLabel, T const &value)
EgammaHLTElectronDetaDphiProducer(const edm::ParameterSet &)
void insert(const key_type &k, const data_type &v)
insert an association
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
T const * product() const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
TrajectoryStateOnSurface stateOnSurface(const GlobalPoint &point) const
bool useTrackProjectionToEcal_
static reco::ElectronRef getEleRef(const reco::RecoEcalCandidateRef &recoEcalCandRef, const edm::Handle< reco::ElectronCollection > &electronHandle)
virtual void produce(edm::Event &, const edm::EventSetup &) override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)