CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
QualityFilter Class Referencefinal
Inheritance diagram for QualityFilter:
edm::stream::EDProducer<>

Public Member Functions

 QualityFilter (const edm::ParameterSet &)
 
 ~QualityFilter () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Private Member Functions

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

Private Attributes

bool copyExtras_
 
edm::EDGetTokenT< TrajTrackAssociationCollectiontassTag
 
reco::TrackBase::TrackQuality trackQuality_
 
edm::EDGetTokenT< std::vector< Trajectory > > trajTag
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 11 of file QualityFilter.cc.

Constructor & Destructor Documentation

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

Definition at line 45 of file QualityFilter.cc.

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

46 {
47  copyExtras_ = iConfig.getUntrackedParameter<bool>("copyExtras", false);
48 
49  produces<reco::TrackCollection>();
50  if (copyExtras_) {
51  produces<TrackingRecHitCollection>();
52  produces<reco::TrackExtraCollection>();
53  }
54  produces<std::vector<Trajectory> >();
55  produces<TrajTrackAssociationCollection>();
56 
57  trajTag = consumes<std::vector<Trajectory> >(iConfig.getParameter<edm::InputTag>("recTracks"));
58  tassTag = consumes<TrajTrackAssociationCollection>(iConfig.getParameter<edm::InputTag>("recTracks"));
59  trackQuality_=TrackBase::qualityByName(iConfig.getParameter<std::string>("TrackQuality"));
60 }
T getParameter(std::string const &) const
reco::TrackBase::TrackQuality trackQuality_
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< std::vector< Trajectory > > trajTag
edm::EDGetTokenT< TrajTrackAssociationCollection > tassTag
QualityFilter::~QualityFilter ( )
override

Definition at line 63 of file QualityFilter.cc.

64 {
65 
66  // do anything here that needs to be done at desctruction time
67  // (e.g. close files, deallocate resources etc.)
68 
69 }

Member Function Documentation

void QualityFilter::endJob ( void  )
privatevirtual

Definition at line 189 of file QualityFilter.cc.

References DEFINE_FWK_MODULE.

189  {
190 }
void QualityFilter::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 78 of file QualityFilter.cc.

References edm::AssociationMap< Tag >::begin(), edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator, edm::AssociationMap< Tag >::end(), edm::Event::getByToken(), edm::Event::getRefBeforePut(), hfClusterShapes_cfi::hits, edm::Ref< C, T, F >::key(), eostools::move(), nTracks(), edm::Event::put(), and HiIsolationCommonParameters_cff::track.

79 {
80 
81 
82  unique_ptr<TrackCollection> selTracks(new TrackCollection);
83  unique_ptr<TrackingRecHitCollection> selHits(copyExtras_ ? new TrackingRecHitCollection() : nullptr);
84  unique_ptr<TrackExtraCollection> selTrackExtras(copyExtras_ ? new TrackExtraCollection() : nullptr);
85  unique_ptr<vector<Trajectory> > outputTJ(new vector<Trajectory> );
86  unique_ptr<TrajTrackAssociationCollection> trajTrackMap( new TrajTrackAssociationCollection() );
87 
88 
89  TrackExtraRefProd rTrackExtras;
91  if (copyExtras_) {
92  rTrackExtras = iEvent.getRefBeforePut<TrackExtraCollection>();
93  rHits = iEvent.getRefBeforePut<TrackingRecHitCollection>();
94  }
95 
98 
99  iEvent.getByToken(trajTag,TrajectoryCollection);
100  iEvent.getByToken(tassTag,assoMap);
101 
102 
103 
106  for( ; it != lastAssoc; ++it ) {
107  const Ref<vector<Trajectory> > traj = it->key;
108  const reco::TrackRef itc = it->val;
109  bool goodTk = (itc->quality(trackQuality_));
110 
111 
112  if (goodTk){
113  auto const & track =(*itc);
114  //tracks and trajectories
115  selTracks->push_back( track );
116  outputTJ->push_back( *traj );
117  if (copyExtras_) {
118  //TRACKING HITS
119  trackingRecHit_iterator irhit =(*itc).recHitsBegin();
120  trackingRecHit_iterator lasthit =(*itc).recHitsEnd();
121  for (; irhit!=lasthit; ++irhit) {
122  selHits->push_back((*irhit)->clone() );
123  }
124  }
125 
126  }
127 
128  }
129 
130  unsigned nTracks = selTracks->size();
131  if (copyExtras_) {
132  //PUT TRACKING HITS IN THE EVENT
133  OrphanHandle<TrackingRecHitCollection> theRecoHits = iEvent.put(std::move(selHits) );
134  edm::RefProd<TrackingRecHitCollection> theRecoHitsProd(theRecoHits);
135 
136  //PUT TRACK EXTRA IN THE EVENT
137  selTrackExtras->reserve(nTracks);
138  unsigned hits=0;
139 
140  for ( unsigned index = 0; index<nTracks; ++index ) {
141  auto const & aTrack = (*selTracks)[index];
142  selTrackExtras->emplace_back(aTrack.outerPosition(),
143  aTrack.outerMomentum(),
144  aTrack.outerOk(),
145  aTrack.innerPosition(),
146  aTrack.innerMomentum(),
147  aTrack.innerOk(),
148  aTrack.outerStateCovariance(),
149  aTrack.outerDetId(),
150  aTrack.innerStateCovariance(),
151  aTrack.innerDetId(),
152  aTrack.seedDirection(),
153  aTrack.seedRef()
154  );
155 
156  auto & aTrackExtra = selTrackExtras->back();
157  //unsigned nHits = aTrack.numberOfValidHits();
158  auto nHits = aTrack.recHitsSize();
159  aTrackExtra.setHits(theRecoHitsProd, hits, nHits);
160  hits += nHits;
161  selTrackExtras->push_back(aTrackExtra);
162  }
163 
164  //CORRECT REF TO TRACK
165  OrphanHandle<TrackExtraCollection> theRecoTrackExtras = iEvent.put(std::move(selTrackExtras));
166  for ( unsigned index = 0; index<nTracks; ++index ) {
167  const reco::TrackExtraRef theTrackExtraRef(theRecoTrackExtras,index);
168  (*selTracks)[index].setExtra(theTrackExtraRef);
169  }
170  } // END IF COPY EXTRAS
171 
172  //TRACKS AND TRAJECTORIES
173  OrphanHandle<TrackCollection> theRecoTracks = iEvent.put(std::move(selTracks));
174  OrphanHandle<vector<Trajectory> > theRecoTrajectories = iEvent.put(std::move(outputTJ));
175 
176  //TRACKS<->TRAJECTORIES MAP
177  nTracks = theRecoTracks->size();
178  for ( unsigned index = 0; index<nTracks; ++index ) {
179  Ref<vector<Trajectory> > trajRef( theRecoTrajectories, index );
180  Ref<TrackCollection> tkRef( theRecoTracks, index );
181  trajTrackMap->insert(trajRef,tkRef);
182  }
183  //MAP IN THE EVENT
184  iEvent.put( std::move(trajTrackMap) );
185 }
reco::TrackBase::TrackQuality trackQuality_
const unsigned int nTracks(const reco::Vertex &sv)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
const_iterator end() const
last iterator over the map (read only)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:15
edm::EDGetTokenT< std::vector< Trajectory > > trajTag
key_type key() const
Accessor for product key.
Definition: Ref.h:263
edm::EDGetTokenT< TrajTrackAssociationCollection > tassTag
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > > TrajTrackAssociationCollection
RefProd< PROD > getRefBeforePut()
Definition: Event.h:150
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:11
edm::OwnVector< TrackingRecHit > TrackingRecHitCollection
collection of TrackingRecHits
std::vector< Trajectory > TrajectoryCollection
const_iterator begin() const
first iterator over the map (read only)
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

bool QualityFilter::copyExtras_
private

Definition at line 26 of file QualityFilter.cc.

edm::EDGetTokenT<TrajTrackAssociationCollection> QualityFilter::tassTag
private

Definition at line 24 of file QualityFilter.cc.

reco::TrackBase::TrackQuality QualityFilter::trackQuality_
private

Definition at line 25 of file QualityFilter.cc.

edm::EDGetTokenT<std::vector<Trajectory> > QualityFilter::trajTag
private

Definition at line 23 of file QualityFilter.cc.