00001 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00002 // 23.10.2006, AUTHOR: OLIVER KORTNER 00003 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00004 00005 #ifndef MyMuonH 00006 #define MyMuonH 00007 00008 //:::::::::::::::::: 00009 //:: CLASS MyMuon :: 00010 //:::::::::::::::::: 00011 00020 00021 //:::::::::::::::::: 00022 //:: HEADER FILES :: 00023 //:::::::::::::::::: 00024 00025 // standard C++ // 00026 #include <iostream> 00027 00028 // ROOT // 00029 #include "TLorentzVector.h" 00030 00031 // MyParticle base class // 00032 #include "MyParticle.h" 00033 00034 class MyMuon : public MyParticle { 00035 00036 public: 00037 // Constructors // 00038 MyMuon(void) { 00039 init(TLorentzVector(0.0, 0.0, 0.0, 0.0), 00040 0.0, 0, 0, 0, 0, 0, 0.0, 0, 0.0, 0.0, 00041 0, 0.0, 0, 0, -1, 0); 00042 } 00044 00045 MyMuon( const TLorentzVector & p, 00046 const double & mu_charge, 00047 const int & alg_flag, 00048 const int & rec_flag, 00049 const int & index, 00050 const double Et_cone[8], 00051 const int nb_tracks_cone[8], 00052 const double & fitChi2, 00053 const int & fitNumberDoF, 00054 const double & fitChi2OverDoF, 00055 const double & matchChi2, 00056 const int & matchNumberDoF, 00057 const double & matchChi2OverDoF, 00058 const int & hasCombMuonTrackParticle, 00059 const std::vector<double> * track_Et_cone=0, 00060 int vertex_index=-1, 00061 const std::vector<double> * trackIsolationEnergy=0) { 00062 00063 init(p, mu_charge, alg_flag, rec_flag, index, Et_cone, nb_tracks_cone, 00064 fitChi2, fitNumberDoF, fitChi2OverDoF, 00065 matchChi2, matchNumberDoF, matchChi2OverDoF, 00066 hasCombMuonTrackParticle, track_Et_cone, vertex_index, trackIsolationEnergy); 00067 } 00120 00121 // Methods // 00122 // get methods // 00123 inline int reconstruction_flag(void) const; 00131 00132 inline int algorithm_flag(void) const; 00138 00139 inline bool hasCombinedMuonTrackParticle(void) const; 00141 inline double Et_in_cone(const int & delta_R_index) const; 00152 inline double track_Et_in_cone(const int & delta_R_index) const; 00167 inline double trackIsolationEnergy(const int & delta_R_index) const; 00181 inline int nb_tracks_in_cone(const int & delta_R_index) const; 00192 inline double fitChi2(void) const; 00193 inline int fitNumberDoF(void) const; 00194 inline double fitChi2OverDoF(void) const; 00195 inline double matchChi2(void) const; 00196 inline int matchNumberDoF(void) const; 00197 inline double matchChi2OverDoF(void) const; 00198 00199 00200 00201 // set methods // 00202 inline void set_reconstruction_flag(const int & flag); 00210 inline void set_Et_in_cone(const double Et_cone[8]); 00214 inline void set_track_Et_in_cone(const double Et_cone[8]); 00218 inline void set_trackIsolationEnergy(const double Et_cone[8]); 00222 inline void set_nb_tracks_in_cone(const int nb_tracks_cone[8]); 00226 00227 inline void PrintParticle(std::string option = ""); 00229 00230 private: 00231 // muon data // 00232 int m_alg_flag; 00233 00234 int m_flag; // reconstruction flag: 00235 // = -1: combined muon (not best match), 00236 // = 1: combined muon (best match), 00237 // = 2: stand-alon muon, 00238 // = 3: low momentum muon, 00239 // = 0: none of the upper 00240 bool m_hasCombinedMuonTrackParticle; 00241 double m_Et_cone[8]; // m_Et_cone[0] = isolation Et in a cone of 0.1, 00242 // m_Et_cone[1] = isolation Et in a cone of 0.2, 00243 // m_Et_cone[2] = isolation Et in a cone of 0.3, 00244 // m_Et_cone[3] = isolation Et in a cone of 0.4, 00245 // m_Et_cone[4] = isolation Et in a cone of 0.45, 00246 // m_Et_cone[5] = isolation Et in a cone of 0.5, 00247 // m_Et_cone[6] = isolation Et in a cone of 0.6, 00248 // m_Et_cone[7] = isolation Et in a cone of 0.7 00249 double m_track_Et_cone[8]; 00250 // m_track_Et_cone[0] = track Et in a cone of 0.1, 00251 // m_track_Et_cone[1] = track Et in a cone of 0.2, 00252 // m_track_Et_cone[2] = track Et in a cone of 0.3, 00253 // m_track_Et_cone[3] = track Et in a cone of 0.4, 00254 // m_track_Et_cone[4] = track Et in a cone of 0.45, 00255 // m_track_Et_cone[5] = track Et in a cone of 0.5, 00256 // m_track_Et_cone[6] = track Et in a cone of 0.6, 00257 // m_track_Et_cone[7] = track Et in a cone of 0.7 00258 double m_trackIsolationEnergy[8]; 00259 // m_trackIsolationEnergy[0] = track Et in a cone of 0.1, 00260 // m_trackIsolationEnergy[1] = track Et in a cone of 0.2, 00261 // m_trackIsolationEnergy[2] = track Et in a cone of 0.3, 00262 // m_trackIsolationEnergy[3] = track Et in a cone of 0.4, 00263 // m_trackIsolationEnergy[4] = track Et in a cone of 0.45, 00264 // m_trackIsolationEnergy[5] = track Et in a cone of 0.5, 00265 // m_trackIsolationEnergy[6] = track Et in a cone of 0.6, 00266 // m_trackIsolationEnergy[7] = track Et in a cone of 0.7 00267 int m_nb_tracks_cone[8]; // m_nb_tracks_cone[0] = number of tracks in a 00268 // cone of 0.1, 00269 // m_nb_tracks_cone[1] = number of tracks in a 00270 // cone of 0.2, 00271 // m_nb_tracks_cone[2] = number of tracks in a 00272 // cone of 0.3, 00273 // m_nb_tracks_cone[3] = number of tracks in a 00274 // cone of 0.4, 00275 // m_nb_tracks_cone[4] = number of tracks in a 00276 // cone of 0.45, 00277 // m_nb_tracks_cone[5] = number of tracks in a 00278 // cone of 0.5, 00279 // m_nb_tracks_cone[6] = number of tracks in a 00280 // cone of 0.6, 00281 // m_nb_tracks_cone[7] = number of tracks in a 00282 // cone of 0.7 00283 double m_fitChi2; // track fit chi2 00284 int m_fitNumberDoF; // number of DoF of the track fit 00285 double m_fitChi2OverDoF; // chi2 over number of DoF of the track fit 00286 double m_matchChi2; // chi2 of the track match 00287 int m_matchNumberDoF; // number of DoF of the track match 00288 double m_matchChi2OverDoF; // chi2 over number of DoF of the track match 00289 00290 // private methods // 00291 inline void init( const TLorentzVector & p, 00292 const double & mu_charge, 00293 const int & alg_flag, 00294 const int & rec_flag, 00295 const int & index, 00296 const double Et_cone[8], 00297 const int nb_tracks_cone[8], 00298 const double & fitChi2, 00299 const int & fitNumberDoF, 00300 const double & fitChi2OverDoF, 00301 const double & matchChi2, 00302 const int & matchNumberDoF, 00303 const double & matchChi2OverDoF, 00304 const int & hasCombMuonTrackParticle, 00305 const std::vector<double> * track_Et_cone, 00306 int vertex_index, 00307 const std::vector<double> * trackIsolationEnergy); 00308 // initialization method; 00309 // set the fourmomentum of the muon to 00310 // pm; 00311 // mu_charge = charge of the muon; 00312 // alg_flag = reconstruction algorithm: 00313 // = 1: AtlfastMuonCollection 00314 // = 2: MuidMuonCollection 00315 // = 3: StacoMuonCollection 00316 // = 0: none of the upper; 00317 // reconstruction flag: 00318 // = -1: combined muon (not best match), 00319 // = 1: combined muon (best match), 00320 // = 2: stand-alon muon, 00321 // = 3: low momentum muon, 00322 // = 0: none of the upper; 00323 // index = index in original vector 00324 // Et_cone[0] = isolation Et in a cone 00325 // of 0.1, 00326 // Et_cone[1] = isolation Et in a cone 00327 // of 0.2, 00328 // Et_cone[2] = isolation Et in a cone 00329 // of 0.3, 00330 // Et_cone[3] = isolation Et in a cone 00331 // of 0.4, 00332 // Et_cone[4] = isolation Et in a cone 00333 // of 0.45, 00334 // Et_cone[5] = isolation Et in a cone 00335 // of 0.5, 00336 // Et_cone[6] = isolation Et in a cone 00337 // of 0.6, 00338 // Et_cone[6] = isolation Et in a cone 00339 // of 0.7; 00340 // nb_tracks_cone[0] = number of tracks in a 00341 // cone of 0.1, 00342 // nb_tracks_cone[1] = number of tracks in a 00343 // cone of 0.2, 00344 // nb_tracks_cone[2] = number of tracks in a 00345 // cone of 0.3, 00346 // nb_tracks_cone[3] = number of tracks in a 00347 // cone of 0.4, 00348 // nb_tracks_cone[4] = number of tracks in a 00349 // cone of 0.45, 00350 // nb_tracks_cone[5] = number of tracks in a 00351 // cone of 0.5, 00352 // nb_tracks_cone[6] = number of tracks in a 00353 // cone of 0.6, 00354 // nb_tracks_cone[7] = number of tracks in a 00355 // cone of 0.7 00356 // hasCombMuonTrackParticle 00357 // track_Et_cone as defined in the 00358 // constructor; 00359 // vertex_index = index of the 00360 // associated primary 00361 // vertex 00362 // trackIsolationEnergy as defined in the 00363 // constructor; 00364 }; 00365 00366 //:::::::::::::::::::::::::::::::::::::: 00367 //:: IMPLEMENTATION OF INLINE METHODS :: 00368 //:::::::::::::::::::::::::::::::::::::: 00369 00370 #include "MyMuon.ixx" 00371 00372 #endif