17 typedef std::multimap<unsigned, std::vector<unsigned> >
BlockMap;
25 produces<reco::PFRecTrackCollection>();
26 produces<reco::PFConversionCollection>();
43 auto_ptr< reco::PFConversionCollection >
45 auto_ptr< reco::PFRecTrackCollection >
64 pv = &*vertex->begin();
69 e(0, 0) = 0.0015 * 0.0015;
70 e(1, 1) = 0.0015 * 0.0015;
77 multimap<unsigned int, unsigned int> trackmap;
78 std::vector<unsigned int> conv_coll(0);
81 for(
unsigned int icoll1=0; icoll1 < convColl.size(); icoll1++)
85 bool greater_prob=
false;
86 std::vector<edm::RefToBase<reco::Track> > tracksRefColl1 = convColl[icoll1].tracks();
87 for(
unsigned it1 = 0; it1 < tracksRefColl1.size(); it1++)
89 reco::TrackRef trackRef1 = (tracksRefColl1[it1]).castTo<reco::TrackRef>();
91 for(
unsigned int icoll2=0; icoll2 < convColl.size(); icoll2++)
93 if(icoll1==icoll2)
continue;
95 std::vector<edm::RefToBase<reco::Track> > tracksRefColl2 = convColl[icoll2].tracks();
96 for(
unsigned it2 = 0; it2 < tracksRefColl2.size(); it2++)
98 reco::TrackRef trackRef2 = (tracksRefColl2[it2]).castTo<reco::TrackRef>();
116 float size1=trackRef1->found();
117 float size2=trackRef2->found();
119 if(size1>size2)frac=(double)shared/size2;
120 else frac=(double)shared/size1;
127 {greater_prob=
true;
break;}
130 if(greater_prob)
break;
132 if(greater_prob)
break;
134 if(!greater_prob)conv_coll.push_back(icoll1);
138 for(
unsigned iColl=0; iColl<conv_coll.size(); iColl++)
140 unsigned int collindex=conv_coll[iColl];
142 std::vector<reco::PFRecTrackRef> pfRecTkcoll;
144 std::vector<edm::RefToBase<reco::Track> > tracksRefColl = convColl[collindex].tracks();
146 for(
unsigned it = 0; it < tracksRefColl.size(); it++)
148 reco::TrackRef trackRef = (tracksRefColl[it]).castTo<reco::TrackRef>();
168 pfRecTrack.setSTIP(stip);
170 pfRecTrackColl->push_back(pfRecTrack);
177 iEvent.
put(pfRecTrackColl);
178 iEvent.
put(pfConversionColl);
T getParameter(std::string const &) const
reconstructed track used as an input to particle flow
edm::EDGetTokenT< reco::ConversionCollection > pfConversionContainer_
virtual void produce(edm::Event &, const edm::EventSetup &) override
Produce the PFRecTrack collection.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual void endRun(const edm::Run &, const edm::EventSetup &) override
std::multimap< unsigned, std::vector< unsigned > > BlockMap
reco::TransientTrack build(const reco::Track *p) const
virtual bool sharesInput(const TrackingRecHit *other, SharedInputType what) const
math::Error< dimension >::type Error
covariance error matrix (3x3)
std::vector< PFConversion > PFConversionCollection
collection of PFConversion objects
key_type key() const
Accessor for product key.
PFConversionProducer(const edm::ParameterSet &)
Constructor.
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
U second(std::pair< T, U > const &p)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
math::XYZPoint Point
point in the space
float ChiSquaredProbability(double chiSquared, double nrDOF)
edm::EDGetTokenT< reco::VertexCollection > vtx_h
RefProd< PROD > getRefBeforePut()
bool isValid() const
is this point valid ?
XYZVectorD XYZVector
spatial vector with cartesian internal representation
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
T const * product() const
PFTrackTransformer * pfTransformer_
PFTrackTransformer.
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
virtual void beginRun(const edm::Run &, const edm::EventSetup &) override
~PFConversionProducer()
Destructor.
std::vector< PFRecTrack > PFRecTrackCollection
collection of PFRecTrack objects
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection