44 inputTagConvBremGsfRecTracks_
53 inputTagPFConversions_
59 inputTagPFClustersECAL_
62 inputTagPFClustersHCAL_
68 inputTagPFClustersHFEM_
71 inputTagPFClustersHFHAD_
77 useEGPhotons_ = iConfig.
getParameter<
bool>(
"useEGPhotons");
94 useConversions_ = iConfig.
getParameter<
bool>(
"useConversions");
96 useConvBremGsfTracks_ = iConfig.
getParameter<
bool>(
"useConvBremGsfTracks");
98 bool useConvBremPFRecTracks = iConfig.
getParameter<
bool>(
"useConvBremPFRecTracks");
104 produces<reco::PFBlockCollection>();
107 useKDTreeTrackEcalLinker_ = iConfig.
getParameter<
bool>(
"useKDTreeTrackEcalLinker");
112 std::vector<double> DPtovPtCut
113 = iConfig.
getParameter<std::vector<double> >(
"pf_DPtoverPt_Cut");
114 if (DPtovPtCut.size()!=5)
116 edm::LogError(
"MisConfiguration")<<
" vector pf_DPtoverPt_Cut has to be of size 5";
120 std::vector<unsigned> NHitCut
121 = iConfig.
getParameter<std::vector<unsigned> >(
"pf_NHit_Cut");
122 if (NHitCut.size()!=5)
124 edm::LogError(
"MisConfiguration")<<
" vector pf_NHit_Cut has to be of size 5";
131 int nuclearInteractionsPurity
132 = iConfig.
getParameter<
unsigned>(
"nuclearInteractionsPurity");
135 std::vector<double> EGPhotonSelectionCuts ;
138 EGPhotonSelectionCuts = iConfig.
getParameter<std::vector<double> >(
"PhotonSelectionCuts");
142 if (nuclearInteractionsPurity > 3 || nuclearInteractionsPurity < 1) {
143 nuclearInteractionsPurity = 1;
144 edm::LogInfo(
"PFBlockProducer") <<
"NI purity not properly implemented. Set it to the strongest level " << nuclearInteractionsPurity << endl;
146 vector<string> securityLevel;
147 securityLevel.push_back(
"isNucl"); securityLevel.push_back(
"isNucl && isNuclLoose"); securityLevel.push_back(
"isNucl && isNuclLoose && isNuclKink");
148 edm::LogInfo(
"PFBlockProducer") <<
"NI interactions are corrected in PFlow for " << securityLevel[nuclearInteractionsPurity-1].c_str() << endl;
152 pfBlockAlgo_.setParameters( DPtovPtCut,
154 useConvBremPFRecTracks,
156 nuclearInteractionsPurity,
158 EGPhotonSelectionCuts );
160 pfBlockAlgo_.setDebug(debug_);
163 pfBlockAlgo_.setUseOptimization(useKDTreeTrackEcalLinker_);
167 pfBlockAlgo_.setHOTag(useHO_);
190 <<
" in run "<<iEvent.
id().
run()<<endl;
201 LogError(
"PFBlockProducer")<<
" cannot get rectracks: "
202 <<inputTagRecTracks_<<endl;
210 found = iEvent.
getByLabel(inputTagGsfRecTracks_,GsfrecTracks);
213 LogError(
"PFBlockProducer")<<
" cannot get Gsfrectracks: "
214 << inputTagGsfRecTracks_ <<endl;
220 if(useConvBremGsfTracks_) {
221 found = iEvent.
getByLabel(inputTagConvBremGsfRecTracks_,convBremGsfrecTracks);
224 LogError(
"PFBlockProducer")<<
" cannot get ConvBremGsfrectracks: "
225 << inputTagConvBremGsfRecTracks_ <<endl;
233 found = iEvent.
getByLabel(inputTagRecMuons_, recMuons);
247 found = iEvent.
getByLabel(inputTagPFNuclear_, pfNuclears);
249 LogError(
"PFBlockProducer")<<
" cannot get PFNuclearInteractions : "
250 <<inputTagPFNuclear_<<endl;
255 if( useConversions_ ) {
256 found = iEvent.
getByLabel(inputTagPFConversions_, pfConversions);
259 LogError(
"PFBlockProducer")<<
" cannot get PFConversions : "
260 <<inputTagPFConversions_<<endl;
267 found = iEvent.
getByLabel(inputTagPFV0_, pfV0);
270 LogError(
"PFBlockProducer")<<
" cannot get PFV0 : "
271 <<inputTagPFV0_<<endl;
280 found = iEvent.
getByLabel(inputTagPFClustersECAL_,
283 LogError(
"PFBlockProducer")<<
" cannot get ECAL clusters: "
284 <<inputTagPFClustersECAL_<<endl;
288 found = iEvent.
getByLabel(inputTagPFClustersHCAL_,
291 LogError(
"PFBlockProducer")<<
" cannot get HCAL clusters: "
292 <<inputTagPFClustersHCAL_<<endl;
296 found = iEvent.
getByLabel(inputTagPFClustersHO_,
299 LogError(
"PFBlockProducer")<<
" cannot get HO clusters: "
300 <<inputTagPFClustersHO_<<endl;
304 found = iEvent.
getByLabel(inputTagPFClustersHFEM_,
307 LogError(
"PFBlockProducer")<<
" cannot get HFEM clusters: "
308 <<inputTagPFClustersHFEM_<<endl;
311 found = iEvent.
getByLabel(inputTagPFClustersHFHAD_,
314 LogError(
"PFBlockProducer")<<
" cannot get HFHAD clusters: "
315 <<inputTagPFClustersHFHAD_<<endl;
319 found = iEvent.
getByLabel(inputTagPFClustersPS_,
322 LogError(
"PFBlockProducer")<<
" cannot get PS clusters: "
323 <<inputTagPFClustersPS_<<endl;
333 if(!found && useEGPhotons_ )
334 LogError(
"PFBlockProducer")<<
" cannot get photons"
335 << inputTagEGPhotons_ << endl;
338 pfBlockAlgo_.setInput( recTracks,
347 pfBlockAlgo_.setInput( recTracks,
349 convBremGsfrecTracks,
363 pfBlockAlgo_.findBlocks();
367 str<<pfBlockAlgo_<<endl;
368 LogInfo(
"PFBlockProducer") << str.str()<<endl;
371 auto_ptr< reco::PFBlockCollection >
372 pOutputBlockCollection( pfBlockAlgo_.transferBlocks() );
374 iEvent.
put(pOutputBlockCollection);
377 <<
" in run "<<iEvent.
id().
run()<<endl;
T getParameter(std::string const &) const
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
PFBlockProducer(const edm::ParameterSet &)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
virtual void beginRun(edm::Run &r, const edm::EventSetup &c)
virtual void produce(edm::Event &, const edm::EventSetup &)