CMS 3D CMS Logo

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

#include <HitPixelLayersTPSelector.h>

Public Types

typedef TrackingParticleCollection collection
 
typedef container::const_iterator const_iterator
 
typedef std::vector< const
TrackingParticle * > 
container
 

Public Member Functions

const_iterator begin () const
 
const_iterator end () const
 
bool goodHitPattern (const std::vector< bool > &hitpattern)
 
 HitPixelLayersTPSelector (const edm::ParameterSet &iConfig)
 
std::vector< bool > pixelHitPattern (const TrackingParticleRef &simTrack, const TrackerTopology *tTopo)
 
void select (const edm::Handle< collection > &TPCH, const edm::Event &iEvent, const edm::EventSetup &iSetup)
 
size_t size () const
 

Public Attributes

bool chargedOnly_
 
double lip_
 
double maxRapidity_
 
int minHit_
 
double minRapidity_
 
std::vector< int > pdgId_
 
bool primaryOnly_
 
double ptMin_
 
container selected_
 
bool signalOnly_
 
double tip_
 
bool tpStatusBased_
 
bool tripletSeedOnly_
 

Detailed Description

Selector to select only tracking particles that leave hits in three pixel layers Additional selection done on pt, rapidity, impact parameter, min hits, pdg id, etc.

Inspired by CommonTools.RecoAlgos.TrackingParticleSelector.h

Definition at line 18 of file HitPixelLayersTPSelector.h.

Member Typedef Documentation

Definition at line 23 of file HitPixelLayersTPSelector.h.

typedef container::const_iterator HitPixelLayersTPSelector::const_iterator

Definition at line 30 of file HitPixelLayersTPSelector.h.

Definition at line 27 of file HitPixelLayersTPSelector.h.

Constructor & Destructor Documentation

HitPixelLayersTPSelector::HitPixelLayersTPSelector ( const edm::ParameterSet iConfig)
inline

Definition at line 33 of file HitPixelLayersTPSelector.h.

33  :
34  tripletSeedOnly_(iConfig.getParameter<bool>("tripletSeedOnly")),
35  ptMin_(iConfig.getParameter<double>("ptMin")),
36  minRapidity_(iConfig.getParameter<double>("minRapidity")),
37  maxRapidity_(iConfig.getParameter<double>("maxRapidity")),
38  tip_(iConfig.getParameter<double>("tip")),
39  lip_(iConfig.getParameter<double>("lip")),
40  minHit_(iConfig.getParameter<int>("minHit")),
41  signalOnly_(iConfig.getParameter<bool>("signalOnly")),
42  chargedOnly_(iConfig.getParameter<bool>("chargedOnly")),
43  primaryOnly_(iConfig.getParameter<bool>("primaryOnly")),
44  tpStatusBased_(iConfig.getParameter<bool>("tpStatusBased")),
45  pdgId_(iConfig.getParameter< std::vector<int> >("pdgId"))
46  {};
T getParameter(std::string const &) const

Member Function Documentation

const_iterator HitPixelLayersTPSelector::begin ( void  ) const
inline

Definition at line 133 of file HitPixelLayersTPSelector.h.

References selected_.

134  {
135  return selected_.begin();
136  }
const_iterator HitPixelLayersTPSelector::end ( void  ) const
inline

Definition at line 139 of file HitPixelLayersTPSelector.h.

References selected_.

140  {
141  return selected_.end();
142  }
bool HitPixelLayersTPSelector::goodHitPattern ( const std::vector< bool > &  hitpattern)
inline

Definition at line 122 of file HitPixelLayersTPSelector.h.

Referenced by select().

123  {
124  if( (hitpattern[0] && hitpattern[1] && hitpattern[2]) ||
125  (hitpattern[0] && hitpattern[1] && hitpattern[3]) ||
126  (hitpattern[0] && hitpattern[3] && hitpattern[4]) )
127  return true;
128  else
129  return false;
130  }
std::vector<bool> HitPixelLayersTPSelector::pixelHitPattern ( const TrackingParticleRef simTrack,
const TrackerTopology tTopo 
)
inline

Definition at line 96 of file HitPixelLayersTPSelector.h.

References cond::rpcobgas::detid, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, TrackerTopology::pxbLayer(), TrackerTopology::pxfDisk(), and DetId::Tracker.

Referenced by select().

97  {
98  std::vector<bool> hitpattern(5,false); // PXB 0,1,2 PXF 0,1
99 
100 #warning "This file has been modified just to get it to compile without any regard as to whether it still functions as intended"
101 #ifdef REMOVED_JUST_TO_GET_IT_TO_COMPILE__THIS_CODE_NEEDS_TO_BE_CHECKED
102  for(std::vector<PSimHit>::const_iterator simHit = simTrack->pSimHit_begin();simHit!= simTrack->pSimHit_end();simHit++){
103 
104  DetId id = DetId(simHit->detUnitId());
105  uint32_t detid = id.det();
106  uint32_t subdet = id.subdetId();
107 
108  if (detid == DetId::Tracker) {
109  if (subdet == PixelSubdetector::PixelBarrel)
110  hitpattern[tTopo->pxbLayer(id)-1]=true;
111  else if (subdet == PixelSubdetector::PixelEndcap)
112  hitpattern[tTopo->pxfDisk(id)+2]=true;
113  }
114 
115  }// end simhit loop
116 #endif
117 
118  return hitpattern;
119  }
unsigned int pxfDisk(const DetId &id) const
unsigned int pxbLayer(const DetId &id) const
Definition: DetId.h:20
void HitPixelLayersTPSelector::select ( const edm::Handle< collection > &  TPCH,
const edm::Event iEvent,
const edm::EventSetup iSetup 
)
inline

Definition at line 50 of file HitPixelLayersTPSelector.h.

References chargedOnly_, edm::EventSetup::get(), goodHitPattern(), i, lip_, maxRapidity_, minHit_, minRapidity_, pdgId_, pixelHitPattern(), primaryOnly_, edm::Handle< T >::product(), edm::ESHandle< class >::product(), ptMin_, selected_, signalOnly_, mathSSE::sqrt(), tip_, tpStatusBased_, and tripletSeedOnly_.

51  {
52  selected_.clear();
53  //Retrieve tracker topology from geometry
55  iSetup.get<IdealGeometryRecord>().get(tTopoHand);
56  const TrackerTopology *tTopo=tTopoHand.product();
57 
58 
59  const collection & tpc = *(TPCH.product());
60 
61  for (TrackingParticleCollection::size_type i=0; i<tpc.size(); i++)
62  {
63  TrackingParticleRef tpr(TPCH, i);
64 
65  // quickly reject if it is from pile-up
66  if (signalOnly_ && !(tpr->eventId().bunchCrossing()==0 && tpr->eventId().event()==0) ) continue;
67  if (chargedOnly_ && tpr->charge()==0) continue; //select only if charge!=0
68  if (tpStatusBased_ && primaryOnly_ && tpr->status()!=1 ) continue; // TP status based sel primary
69  if ((!tpStatusBased_) && primaryOnly_ && tpr->parentVertex()->nSourceTracks()!=0 ) continue; // vertex based sel for primary
70 
71  // loop over specified PID values
72  bool testId = false;
73  unsigned int idSize = pdgId_.size();
74  if (idSize==0) testId = true;
75  else for (unsigned int it=0;it!=idSize;++it){
76  if (tpr->pdgId()==pdgId_[it]) testId = true;
77  }
78 
79  // selection criteria
80  if ( tpr->numberOfTrackerLayers() >= minHit_ &&
81  sqrt(tpr->momentum().perp2()) >= ptMin_ &&
82  tpr->momentum().eta() >= minRapidity_ && tpr->momentum().eta() <= maxRapidity_ &&
83  sqrt(tpr->vertex().perp2()) <= tip_ &&
84  fabs(tpr->vertex().z()) <= lip_ &&
85  testId)
86  {
87  if (tripletSeedOnly_ && !goodHitPattern(pixelHitPattern(tpr,tTopo)) ) continue; //findable triplet seed
88  const TrackingParticle * trap = &(tpc[i]);
89  selected_.push_back(trap);
90  }
91 
92  }
93  }
int i
Definition: DBlmapReader.cc:9
std::vector< bool > pixelHitPattern(const TrackingParticleRef &simTrack, const TrackerTopology *tTopo)
uint16_t size_type
TrackingParticleCollection collection
T sqrt(T t)
Definition: SSEVec.h:48
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
T const * product() const
Definition: Handle.h:74
bool goodHitPattern(const std::vector< bool > &hitpattern)
Monte Carlo truth information used for tracking validation.
size_t HitPixelLayersTPSelector::size ( void  ) const
inline

Definition at line 145 of file HitPixelLayersTPSelector.h.

References selected_.

146  {
147  return selected_.size();
148  }

Member Data Documentation

bool HitPixelLayersTPSelector::chargedOnly_

Definition at line 161 of file HitPixelLayersTPSelector.h.

Referenced by select().

double HitPixelLayersTPSelector::lip_

Definition at line 158 of file HitPixelLayersTPSelector.h.

Referenced by select().

double HitPixelLayersTPSelector::maxRapidity_

Definition at line 156 of file HitPixelLayersTPSelector.h.

Referenced by select().

int HitPixelLayersTPSelector::minHit_

Definition at line 159 of file HitPixelLayersTPSelector.h.

Referenced by select().

double HitPixelLayersTPSelector::minRapidity_

Definition at line 155 of file HitPixelLayersTPSelector.h.

Referenced by select().

std::vector<int> HitPixelLayersTPSelector::pdgId_

Definition at line 164 of file HitPixelLayersTPSelector.h.

Referenced by select().

bool HitPixelLayersTPSelector::primaryOnly_

Definition at line 162 of file HitPixelLayersTPSelector.h.

Referenced by select().

double HitPixelLayersTPSelector::ptMin_

Definition at line 154 of file HitPixelLayersTPSelector.h.

Referenced by select().

container HitPixelLayersTPSelector::selected_

Definition at line 152 of file HitPixelLayersTPSelector.h.

Referenced by begin(), end(), select(), and size().

bool HitPixelLayersTPSelector::signalOnly_

Definition at line 160 of file HitPixelLayersTPSelector.h.

Referenced by select().

double HitPixelLayersTPSelector::tip_

Definition at line 157 of file HitPixelLayersTPSelector.h.

Referenced by select().

bool HitPixelLayersTPSelector::tpStatusBased_

Definition at line 163 of file HitPixelLayersTPSelector.h.

Referenced by select().

bool HitPixelLayersTPSelector::tripletSeedOnly_

Definition at line 153 of file HitPixelLayersTPSelector.h.

Referenced by select().