CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
AlCaGammaJetProducer Class Reference

#include <AlCaGammaJetProducer.h>

Inheritance diagram for AlCaGammaJetProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 AlCaGammaJetProducer (const edm::ParameterSet &)
 
virtual void beginJob ()
 
virtual void produce (edm::Event &, const edm::EventSetup &)
 
 ~AlCaGammaJetProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

bool allowMissingInputs_
 
std::string correctedIslandBarrelSuperClusterCollection_
 
std::string correctedIslandBarrelSuperClusterProducer_
 
std::string correctedIslandEndcapSuperClusterCollection_
 
std::string correctedIslandEndcapSuperClusterProducer_
 
std::vector< edm::InputTagecalLabels_
 
const CaloGeometrygeo
 
std::vector< edm::InputTagmInputCalo
 
edm::EDGetTokenT
< reco::SuperClusterCollection
tok_EBSC_
 
edm::EDGetTokenT
< reco::SuperClusterCollection
tok_EESC_
 
edm::EDGetTokenT
< HBHERecHitCollection
tok_hbhe_
 
edm::EDGetTokenT
< HFRecHitCollection
tok_hf_
 
edm::EDGetTokenT
< HORecHitCollection
tok_ho_
 
edm::EDGetTokenT
< reco::TrackCollection
tok_inputTrack_
 
std::vector< edm::EDGetTokenT
< reco::CaloJetCollection > > 
toks_calo_
 
std::vector< edm::EDGetTokenT
< EcalRecHitCollection > > 
toks_ecal_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 41 of file AlCaGammaJetProducer.h.

Constructor & Destructor Documentation

AlCaGammaJetProducer::AlCaGammaJetProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 13 of file AlCaGammaJetProducer.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, and AlCaHLTBitMon_QueryRunRegistry::string.

14 {
15  // Take input
16 
17  tok_hbhe_= consumes<HBHERecHitCollection>(iConfig.getParameter<edm::InputTag>("hbheInput"));
18  tok_ho_ = consumes<HORecHitCollection>(iConfig.getParameter<edm::InputTag>("hoInput"));
19  tok_hf_ = consumes<HFRecHitCollection>(iConfig.getParameter<edm::InputTag>("hfInput"));
20 
21  mInputCalo = iConfig.getParameter<std::vector<edm::InputTag> >("srcCalo");
22  ecalLabels_=iConfig.getParameter<std::vector<edm::InputTag> >("ecalInputs");
23 
24  unsigned nLabels = mInputCalo.size();
25  for ( unsigned i=0; i != nLabels; i++ )
26  toks_calo_.push_back( consumes<reco::CaloJetCollection>( mInputCalo[i] ) );
27 
28  nLabels = ecalLabels_.size();
29  for ( unsigned i=0; i != nLabels; i++ )
30  toks_ecal_.push_back( consumes<EcalRecHitCollection>( ecalLabels_[i] ) );
31 
32 
33  tok_inputTrack_ = consumes<reco::TrackCollection>(iConfig.getUntrackedParameter<std::string>("inputTrackLabel","generalTracks"));
34  correctedIslandBarrelSuperClusterCollection_ = iConfig.getParameter<std::string>("correctedIslandBarrelSuperClusterCollection");
35  correctedIslandBarrelSuperClusterProducer_ = iConfig.getParameter<std::string>("correctedIslandBarrelSuperClusterProducer");
36  tok_EBSC_ = consumes<reco::SuperClusterCollection>(
37  edm::InputTag(correctedIslandBarrelSuperClusterProducer_,
39 
40  correctedIslandEndcapSuperClusterCollection_ = iConfig.getParameter<std::string>("correctedIslandEndcapSuperClusterCollection");
41  correctedIslandEndcapSuperClusterProducer_ = iConfig.getParameter<std::string>("correctedIslandEndcapSuperClusterProducer");
42  tok_EESC_ = consumes<reco::SuperClusterCollection>(
43  edm::InputTag(correctedIslandEndcapSuperClusterProducer_,
44  correctedIslandEndcapSuperClusterCollection_));
45 
46  allowMissingInputs_=iConfig.getUntrackedParameter<bool>("AllowMissingInputs",true);
47 
48 
49  //register your products
50  produces<reco::TrackCollection>("GammaJetTracksCollection");
51  produces<EcalRecHitCollection>("GammaJetEcalRecHitCollection");
52  produces<HBHERecHitCollection>("GammaJetHBHERecHitCollection");
53  produces<HORecHitCollection>("GammaJetHORecHitCollection");
54  produces<HFRecHitCollection>("GammaJetHFRecHitCollection");
55  produces<CaloJetCollection>("GammaJetJetBackToBackCollection");
56  produces<reco::SuperClusterCollection>("GammaJetGammaBackToBackCollection");
57 
58 
59 
60 }
T getParameter(std::string const &) const
std::string correctedIslandEndcapSuperClusterCollection_
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
std::vector< edm::EDGetTokenT< EcalRecHitCollection > > toks_ecal_
edm::EDGetTokenT< reco::SuperClusterCollection > tok_EESC_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< edm::EDGetTokenT< reco::CaloJetCollection > > toks_calo_
edm::EDGetTokenT< reco::TrackCollection > tok_inputTrack_
std::vector< edm::InputTag > ecalLabels_
std::vector< edm::InputTag > mInputCalo
std::string correctedIslandBarrelSuperClusterProducer_
edm::EDGetTokenT< HORecHitCollection > tok_ho_
std::string correctedIslandEndcapSuperClusterProducer_
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
std::string correctedIslandBarrelSuperClusterCollection_
edm::EDGetTokenT< reco::SuperClusterCollection > tok_EBSC_
AlCaGammaJetProducer::~AlCaGammaJetProducer ( )

Definition at line 65 of file AlCaGammaJetProducer.cc.

66 {
67 
68 
69 }

Member Function Documentation

void AlCaGammaJetProducer::beginJob ( void  )
virtual

Reimplemented from edm::EDProducer.

Definition at line 61 of file AlCaGammaJetProducer.cc.

62 {
63 }
void AlCaGammaJetProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::EDProducer.

Definition at line 74 of file AlCaGammaJetProducer.cc.

References edm::SortedCollection< T, SORT >::begin(), correctedIslandBarrelSuperClusters_cfi::correctedIslandBarrelSuperClusters, correctedIslandEndcapSuperClusters_cfi::correctedIslandEndcapSuperClusters, gather_cfg::cout, edm::SortedCollection< T, SORT >::end(), PV3DBase< T, PVType, FrameType >::eta(), edm::EventSetup::get(), edm::Event::getByToken(), i, edm::HandleBase::isValid(), metsig::jet, fwrapper::jets, PV3DBase< T, PVType, FrameType >::phi(), edm::Event::put(), query::result, and mathSSE::sqrt().

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

75 {
76  using namespace edm;
77  using namespace std;
78 
80  iSetup.get<CaloGeometryRecord>().get(pG);
81  geo = pG.product();
82 
83 // Produced collections
84 
85  std::auto_ptr<reco::SuperClusterCollection> result (new reco::SuperClusterCollection); //Corrected jets
86  std::auto_ptr<CaloJetCollection> resultjet (new CaloJetCollection); //Corrected jets
87  std::auto_ptr<EcalRecHitCollection> miniEcalRecHitCollection(new EcalRecHitCollection);
88  std::auto_ptr<HBHERecHitCollection> miniHBHERecHitCollection(new HBHERecHitCollection);
89  std::auto_ptr<HORecHitCollection> miniHORecHitCollection(new HORecHitCollection);
90  std::auto_ptr<HFRecHitCollection> miniHFRecHitCollection(new HFRecHitCollection);
91  std::auto_ptr<reco::TrackCollection> outputTColl(new reco::TrackCollection);
92 
93 
94 // Get Corrected supercluster collection
95  int nclusb = 0;
96  int ncluse = 0;
97  reco::SuperClusterCollection::const_iterator maxclusbarrel;
98  reco::SuperClusterCollection::const_iterator maxclusendcap;
99 
100  double vetmax = -100.;
101  Handle<reco::SuperClusterCollection> pCorrectedIslandBarrelSuperClusters;
102  iEvent.getByToken(tok_EBSC_,
103  pCorrectedIslandBarrelSuperClusters);
104  if (!pCorrectedIslandBarrelSuperClusters.isValid()) {
105  // can't find it!
106  if (!allowMissingInputs_) {
107  *pCorrectedIslandBarrelSuperClusters; // will throw the proper exception
108  }
109  } else {
110  const reco::SuperClusterCollection* correctedIslandBarrelSuperClusters = pCorrectedIslandBarrelSuperClusters.product();
111 
112  // loop over the super clusters and find the highest
113  maxclusbarrel = correctedIslandBarrelSuperClusters->begin();
114  for(reco::SuperClusterCollection::const_iterator aClus = correctedIslandBarrelSuperClusters->begin();
115  aClus != correctedIslandBarrelSuperClusters->end(); aClus++) {
116  double vet = aClus->energy()/cosh(aClus->eta());
117  cout<<" Barrel supercluster " << vet <<" energy "<<aClus->energy()<<" eta "<<aClus->eta()<<endl;
118  if(vet>20.) {
119  if(vet > vetmax)
120  {
121  vetmax = vet;
122  maxclusbarrel = aClus;
123  nclusb = 1;
124  }
125  }
126  }
127 
128  }
129 
130  Handle<reco::SuperClusterCollection> pCorrectedIslandEndcapSuperClusters;
131  iEvent.getByToken(tok_EESC_,
132  pCorrectedIslandEndcapSuperClusters);
133  if (!pCorrectedIslandEndcapSuperClusters.isValid()) {
134  // can't find it!
135  if (!allowMissingInputs_) {
136  *pCorrectedIslandEndcapSuperClusters; // will throw the proper exception
137  }
138  } else {
139  const reco::SuperClusterCollection* correctedIslandEndcapSuperClusters = pCorrectedIslandEndcapSuperClusters.product();
140 
141  // loop over the super clusters and find the highest
142  maxclusendcap = correctedIslandEndcapSuperClusters->end();
143  double vetmaxe = vetmax;
144  for(reco::SuperClusterCollection::const_iterator aClus = correctedIslandEndcapSuperClusters->begin();
145  aClus != correctedIslandEndcapSuperClusters->end(); aClus++) {
146  double vet = aClus->energy()/cosh(aClus->eta());
147  // cout<<" Endcap supercluster " << vet <<" energy "<<aClus->energy()<<" eta "<<aClus->eta()<<endl;
148  if(vet>20.) {
149  if(vet > vetmaxe)
150  {
151  vetmaxe = vet;
152  maxclusendcap = aClus;
153  ncluse = 1;
154  }
155  }
156  }
157  }
158 
159  cout<<" Number of gammas "<<nclusb<<" "<<ncluse<<endl;
160 
161  if( nclusb == 0 && ncluse == 0 ) {
162 
163  iEvent.put( outputTColl, "GammaJetTracksCollection");
164  iEvent.put( miniEcalRecHitCollection, "GammaJetEcalRecHitCollection");
165  iEvent.put( miniHBHERecHitCollection, "GammaJetHBHERecHitCollection");
166  iEvent.put( miniHORecHitCollection, "GammaJetHORecHitCollection");
167  iEvent.put( miniHFRecHitCollection, "GammaJetHFRecHitCollection");
168  iEvent.put( result, "GammaJetGammaBackToBackCollection");
169  iEvent.put( resultjet, "GammaJetJetBackToBackCollection");
170 
171  return;
172  }
173 
174  double phigamma = -100.;
175  double etagamma = -100.;
176  if(ncluse == 1)
177  {
178  result->push_back(*maxclusendcap);
179  phigamma = (*maxclusendcap).phi();
180  etagamma = (*maxclusendcap).eta();
181 
182  } else
183  {
184  result->push_back(*maxclusbarrel);
185  phigamma = (*maxclusbarrel).phi();
186  etagamma = (*maxclusbarrel).eta();
187  }
188 
189 // cout<<" Size of egamma clusters "<<result->size()<<endl;
190 
191 //
192 // Jet Collection
193 // Find jet in the angle ~ +- 170 degrees
194 //
195 
196  double phijet = -100.;
197  double etajet = -100.;
198  double phijet0 = -100.;
199  double etajet0 = -100.;
200 
201  std::vector<edm::EDGetTokenT<reco::CaloJetCollection> >::const_iterator ic;
202  for (ic=toks_calo_.begin(); ic!=toks_calo_.end(); ic++) {
203 
205  iEvent.getByToken(*ic, jets);
206  if (!jets.isValid()) {
207  // can't find it!
208  if (!allowMissingInputs_) {
209  *jets; // will throw the proper exception
210  }
211  } else {
212  reco::CaloJetCollection::const_iterator jet = jets->begin ();
213 
214  // cout<<" Size of jets "<<jets->size()<<endl;
215 
216  if( jets->size() == 0 ) continue;
217 
218  int iejet = 0;
219  int numjet = 0;
220 
221  for (; jet != jets->end (); jet++)
222  {
223  phijet0 = (*jet).phi();
224  etajet0 = (*jet).eta();
225 
226 // Only 3 jets are kept
227  numjet++;
228  if(numjet > 3) break;
229 
230  cout<<" phi,eta "<< phigamma<<" "<< etagamma<<" "<<phijet0<<" "<<etajet0<<endl;
231 
232 // Find jet back to gamma
233 
234  double dphi = fabs(phigamma-phijet0);
235  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
236  double deta = fabs(etagamma-etajet0);
237  double dr = sqrt(dphi*dphi+deta*deta);
238  if(dr < 0.5 ) continue;
239  resultjet->push_back ((*jet));
240 
241  dphi = dphi*180./(4.*atan(1.));
242  if( fabs(dphi-180) < 30. )
243  {
244  // cout<<" Jet is found "<<endl;
245  iejet = 1;
246  phijet = (*jet).phi();
247  etajet = (*jet).eta();
248  } // dphi
249  } //jet collection
250  if(iejet == 0) resultjet->clear();
251  }
252  } // Jet collection
253 
254  if( resultjet->size() == 0 ) {
255 
256  iEvent.put( outputTColl, "GammaJetTracksCollection");
257  iEvent.put( miniEcalRecHitCollection, "GammaJetEcalRecHitCollection");
258  iEvent.put( miniHBHERecHitCollection, "GammaJetHBHERecHitCollection");
259  iEvent.put( miniHORecHitCollection, "GammaJetHORecHitCollection");
260  iEvent.put( miniHFRecHitCollection, "GammaJetHFRecHitCollection");
261  iEvent.put( result, "GammaJetGammaBackToBackCollection");
262  iEvent.put( resultjet, "GammaJetJetBackToBackCollection");
263 
264  return;
265  }
266  // cout<<" Accepted event "<<resultjet->size()<<" PHI gamma "<<phigamma<<std::endl;
267 //
268 // Add Ecal, Hcal RecHits around Egamma caluster
269 //
270 
271 // Load EcalRecHits
272 
273 
274  std::vector<edm::EDGetTokenT<EcalRecHitCollection> >::const_iterator i;
275  for (i=toks_ecal_.begin(); i!=toks_ecal_.end(); i++) {
277  iEvent.getByToken(*i,ec);
278  if (!ec.isValid()) {
279  // can't find it!
280  if (!allowMissingInputs_) {
281  cout<<" No ECAL input "<<endl;
282  *ec; // will throw the proper exception
283  }
284  } else {
285  for(EcalRecHitCollection::const_iterator recHit = (*ec).begin();
286  recHit != (*ec).end(); ++recHit)
287  {
288 // EcalBarrel = 1, EcalEndcap = 2
289  GlobalPoint pos = geo->getPosition(recHit->detid());
290  double phihit = pos.phi();
291  double etahit = pos.eta();
292 
293  double dphi = fabs(phigamma - phihit);
294  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
295  double deta = fabs(etagamma - etahit);
296  double dr = sqrt(dphi*dphi + deta*deta);
297  if(dr<1.) miniEcalRecHitCollection->push_back(*recHit);
298 
299  dphi = fabs(phijet - phihit);
300  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
301  deta = fabs(etajet - etahit);
302  dr = sqrt(dphi*dphi + deta*deta);
303  if(dr<1.4) miniEcalRecHitCollection->push_back(*recHit);
304 
305  }
306  }
307  }
308 
309 // cout<<" Ecal is done "<<endl;
310 
312  iEvent.getByToken(tok_hbhe_,hbhe);
313  if (!hbhe.isValid()) {
314  // can't find it!
315  if (!allowMissingInputs_) {
316  *hbhe; // will throw the proper exception
317  }
318  } else {
319  const HBHERecHitCollection Hithbhe = *(hbhe.product());
320  for(HBHERecHitCollection::const_iterator hbheItr=Hithbhe.begin(); hbheItr!=Hithbhe.end(); hbheItr++)
321  {
322  GlobalPoint pos = geo->getPosition(hbheItr->detid());
323  double phihit = pos.phi();
324  double etahit = pos.eta();
325 
326  double dphi = fabs(phigamma - phihit);
327  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
328  double deta = fabs(etagamma - etahit);
329  double dr = sqrt(dphi*dphi + deta*deta);
330 
331 
332  if(dr<1.) miniHBHERecHitCollection->push_back(*hbheItr);
333  dphi = fabs(phijet - phihit);
334  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
335  deta = fabs(etajet - etahit);
336  dr = sqrt(dphi*dphi + deta*deta);
337  if(dr<1.4) miniHBHERecHitCollection->push_back(*hbheItr);
338  }
339  }
340 
341 // cout<<" HBHE is done "<<endl;
342 
344  iEvent.getByToken(tok_ho_,ho);
345  if (!ho.isValid()) {
346  // can't find it!
347  if (!allowMissingInputs_) {
348  *ho; // will throw the proper exception
349  }
350  } else {
351  const HORecHitCollection Hitho = *(ho.product());
352  for(HORecHitCollection::const_iterator hoItr=Hitho.begin(); hoItr!=Hitho.end(); hoItr++)
353  {
354  GlobalPoint pos = geo->getPosition(hoItr->detid());
355  double phihit = pos.phi();
356  double etahit = pos.eta();
357 
358  double dphi = fabs(phigamma - phihit);
359  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
360  double deta = fabs(etagamma - etahit);
361  double dr = sqrt(dphi*dphi + deta*deta);
362 
363  if(dr<1.) miniHORecHitCollection->push_back(*hoItr);
364  dphi = fabs(phijet - phihit);
365  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
366  deta = fabs(etajet - etahit);
367  dr = sqrt(dphi*dphi + deta*deta);
368  if(dr<1.4) miniHORecHitCollection->push_back(*hoItr);
369 
370  }
371  }
372 
373  // cout<<" HO is done "<<endl;
374 
376  iEvent.getByToken(tok_hf_,hf);
377  if (!hf.isValid()) {
378  // can't find it!
379  if (!allowMissingInputs_) {
380  *hf; // will throw the proper exception
381  }
382  } else {
383  const HFRecHitCollection Hithf = *(hf.product());
384  // cout<<" Size of HF collection "<<Hithf.size()<<endl;
385  for(HFRecHitCollection::const_iterator hfItr=Hithf.begin(); hfItr!=Hithf.end(); hfItr++)
386  {
387  GlobalPoint pos = geo->getPosition(hfItr->detid());
388 
389  double phihit = pos.phi();
390  double etahit = pos.eta();
391 
392  double dphi = fabs(phigamma - phihit);
393  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
394  double deta = fabs(etagamma - etahit);
395  double dr = sqrt(dphi*dphi + deta*deta);
396 
397  if(dr<1.) miniHFRecHitCollection->push_back(*hfItr);
398  dphi = fabs(phijet - phihit);
399  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
400  deta = fabs(etajet - etahit);
401  dr = sqrt(dphi*dphi + deta*deta);
402 
403  if( dr < 1.4 ) miniHFRecHitCollection->push_back(*hfItr);
404  }
405  }
406 
407  // cout<<" Size of mini HF collection "<<miniHFRecHitCollection->size()<<endl;
408 
409 
410 // Track Collection
411  edm::Handle<reco::TrackCollection> trackCollection;
412  iEvent.getByToken(tok_inputTrack_,trackCollection);
413  if (!trackCollection.isValid()) {
414  // can't find it!
415  if (!allowMissingInputs_) {
416  *trackCollection; // will throw the proper exception
417  }
418  } else {
419  const reco::TrackCollection tC = *(trackCollection.product());
420 
421  //Create empty output collections
422 
423 
424  for (reco::TrackCollection::const_iterator track=tC.begin(); track!=tC.end(); track++)
425  {
426 
427  double deta = track->momentum().eta() - etagamma;
428 
429  double dphi = fabs(track->momentum().phi() - phigamma);
430 
431  if (dphi > atan(1.)*4.) dphi = 8.*atan(1.) - dphi;
432  double ddir1 = sqrt(deta*deta+dphi*dphi);
433 
434 
435 
436  deta = track->momentum().eta() - etajet;
437  dphi = fabs(track->momentum().phi() - phijet);
438  if (dphi > atan(1.)*4.) dphi = 8.*atan(1.) - dphi;
439  double ddir2 = sqrt(deta*deta+dphi*dphi);
440 
441  if( ddir1 < 1.4 || ddir2 < 1.4)
442  {
443  outputTColl->push_back(*track);
444  }
445  }
446  }
447 
448  //Put selected information in the event
449 
450  iEvent.put( outputTColl, "GammaJetTracksCollection");
451  iEvent.put( miniEcalRecHitCollection, "GammaJetEcalRecHitCollection");
452  iEvent.put( miniHBHERecHitCollection, "GammaJetHBHERecHitCollection");
453  iEvent.put( miniHORecHitCollection, "GammaJetHORecHitCollection");
454  iEvent.put( miniHFRecHitCollection, "GammaJetHFRecHitCollection");
455  iEvent.put( result, "GammaJetGammaBackToBackCollection");
456  iEvent.put( resultjet, "GammaJetJetBackToBackCollection");
457 }
int i
Definition: DBlmapReader.cc:9
std::vector< edm::EDGetTokenT< EcalRecHitCollection > > toks_ecal_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
edm::EDGetTokenT< reco::SuperClusterCollection > tok_EESC_
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:10
std::vector< EcalRecHit >::const_iterator const_iterator
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
std::vector< edm::EDGetTokenT< reco::CaloJetCollection > > toks_calo_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
T sqrt(T t)
Definition: SSEVec.h:48
vector< PseudoJet > jets
tuple result
Definition: query.py:137
edm::EDGetTokenT< reco::TrackCollection > tok_inputTrack_
const GlobalPoint & getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:68
bool isValid() const
Definition: HandleBase.h:76
const CaloGeometry * geo
const_iterator end() const
const T & get() const
Definition: EventSetup.h:55
T eta() const
Definition: PV3DBase.h:76
edm::EDGetTokenT< HORecHitCollection > tok_ho_
tuple cout
Definition: gather_cfg.py:121
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
const_iterator begin() const
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
edm::EDGetTokenT< reco::SuperClusterCollection > tok_EBSC_

Member Data Documentation

bool AlCaGammaJetProducer::allowMissingInputs_
private

Definition at line 68 of file AlCaGammaJetProducer.h.

std::string AlCaGammaJetProducer::correctedIslandBarrelSuperClusterCollection_
private

Definition at line 56 of file AlCaGammaJetProducer.h.

std::string AlCaGammaJetProducer::correctedIslandBarrelSuperClusterProducer_
private

Definition at line 57 of file AlCaGammaJetProducer.h.

std::string AlCaGammaJetProducer::correctedIslandEndcapSuperClusterCollection_
private

Definition at line 58 of file AlCaGammaJetProducer.h.

std::string AlCaGammaJetProducer::correctedIslandEndcapSuperClusterProducer_
private

Definition at line 59 of file AlCaGammaJetProducer.h.

std::vector<edm::InputTag> AlCaGammaJetProducer::ecalLabels_
private

Definition at line 50 of file AlCaGammaJetProducer.h.

const CaloGeometry* AlCaGammaJetProducer::geo
private

Definition at line 71 of file AlCaGammaJetProducer.h.

std::vector<edm::InputTag> AlCaGammaJetProducer::mInputCalo
private

Definition at line 51 of file AlCaGammaJetProducer.h.

edm::EDGetTokenT<reco::SuperClusterCollection> AlCaGammaJetProducer::tok_EBSC_
private

Definition at line 65 of file AlCaGammaJetProducer.h.

edm::EDGetTokenT<reco::SuperClusterCollection> AlCaGammaJetProducer::tok_EESC_
private

Definition at line 66 of file AlCaGammaJetProducer.h.

edm::EDGetTokenT<HBHERecHitCollection> AlCaGammaJetProducer::tok_hbhe_
private

Definition at line 61 of file AlCaGammaJetProducer.h.

edm::EDGetTokenT<HFRecHitCollection> AlCaGammaJetProducer::tok_hf_
private

Definition at line 63 of file AlCaGammaJetProducer.h.

edm::EDGetTokenT<HORecHitCollection> AlCaGammaJetProducer::tok_ho_
private

Definition at line 62 of file AlCaGammaJetProducer.h.

edm::EDGetTokenT<reco::TrackCollection> AlCaGammaJetProducer::tok_inputTrack_
private

Definition at line 64 of file AlCaGammaJetProducer.h.

std::vector<edm::EDGetTokenT<reco::CaloJetCollection> > AlCaGammaJetProducer::toks_calo_
private

Definition at line 54 of file AlCaGammaJetProducer.h.

std::vector<edm::EDGetTokenT<EcalRecHitCollection> > AlCaGammaJetProducer::toks_ecal_
private

Definition at line 53 of file AlCaGammaJetProducer.h.