CMS 3D CMS Logo

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

#include <RecoHI/EvtPlaneProducer/src/EvtPlaneProducer.cc>

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

Classes

class  GenPlane
 

Public Member Functions

 EvtPlaneProducer (const edm::ParameterSet &)
 
 ~EvtPlaneProducer ()
 
- 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 Member Functions

virtual void beginJob () override
 
virtual void endJob () override
 
virtual void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

edm::InputTag caloCollection_
 
double chi2_
 
double dzerr_
 
double maxet_
 
double maxpt_
 
double maxvtx_
 
double minet_
 
double minpt_
 
double minvtx_
 
GenPlanerp [NumEPNames]
 
bool storeNames_
 
edm::InputTag trackCollection_
 
bool useECAL_
 
bool useHCAL_
 
bool useTrack_
 
bool useTrackPtWeight_
 
edm::InputTag vtxCollection_
 

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

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 66 of file EvtPlaneProducer.cc.

Constructor & Destructor Documentation

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

Definition at line 166 of file EvtPlaneProducer.cc.

References data, hi::EPEtaMax1, hi::EPEtaMax2, hi::EPEtaMin1, hi::EPEtaMin2, hi::EPNames, hi::EPOrder, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, and hi::NumEPNames.

167 {
168 
169 
170  //register your products
171  vtxCollection_ = iConfig.getParameter<edm::InputTag>("vtxCollection_");
172  caloCollection_ = iConfig.getParameter<edm::InputTag>("caloCollection_");
173  trackCollection_ = iConfig.getParameter<edm::InputTag>("trackCollection_");
174  useECAL_ = iConfig.getUntrackedParameter<bool>("useECAL_",true);
175  useHCAL_ = iConfig.getUntrackedParameter<bool>("useHCAL_",true);
176  useTrack_ = iConfig.getUntrackedParameter<bool>("useTrack",true);
177  useTrackPtWeight_ = iConfig.getUntrackedParameter<bool>("useTrackPtWeight_",true);
178  minet_ = iConfig.getUntrackedParameter<double>("minet_",0.2);
179  maxet_ = iConfig.getUntrackedParameter<double>("maxet_",500.);
180  minpt_ = iConfig.getUntrackedParameter<double>("minpt_",0.3);
181  maxpt_ = iConfig.getUntrackedParameter<double>("maxpt_",2.5);
182  minvtx_ = iConfig.getUntrackedParameter<double>("minvtx_",-50.);
183  maxvtx_ = iConfig.getUntrackedParameter<double>("maxvtx_",50.);
184  dzerr_ = iConfig.getUntrackedParameter<double>("dzerr_",10.);
185  chi2_ = iConfig.getUntrackedParameter<double>("chi2_",40.);
186 
187  storeNames_ = 1;
188  produces<reco::EvtPlaneCollection>("recoLevel");
189  for(int i = 0; i<NumEPNames; i++ ) {
190  rp[i] = new GenPlane(EPNames[i].data(),EPEtaMin1[i],EPEtaMax1[i],EPEtaMin2[i],EPEtaMax2[i],EPOrder[i]);
191  }
192 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const int EPOrder[]
int i
Definition: DBlmapReader.cc:9
const double EPEtaMin2[]
const std::string EPNames[]
const double EPEtaMin1[]
GenPlane * rp[NumEPNames]
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
edm::InputTag caloCollection_
edm::InputTag vtxCollection_
const double EPEtaMax2[]
static const int NumEPNames
edm::InputTag trackCollection_
const double EPEtaMax1[]
EvtPlaneProducer::~EvtPlaneProducer ( )

Definition at line 195 of file EvtPlaneProducer.cc.

196 {
197 
198  // do anything here that needs to be done at desctruction time
199  // (e.g. close files, deallocate resources etc.)
200 
201 }

Member Function Documentation

void EvtPlaneProducer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 442 of file EvtPlaneProducer.cc.

443 {
444 }
void EvtPlaneProducer::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 448 of file EvtPlaneProducer.cc.

448  {
449 }
void EvtPlaneProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::EDProducer.

Definition at line 210 of file EvtPlaneProducer.cc.

References trackerHits::c, funct::cos(), cuy::cv, hi::EPNames, hi::EPTracksMid3, hi::EPTracksMid4, hi::EPTracksMid5, hi::EPTracksMid6, hi::EPTracksNeg3, hi::EPTracksNeg4, hi::EPTracksNeg5, hi::EPTracksNeg6, hi::EPTracksPos3, hi::EPTracksPos4, hi::EPTracksPos5, hi::EPTracksPos6, hi::etCaloHFM, hi::etCaloHFP, hi::etEcal, hi::etEcalM, hi::etEcalP, hi::etHcal, hi::etHcalM, hi::etHcalP, hi::etHF, hi::etHF3, hi::etHF4, hi::etHF5, hi::etHF6, hi::etHFm, hi::etHFm3, hi::etHFm4, hi::etHFm5, hi::etHFm6, hi::etHFp, hi::etHFp3, hi::etHFp4, hi::etHFp5, hi::etHFp6, hi::EvtPlaneFromTracksMidEta, hi::EvtPTracksNegEtaGap, hi::EvtPTracksPosEtaGap, edm::Event::getByLabel(), i, edm::HandleBase::isValid(), j, hi::NumEPNames, edm::Handle< T >::product(), edm::Event::put(), dt_dqm_sourceclient_common_cff::reco, reset(), alignCSCRings::s, indexGen::s2, funct::sin(), mathSSE::sqrt(), testEve_cfg::tracks, and w().

211 {
212  using namespace edm;
213  using namespace reco;
214 
215  int vs_sell;
216  float vzr_sell;
217  //
218  //Get Vertex
219  //
220  edm::Handle<reco::VertexCollection> vertexCollection3;
221  iEvent.getByLabel(vtxCollection_,vertexCollection3);
222  const reco::VertexCollection * vertices3 = vertexCollection3.product();
223  vs_sell = vertices3->size();
224  if(vs_sell>0) {
225  vzr_sell = vertices3->begin()->z();
226  } else
227  vzr_sell = -999.9;
228  //
229  for(int i = 0; i<NumEPNames; i++) rp[i]->reset();
230  if(vzr_sell>minvtx_ && vzr_sell<maxvtx_) {
231  //calorimetry part
232 
233  double tower_eta, tower_phi;
234  double tower_energyet, tower_energyet_e, tower_energyet_h;
235  double s1, s2, s13,s23,s14,s24,s15,s25,s16,s26;
236  Handle<CaloTowerCollection> calotower;
237  iEvent.getByLabel(caloCollection_,calotower);
238 
239  if(calotower.isValid()){
240 
241  for (CaloTowerCollection::const_iterator j = calotower->begin();j !=calotower->end(); j++) {
242  tower_eta = j->eta();
243  tower_phi = j->phi();
244  tower_energyet_e = j->emEt();
245  tower_energyet_h = j->hadEt();
246  tower_energyet = tower_energyet_e + tower_energyet_h;
247 
248  s1 = sin(2.*tower_phi);
249  s2 = cos(2.*tower_phi);
250  s13 = sin(3.*tower_phi);
251  s23 = cos(3.*tower_phi);
252  s14 = sin(4.*tower_phi);
253  s24 = cos(4.*tower_phi);
254  s15 = sin(5.*tower_phi);
255  s25 = cos(5.*tower_phi);
256  s16 = sin(6.*tower_phi);
257  s26 = cos(6.*tower_phi);
258 
259  if(tower_energyet<minet_) continue;
260  if(tower_energyet>maxet_) continue;;
261 
262  rp[etEcal ]->addParticle (tower_energyet_e, s1, s2, tower_eta);
263  rp[etEcalP ]->addParticle (tower_energyet_e, s1, s2, tower_eta);
264  rp[etEcalM ]->addParticle (tower_energyet_e, s1, s2, tower_eta);
265  rp[etHcal ]->addParticle (tower_energyet_h, s1, s2, tower_eta);
266  rp[etHcalP ]->addParticle (tower_energyet_h, s1, s2, tower_eta);
267  rp[etHcalM ]->addParticle (tower_energyet_h, s1, s2, tower_eta);
268  rp[etHF ]->addParticle (tower_energyet, s1, s2, tower_eta);
269  rp[etHFp ]->addParticle (tower_energyet, s1, s2, tower_eta);
270  rp[etHFm ]->addParticle (tower_energyet, s1, s2, tower_eta);
271  rp[etCaloHFP ]->addParticle (tower_energyet, s1, s2, tower_eta);
272  rp[etCaloHFM ]->addParticle (tower_energyet, s1, s2, tower_eta);
273 
274  rp[etHF3 ]->addParticle (tower_energyet, s13, s23, tower_eta);
275  rp[etHFp3 ]->addParticle (tower_energyet, s13, s23, tower_eta);
276  rp[etHFm3 ]->addParticle (tower_energyet, s13, s23, tower_eta);
277 
278  rp[etHF4 ]->addParticle (tower_energyet, s14, s24, tower_eta);
279  rp[etHFp4 ]->addParticle (tower_energyet, s14, s24, tower_eta);
280  rp[etHFm4 ]->addParticle (tower_energyet, s14, s24, tower_eta);
281 
282  rp[etHF5 ]->addParticle (tower_energyet, s15, s25, tower_eta);
283  rp[etHFp5 ]->addParticle (tower_energyet, s15, s25, tower_eta);
284  rp[etHFm5 ]->addParticle (tower_energyet, s15, s25, tower_eta);
285 
286  rp[etHF6 ]->addParticle (tower_energyet, s16, s26, tower_eta);
287  rp[etHFp6 ]->addParticle (tower_energyet, s16, s26, tower_eta);
288  rp[etHFm6 ]->addParticle (tower_energyet, s16, s26, tower_eta);
289  }
290  }
291  //Tracking part
292 
293  double track_eta;
294  double track_phi;
295  double track_pt;
296 #ifdef TRACKCOLLECTION
298  iEvent.getByLabel(trackCollection_, tracks);
299 
300  if(tracks.isValid()){
301  for(reco::TrackCollection::const_iterator j = tracks->begin(); j != tracks->end(); j++){
302 
303  //Find possible collections with command line: edmDumpEventContent *.root
304 #endif
305 #ifdef RECOCHARGEDCANDIDATECOLLECTION
307  iEvent.getByLabel("allMergedPtSplit12Tracks",trackCollection);
308  // iEvent.getByLabel("hiGoodMergedTracks",trackCollection);
309  if(trackCollection.isValid()){
310 
311  const reco::RecoChargedCandidateCollection * tracks = trackCollection.product();
312  for(reco::RecoChargedCandidateCollection::const_iterator j = tracks->begin(); j != tracks->end(); j++){
313 #endif
315  iEvent.getByLabel(vtxCollection_, vertex);
316 
317 // find the vertex point and error
318 
319  math::XYZPoint vtxPoint(0.0,0.0,0.0);
320  double vzErr =0.0, vxErr=0.0, vyErr=0.0;
321  if(vertex->size()>0) {
322  vtxPoint=vertex->begin()->position();
323  vzErr=vertex->begin()->zError();
324  vxErr=vertex->begin()->xError();
325  vyErr=vertex->begin()->yError();
326  }
327  bool accepted = true;
328  bool isPixel = false;
329  // determine if the track is a pixel track
330  if ( j->numberOfValidHits() < 7 ) isPixel = true;
331 
332  // determine the vertex significance
333  double d0=0.0, dz=0.0, d0sigma=0.0, dzsigma=0.0;
334  d0 = -1.*j->dxy(vtxPoint);
335  dz = j->dz(vtxPoint);
336  d0sigma = sqrt(j->d0Error()*j->d0Error()+vxErr*vyErr);
337  dzsigma = sqrt(j->dzError()*j->dzError()+vzErr*vzErr);
338 
339  // cuts for pixel tracks
340  if( isPixel )
341  {
342  // dz significance cut
343  if ( fabs(dz/dzsigma) > dzerr_ ) accepted = false;
344 
345  // chi2/ndof cut
346  if ( j->normalizedChi2() > chi2_ ) accepted = false;
347  }
348 
349  // cuts for full tracks
350  if ( ! isPixel)
351  {
352  // dz and d0 significance cuts
353  if ( fabs(dz/dzsigma) > 3 ) accepted = false;
354  if ( fabs(d0/d0sigma) > 3 ) accepted = false;
355 
356  // pt resolution cut
357  if ( j->ptError()/j->pt() > 0.05 ) accepted = false;
358 
359  // number of valid hits cut
360  if ( j->numberOfValidHits() < 12 ) accepted = false;
361  }
362  if( accepted ) {
363  track_eta = j->eta();
364  track_phi = j->phi();
365  track_pt = j->pt();
366  double s =sin(2*track_phi);
367  double c =cos(2*track_phi);
368  double s3 =sin(3*track_phi);
369  double c3 =cos(3*track_phi);
370  double s4 =sin(4*track_phi);
371  double c4 =cos(4*track_phi);
372  double s5 =sin(5*track_phi);
373  double c5 =cos(5*track_phi);
374  double s6 =sin(6*track_phi);
375  double c6 =cos(6*track_phi);
376  double w = 1;
377  if(useTrackPtWeight_) {
378  w = track_pt;
379  if(w>2.5) w=2.0; //v2 starts decreasing above ~2.5 GeV/c
380  }
381  if(track_pt<minpt_) continue;
382  if(track_pt>maxpt_) continue;
383  rp[EvtPlaneFromTracksMidEta]->addParticle(w,s,c,track_eta);
384  rp[EvtPTracksPosEtaGap]->addParticle(w,s,c,track_eta);
385  rp[EvtPTracksNegEtaGap]->addParticle(w,s,c,track_eta);
386  rp[EPTracksMid3]->addParticle(w,s3,c3,track_eta);
387  rp[EPTracksPos3]->addParticle(w,s3,c3,track_eta);
388  rp[EPTracksNeg3]->addParticle(w,s3,c3,track_eta);
389  rp[EPTracksMid4]->addParticle(w,s4,c4,track_eta);
390  rp[EPTracksPos4]->addParticle(w,s4,c4,track_eta);
391  rp[EPTracksNeg4]->addParticle(w,s4,c4,track_eta);
392  rp[EPTracksMid5]->addParticle(w,s5,c5,track_eta);
393  rp[EPTracksPos5]->addParticle(w,s5,c5,track_eta);
394  rp[EPTracksNeg5]->addParticle(w,s5,c5,track_eta);
395  rp[EPTracksMid6]->addParticle(w,s6,c6,track_eta);
396  rp[EPTracksPos6]->addParticle(w,s6,c6,track_eta);
397  rp[EPTracksNeg6]->addParticle(w,s6,c6,track_eta);
398 
399  }
400 
401  }
402  }
403  }
404  std::auto_ptr<EvtPlaneCollection> evtplaneOutput(new EvtPlaneCollection);
405 
406  EvtPlane *ep[NumEPNames];
407 
408  double ang=-10;
409  double sv = 0;
410  double cv = 0;
411 
412  for(int i = 0; i<NumEPNames; i++) {
413  rp[i]->getAngle(ang,sv,cv);
414  if(storeNames_) ep[i] = new EvtPlane(ang,sv,cv,EPNames[i]);
415  else ep[i] = new EvtPlane(ang,sv,cv,"");
416  }
417  if(useTrack_) {
418  for(int i = 0; i<9; i++) {
419  evtplaneOutput->push_back(*ep[i]);
420  }
421  }
422  for(int i = 9; i<NumEPNames; i++) {
423  if(useECAL_ && !useHCAL_) {
424  if(EPNames[i].rfind("Ecal")!=string::npos) {
425  evtplaneOutput->push_back(*ep[i]);
426  }
427  } else if (useHCAL_ && !useECAL_) {
428  if(EPNames[i].rfind("Hcal")!=string::npos) {
429  evtplaneOutput->push_back(*ep[i]);
430  }
431  }else if (useECAL_ && useHCAL_) {
432  evtplaneOutput->push_back(*ep[i]);
433  }
434  }
435 
436  iEvent.put(evtplaneOutput, "recoLevel");
437  // storeNames_ = 0;
438 }
double getAngle(double &ang, double &sv, double &cv)
int i
Definition: DBlmapReader.cc:9
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< CaloTower >::const_iterator const_iterator
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
const std::string EPNames[]
tuple s2
Definition: indexGen.py:106
GenPlane * rp[NumEPNames]
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:113
T sqrt(T t)
Definition: SSEVec.h:48
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
std::vector< EvtPlane > EvtPlaneCollection
Definition: EvtPlane.h:33
int j
Definition: DBlmapReader.cc:9
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:402
dictionary cv
Definition: cuy.py:362
std::vector< RecoChargedCandidate > RecoChargedCandidateCollection
collectin of RecoChargedCandidate objects
T const * product() const
Definition: Handle.h:81
void addParticle(double w, double s, double c, double eta)
tuple tracks
Definition: testEve_cfg.py:39
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
edm::InputTag caloCollection_
edm::InputTag vtxCollection_
static const int NumEPNames
T w() const
edm::InputTag trackCollection_
void reset(double vett[256])
Definition: TPedValues.cc:11

Member Data Documentation

edm::InputTag EvtPlaneProducer::caloCollection_
private

Definition at line 136 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::chi2_
private

Definition at line 149 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::dzerr_
private

Definition at line 148 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::maxet_
private

Definition at line 143 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::maxpt_
private

Definition at line 145 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::maxvtx_
private

Definition at line 147 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::minet_
private

Definition at line 142 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::minpt_
private

Definition at line 144 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::minvtx_
private

Definition at line 146 of file EvtPlaneProducer.cc.

GenPlane* EvtPlaneProducer::rp[NumEPNames]
private

Definition at line 128 of file EvtPlaneProducer.cc.

bool EvtPlaneProducer::storeNames_
private

Definition at line 151 of file EvtPlaneProducer.cc.

edm::InputTag EvtPlaneProducer::trackCollection_
private

Definition at line 137 of file EvtPlaneProducer.cc.

bool EvtPlaneProducer::useECAL_
private

Definition at line 138 of file EvtPlaneProducer.cc.

bool EvtPlaneProducer::useHCAL_
private

Definition at line 139 of file EvtPlaneProducer.cc.

bool EvtPlaneProducer::useTrack_
private

Definition at line 140 of file EvtPlaneProducer.cc.

bool EvtPlaneProducer::useTrackPtWeight_
private

Definition at line 141 of file EvtPlaneProducer.cc.

edm::InputTag EvtPlaneProducer::vtxCollection_
private

Definition at line 135 of file EvtPlaneProducer.cc.