CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TrackAssociatorByChi2.h
Go to the documentation of this file.
1 #ifndef TrackAssociatorByChi2_h
2 #define TrackAssociatorByChi2_h
3 
24 
25 #include<map>
26 
27 //Note that the Association Map is filled with -ch2 and not chi2 because it is ordered using std::greater:
28 //the track with the lowest association chi2 will be the first in the output map.
29 
30 namespace reco{
37 }
38 
39 
41 
42  public:
43  typedef std::map<double, SimTrack> Chi2SimMap;
44  typedef std::pair< reco::Track, Chi2SimMap> RecoToSimPair;
45  typedef std::vector< RecoToSimPair > RecoToSimPairAssociation;
46 
49  chi2cut(conf.getParameter<double>("chi2cut")),
50  onlyDiagonal(conf.getParameter<bool>("onlyDiagonal")),
51  bsSrc(conf.getParameter<edm::InputTag>("beamSpot")) {
52  theMF=mF;
53  if (onlyDiagonal)
54  edm::LogInfo("TrackAssociator") << " ---- Using Off Diagonal Covariance Terms = 0 ---- " << "\n";
55  else
56  edm::LogInfo("TrackAssociator") << " ---- Using Off Diagonal Covariance Terms != 0 ---- " << "\n";
57  }
58 
60  TrackAssociatorByChi2(const edm::ESHandle<MagneticField> mF, double chi2Cut, bool onlyDiag, const edm::InputTag& beamspotSrc){
61  chi2cut=chi2Cut;
62  onlyDiagonal=onlyDiag;
63  theMF=mF;
64  bsSrc = beamspotSrc;
65  }
66 
69 
71  double compareTracksParam(reco::TrackCollection::const_iterator,
72  edm::SimTrackContainer::const_iterator,
74  const GlobalVector&,
76  const reco::BeamSpot&) const;
77 
80  const edm::SimTrackContainer&,
82  const reco::BeamSpot&) const;
83 
85  double getChi2(reco::TrackBase::ParameterVector& rParameters,
86  reco::TrackBase::CovarianceMatrix& recoTrackCovMatrix,
87  Basic3DVector<double>& momAtVtx,
89  int& charge,
90  const reco::BeamSpot&) const;
91 
93  double associateRecoToSim(reco::TrackCollection::const_iterator,
94  TrackingParticleCollection::const_iterator,
95  const reco::BeamSpot&) const;
96 
98  std::pair<bool,reco::TrackBase::ParameterVector> parametersAtClosestApproach(const Basic3DVector<double>&,// vertex
99  const Basic3DVector<double>&,// momAtVtx
100  float,// charge
101  const reco::BeamSpot&) const;//beam spot
103  virtual
106  const edm::Event * event = 0,
107  const edm::EventSetup * setup = 0 ) const override;
109  virtual
112  const edm::Event * event = 0,
113  const edm::EventSetup * setup = 0 ) const override;
114 
116  virtual
119  const edm::Event * event = 0,
120  const edm::EventSetup * setup = 0) const override {
122  }
123 
125  virtual
128  const edm::Event * event = 0,
129  const edm::EventSetup * setup = 0) const override {
131  }
132 
136  const edm::Event * event = 0,
137  const edm::EventSetup * setup = 0 ) const ;
141  const edm::Event * event = 0,
142  const edm::EventSetup * setup = 0 ) const ;
143 
147  const edm::Event * event = 0,
148  const edm::EventSetup * setup = 0) const {
150  for (unsigned int j=0; j<tCH->size();j++)
152 
154  for (unsigned int j=0; j<tPCH->size();j++)
156 
157  return associateRecoToGen(tc,tpc,event,setup);
158  }
159 
163  const edm::Event * event = 0,
164  const edm::EventSetup * setup = 0) const {
166  for (unsigned int j=0; j<tCH->size();j++)
168 
170  for (unsigned int j=0; j<tPCH->size();j++)
172 
173  return associateGenToReco(tc,tpc,event,setup);
174  }
175 
176 
177  private:
179  double chi2cut;
182 };
183 
184 #endif
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
std::pair< bool, reco::TrackBase::ParameterVector > parametersAtClosestApproach(const Basic3DVector< double > &, const Basic3DVector< double > &, float, const reco::BeamSpot &) const
propagate the track parameters of TrackinParticle from production vertex to the point of closest appr...
virtual reco::SimToRecoCollection associateSimToReco(const edm::RefToBaseVector< reco::Track > &, const edm::RefVector< TrackingParticleCollection > &, const edm::Event *event=0, const edm::EventSetup *setup=0) const override
Association Sim To Reco with Collections.
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:14
TrackAssociatorByChi2(const edm::ESHandle< MagneticField > mF, const edm::ParameterSet &conf)
Constructor with PSet.
ProductID id() const
Definition: HandleBase.cc:15
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:13
virtual reco::RecoToGenCollection associateRecoToGen(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< reco::GenParticleCollection > &tPCH, const edm::Event *event=0, const edm::EventSetup *setup=0) const
compare reco to sim the handle of reco::Track and GenParticle collections
double compareTracksParam(reco::TrackCollection::const_iterator, edm::SimTrackContainer::const_iterator, const math::XYZTLorentzVectorD &, const GlobalVector &, const reco::TrackBase::CovarianceMatrix &, const reco::BeamSpot &) const
compare reco::TrackCollection and edm::SimTrackContainer iterators: returns the chi2 ...
std::pair< reco::Track, Chi2SimMap > RecoToSimPair
math::Vector< dimension >::type ParameterVector
parameter vector
Definition: TrackBase.h:73
TrackAssociatorByChi2(const edm::ESHandle< MagneticField > mF, double chi2Cut, bool onlyDiag, const edm::InputTag &beamspotSrc)
Constructor with magnetic field, double, bool and InputTag.
~TrackAssociatorByChi2()
Destructor.
edm::AssociationMap< edm::OneToManyWithQualityGeneric< reco::GenParticleCollection, edm::View< reco::Track >, double > > GenToRecoCollection
int j
Definition: DBlmapReader.cc:9
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
double getChi2(reco::TrackBase::ParameterVector &rParameters, reco::TrackBase::CovarianceMatrix &recoTrackCovMatrix, Basic3DVector< double > &momAtVtx, Basic3DVector< double > &vert, int &charge, const reco::BeamSpot &) const
basic method where chi2 is computed
virtual reco::RecoToSimCollection associateRecoToSim(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event, const edm::EventSetup *setup) const
compare reco to sim the handle of reco::Track and TrackingParticle collections
double associateRecoToSim(reco::TrackCollection::const_iterator, TrackingParticleCollection::const_iterator, const reco::BeamSpot &) const
compare reco::TrackCollection and TrackingParticleCollection iterators: returns the chi2 ...
edm::ESHandle< MagneticField > theMF
tuple conf
Definition: dbtoconf.py:185
virtual reco::SimToRecoCollection associateSimToReco(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event, const edm::EventSetup *setup) const
compare reco to sim the handle of reco::Track and TrackingParticle collections
virtual reco::GenToRecoCollection associateGenToReco(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< reco::GenParticleCollection > &tPCH, const edm::Event *event=0, const edm::EventSetup *setup=0) const
compare reco to sim the handle of reco::Track and GenParticle collections
reco::RecoToGenCollection associateRecoToGen(const edm::RefToBaseVector< reco::Track > &, const edm::RefVector< reco::GenParticleCollection > &, const edm::Event *event=0, const edm::EventSetup *setup=0) const
Association Sim To Reco with Collections (Gen Particle version)
std::vector< SimVertex > SimVertexContainer
reco::GenToRecoCollection associateGenToReco(const edm::RefToBaseVector< reco::Track > &, const edm::RefVector< reco::GenParticleCollection > &, const edm::Event *event=0, const edm::EventSetup *setup=0) const
Association Sim To Reco with Collections (Gen Particle version)
std::map< double, SimTrack > Chi2SimMap
std::vector< RecoToSimPair > RecoToSimPairAssociation
void push_back(const RefToBase< T > &)
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
virtual reco::RecoToSimCollection associateRecoToSim(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event=0, const edm::EventSetup *setup=0) const override
compare reco to sim the handle of reco::Track and TrackingParticle collections
virtual reco::SimToRecoCollection associateSimToReco(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event=0, const edm::EventSetup *setup=0) const override
compare reco to sim the handle of reco::Track and TrackingParticle collections
std::vector< SimTrack > SimTrackContainer
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
edm::AssociationMap< edm::OneToManyWithQualityGeneric< edm::View< reco::Track >, reco::GenParticleCollection, double > > RecoToGenCollection
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
Definition: TrackBase.h:76