CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Conversion.h
Go to the documentation of this file.
1 #ifndef EgammaCandidates_Conversion_h
2 #define EgammaCandidates_Conversion_h
3 
13 #include <bitset>
21 
22 
23 namespace reco {
24  class Conversion {
25  public:
26 
30  mixed=3,
31  pflow=4,
32  algoSize=5};
33 
42 
43  static const std::string algoNames[];
44 
45  // Default constructor
46  Conversion();
47 
49  const std::vector<edm::RefToBase<reco::Track> > tr,
50  const std::vector<math::XYZPoint> trackPositionAtEcal ,
51  const reco::Vertex & convVtx,
52  const std::vector<reco::CaloClusterPtr> & matchingBC,
53  const float DCA,
54  const std::vector<math::XYZPoint> & innPoint,
55  const std::vector<math::XYZVector> & trackPin ,
56  const std::vector<math::XYZVector> & trackPout,
57  const std::vector<uint8_t> nHitsBeforeVtx,
58  const std::vector<Measurement1DFloat> & dlClosestHitToVtx,
59  uint8_t nSharedHits,
60  const float mva,
62 
63 
65  const std::vector<reco::TrackRef> tr,
66  const std::vector<math::XYZPoint> trackPositionAtEcal ,
67  const reco::Vertex & convVtx,
68  const std::vector<reco::CaloClusterPtr> & matchingBC,
69  const float DCA,
70  const std::vector<math::XYZPoint> & innPoint,
71  const std::vector<math::XYZVector> & trackPin ,
72  const std::vector<math::XYZVector> & trackPout,
73  const float mva,
75 
76 
77 
78 
80  const std::vector<reco::TrackRef> tr,
81  const reco::Vertex & convVtx,
83 
85  const std::vector<edm::RefToBase<reco::Track> > tr,
86  const reco::Vertex & convVtx,
88 
89 
90 
92  virtual ~Conversion();
94  Conversion * clone() const;
98  std::vector<edm::RefToBase<reco::Track> > tracks() const ;
102  bool isConverted() const;
104  unsigned int nTracks() const {return tracks().size(); }
106  void setMVAout(const float& mva) { theMVAout_=mva;}
108  double MVAout() const { return theMVAout_;}
110  double pairInvariantMass() const;
112  double pairCotThetaSeparation() const;
122  double EoverP() const;
126  double EoverPrefittedTracks() const;
128  double zOfPrimaryVertexFromTracks() const;
129  // Dist of minimum approach between tracks
131  // deltaPhi tracks at innermost point
132  double dPhiTracksAtVtx() const;
133  // deltaPhi tracks at ECAl
134  double dPhiTracksAtEcal() const;
135  // deltaEta tracks at ECAl
136  double dEtaTracksAtEcal() const;
137 
140  const std::vector<math::XYZPoint> & ecalImpactPosition() const {return thePositionAtEcal_;}
141  // pair of BC matching a posteriori the tracks
142  const std::vector<reco::CaloClusterPtr>& bcMatchingWithTracks() const { return theMatchingBCs_;}
144  std::vector<double> tracksSigned_d0() const ;
146  const std::vector<math::XYZPoint>& tracksInnerPosition() const {return theTrackInnerPosition_;}
148  const std::vector<math::XYZVector>& tracksPout() const {return theTrackPout_;}
150  const std::vector<math::XYZVector>& tracksPin() const {return theTrackPin_;}
152  const std::vector<uint8_t> &nHitsBeforeVtx() const { return nHitsBeforeVtx_; }
154  const std::vector<Measurement1DFloat> &dlClosestHitToVtx() const { return dlClosestHitToVtx_; }
156  uint8_t nSharedHits() const { return nSharedHits_; }
157 
158  // Set the ptr to the Super cluster if not set in the constructor
160 
162  void setConversionAlgorithm(const ConversionAlgorithm a, bool set=true) { if (set) algorithm_=a; else algorithm_=undefined;}
163  ConversionAlgorithm algo() const ;
164  std::string algoName() const;
165  static std::string algoName(ConversionAlgorithm );
166  static ConversionAlgorithm algoByName(const std::string &name);
167 
168  bool quality(ConversionQuality q) const { return (qualityMask_ & (1<<q))>>q; }
169  void setQuality(ConversionQuality q, bool b);
170 
171 
172 
173  private:
174 
178  std::vector<reco::TrackRef> tracks_;
180  mutable std::vector<edm::RefToBase<reco::Track> > trackToBaseRefs_;
182  std::vector<math::XYZPoint> thePositionAtEcal_;
186  std::vector<reco::CaloClusterPtr> theMatchingBCs_;
190  std::vector<math::XYZPoint> theTrackInnerPosition_;
192  std::vector<math::XYZVector> theTrackPin_;
194  std::vector<math::XYZVector> theTrackPout_;
196  std::vector<uint8_t> nHitsBeforeVtx_;
198  std::vector<Measurement1DFloat> dlClosestHitToVtx_;
200  uint8_t nSharedHits_;
202  float theMVAout_;
204  uint8_t algorithm_;
205  uint16_t qualityMask_;
206 
207 
208  };
209 
212  }
213 
214 
215  inline std::string Conversion::algoName() const{
216 
217  switch(algorithm_)
218  {
219  case undefined: return "undefined";
220  case ecalSeeded: return "ecalSeeded";
221  case trackerOnly: return "trackerOnly";
222  case mixed: return "mixed";
223 
224  }
225  return "undefined";
226  }
227 
229  if(int(a) < int(algoSize) && int(a)>0) return algoNames[int(a)];
230  return "undefined";
231  }
232 
234  if (b)//regular OR if setting value to true
235  qualityMask_ |= (1<<q) ;
236  else // doing "half-XOR" if unsetting value
237  qualityMask_ &= (~(1<<q));
238 
239  }
240 
241 }
242 
243 #endif
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
Definition: Conversion.h:100
static const std::string algoNames[]
Definition: Conversion.h:43
ConversionAlgorithm algo() const
Definition: Conversion.h:210
const std::vector< math::XYZVector > & tracksPout() const
Vector of track momentum measured at the outermost hit.
Definition: Conversion.h:148
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:15
math::XYZVector refittedPairMomentum() const
Conversion tracks momentum from the tracks refitted with vertex constraint.
Definition: Conversion.cc:277
bool quality(ConversionQuality q) const
Definition: Conversion.h:168
void setQuality(ConversionQuality q, bool b)
Definition: Conversion.h:233
double EoverP() const
Definition: Conversion.cc:288
const std::vector< Measurement1DFloat > & dlClosestHitToVtx() const
Vector of signed decay length with uncertainty from nearest hit on track to the conversion vtx positi...
Definition: Conversion.h:154
reco::CaloClusterPtrVector caloCluster_
vector pointer to a/multiple seed CaloCluster(s)
Definition: Conversion.h:176
double distOfMinimumApproach() const
Definition: Conversion.h:130
std::vector< double > tracksSigned_d0() const
signed transverse impact parameter for each track
Definition: Conversion.cc:332
static ConversionAlgorithm algoByName(const std::string &name)
Definition: Conversion.cc:167
double pairCotThetaSeparation() const
Delta cot(Theta) where Theta is the angle in the (y,z) plane between the two tracks. Original tracks are used.
Definition: Conversion.cc:238
math::XYZTLorentzVectorD refittedPair4Momentum() const
Conversion track pair 4-momentum from the tracks refitted with vertex constraint. ...
Definition: Conversion.cc:264
void setConversionAlgorithm(const ConversionAlgorithm a, bool set=true)
Conversion Track algorithm/provenance.
Definition: Conversion.h:162
double pairInvariantMass() const
if nTracks=2 returns the pair invariant mass. Original tracks are used here
Definition: Conversion.cc:219
uint8_t nSharedHits_
number of shared hits between tracks
Definition: Conversion.h:200
double EoverPrefittedTracks() const
Definition: Conversion.cc:310
std::vector< edm::RefToBase< reco::Track > > tracks() const
vector of track to base references
Definition: Conversion.cc:180
double zOfPrimaryVertexFromTracks() const
z coordinate of the photon origin calculated from the track-pair direction and the position of the ve...
Definition: Conversion.cc:205
const std::vector< math::XYZVector > & tracksPin() const
Vector of track momentum measured at the innermost hit.
Definition: Conversion.h:150
const std::vector< math::XYZPoint > & ecalImpactPosition() const
Definition: Conversion.h:140
double MVAout() const
get the value of the TMVA output
Definition: Conversion.h:108
std::vector< math::XYZPoint > theTrackInnerPosition_
P_in of tracks.
Definition: Conversion.h:190
virtual ~Conversion()
destructor
Definition: Conversion.cc:162
uint16_t qualityMask_
Definition: Conversion.h:205
const std::vector< reco::CaloClusterPtr > & bcMatchingWithTracks() const
Definition: Conversion.h:142
std::string algoName() const
Definition: Conversion.h:215
std::vector< math::XYZVector > theTrackPin_
P_in of tracks.
Definition: Conversion.h:192
unsigned int nTracks() const
Number of tracks= 0,1,2.
Definition: Conversion.h:104
Conversion * clone() const
returns a clone of the candidate
Definition: Conversion.cc:175
std::vector< math::XYZPoint > thePositionAtEcal_
position at the ECAl surface of the track extrapolation
Definition: Conversion.h:182
std::vector< math::XYZVector > theTrackPout_
P_out of tracks.
Definition: Conversion.h:194
uint8_t algorithm_
conversion algorithm/provenance
Definition: Conversion.h:204
uint8_t nSharedHits() const
number of shared hits btw the two track
Definition: Conversion.h:156
double dEtaTracksAtEcal() const
Definition: Conversion.cc:381
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
float theMVAout_
TMVA output.
Definition: Conversion.h:202
double b
Definition: hdecay.h:120
std::vector< reco::CaloClusterPtr > theMatchingBCs_
Clusters mathing the tracks (these are not the seeds)
Definition: Conversion.h:186
void setMVAout(const float &mva)
set the value of the TMVA output
Definition: Conversion.h:106
std::vector< reco::TrackRef > tracks_
vector of Track references
Definition: Conversion.h:178
float theMinDistOfApproach_
Distance of min approach of the two tracks.
Definition: Conversion.h:188
double a
Definition: hdecay.h:121
std::vector< edm::RefToBase< reco::Track > > trackToBaseRefs_
vector Track RefToBase
Definition: Conversion.h:180
const std::vector< math::XYZPoint > & tracksInnerPosition() const
Vector containing the position of the innermost hit of each track.
Definition: Conversion.h:146
const std::vector< uint8_t > & nHitsBeforeVtx() const
Vector of the number of hits before the vertex along each track trajector.
Definition: Conversion.h:152
std::vector< Measurement1DFloat > dlClosestHitToVtx_
signed decay length and uncertainty from nearest hit on track to conversion vertex ...
Definition: Conversion.h:198
math::XYZVector pairMomentum() const
Conversion tracks momentum from the tracks inner momentum.
Definition: Conversion.cc:252
double dPhiTracksAtEcal() const
Definition: Conversion.cc:356
reco::Vertex theConversionVertex_
Fitted Kalman conversion vertex.
Definition: Conversion.h:184
bool isConverted() const
Bool flagging objects having track size &gt;0.
Definition: Conversion.cc:196
std::vector< uint8_t > nHitsBeforeVtx_
number of hits before the vertex on each trackerOnly
Definition: Conversion.h:196
reco::CaloClusterPtrVector caloCluster() const
Pointer to CaloCluster (foe Egamma Conversions it points to a SuperCluster)
Definition: Conversion.h:96
void setMatchingSuperCluster(const reco::CaloClusterPtrVector &sc)
Definition: Conversion.h:159
double dPhiTracksAtVtx() const
Definition: Conversion.cc:343