CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
ElectronSeedAnalyzer Class Reference

#include <ElectronSeedAnalyzer.h>

Inheritance diagram for ElectronSeedAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
 ElectronSeedAnalyzer (const edm::ParameterSet &conf)
 
void endJob () override
 
 ~ElectronSeedAnalyzer () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

edm::InputTag beamSpot_
 
TH1F * histecaldriveneMCmatched_
 
TH1F * histecaldrivenetaMCmatched_
 
TH1F * histecaldrivenptMCmatched_
 
TH1F * histeclu_
 
TH1F * histeffeta_
 
TH1F * histeffpt_
 
TH1F * histeMC_
 
TH1F * histeMCmatched_
 
TH1F * histeoverp_
 
TH1F * histeta_
 
TH1F * histetaclu_
 
TH1F * histetaMC_
 
TH1F * histetaMCmatched_
 
TH1F * histetclu_
 
TFile * histfile_
 
TH1I * histnbclus_
 
TH1I * histnbseeds_
 
TH1I * histnrseeds_
 
TH1F * histp_
 
TH1F * histpt_
 
TH1F * histptMC_
 
TH1F * histptMCmatched_
 
TH1F * histq_
 
TH1F * histtrackerdriveneMCmatched_
 
TH1F * histtrackerdrivenetaMCmatched_
 
TH1F * histtrackerdrivenptMCmatched_
 
edm::InputTag inputCollection_
 
float mcEnergy [10]
 
float mcEta [10]
 
float mcPhi [10]
 
float mcPt [10]
 
float mcQ [10]
 
float seedDphi1 [10]
 
float seedDphi2 [10]
 
float seedDrz1 [10]
 
float seedDrz2 [10]
 
float seedEta [10]
 
int seedLayer1 [10]
 
int seedLayer2 [10]
 
float seedMomentum [10]
 
float seedPhi [10]
 
float seedPhi1 [10]
 
float seedPhi2 [10]
 
float seedPt [10]
 
float seedQ [10]
 
float seedRz1 [10]
 
float seedRz2 [10]
 
int seedSide1 [10]
 
int seedSide2 [10]
 
int seedSubdet1 [10]
 
int seedSubdet2 [10]
 
float superclusterEnergy [10]
 
float superclusterEt [10]
 
float superclusterEta [10]
 
float superclusterPhi [10]
 
TrajectoryStateTransform transformer_
 
TTree * tree_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- 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 34 of file ElectronSeedAnalyzer.h.

Constructor & Destructor Documentation

ElectronSeedAnalyzer::ElectronSeedAnalyzer ( const edm::ParameterSet conf)
explicit

Definition at line 58 of file ElectronSeedAnalyzer.cc.

References edm::ParameterSet::getParameter(), histfile_, and inputCollection_.

58  :
59  beamSpot_(conf.getParameter<edm::InputTag>("beamSpot"))
60 {
61  inputCollection_=conf.getParameter<edm::InputTag>("inputCollection") ;
62  histfile_ = new TFile("electronpixelseeds.root","RECREATE");
63 }
T getParameter(std::string const &) const
edm::InputTag inputCollection_
ElectronSeedAnalyzer::~ElectronSeedAnalyzer ( )
override

Definition at line 173 of file ElectronSeedAnalyzer.cc.

References histeMC_, and histfile_.

174 {
175  // do anything here that needs to be done at desctruction time
176  // (e.g. close files, deallocate resources etc.)
177  //tree_->Print();
178  histfile_->Write();
179  histeMC_->Write();
180  histfile_->Close();
181 }

Member Function Documentation

void ElectronSeedAnalyzer::analyze ( const edm::Event e,
const edm::EventSetup iSetup 
)
override

Definition at line 183 of file ElectronSeedAnalyzer.cc.

References funct::abs(), alongMomentum, beamSpot_, edm::RefToBase< T >::castTo(), ALCARECOTkAlJpsiMuMu_cff::charge, fastPrimaryVertexProducer_cfi::clusters, deltaR(), DetId::det(), PVValHelper::eta, PV3DBase< T, PVType, FrameType >::eta(), JetChargeProducer_cfi::exp, GenParticle::GenParticle, FTSFromVertexToPointFactory::get(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::HepMCProduct::GetEvent(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), histecaldriveneMCmatched_, histecaldrivenetaMCmatched_, histecaldrivenptMCmatched_, histeMC_, histeMCmatched_, histeoverp_, histeta_, histetaclu_, histetaMC_, histetaMCmatched_, histetclu_, histnbclus_, histnbseeds_, histnrseeds_, histpt_, histptMC_, histptMCmatched_, histq_, histtrackerdriveneMCmatched_, histtrackerdrivenetaMCmatched_, histtrackerdrivenptMCmatched_, edm::EventBase::id(), globals_cff::id1, globals_cff::id2, TrackerGeometry::idToDet(), inputCollection_, createfilelist::int, edm::RefToBase< T >::isNull(), TrajectoryStateOnSurface::isValid(), TrackerTopology::layer(), LogDebug, PV3DBase< T, PVType, FrameType >::mag(), ResonanceBuilder::mass, mcEnergy, mcEta, mcPhi, mcPt, mcQ, FreeTrajectoryState::momentum(), oppositeToMomentum, AlCaHLTBitMon_ParallelJobs::p, parents, PV3DBase< T, PVType, FrameType >::perp(), phi, PV3DBase< T, PVType, FrameType >::phi(), pi, reco::BeamSpot::position(), FreeTrajectoryState::position(), funct::pow(), edm::Handle< T >::product(), Propagator::propagate(), alignCSCRings::r, seedDphi1, seedDphi2, seedDrz1, seedDrz2, seedEta, seedLayer1, seedLayer2, seedMomentum, seedPhi, seedPhi1, seedPhi2, seedPt, seedQ, seedRz1, seedRz2, seedSide1, seedSide2, seedSubdet1, seedSubdet2, TrackerTopology::side(), funct::sin(), mathSSE::sqrt(), DetId::subdetId(), superclusterEnergy, superclusterEt, superclusterEta, superclusterPhi, GeomDet::surface(), lumiQTWidget::t, GeomDet::toGlobal(), Surface::toGlobal(), trajectoryStateTransform::transientState(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

184 {
185  //Retrieve tracker topology from geometry
187  iSetup.get<TrackerTopologyRcd>().get(tTopo);
188 
189 
190 
192  edm::ESHandle<MagneticField> theMagField ;
193  iSetup.get<TrackerDigiGeometryRecord> ().get(pDD);
194  iSetup.get<IdealMagneticFieldRecord>().get(theMagField);
195 
196  // rereads the seeds for test purposes
197  typedef edm::OwnVector<TrackingRecHit> recHitContainer;
198  typedef recHitContainer::const_iterator const_iterator;
199  typedef std::pair<const_iterator,const_iterator> range;
200 
201 
202  // get beam spot
203  edm::Handle<reco::BeamSpot> theBeamSpot;
204  e.getByLabel(beamSpot_, theBeamSpot);
205 
206  // get seeds
207 
209  e.getByLabel(inputCollection_,elSeeds);
210  edm::LogInfo("")<<"\n\n =================> Treating event "<<e.id()<<" Number of seeds "<<elSeeds.product()->size();
211  int is=0;
212 
213  float mass=.000511; // electron propagation
214  PropagatorWithMaterial* prop1stLayer = new PropagatorWithMaterial(oppositeToMomentum,mass,&(*theMagField));
215  PropagatorWithMaterial* prop2ndLayer = new PropagatorWithMaterial(alongMomentum,mass,&(*theMagField));
216 
217  float dphi1=0., dphi2=0., drz1=0., drz2=0.;
218  float phi1=0., phi2=0., rz1=0., rz2=0.;
219 
220  for( ElectronSeedCollection::const_iterator MyS= (*elSeeds).begin(); MyS != (*elSeeds).end(); ++MyS) {
221 
222  LogDebug("") <<"\nSeed nr "<<is<<": ";
223  range r=(*MyS).recHits();
224  LogDebug("")<<" Number of RecHits= "<<(*MyS).nHits();
225  const GeomDet *det1=nullptr;const GeomDet *det2=nullptr;
226 
228  DetId id1 = (*it).geographicalId();
229  det1 = pDD->idToDet(id1);
230  LogDebug("") <<" First hit local x,y,z "<<(*it).localPosition()<<" det "<<id1.det()<<" subdet "<<id1.subdetId();
231  LogDebug("") <<" First hit global "<<det1->toGlobal((*it).localPosition());
232  //std::cout <<" First hit local x,y,z "<<(*it).localPosition()<<" det "<<id1.det()<<" subdet "<<id1.subdetId()<< std::endl;
233  //std::cout <<" First hit global "<<det1->toGlobal((*it).localPosition())<< std::endl;
234  it++;
235  DetId id2 = (*it).geographicalId();
236  det2 = pDD->idToDet(id2);
237  LogDebug("") <<" Second hit local x,y,z "<<(*it).localPosition()<<" det "<<id2.det()<<" subdet "<<id2.subdetId();
238  LogDebug("") <<" Second hit global "<<det2->toGlobal((*it).localPosition());
239  //std::cout <<" Second hit local x,y,z "<<(*it).localPosition()<<" det "<<id2.det()<<" subdet "<<id2.subdetId()<< std::endl;
240  //std::cout <<" Second hit global "<<det2->toGlobal((*it).localPosition()) << std::endl;
241 
242  // state on last det
243  const GeomDet *det=nullptr;
244  for (TrackingRecHitCollection::const_iterator rhits=r.first; rhits!=r.second; rhits++) det = pDD->idToDet(((*rhits)).geographicalId());
245  TrajectoryStateOnSurface t= trajectoryStateTransform::transientState((*MyS).startingState(), &(det->surface()), &(*theMagField));
246 
247  // debug
248 
249  LogDebug("")<<" ElectronSeed outermost state position: "<<t.globalPosition();
250  LogDebug("")<<" ElectronSeed outermost state momentum: "<<t.globalMomentum();
251  edm::RefToBase<CaloCluster> caloCluster = (*MyS).caloCluster() ;
252  if (caloCluster.isNull()) continue;
253  edm::Ref<SuperClusterCollection> theClus = caloCluster.castTo<SuperClusterRef>() ;
254  LogDebug("")<<" ElectronSeed superCluster energy: "<<theClus->energy()<<", position: "<<theClus->position();
255  LogDebug("")<<" ElectronSeed outermost state Pt: "<<t.globalMomentum().perp();
256  LogDebug("")<<" ElectronSeed supercluster Et: "<<theClus->energy()*sin(2.*atan(exp(-theClus->position().eta())));
257  LogDebug("")<<" ElectronSeed outermost momentum direction eta: "<<t.globalMomentum().eta();
258  LogDebug("")<<" ElectronSeed supercluster eta: "<<theClus->position().eta();
259  LogDebug("")<<" ElectronSeed seed charge: "<<(*MyS).getCharge();
260  LogDebug("")<<" ElectronSeed E/p: "<<theClus->energy()/t.globalMomentum().mag();
261 
262  // retreive SC and compute distances between hit position and prediction the same
263  // way as in the PixelHitMatcher
264 
265  // inputs are charge, cluster position, vertex position, cluster energy and B field
266  int charge = int((*MyS).getCharge());
267  GlobalPoint xmeas(theClus->position().x(),theClus->position().y(),theClus->position().z());
268  GlobalPoint vprim(theBeamSpot->position().x(),theBeamSpot->position().y(),theBeamSpot->position().z());
269  float energy = theClus->energy();
270 
271  FreeTrajectoryState fts = FTSFromVertexToPointFactory::get(*theMagField, xmeas, vprim, energy, charge);
272  //std::cout << "[PixelHitMatcher::compatibleSeeds] fts position, momentum " <<
273  // fts.parameters().position() << " " << fts.parameters().momentum() << std::endl;
274 
276  TrajectoryStateOnSurface tsos(fts, *bpb(fts.position(), fts.momentum()));
277 
278  // TrajectorySeed::range r=(*seeds.product())[i].recHits();
279  // TrajectorySeed::range r=(*seeds)[i].recHits();
280 
281  // first Hit
282  it=r.first;
283  DetId id=(*it).geographicalId();
284  const GeomDet *geomdet=pDD->idToDet((*it).geographicalId());
285  LocalPoint lp=(*it).localPosition();
286  GlobalPoint hitPos=geomdet->surface().toGlobal(lp);
287 
289  tsos1 = prop1stLayer->propagate(tsos,geomdet->surface()) ;
290 
291  if (tsos1.isValid()) {
292 
293  std::pair<bool,double> est;
294 
295  //UB add test on phidiff
296  float SCl_phi = xmeas.phi();
297  float localDphi = SCl_phi-hitPos.phi();
298  if(localDphi>CLHEP::pi)localDphi-=(2*CLHEP::pi);
299  if(localDphi<-CLHEP::pi)localDphi+=(2*CLHEP::pi);
300  if(std::abs(localDphi)>2.5)continue;
301 
302  phi1 = hitPos.phi();
303  dphi1 = hitPos.phi() - tsos1.globalPosition().phi();
304  rz1 = hitPos.perp();
305  drz1 = hitPos.perp() - tsos1.globalPosition().perp();
306  if (id.subdetId()%2==1) {
307  drz1 = hitPos.z() - tsos1.globalPosition().z();
308  rz1 = hitPos.z();
309  }
310 
311  // now second Hit
312  it++;
313  DetId id2=(*it).geographicalId();
314  const GeomDet *geomdet2=pDD->idToDet((*it).geographicalId());
316 
317  // compute the z vertex from the cluster point and the found pixel hit
318  double pxHit1z = hitPos.z();
319  double pxHit1x = hitPos.x();
320  double pxHit1y = hitPos.y();
321  double r1diff = (pxHit1x-vprim.x())*(pxHit1x-vprim.x()) + (pxHit1y-vprim.y())*(pxHit1y-vprim.y());
322  r1diff=sqrt(r1diff);
323  double r2diff = (xmeas.x()-pxHit1x)*(xmeas.x()-pxHit1x) + (xmeas.y()-pxHit1y)*(xmeas.y()-pxHit1y);
324  r2diff=sqrt(r2diff);
325  double zVertexPred = pxHit1z - r1diff*(xmeas.z()-pxHit1z)/r2diff;
326 
327  GlobalPoint vertexPred(vprim.x(),vprim.y(),zVertexPred);
328 
329  FreeTrajectoryState fts2 = FTSFromVertexToPointFactory::get(*theMagField, hitPos, vertexPred, energy, charge);
330  tsos2 = prop2ndLayer->propagate(fts2,geomdet2->surface()) ;
331 
332  if (tsos2.isValid()) {
333  LocalPoint lp2=(*it).localPosition();
334  GlobalPoint hitPos2=geomdet2->surface().toGlobal(lp2);
335  phi2 = hitPos2.phi();
336  dphi2 = hitPos2.phi() - tsos2.globalPosition().phi();
337  rz2 = hitPos2.perp();
338  drz2 = hitPos2.perp() - tsos2.globalPosition().perp();
339  if (id2.subdetId()%2==1) {
340  rz2 = hitPos2.z();
341  drz2 = hitPos2.z() - tsos2.globalPosition().z();
342  }
343  }
344 
345  }
346 
347  // fill the tree and histos
348 
349  histpt_->Fill(t.globalMomentum().perp());
350  histetclu_->Fill(theClus->energy()*sin(2.*atan(exp(-theClus->position().eta()))));
351  histeta_->Fill(t.globalMomentum().eta());
352  histetaclu_->Fill(theClus->position().eta());
353  histq_->Fill((*MyS).getCharge());
354  histeoverp_->Fill(theClus->energy()/t.globalMomentum().mag());
355 
356  if (is<10) {
357  superclusterEnergy[is] = theClus->energy();
358  superclusterEta[is] = theClus->position().eta();
359  superclusterPhi[is] = theClus->position().phi();
360  superclusterEt[is] = theClus->energy()*sin(2.*atan(exp(-theClus->position().eta())));
361  seedMomentum[is] = t.globalMomentum().mag();
362  seedEta[is] = t.globalMomentum().eta();
363  seedPhi[is] = t.globalMomentum().phi();
364  seedPt[is] = t.globalMomentum().perp();
365  seedQ[is] = (*MyS).getCharge();
366  seedSubdet1[is] = id1.subdetId();
367  seedLayer1[is]=tTopo->layer(id1);
368  seedSide1[is]=tTopo->side(id1);
369  seedPhi1[is] = phi1;
370  seedRz1[is] = rz1;
371  seedDphi1[is] = dphi1;
372  seedDrz1[is] = drz1;
373  seedSubdet2[is] = id2.subdetId();
374  seedLayer2[is]=tTopo->layer(id2);
375  seedSide2[is]=tTopo->side(id2);
376  seedDphi2[is] = dphi2;
377  seedDrz2[is] = drz2;
378  seedPhi2[is] = phi2;
379  seedRz2[is] = rz2;
380  }
381 
382  is++;
383 
384  }
385 
386  histnbseeds_->Fill(elSeeds.product()->size());
387 
388  // get input clusters
389 
391  //CC to be changed according to supercluster input
392  e.getByLabel("correctedHybridSuperClusters", clusters);
393  histnbclus_->Fill(clusters.product()->size());
394  if (!clusters.product()->empty()) histnrseeds_->Fill(elSeeds.product()->size());
395  // get MC information
396 
398  // this one is empty branch in current test files
399  //e.getByLabel("generatorSmeared", "", HepMCEvt);
400  //e.getByLabel("source", "", HepMCEvt);
401  e.getByLabel("generatorSmeared", "", HepMCEvt);
402 
403  const HepMC::GenEvent* MCEvt = HepMCEvt->GetEvent();
404  HepMC::GenParticle* genPc=nullptr;
405  HepMC::FourVector pAssSim;
406  int ip=0;
407  for (HepMC::GenEvent::particle_const_iterator partIter = MCEvt->particles_begin();
408  partIter != MCEvt->particles_end(); ++partIter) {
409 
410  for (HepMC::GenEvent::vertex_const_iterator vertIter = MCEvt->vertices_begin();
411  vertIter != MCEvt->vertices_end(); ++vertIter) {
412 
413  // CLHEP::HepLorentzVector creation = (*partIter)->CreationVertex();
414  HepMC::GenVertex * creation = (*partIter)->production_vertex();
415  // CLHEP::HepLorentzVector momentum = (*partIter)->Momentum();
416  HepMC::FourVector momentum = (*partIter)->momentum();
417  // HepPDT::ParticleID id = (*partIter)->particleID(); // electrons and positrons are 11 and -11
418  int id = (*partIter)->pdg_id(); // electrons and positrons are 11 and -11
419  LogDebug("") << "MC particle id " << id << ", creationVertex " << (*creation) << " cm, initialMomentum " << momentum.rho() << " GeV/c" << std::endl;
420 
421  if (id == 11 || id == -11) {
422 
423  // single primary electrons or electrons from Zs or Ws
424  HepMC::GenParticle* mother = nullptr;
425  if ( (*partIter)->production_vertex() ) {
426  if ( (*partIter)->production_vertex()->particles_begin(HepMC::parents) !=
427  (*partIter)->production_vertex()->particles_end(HepMC::parents))
428  mother = *((*partIter)->production_vertex()->particles_begin(HepMC::parents));
429  }
430  if ( ((mother == nullptr) || ((mother != nullptr) && (mother->pdg_id() == 23))
431  || ((mother != nullptr) && (mother->pdg_id() == 32))
432  || ((mother != nullptr) && (std::abs(mother->pdg_id()) == 24)))) {
433  genPc=(*partIter);
434  pAssSim = genPc->momentum();
435 
436  // EWK fiducial
437  //if (pAssSim.perp()> 100. || std::abs(pAssSim.eta())> 2.5) continue;
438  //if (pAssSim.perp()< 20. || (std::abs(pAssSim.eta())> 1.4442 && std::abs(pAssSim.eta())< 1.56) || std::abs(pAssSim.eta())> 2.5) continue;
439  // reconstruction fiducial
440  //if (pAssSim.perp()< 5. || std::abs(pAssSim.eta())> 2.5) continue;
441  if (std::abs(pAssSim.eta())> 2.5) continue;
442 
443  histptMC_->Fill(pAssSim.perp());
444  histetaMC_->Fill(pAssSim.eta());
445  histeMC_->Fill(pAssSim.rho());
446 
447  // looking for the best matching gsf electron
448  bool okSeedFound = false;
449  double seedOkRatio = 999999.;
450 
451  // find best matched seed
452  reco::ElectronSeed bestElectronSeed;
453  for( ElectronSeedCollection::const_iterator gsfIter= (*elSeeds).begin(); gsfIter != (*elSeeds).end(); ++gsfIter) {
454 
455  range r=gsfIter->recHits();
456  const GeomDet *det=nullptr;
457  for (TrackingRecHitCollection::const_iterator rhits=r.first; rhits!=r.second; rhits++) det = pDD->idToDet(((*rhits)).geographicalId());
458  TrajectoryStateOnSurface t= trajectoryStateTransform::transientState(gsfIter->startingState(), &(det->surface()), &(*theMagField));
459 
460  float eta = t.globalMomentum().eta();
461  float phi = t.globalMomentum().phi();
462  float p = t.globalMomentum().mag();
463  double dphi = phi-pAssSim.phi();
464  if (std::abs(dphi)>CLHEP::pi)
465  dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
466  double deltaR = sqrt(std::pow((eta-pAssSim.eta()),2) + std::pow(dphi,2));
467  if ( deltaR < 0.15 ){
468 // if ( deltaR < 0.3 ){
469  //if ( (genPc->pdg_id() == 11) && (gsfIter->charge() < 0.) || (genPc->pdg_id() == -11) &&
470  //(gsfIter->charge() > 0.) ){
471  double tmpSeedRatio = p/pAssSim.t();
472  if ( std::abs(tmpSeedRatio-1) < std::abs(seedOkRatio-1) ) {
473  seedOkRatio = tmpSeedRatio;
474  bestElectronSeed=*gsfIter;
475  okSeedFound = true;
476  }
477  //}
478  }
479  } // loop over rec ele to look for the best one
480 
481  // analysis when the mc track is found
482  if (okSeedFound){
483 
484  histptMCmatched_->Fill(pAssSim.perp());
485  histetaMCmatched_->Fill(pAssSim.eta());
486  histeMCmatched_->Fill(pAssSim.rho());
487  if (ip<10) {
488  mcEnergy[ip] = pAssSim.rho();
489  mcEta[ip] = pAssSim.eta();
490  mcPhi[ip] = pAssSim.phi();
491  mcPt[ip] = pAssSim.perp();
492  mcQ[ip] = ((id == 11) ? -1.: +1.);
493  }
494  }
495 
496  // efficiency for ecal driven only
497  okSeedFound = false;
498  seedOkRatio = 999999.;
499 
500  // find best matched seed
501  for( ElectronSeedCollection::const_iterator gsfIter= (*elSeeds).begin(); gsfIter != (*elSeeds).end(); ++gsfIter) {
502 
503  range r=gsfIter->recHits();
504  const GeomDet *det=nullptr;
505  for (TrackingRecHitCollection::const_iterator rhits=r.first; rhits!=r.second; rhits++) det = pDD->idToDet(((*rhits)).geographicalId());
506  TrajectoryStateOnSurface t= trajectoryStateTransform::transientState(gsfIter->startingState(), &(det->surface()), &(*theMagField));
507 
508  float eta = t.globalMomentum().eta();
509  float phi = t.globalMomentum().phi();
510  float p = t.globalMomentum().mag();
511  double dphi = phi-pAssSim.phi();
512  if (std::abs(dphi)>CLHEP::pi)
513  dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
514  double deltaR = sqrt(std::pow((eta-pAssSim.eta()),2) + std::pow(dphi,2));
515  if (gsfIter->isEcalDriven()) {
516  if ( deltaR < 0.15 ){
517 // if ( deltaR < 0.3 ){
518  //if ( (genPc->pdg_id() == 11) && (gsfIter->charge() < 0.) || (genPc->pdg_id() == -11) &&
519  //(gsfIter->charge() > 0.) ){
520  double tmpSeedRatio = p/pAssSim.t();
521  if ( std::abs(tmpSeedRatio-1) < std::abs(seedOkRatio-1) ) {
522  seedOkRatio = tmpSeedRatio;
523  bestElectronSeed=*gsfIter;
524  okSeedFound = true;
525  }
526  //}
527  }
528  } // end if ecal driven
529  } // loop over rec ele to look for the best one
530 
531  // analysis when the mc track is found
532  if (okSeedFound){
533 
534  histecaldrivenptMCmatched_->Fill(pAssSim.perp());
535  histecaldrivenetaMCmatched_->Fill(pAssSim.eta());
536  histecaldriveneMCmatched_->Fill(pAssSim.rho());
537  }
538 
539  // efficiency for tracker driven only
540  okSeedFound = false;
541  seedOkRatio = 999999.;
542 
543  // find best matched seed
544  for( ElectronSeedCollection::const_iterator gsfIter= (*elSeeds).begin(); gsfIter != (*elSeeds).end(); ++gsfIter) {
545 
546  range r=gsfIter->recHits();
547  const GeomDet *det=nullptr;
548  for (TrackingRecHitCollection::const_iterator rhits=r.first; rhits!=r.second; rhits++) det = pDD->idToDet(((*rhits)).geographicalId());
549  TrajectoryStateOnSurface t= trajectoryStateTransform::transientState(gsfIter->startingState(), &(det->surface()), &(*theMagField));
550 
551  float eta = t.globalMomentum().eta();
552  float phi = t.globalMomentum().phi();
553  float p = t.globalMomentum().mag();
554  double dphi = phi-pAssSim.phi();
555  if (std::abs(dphi)>CLHEP::pi)
556  dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
557  double deltaR = sqrt(std::pow((eta-pAssSim.eta()),2) + std::pow(dphi,2));
558  if (gsfIter->isTrackerDriven()) {
559  if ( deltaR < 0.15 ){
560 // if ( deltaR < 0.3 ){
561  //if ( (genPc->pdg_id() == 11) && (gsfIter->charge() < 0.) || (genPc->pdg_id() == -11) &&
562  //(gsfIter->charge() > 0.) ){
563  double tmpSeedRatio = p/pAssSim.t();
564  if ( std::abs(tmpSeedRatio-1) < std::abs(seedOkRatio-1) ) {
565  seedOkRatio = tmpSeedRatio;
566  bestElectronSeed=*gsfIter;
567  okSeedFound = true;
568  }
569  //}
570  }
571  } // end if ecal driven
572  } // loop over rec ele to look for the best one
573 
574  // analysis when the mc track is found
575  if (okSeedFound){
576 
577  histtrackerdrivenptMCmatched_->Fill(pAssSim.perp());
578  histtrackerdrivenetaMCmatched_->Fill(pAssSim.eta());
579  histtrackerdriveneMCmatched_->Fill(pAssSim.rho());
580  }
581 
582  } // end if mother W or Z
583 
584  } // end if gen part is electron
585 
586  } // end loop on vertices
587 
588  ip++;
589 
590  } // end loop on gen particles
591 
592  //tree_->Fill();
593 
594 }
#define LogDebug(id)
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:106
static FreeTrajectoryState get(MagneticField const &magField, GlobalPoint const &xmeas, GlobalPoint const &xvert, float momentum, TrackCharge charge)
TPRegexp parents
Definition: eve_filter.cc:21
T perp() const
Definition: PV3DBase.h:72
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:54
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
unsigned int side(const DetId &id) const
T y() const
Definition: PV3DBase.h:63
GlobalPoint globalPosition() const
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
const Double_t pi
edm::InputTag inputCollection_
T mag() const
Definition: PV3DBase.h:67
recHitContainer::const_iterator const_iterator
T sqrt(T t)
Definition: SSEVec.h:18
T z() const
Definition: PV3DBase.h:64
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:535
GlobalVector momentum() const
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
Definition: DetId.h:18
GlobalPoint position() const
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
T const * product() const
Definition: Handle.h:81
REF castTo() const
Definition: RefToBase.h:286
bool isNull() const
Checks for null.
Definition: RefToBase.h:328
range recHits() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:53
unsigned int layer(const DetId &id) const
T eta() const
Definition: PV3DBase.h:76
edm::EventID id() const
Definition: EventBase.h:60
GlobalVector globalMomentum() const
T get() const
Definition: EventSetup.h:63
const TrackerGeomDet * idToDet(DetId) const override
const Point & position() const
position
Definition: BeamSpot.h:62
T x() const
Definition: PV3DBase.h:62
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:39
void ElectronSeedAnalyzer::beginJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 65 of file ElectronSeedAnalyzer.cc.

References histecaldriveneMCmatched_, histecaldrivenetaMCmatched_, histecaldrivenptMCmatched_, histeclu_, histeffeta_, histeffpt_, histeMC_, histeMCmatched_, histeoverp_, histeta_, histetaclu_, histetaMC_, histetaMCmatched_, histetclu_, histfile_, histnbclus_, histnbseeds_, histnrseeds_, histp_, histpt_, histptMC_, histptMCmatched_, histq_, histtrackerdriveneMCmatched_, histtrackerdrivenetaMCmatched_, histtrackerdrivenptMCmatched_, mcEnergy, mcEta, mcPhi, mcPt, mcQ, seedDphi1, seedDphi2, seedDrz1, seedDrz2, seedEta, seedLayer1, seedLayer2, seedMomentum, seedPhi, seedPhi1, seedPhi2, seedPt, seedQ, seedRz1, seedRz2, seedSide1, seedSide2, seedSubdet1, seedSubdet2, superclusterEnergy, superclusterEt, superclusterEta, superclusterPhi, and tree_.

66 {
67  histfile_->cd();
68  tree_ = new TTree("ElectronSeeds","ElectronSeed validation ntuple");
69  tree_->Branch("mcEnergy",mcEnergy,"mcEnergy[10]/F");
70  tree_->Branch("mcEta",mcEta,"mcEta[10]/F");
71  tree_->Branch("mcPhi",mcPhi,"mcPhi[10]/F");
72  tree_->Branch("mcPt",mcPt,"mcPt[10]/F");
73  tree_->Branch("mcQ",mcQ,"mcQ[10]/F");
74  tree_->Branch("superclusterEnergy",superclusterEnergy,"superclusterEnergy[10]/F");
75  tree_->Branch("superclusterEta",superclusterEta,"superclusterEta[10]/F");
76  tree_->Branch("superclusterPhi",superclusterPhi,"superclusterPhi[10]/F");
77  tree_->Branch("superclusterEt",superclusterEt,"superclusterEt[10]/F");
78  tree_->Branch("seedMomentum",seedMomentum,"seedMomentum[10]/F");
79  tree_->Branch("seedEta",seedEta,"seedEta[10]/F");
80  tree_->Branch("seedPhi",seedPhi,"seedPhi[10]/F");
81  tree_->Branch("seedPt",seedPt,"seedPt[10]/F");
82  tree_->Branch("seedQ",seedQ,"seedQ[10]/F");
83  tree_->Branch("seedSubdet1",seedSubdet1,"seedSubdet1[10]/I");
84  tree_->Branch("seedLayer1",seedLayer1,"seedLayer1[10]/I");
85  tree_->Branch("seedSide1",seedSide1,"seedSide1[10]/I");
86  tree_->Branch("seedPhi1",seedPhi1,"seedPhi1[10]/F");
87  tree_->Branch("seedDphi1",seedDphi1,"seedDphi1[10]/F");
88  tree_->Branch("seedDrz1",seedDrz1,"seedDrz1[10]/F");
89  tree_->Branch("seedRz1",seedRz1,"seedRz1[10]/F");
90  tree_->Branch("seedSubdet2",seedSubdet2,"seedSubdet2[10]/I");
91  tree_->Branch("seedLayer2",seedLayer2,"seedLayer2[10]/I");
92  tree_->Branch("seedSide2",seedSide2,"seedSide2[10]/I");
93  tree_->Branch("seedPhi2",seedPhi2,"seedPhi2[10]/F");
94  tree_->Branch("seedDphi2",seedDphi2,"seedDphi2[10]/F");
95  tree_->Branch("seedRz2",seedRz2,"seedRz2[10]/F");
96  tree_->Branch("seedDrz2",seedDrz2,"seedDrz2[10]/F");
97  histeMC_ = new TH1F("eMC","MC particle energy",100,0.,100.);
98  histeMCmatched_ = new TH1F("eMCmatched","matched MC particle energy",100,0.,100.);
99  histecaldriveneMCmatched_ = new TH1F("ecaldriveneMCmatched","matched MC particle energy, ecal driven",100,0.,100.);
100  histtrackerdriveneMCmatched_ = new TH1F("trackerdriveneMCmatched","matched MC particle energy, tracker driven",100,0.,100.);
101  histp_ = new TH1F("p","seed p",100,0.,100.);
102  histeclu_ = new TH1F("clus energy","supercluster energy",100,0.,100.);
103  histpt_ = new TH1F("pt","seed pt",100,0.,100.);
104  histptMC_ = new TH1F("ptMC","MC particle pt",100,0.,100.);
105  histptMCmatched_ = new TH1F("ptMCmatched","matched MC particle pt",100,0.,100.);
106  histecaldrivenptMCmatched_ = new TH1F("ecaldrivenptMCmatched","matched MC particle pt, ecal driven",100,0.,100.);
107  histtrackerdrivenptMCmatched_ = new TH1F("trackerdrivenptMCmatched","matched MC particle pt, tracker driven",100,0.,100.);
108  histetclu_ = new TH1F("Et","supercluster Et",100,0.,100.);
109  histeffpt_ = new TH1F("pt eff","seed effciency vs pt",100,0.,100.);
110  histeta_ = new TH1F("seed eta","seed eta",100,-2.5,2.5);
111  histetaMC_ = new TH1F("etaMC","MC particle eta",100,-2.5,2.5);
112  histetaMCmatched_ = new TH1F("etaMCmatched","matched MC particle eta",100,-2.5,2.5);
113  histecaldrivenetaMCmatched_ = new TH1F("ecaldrivenetaMCmatched","matched MC particle eta, ecal driven",100,-2.5,2.5);
114  histtrackerdrivenetaMCmatched_ = new TH1F("trackerdrivenetaMCmatched","matched MC particle eta, tracker driven",100,-2.5,2.5);
115  histetaclu_ = new TH1F("clus eta","supercluster eta",100,-2.5,2.5);
116  histeffeta_ = new TH1F("eta eff","seed effciency vs eta",100,-2.5,2.5);
117  histq_ = new TH1F("q","seed charge",100,-2.5,2.5);
118  histeoverp_ = new TH1F("E/p","seed E/p",100,0.,10.);
119  histnbseeds_ = new TH1I("nrs","Nr of seeds ",50,0.,25.);
120  histnbclus_ = new TH1I("nrclus","Nr of superclusters ",50,0.,25.);
121  histnrseeds_ = new TH1I("ns","Nr of seeds if clusters",50,0.,25.);
122 }
void ElectronSeedAnalyzer::endJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 124 of file ElectronSeedAnalyzer.cc.

References histecaldriveneMCmatched_, histecaldrivenetaMCmatched_, histecaldrivenptMCmatched_, histeclu_, histeffeta_, histeffpt_, histeMC_, histeMCmatched_, histeoverp_, histeta_, histetaclu_, histetaMC_, histetaMCmatched_, histetclu_, histfile_, histnbclus_, histnbseeds_, histnrseeds_, histp_, histpt_, histptMC_, histptMCmatched_, histq_, histtrackerdriveneMCmatched_, histtrackerdrivenetaMCmatched_, histtrackerdrivenptMCmatched_, and tree_.

125 {
126  histfile_->cd();
127  tree_->Print();
128  tree_->Write();
129 
130  // efficiency vs eta
131  TH1F *histetaEff = (TH1F*)histetaMCmatched_->Clone("histetaEff");
132  histetaEff->Reset();
133  histetaEff->Divide(histetaMCmatched_,histeta_,1,1,"b");
134  histetaEff->Print();
135  histetaEff->GetXaxis()->SetTitle("#eta");
136  histetaEff->GetYaxis()->SetTitle("Efficiency");
137 
138  // efficiency vs pt
139  TH1F *histptEff = (TH1F*)histptMCmatched_->Clone("histotEff");
140  histptEff->Reset();
141  histptEff->Divide(histptMCmatched_,histpt_,1,1,"b");
142  histptEff->Print();
143  histptEff->GetXaxis()->SetTitle("p_{T}");
144  histptEff->GetYaxis()->SetTitle("Efficiency");
145 
146  histeMCmatched_->Write();
147  histecaldriveneMCmatched_->Write();
149  histeMC_->Write();
150  histp_->Write();
151  histeclu_->Write();
152  histpt_->Write();
153  histptMCmatched_->Write();
156  histptMC_->Write();
157  histetclu_->Write();
158  histeffpt_->Write();
159  histeta_->Write();
160  histetaMCmatched_->Write();
163  histetaMC_->Write();
164  histetaclu_->Write();
165  histeffeta_->Write();
166  histq_->Write();
167  histeoverp_->Write();
168  histnbseeds_->Write();
169  histnbclus_->Write();
170  histnrseeds_->Write();
171 }

Member Data Documentation

edm::InputTag ElectronSeedAnalyzer::beamSpot_
private

Definition at line 85 of file ElectronSeedAnalyzer.h.

Referenced by analyze().

TH1F* ElectronSeedAnalyzer::histecaldriveneMCmatched_
private

Definition at line 60 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histecaldrivenetaMCmatched_
private

Definition at line 74 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histecaldrivenptMCmatched_
private

Definition at line 67 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histeclu_
private

Definition at line 63 of file ElectronSeedAnalyzer.h.

Referenced by beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histeffeta_
private

Definition at line 77 of file ElectronSeedAnalyzer.h.

Referenced by beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histeffpt_
private

Definition at line 70 of file ElectronSeedAnalyzer.h.

Referenced by beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histeMC_
private

Definition at line 58 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), endJob(), and ~ElectronSeedAnalyzer().

TH1F* ElectronSeedAnalyzer::histeMCmatched_
private

Definition at line 59 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histeoverp_
private

Definition at line 79 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histeta_
private

Definition at line 71 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histetaclu_
private

Definition at line 76 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histetaMC_
private

Definition at line 72 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histetaMCmatched_
private

Definition at line 73 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histetclu_
private

Definition at line 69 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TFile* ElectronSeedAnalyzer::histfile_
private
TH1I* ElectronSeedAnalyzer::histnbclus_
private

Definition at line 82 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1I* ElectronSeedAnalyzer::histnbseeds_
private

Definition at line 81 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1I* ElectronSeedAnalyzer::histnrseeds_
private

Definition at line 80 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histp_
private

Definition at line 62 of file ElectronSeedAnalyzer.h.

Referenced by beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histpt_
private

Definition at line 64 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histptMC_
private

Definition at line 65 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histptMCmatched_
private

Definition at line 66 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histq_
private

Definition at line 78 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histtrackerdriveneMCmatched_
private

Definition at line 61 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histtrackerdrivenetaMCmatched_
private

Definition at line 75 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* ElectronSeedAnalyzer::histtrackerdrivenptMCmatched_
private

Definition at line 68 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

edm::InputTag ElectronSeedAnalyzer::inputCollection_
private

Definition at line 84 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and ElectronSeedAnalyzer().

float ElectronSeedAnalyzer::mcEnergy[10]
private

Definition at line 50 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::mcEta[10]
private

Definition at line 50 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::mcPhi[10]
private

Definition at line 50 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::mcPt[10]
private

Definition at line 50 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::mcQ[10]
private

Definition at line 50 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedDphi1[10]
private

Definition at line 56 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedDphi2[10]
private

Definition at line 56 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedDrz1[10]
private

Definition at line 56 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedDrz2[10]
private

Definition at line 56 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedEta[10]
private

Definition at line 52 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

int ElectronSeedAnalyzer::seedLayer1[10]
private

Definition at line 54 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

int ElectronSeedAnalyzer::seedLayer2[10]
private

Definition at line 54 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedMomentum[10]
private

Definition at line 52 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedPhi[10]
private

Definition at line 52 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedPhi1[10]
private

Definition at line 57 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedPhi2[10]
private

Definition at line 57 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedPt[10]
private

Definition at line 52 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedQ[10]
private

Definition at line 52 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedRz1[10]
private

Definition at line 57 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::seedRz2[10]
private

Definition at line 57 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

int ElectronSeedAnalyzer::seedSide1[10]
private

Definition at line 55 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

int ElectronSeedAnalyzer::seedSide2[10]
private

Definition at line 55 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

int ElectronSeedAnalyzer::seedSubdet1[10]
private

Definition at line 53 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

int ElectronSeedAnalyzer::seedSubdet2[10]
private

Definition at line 53 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::superclusterEnergy[10]
private

Definition at line 51 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::superclusterEt[10]
private

Definition at line 51 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::superclusterEta[10]
private

Definition at line 51 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

float ElectronSeedAnalyzer::superclusterPhi[10]
private

Definition at line 51 of file ElectronSeedAnalyzer.h.

Referenced by analyze(), and beginJob().

TrajectoryStateTransform ElectronSeedAnalyzer::transformer_
private

Definition at line 46 of file ElectronSeedAnalyzer.h.

TTree* ElectronSeedAnalyzer::tree_
private

Definition at line 49 of file ElectronSeedAnalyzer.h.

Referenced by beginJob(), and endJob().