CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DataFormats/BTauReco/interface/CombinedTauTagInfo.h

Go to the documentation of this file.
00001 #ifndef DataFormats_BTauReco_CombinedTauTagInfo_h
00002 #define DataFormats_BTauReco_CombinedTauTagInfo_h
00003 
00004 /* class CombinedTauTagInfo
00005  *  Extended object for the Tau Combination algorithm, 
00006  *  created: Dec 18 2006,
00007  *  revised: Jul 02 2007
00008  *  author: Ludovic Houchu.
00009  */
00010 
00011 #include <limits>
00012 #include <math.h>
00013 #include "CLHEP/Vector/LorentzVector.h"
00014 #include "DataFormats/BTauReco/interface/RefMacros.h"
00015 #include "DataFormats/JetReco/interface/Jet.h"
00016 #include "DataFormats/TrackReco/interface/Track.h"
00017 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00018 #include "DataFormats/JetReco/interface/JetTracksAssociation.h"
00019 #include "DataFormats/BTauReco/interface/JTATagInfo.h"
00020 #include "DataFormats/BTauReco/interface/IsolatedTauTagInfo.h"
00021 
00022 namespace reco {
00023 
00024   class CombinedTauTagInfo : public JTATagInfo {
00025   public:
00026     CombinedTauTagInfo(){}
00027     CombinedTauTagInfo(const JetTracksAssociationRef& jtaRef) : JTATagInfo(jtaRef) {
00028       thecandidate_passed_trackerselection=false;
00029       thecandidate_is_GoodTauCandidate=false;
00030       thecandidate_is_infact_GoodElectronCandidate=false;
00031       thecandidate_is_infact_GoodMuonCandidate=false;
00032       thecandidate_needs_LikelihoodRatio_discrimination=false;
00033       filtered_Tks_.clear();
00034       signal_Tks_.clear();
00035       isol_Tks_.clear();
00036       theleadTk_signedipt_significance=NAN;
00037       theleadTk_signedip3D_significance=NAN;
00038       thesignedflightpath_significance=NAN;
00039       theTksEt_o_JetEt=NAN;
00040       theneutralE=NAN;
00041       theisolneutralE=NAN;
00042       theisolneutralEtsum=NAN;
00043       theneutralECALClus_number=std::numeric_limits<int>::quiet_NaN();
00044       theneutralECALClus_radius=NAN;
00045       theneutralE_o_TksEneutralE=NAN;
00046       theisolneutralE_o_TksEneutralE=NAN;
00047       theneutralE_ratio=NAN;
00048       thealternatrecJet_HepLV.setPx(NAN);
00049       thealternatrecJet_HepLV.setPy(NAN);
00050       thealternatrecJet_HepLV.setPz(NAN);
00051       thealternatrecJet_HepLV.setE(NAN);
00052       theECALEt_o_leadTkPt=NAN;
00053       theHCALEt_o_leadTkPt=NAN;
00054     }
00055     virtual ~CombinedTauTagInfo() {};
00056     
00057     // float discriminator() returns 0.        if candidate did not pass tracker selection,   
00058     //                               1.        if candidate passed tracker selection and did not contain neutral ECAL clus.,   
00059     //                               0<=  <=1  if candidate passed tracker selection, contained neutral ECAL clus. and went through the likelihood ratio mechanism,   
00060     //                               NaN       the values of the likelihood functions PDFs are 0 (test the result of discriminator() with bool isnan(.));   
00061     
00062     //the reference to the IsolatedTauTagInfo
00063     const IsolatedTauTagInfoRef & isolatedtautaginfoRef() const { return IsolatedTauTagInfoRef_; }
00064     void setisolatedtautaginfoRef(const IsolatedTauTagInfoRef & x) { IsolatedTauTagInfoRef_ = x; }
00065    
00066     //get the tracks from the JetTag
00067     const TrackRefVector& allTks() const { return m_jetTracksAssociation->second; }
00068    
00069     //the tracks considered in the isolation strip and signal cone selections
00070     const TrackRefVector& selectedTks() const { return filtered_Tks_; }
00071     void setselectedTks(const TrackRefVector& x) { filtered_Tks_=x; }
00072     
00073     //the tracks in the signal cone
00074     const TrackRefVector& signalTks() const { return signal_Tks_; }
00075     void setsignalTks(const TrackRefVector& x) { signal_Tks_=x; }
00076    
00077     int signalTks_qsum()const{              // NaN : (int)(signal_Tks_.size())=0;   
00078       int signal_Tks_qsum_=std::numeric_limits<int>::quiet_NaN();   
00079       if((int)(signal_Tks_.size())!=0){   
00080         signal_Tks_qsum_=0;   
00081         for(TrackRefVector::const_iterator iTk=signal_Tks_.begin();iTk!=signal_Tks_.end();iTk++){   
00082           signal_Tks_qsum_+=(**iTk).charge();   
00083         }   
00084       }   
00085       return signal_Tks_qsum_;   
00086     } 
00087     
00088     //the tracks in the isolation band
00089     const TrackRefVector& isolTks() const { return isol_Tks_; }
00090     void setisolTks(const TrackRefVector& x) { isol_Tks_=x; }
00091      
00092     virtual CombinedTauTagInfo* clone() const{return new CombinedTauTagInfo(*this );}
00093     
00094     bool passed_trackerselection()const{return(thecandidate_passed_trackerselection);}
00095     void setpassed_trackerselection(bool x){thecandidate_passed_trackerselection=x;}
00096 
00097    bool is_GoodTauCandidate()const{return(thecandidate_is_GoodTauCandidate);} // true : passed tracker sel. and no neutral activity inside jet;
00098    void setis_GoodTauCandidate(bool x){thecandidate_is_GoodTauCandidate=x;}
00099 
00100    bool infact_GoodElectronCandidate()const{return(thecandidate_is_infact_GoodElectronCandidate);} // true : passed tracker sel., contains 1 signal tk, e-identified through (ECALEt_o_leadTkPt(),HCALEt_o_leadTkPt()) space;
00101    void setinfact_GoodElectronCandidate(bool x){thecandidate_is_infact_GoodElectronCandidate=x;} 
00102 
00103    bool infact_GoodMuonCandidate()const{return(thecandidate_is_infact_GoodMuonCandidate);} // true : passed tracker sel., contains 1 signal tk, mu-identified through (ECALEt_o_leadTkPt(),HCALEt_o_leadTkPt()) space;
00104    void setinfact_GoodMuonCandidate(bool x){thecandidate_is_infact_GoodMuonCandidate=x;}
00105 
00106    bool needs_LikelihoodRatio_discrimination()const{return(thecandidate_needs_LikelihoodRatio_discrimination);} // true : passed tracker sel. and neutral activity inside jet;
00107    void setneeds_LikelihoodRatio_discrimination(bool x){thecandidate_needs_LikelihoodRatio_discrimination=x;}
00108 
00109    double leadTk_signedipt_significance()const{return (theleadTk_signedipt_significance);}  // NaN : failure;
00110    void setleadTk_signedipt_significance(double x){theleadTk_signedipt_significance=x;}
00111 
00112    double leadTk_signedip3D_significance()const{return(theleadTk_signedip3D_significance);}  // NaN : failure;
00113    void setleadTk_signedip3D_significance(double x){theleadTk_signedip3D_significance=x;}
00114 
00115    double signedflightpath_significance()const{return (thesignedflightpath_significance);}  // NaN : failure, did not build a SV.;
00116    void setsignedflightpath_significance(double x){thesignedflightpath_significance=x;}
00117    
00118    // Ettks/Etjet;
00119    double TksEt_o_JetEt()const{return(theTksEt_o_JetEt);} 
00120    void setTksEt_o_JetEt(double x){theTksEt_o_JetEt=x;}
00121 
00122    // Eneutr.clus.;
00123    double neutralE()const{return(theneutralE);} 
00124    void setneutralE(double x){theneutralE=x;}
00125 
00126    // Eneutr.clus.,isol.band;
00127    double isolneutralE()const{return(theisolneutralE);} 
00128    void setisolneutralE(double x){theisolneutralE=x;}
00129 
00130    // sum of Etneutr.clus.,isol.band;
00131    double isolneutralEtsum()const{return(theisolneutralEtsum);} 
00132    void setisolneutralEtsum(double x){theisolneutralEtsum=x;}
00133 
00134    int neutralECALClus_number()const{return(theneutralECALClus_number);}
00135    void setneutralECALClus_number(int x){theneutralECALClus_number=x;}
00136 
00137    //mean DRneutr.clus.-lead.tk
00138    double neutralECALClus_radius()const{return(theneutralECALClus_radius);} // NaN : neutralECALClus_number()=0;
00139    void setneutralECALClus_radius(double x){theneutralECALClus_radius=x;}
00140 
00141    // Eneutr.clus. / (Eneutr.clus. + Etks) , Etks built with tks impulsion and charged pi mass hypothesis; 
00142    double neutralE_o_TksEneutralE()const{return(theneutralE_o_TksEneutralE);} 
00143    void setneutralE_o_TksEneutralE(double x){theneutralE_o_TksEneutralE=x;} 
00144 
00145    // Eneutr.clus.,isol.band / (Eneutr.clus. + Etks);
00146    double isolneutralE_o_TksEneutralE()const{return(theisolneutralE_o_TksEneutralE);} 
00147    void setisolneutralE_o_TksEneutralE(double x){theisolneutralE_o_TksEneutralE=x;}
00148 
00149    // Eneutr.clus.,isol.band / Eneutr.clus.;
00150    double neutralE_ratio()const{return(theneutralE_ratio);} // NaN : neutralECALClus_number()=0;
00151    void setneutralE_ratio(double x){theneutralE_ratio=x;}
00152 
00153    CLHEP::HepLorentzVector alternatrecJet_HepLV()const{return(thealternatrecJet_HepLV);} // rec. pi+/- candidates + neutral ECAL clus. combined;   
00154    void setalternatrecJet_HepLV(CLHEP::HepLorentzVector x){thealternatrecJet_HepLV=x;}
00155 
00156    // EtECAL*/Ptlead.tk        *using ECAL cell hits inside a DR cone around lead tk ECAL impact point direction;
00157    double ECALEt_o_leadTkPt()const{return(theECALEt_o_leadTkPt);} // NaN : failure when trying to find the lead. tk contact on ECAL surface point; 
00158    void setECALEt_o_leadTkPt(double x){theECALEt_o_leadTkPt=x;}
00159 
00160    // EtHCAL**/Ptlead.tk;      **using HCAL tower hits inside a DR cone around lead tk ECAL impact point direction; 
00161    double HCALEt_o_leadTkPt()const{return(theHCALEt_o_leadTkPt);} // NaN : failure when trying to find the lead. tk contact on ECAL surface point; 
00162    void setHCALEt_o_leadTkPt(double x){theHCALEt_o_leadTkPt=x;}
00163  private:
00164    IsolatedTauTagInfoRef IsolatedTauTagInfoRef_;
00165    TrackRefVector filtered_Tks_;
00166    TrackRefVector signal_Tks_;
00167    TrackRefVector isol_Tks_;
00168    bool thecandidate_passed_trackerselection;
00169    bool thecandidate_is_GoodTauCandidate;
00170    bool thecandidate_is_infact_GoodElectronCandidate;
00171    bool thecandidate_is_infact_GoodMuonCandidate;
00172    bool thecandidate_needs_LikelihoodRatio_discrimination;
00173    double theleadTk_signedipt_significance;
00174    double theleadTk_signedip3D_significance;
00175    double thesignedflightpath_significance;
00176    double theTksEt_o_JetEt;
00177    double theneutralE;
00178    double theisolneutralE;
00179    double theisolneutralEtsum;
00180    int theneutralECALClus_number;
00181    double theneutralECALClus_radius;
00182    double theneutralE_o_TksEneutralE;
00183    double theisolneutralE_o_TksEneutralE;
00184    double theneutralE_ratio;
00185    CLHEP::HepLorentzVector thealternatrecJet_HepLV;
00186    double theECALEt_o_leadTkPt;
00187    double theHCALEt_o_leadTkPt;
00188  };
00189 
00190  DECLARE_EDM_REFS( CombinedTauTagInfo )
00191 
00192 }
00193 
00194 #endif // DataFormsts_BTauReco_CombinedTauTagInfo_h